package controller

import (
	"github.com/gin-gonic/gin"
	"github.com/tidbcloud/escalation-base/feishu_messager_v2/api"
	"github.com/tidbcloud/escalation-base/feishu_messager_v2/entity"
	"github.com/tidbcloud/escalation-base/feishu_messager_v2/pkg/infra/log"
)

func (c *MessageController) MessageForward(ctx *gin.Context) {
	var msgId string
	logger := log.FromContextOrDef(ctx, c.logger)
	req := &api.SendMessageReq{}
	err := ctx.ShouldBindJSON(req)
	if err != nil {
		FailWithCode(ctx, err, api.ErrCodeInvalidArgument)
		return
	}

	if req.IsUrgent {
		logger.Info("send urgent message card", "message", req)
		msgId, err = c.msgSvc.SendUrgentMessageCard(ctx, entity.Message(*req))
		if err != nil {
			logger.Error(err, "send urgent message card failed", "message", req)
			FailWithCode(ctx, err, api.ErrCodeInternal)
			return
		}
		logger.Info("send urgent message card successfully", "message", req, "messageId", msgId)
	} else {
		msgId, err = c.msgSvc.SendMessageCard(ctx, entity.Message(*req))
		if err != nil {
			logger.Error(err, "send message card failed", "message", req)
			FailWithCode(ctx, err, api.ErrCodeInternal)
			return
		}
	}

	//success

	// tickets, count, err := c.rtSvc.ListTickets(ctx, rtsvcapi.ListTicketParam{})
	// if err != nil {
	// 	ctrl.Fail(ctx, err)
	// 	return
	// }

	resp := api.SendMessageResp{
		Status:    "200 OK",
		MessageId: msgId,
	}

	Success(ctx, resp)
}
