package workspace

import (
	"net/http"
	"time"

	"github.com/gin-gonic/gin"
	wsapi "github.com/tidbcloud/aisupport/packages/sdk-go/contracts/api/ticket-manager/workspace"
	apiutils "github.com/tidbcloud/aisupport/packages/sdk-go/infra/apiserver/utils"
	"github.com/tidbcloud/aisupport/packages/sdk-go/infra/errs"
	workspacesvcapi "github.com/tidbcloud/aisupport/services/ticket-manager/internal/services/workspace/api"
)

// GetOverview gets Case Workspace statistics.
//
//	@Summary	Get Case Workspace overview
//	@Id			WorkspaceHandlerGetOverview
//	@Tags		WorkspaceHandler
//	@Accept		json
//	@Produce	json
//	@Param		param	query		wsapi.GetOverviewRequest	false	"Overview filters; dates use Asia/Shanghai"
//	@Success	200		{object}	wsapi.GetOverviewResponse
//	@Failure	default	{object}	base.BaseResponse
//	@Router		/api/v1/ticketmanager/workspace/overview [get]
func (h *Handler) GetOverview(c *gin.Context) {
	var req wsapi.GetOverviewRequest
	if err := c.ShouldBindQuery(&req); err != nil {
		apiutils.Fail(c, errs.APIErrorNew(http.StatusBadRequest, err))
		return
	}
	if err := workspacesvcapi.ValidateOverviewRequest(req, time.Now()); err != nil {
		apiutils.Fail(c, errs.APIErrorNew(http.StatusBadRequest, err))
		return
	}
	overview, err := h.Workspace.GetOverview(c, req)
	if err != nil {
		apiutils.Fail(c, err)
		return
	}
	apiutils.Success(c, &wsapi.GetOverviewResponse{Overview: overview})
}
