package dispatch

import (
	"net/http"

	"github.com/gin-gonic/gin"

	dispatchapi "github.com/tidbcloud/aisupport/packages/sdk-go/contracts/api/ticket-manager/dispatch"
	apiutils "github.com/tidbcloud/aisupport/packages/sdk-go/infra/apiserver/utils"
	"github.com/tidbcloud/aisupport/packages/sdk-go/infra/errs"
	dispatchsvcapi "github.com/tidbcloud/aisupport/services/ticket-manager/internal/services/dispatch/api"
)

// GetInsight calculates the Dispatch coverage and reassignment insight for one day.
//
//	@Summary	Get Dispatch insight
//	@Id			DispatchHandlerGetInsight
//	@Tags		DispatchHandler
//	@Accept		json
//	@Produce	json
//	@Param		param	query		dispatchapi.GetInsightRequest	false	"param"
//	@Success	200		{object}	dispatchapi.GetInsightResponse
//	@Failure	default	{object}	base.BaseResponse
//	@Router		/api/v1/ticketmanager/dispatch/insights [get]
func (h *Handler) GetInsight(c *gin.Context) {
	var req dispatchapi.GetInsightRequest
	if err := c.ShouldBindQuery(&req); err != nil {
		apiutils.Fail(c, errs.APIErrorNew(http.StatusBadRequest, err))
		return
	}
	insight, err := h.Dispatch.GetInsight(c, dispatchsvcapi.GetInsightParam{Date: req.Date})
	if err != nil {
		apiutils.Fail(c, err)
		return
	}
	apiutils.Success(c, &dispatchapi.GetInsightResponse{Insight: insight})
}
