export const getAgeInYears = (
  dob: Date,
  referenceDate = new Date(),
): number => {
  let age = referenceDate.getFullYear() - dob.getFullYear();

  const hasHadBirthdayThisYear =
    referenceDate.getMonth() > dob.getMonth() ||
    (referenceDate.getMonth() === dob.getMonth() &&
      referenceDate.getDate() >= dob.getDate());

  if (!hasHadBirthdayThisYear) {
    age--;
  }

  return age;
};

type PersonType = "INFANT" | "CHILD" | "ADULT";

export const getAgeGroupTypeByDob = (
  dob: Date,
  referenceDate = new Date(),
): PersonType => {
  const age = getAgeInYears(dob, referenceDate);

  if (age < 2)
return "INFANT";
  if (age < 12)
return "CHILD";
  return "ADULT";
};
