package org

import (
	"net/http"
	"strings"

	"github.com/tidbcloud/AgentTeam/internal/api"
	"github.com/tidbcloud/AgentTeam/internal/api/dto/converter"
)

// Get handles GET /api/v1/orgs/:orgId/plan.
func (handler *PlanHandler) Get(r api.AuthenticatedRequest) (api.Response, error) {
	orgID := strings.TrimSpace(r.Gin.Param("orgId"))
	if orgID == "" {
		return api.Response{}, api.NewHTTPError(http.StatusBadRequest, "orgId is required")
	}
	orgs, ok := handler.organizationProvider()
	if !ok {
		return api.Response{}, api.NewHTTPError(http.StatusNotFound, "Organization provider not installed")
	}
	if _, err := orgs.GetOrganizationSettingsForUser(r.Context(), r.UserID(), orgID); err != nil {
		return api.Response{}, err
	}
	plans, ok := handler.organizationPlanStore()
	if !ok {
		return api.Response{}, api.NewHTTPError(http.StatusInternalServerError, "Plan store not configured")
	}
	view, err := plans.LoadOrganizationPlanView(r.Context(), orgID)
	if err != nil {
		return api.Response{}, err
	}
	return api.OK(converter.ToOrganizationPlanView(view)), nil
}
