package order import "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 } // isNewUserOnlyForQuantity checks whether the matched discount tier has new_user_only enabled. // Returns true only when all matching tiers for the given quantity require new-user status // (i.e. no fallback tier with new_user_only=false exists). When both a new-user-only tier // and a general tier exist for the same quantity, non-new-users can still purchase via the // general tier, so this returns false. func isNewUserOnlyForQuantity(discounts []types.SubscribeDiscount, inputQuantity int64) bool { hasNewUserOnly := false hasFallback := false for _, d := range discounts { if d.Quantity != inputQuantity { continue } if d.NewUserOnly { hasNewUserOnly = true } else { hasFallback = true } } return hasNewUserOnly && !hasFallback }