import { previousMonday } from 'date-fns';

import { SxProps, Theme } from '@material-hu/mui/index';

import { ScheduleFormFilters } from 'src/types/timeTracking';

import { putCheckInOptions } from 'src/components/AdvancedFilter/utils';

const TODAY = new Date();
export const weekStart = TODAY.getDay() === 1 ? TODAY : previousMonday(TODAY);

export const FILTERS_INITIAL_VALUES: ScheduleFormFilters = {
  departmentIds: putCheckInOptions([]),
  itemIds: putCheckInOptions([]),
  regionIds: putCheckInOptions([]),
  scheduleCodes: putCheckInOptions([]),
  siteIds: putCheckInOptions([]),
  userIds: [],
};

export type AssignmentScheduleFormFilters = Omit<
  ScheduleFormFilters,
  'userIds'
>;

export const ASSIGNMENT_FILTERS_INITIAL_VALUES: AssignmentScheduleFormFilters =
  {
    departmentIds: putCheckInOptions([]),
    itemIds: putCheckInOptions([]),
    regionIds: putCheckInOptions([]),
    siteIds: putCheckInOptions([]),
  };

export const SCHEDULES_ERROR_MESSAGES = {
  equalDates: {
    title: 'SAME_DATE',
    description: 'ERROR_SAME_DATE',
  },
  dateOrder: {
    title: 'INVERTED_SCHEDULE',
    description: 'ERROR_DATE_ORDER',
  },
};

export const SCHEDULE_UNASSIGNED_OPTION = 'UNASSIGNED';
export const ALL_OPTION = 'ALL';

export const STICKY_COLUMN_SX: SxProps<Theme> = {
  backgroundColor: 'inherit',
  borderRight: theme =>
    `4px solid ${theme.palette.new.border.neutral.default} !important`,
  left: 0,
  position: 'sticky',
  zIndex: 2,
};
