package validators

import (
	"fmt"

	"lune/talentscale/internal/modules/billing/dto"

	"github.com/google/uuid"
)

// ValidateCheckoutRequest validates the checkout payload
func ValidateCheckoutRequest(req *dto.CheckoutRequest) error {
	if req.PackageID == uuid.Nil {
		return fmt.Errorf("package_id is required")
	}

	switch req.DurationMonth {
	case 1, 3, 12:
		// valid
	default:
		return fmt.Errorf("duration_month must be 1, 3, or 12")
	}

	return nil
}

// ValidateRetryPaymentRequest validates the retry payment payload
func ValidateRetryPaymentRequest(req *dto.RetryPaymentRequest) error {
	if req.InvoiceID == uuid.Nil {
		return fmt.Errorf("invoice_id is required")
	}
	return nil
}

// ValidateInvoiceListRequest validates and normalizes the invoice list query params
func ValidateInvoiceListRequest(req *dto.InvoiceListRequest) {
	if req.Page < 1 {
		req.Page = 1
	}
	if req.Limit < 1 || req.Limit > 100 {
		req.Limit = 20
	}
	// Normalize status
	switch req.Status {
	case "PENDING", "DONE", "FAILED":
		// valid
	default:
		req.Status = "" // no filter
	}
}
