import { add, sub } from 'date-fns';

import {
  AutoAssignDate,
  CustomDueDatePeriod,
  CustomDueDateRelation,
  DueDateType,
} from 'src/types/onboarding';

const onboardingDurationToTimestamp = date => {
  const duration: any = {};
  switch (date.period) {
    case CustomDueDatePeriod.DAYS:
      duration.days = date.amount;
      break;
    case CustomDueDatePeriod.WEEKS:
      duration.weeks = date.amount;
      break;
    case CustomDueDatePeriod.MONTHS:
      duration.weeks = date.amount;
      break;
    default:
      break;
  }
  const funct = date.relation === CustomDueDateRelation.AFTER ? add : sub;
  return funct(new Date(), duration).getTime();
};

export const validateDates = (customDate: AutoAssignDate) => {
  if (customDate.autoAssignDateType === DueDateType.CUSTOM) {
    const fromDate = {
      period: customDate.customAssignDate.fromDatePeriod,
      amount: customDate.customAssignDate.fromDateAmount,
      relation: customDate.customAssignDate.fromDateRelation,
    };
    const toDate = {
      period: customDate.customAssignDate.toDatePeriod,
      amount: customDate.customAssignDate.toDateAmount,
      relation: customDate.customAssignDate.toDateRelation,
    };
    return (
      onboardingDurationToTimestamp(fromDate) <=
      onboardingDurationToTimestamp(toDate)
    );
  }
  return true;
};
