// import { DayExpensesDto, WeekDto, DetailedShifts, TimesheetPeriodDto } from "../dtos/timesheet-period.dto"; // import { ShiftRow, ExpenseRow, ExpensesAmount, TimesheetMap } from "./timesheet.types"; // import { addDays, shortDate, toNum, upper } from "./timesheet.helpers"; // import { Prisma } from "@prisma/client"; // //mappers // export const mapShiftRow = (shift: { // date: Date; // start_time: Date; // end_time: Date; // comment?: string | null; // is_approved: boolean; // is_remote: boolean; // bank_code: { type: string }; // }): ShiftRow => ({ // date: shift.date, // start_time: shift.start_time, // end_time: shift.end_time, // comment: shift.comment ?? '', // is_approved: shift.is_approved, // is_remote: shift.is_remote, // type: upper(shift.bank_code.type), // }); // export const mapExpenseRow = (expense: { // date: Date; // amount: Prisma.Decimal | number | null; // mileage: Prisma.Decimal | number | null; // comment?: string | null; // is_approved: boolean; // supervisor_comment?: string|null; // bank_code: { type: string }, // }): ExpenseRow => ({ // date: expense.date, // amount: toNum(expense.amount), // mileage: toNum(expense.mileage), // comment: expense.comment ?? '', // is_approved: expense.is_approved, // supervisor_comment: expense.supervisor_comment ?? '', // type: upper(expense.bank_code.type), // }); // // 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, // }); // export function makeEmptyTimesheet(params: { // start_day: string; // end_day: string; // label: string; // is_approved?: boolean; // }): TimesheetMap { // const { start_day, end_day, label, is_approved = false } = params; // return { // start_day, // end_day, // label, // shifts: [], // expenses: [], // is_approved, // }; // }