import type { ActiveSubscription } from '@/types/subscription';

export type DaysRemainingColorClass = 'bg-success' | 'bg-warning' | 'bg-accent' | 'bg-error';

type SubscriptionPlan = ActiveSubscription['plan'];

interface ThresholdConfig {
    successMin: number;
    warningMin: number;
    accentMin: number;
}

const DAYS_REMAINING_THRESHOLDS: Record<SubscriptionPlan, ThresholdConfig> = {
    annual: { successMin: 30, warningMin: 15, accentMin: 7 },
    semi_annual: { successMin: 15, warningMin: 7, accentMin: 3 },
    monthly: { successMin: 10, warningMin: 5, accentMin: 2 },
    trial: { successMin: 10, warningMin: 5, accentMin: 2 },
};

export function getDaysRemainingColorClass(
    daysRemaining: number | null | undefined,
    plan: SubscriptionPlan = 'annual',
): DaysRemainingColorClass {
    const days = daysRemaining ?? 0;
    const thresholds = DAYS_REMAINING_THRESHOLDS[plan] ?? DAYS_REMAINING_THRESHOLDS.annual;

    if (days > thresholds.successMin) {
        return 'bg-success';
    }

    if (days >= thresholds.warningMin) {
        return 'bg-warning';
    }

    if (days >= thresholds.accentMin) {
        return 'bg-accent';
    }

    return 'bg-error';
}
