namespace JobTrackerApi.Models;

public sealed record AccountEntitlements(bool Ai, bool ProThemes, long StorageBytes, int MonthlyAiCalls, long MonthlyAiTokens);

public static class AccountPlans
{
    public static bool IsPremiumSubscriptionStatus(string? status) =>
        status is "active" or "trialing";

    public static AccountEntitlements ForRoles(IList<string>? roles)
    {
        var premium = roles?.Contains("Premium", StringComparer.OrdinalIgnoreCase) == true
            || roles?.Contains("Admin", StringComparer.OrdinalIgnoreCase) == true;
        return premium
            ? new AccountEntitlements(true, true, 5_000_000_000, 250, 1_000_000)
            : new AccountEntitlements(false, false, 250_000_000, 0, 0);
    }

    public static string Name(AccountEntitlements entitlements) => entitlements.Ai ? "pro" : "free";
}
