package app

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

type TodosApi struct{}

func (t TodosApi) GetUserTodos(ctx *gin.Context) {

	var ue app.User
	if api.GetUser(ctx, &ue, false, true); ctx.IsAborted() {
		return
	}

	list, err := todosService.GetUserTodos(ue.ID)
	if err != nil {
		r.FailWithMessage("获取Todo列表失败:"+err.Error(), ctx)
		global.GVA_LOG.Error("获取Todo列表失败", zap.Error(err))
		return
	}

	r.OkWithData(list, ctx)
}

// UpdateTodo 更新Todo
func (t TodosApi) UpdateTodo(ctx *gin.Context) {
	var todo common.UserTodo
	if err := ctx.ShouldBind(&todo); err != nil {
		r.FailWithMessage("参数错误:"+err.Error(), ctx)
		global.GVA_LOG.Error("参数错误", zap.Error(err))
		return
	}

	// 更新
	err := todosService.UpdateTodoById(&todo)
	if err != nil {
		r.FailWithMessage(err.Error(), ctx)
		global.GVA_LOG.Error("更新失败", zap.Error(err))
		return
	}
	r.Ok(ctx)
}
