package api

import (
	"github.com/gin-gonic/gin"
	"github.com/pingcap/dbaas/billing2/model/marketing/plan"
	"github.com/pingcap/dbaas/billing2/utils/ginutils"
)

type tenantPlanOpenAPI struct{}

// @Summary Get Tenant Plan Info
// @Tags Plan
// @Description Get tenant effective plan info by tenant id
// @Accept json
// @Produce json
// @Param tenant_id path string true "tenant_id"
// @Success 200 {object} forms.TenantPlanInfo
// @Router /tenants/{tenant_id}/plans [get]
func (s *tenantPlanOpenAPI) GetTenantPlan(c *gin.Context) (ginutils.HandlerFuncResult, error) {
	tenantID, err := getTenantIDFromURI(c)
	if err != nil {
		return nil, err
	}
	result, err := (&plan.TenantPlanModel{}).GetTenantEffectivePlan(tenantID)
	if err != nil {
		return nil, err
	}
	return result, nil
}

func InitializeTenantPlanOpenAPIRouter(router ginutils.MyRoute) {
	s := &tenantPlanOpenAPI{}
	router.HandleWithError("GET", "/tenants/:tenant_id/plans", s.GetTenantPlan)
}
