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? 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"; }