package handlers

import (
	"lune/talentscale/internal/modules/billing/services"
	"lune/talentscale/pkg/response"

	"github.com/gofiber/fiber/v2"
)

// PackageHandler handles public package listing
type PackageHandler struct {
	billing *services.BillingService
}

// NewPackageHandler creates a new package handler
func NewPackageHandler(billing *services.BillingService) *PackageHandler {
	return &PackageHandler{billing: billing}
}

// ListPublicPackages handles GET /api/public/packages
// Returns all active packages sorted by price ascending, cached in Redis
func (h *PackageHandler) ListPublicPackages(c *fiber.Ctx) error {
	packages, err := h.billing.GetPublicPackages(c.Context())
	if err != nil {
		return response.InternalError(c, "Failed to fetch packages: "+err.Error())
	}

	return response.OK(c, "Packages retrieved", packages)
}
