package app

import (
	"github.com/gin-gonic/gin"
	"go.uber.org/zap"
	"miniapp/global"
	"miniapp/model/app"
	"miniapp/model/app/request"
	r "miniapp/model/common/response"
)

type FavoriteApi struct{}

// GetList 获取收藏列表
func (f *FavoriteApi) GetList(ctx *gin.Context) {
	var p request.GetFavoriteList

	if err := ctx.ShouldBind(&p); err != nil {
		r.FailWithMessage(err.Error(), ctx)
		global.GVA_LOG.Error("获取收藏列表失败", zap.Error(err))
		return
	}

	// 获取收藏列表
	err, list, total := favoriteService.GetFavoriteList(p)
	if err != nil {
		r.FailWithMessage(err.Error(), ctx)
		global.GVA_LOG.Error("获取收藏列表失败", zap.Error(err))
		return
	}

	r.OkWithData(r.PageResult{
		List:     list,
		Total:    total,
		Page:     p.Page,
		PageSize: p.PageSize,
	}, ctx)
}

// Create 创建收藏
func (f *FavoriteApi) Create(ctx *gin.Context) {
	var p app.Favorite

	if err := ctx.ShouldBind(&p); err != nil {
		r.FailWithMessage(err.Error(), ctx)
		global.GVA_LOG.Error("创建收藏失败", zap.Error(err))
		return
	}

	// 创建收藏
	err := favoriteService.CreateFavorite(&p)
	if err != nil {
		r.FailWithMessage(err.Error(), ctx)
		global.GVA_LOG.Error("创建收藏失败", zap.Error(err))
		return
	}

	r.Ok(ctx)
}

// Delete 删除收藏
func (f *FavoriteApi) Delete(ctx *gin.Context) {
	var p app.Favorite

	if err := ctx.ShouldBind(&p); err != nil {
		r.FailWithMessage(err.Error(), ctx)
		global.GVA_LOG.Error("删除收藏失败", zap.Error(err))
		return
	}

	// 删除收藏
	err := favoriteService.DeleteFavorite(&p)
	if err != nil {
		r.FailWithMessage(err.Error(), ctx)
		global.GVA_LOG.Error("删除收藏失败", zap.Error(err))
		return
	}

	r.Ok(ctx)
}
