package portal

import (
	"github.com/perfect-panel/server/internal/model/coupon"
	"github.com/perfect-panel/server/internal/model/payment"
	"github.com/perfect-panel/server/internal/types"
)

func getDiscount(discounts []types.SubscribeDiscount, inputMonths int64, isNewUser bool) float64 {
	for _, discount := range discounts {
		if discount.NewUserOnly && !isNewUser {
			continue
		}
		if inputMonths == discount.Quantity && discount.Discount > 0 && discount.Discount < 100 {
			return discount.Discount / float64(100)
		}
	}
	return 1
}

func calculateCoupon(amount int64, couponInfo *coupon.Coupon) int64 {
	if couponInfo.Type == 1 {
		return int64(float64(amount) * (float64(couponInfo.Discount) / float64(100)))
	} else {
		return min(couponInfo.Discount, amount)
	}
}

func calculateFee(amount int64, config *payment.Payment) int64 {
	var fee float64
	switch config.FeeMode {
	case 0:
		return 0
	case 1:
		fee = float64(amount) * (float64(config.FeePercent) / float64(100))
	case 2:
		if amount > 0 {
			fee = float64(config.FeeAmount)
		}
	case 3:
		fee = float64(amount)*(float64(config.FeePercent)/float64(100)) + float64(config.FeeAmount)
	}
	return int64(fee)
}
