package api

import (
	"net/http"

	"github.com/gin-gonic/gin"
	"github.com/tidbcloud/internal-portal/core-portal/admin/forms"
)

// @Summary GetDashboardLinks
// @Tags TenantCuster
// @Description GetDashboardLinks
// @Accept  json
// @Produce json
// @Param org_id path string true "org_id"
// @Param cluster_id path string true "cluster_id"
// @Success 200 {object} forms.GetDashboardLinksResp
// @Router /orgs/{org_id}/clusters/{cluster_id}/dashboard_links [get]
func GetDashboardLinks(c *gin.Context) {
	req := forms.GetOrgIDAndClusterIDReq{}
	if err := c.ShouldBindUri(&req); err != nil {
		Fail(c, err, http.StatusBadRequest)
		return
	}

	userContext := GetUserContext(c)

	ds, err := userContext.GetDashboardLinks(req.OrgID, req.ClusterID)
	if err != nil {
		Fail(c, err, http.StatusInternalServerError)
		return
	}

	items := []forms.DashboardLink{}
	for _, item := range ds {
		items = append(items, buildAPIDashboardLink(item.Name, item.Link))
	}

	result := forms.GetDashboardLinksResp{
		Dashboards: items,
	}

	Success(c, result, http.StatusOK)
}
