/**
 * Utilities for daily login streak system
 */

export const streakUtils = {
  calculateMultiplier: (streakDays: number): number => {
    if (streakDays >= 365) return 2.0;
    if (streakDays >= 30) return 1.5;
    if (streakDays >= 7) return 1.2;
    return 1.0;
  },

  calculateDailyReward: (baseReward: number, multiplier: number): number => {
    return Math.floor(baseReward * multiplier);
  },

  formatStreakDisplay: (days: number): string => {
    if (days === 0) return 'Mulai hari ini!';
    if (days === 1) return '1 hari 🔥';
    if (days === 7) return '1 minggu 🎉';
    if (days === 30) return '1 bulan 👑';
    if (days === 365) return '1 tahun 🏆';
    return `${days} hari 🔥`;
  },

  getMilestoneMessage: (streakDays: number): string | null => {
    if (streakDays === 7) return 'Selamat! Anda sudah mencapai 7 hari berturut-turut! 🎉';
    if (streakDays === 30) return 'Wow! Anda sudah 30 hari konsisten! +50 bonus poin 👑';
    if (streakDays === 100) return 'Luar biasa! 100 hari pencapaian! +100 bonus poin 🏆';
    if (streakDays === 365) return 'LEGENDARIS! 1 tahun sempurna! +250 bonus poin 👑';
    return null;
  },

  getDaysUntilNextMilestone: (currentDays: number): { days: number; milestone: number } => {
    if (currentDays < 7) return { days: 7 - currentDays, milestone: 7 };
    if (currentDays < 30) return { days: 30 - currentDays, milestone: 30 };
    if (currentDays < 100) return { days: 100 - currentDays, milestone: 100 };
    if (currentDays < 365) return { days: 365 - currentDays, milestone: 365 };
    return { days: 365, milestone: 365 };
  },
};
