import { DecisionsChoice } from './use-steps';

export enum ZodiacSign {
  Aries = 'Aries',
  Taurus = 'Taurus',
  Gemini = 'Gemini',
  Cancer = 'Cancer',
  Leo = 'Leo',
  Virgo = 'Virgo',
  Libra = 'Libra',
  Scorpio = 'Scorpio',
  Sagittarius = 'Sagittarius',
  Capricorn = 'Capricorn',
  Aquarius = 'Aquarius',
  Pisces = 'Pisces',
}

export default function useZodiacSign() {
  const getSignByDate = (month: number, day: number): ZodiacSign => {
    if ((month === 3 && day >= 21) || (month === 4 && day <= 19)) return ZodiacSign.Aries;
    if ((month === 4 && day >= 20) || (month === 5 && day <= 20)) return ZodiacSign.Taurus;
    if ((month === 5 && day >= 21) || (month === 6 && day <= 20)) return ZodiacSign.Gemini;
    if ((month === 6 && day >= 21) || (month === 7 && day <= 22)) return ZodiacSign.Cancer;
    if ((month === 7 && day >= 23) || (month === 8 && day <= 22)) return ZodiacSign.Leo;
    if ((month === 8 && day >= 23) || (month === 9 && day <= 22)) return ZodiacSign.Virgo;
    if ((month === 9 && day >= 23) || (month === 10 && day <= 22)) return ZodiacSign.Libra;
    if ((month === 10 && day >= 23) || (month === 11 && day <= 21)) return ZodiacSign.Scorpio;
    if ((month === 11 && day >= 22) || (month === 12 && day <= 21)) return ZodiacSign.Sagittarius;
    if ((month === 12 && day >= 22) || (month === 1 && day <= 19)) return ZodiacSign.Capricorn;
    if ((month === 1 && day >= 20) || (month === 2 && day <= 18)) return ZodiacSign.Aquarius;
    if ((month === 2 && day >= 19) || (month === 3 && day <= 20)) return ZodiacSign.Pisces;

    throw new Error('Invalid date');
  }

  const getDecisionMakingStatistics = (sign: ZodiacSign) => {
    return {
      [ZodiacSign.Aries]: {
        [DecisionsChoice.Heart]: 49,
        [DecisionsChoice.Head]: 35,
        [DecisionsChoice.Both]: 16,
      },
      [ZodiacSign.Taurus]: {
        [DecisionsChoice.Heart]: 48,
        [DecisionsChoice.Head]: 31,
        [DecisionsChoice.Both]: 21,
      },
      [ZodiacSign.Gemini]: {
        [DecisionsChoice.Heart]: 33,
        [DecisionsChoice.Head]: 48,
        [DecisionsChoice.Both]: 19,
      },
      [ZodiacSign.Cancer]: {
        [DecisionsChoice.Heart]: 44,
        [DecisionsChoice.Head]: 39,
        [DecisionsChoice.Both]: 17,
      },
      [ZodiacSign.Leo]: {
        [DecisionsChoice.Heart]: 30,
        [DecisionsChoice.Head]: 55,
        [DecisionsChoice.Both]: 15,
      },
      [ZodiacSign.Virgo]: {
        [DecisionsChoice.Heart]: 38,
        [DecisionsChoice.Head]: 40,
        [DecisionsChoice.Both]: 22,
      },
      [ZodiacSign.Libra]: {
        [DecisionsChoice.Heart]: 36,
        [DecisionsChoice.Head]: 46,
        [DecisionsChoice.Both]: 18,
      },
      [ZodiacSign.Scorpio]: {
        [DecisionsChoice.Heart]: 29,
        [DecisionsChoice.Head]: 52,
        [DecisionsChoice.Both]: 19,
      },
      [ZodiacSign.Sagittarius]: {
        [DecisionsChoice.Heart]: 29,
        [DecisionsChoice.Head]: 53,
        [DecisionsChoice.Both]: 18,
      },
      [ZodiacSign.Capricorn]: {
        [DecisionsChoice.Heart]: 28,
        [DecisionsChoice.Head]: 56,
        [DecisionsChoice.Both]: 16,
      },
      [ZodiacSign.Aquarius]: {
        [DecisionsChoice.Heart]: 27,
        [DecisionsChoice.Head]: 55,
        [DecisionsChoice.Both]: 18,
      },
      [ZodiacSign.Pisces]: {
        [DecisionsChoice.Heart]: 42,
        [DecisionsChoice.Head]: 38,
        [DecisionsChoice.Both]: 20,
      },
    }[sign];
  };

  return {
    getSignByDate,
    getDecisionMakingStatistics,
  };
}
