import { DayExpensesDto, WeekDto, DetailedShifts, TimesheetPeriodDto } from "../dtos/timesheet-period.dto"; import { ExpensesAmount } from "../types/timesheet.types"; import { addDays, shortDate } from "../utils/timesheet.helpers"; // Factories export function makeEmptyDayExpenses(): DayExpensesDto { return { expenses: [], total_expense: -1, total_mileage: -1, }; } export function makeEmptyWeek(week_start: Date): WeekDto { const make_empty_shifts = (offset: number): DetailedShifts => ({ shifts: [], regular_hours: 0, evening_hours: 0, emergency_hours: 0, overtime_hours: 0, comment: '', short_date: shortDate(addDays(week_start, offset)), break_durations: 0, }); return { is_approved: true, shifts: { sun: make_empty_shifts(0), mon: make_empty_shifts(1), tue: make_empty_shifts(2), wed: make_empty_shifts(3), thu: make_empty_shifts(4), fri: make_empty_shifts(5), sat: make_empty_shifts(6), }, expenses: { sun: makeEmptyDayExpenses(), mon: makeEmptyDayExpenses(), tue: makeEmptyDayExpenses(), wed: makeEmptyDayExpenses(), thu: makeEmptyDayExpenses(), fri: makeEmptyDayExpenses(), sat: makeEmptyDayExpenses(), }, }; } export function makeEmptyPeriod(): TimesheetPeriodDto { return { weeks: [makeEmptyWeek(new Date()), makeEmptyWeek(new Date())], employee_full_name: '' }; } export const makeAmounts = (): ExpensesAmount => ({ expense: 0, mileage: 0, });