targo-frontend/src/modules/timesheets/models/timesheet.models.ts

58 lines
1.4 KiB
TypeScript

import type { Shift } from "./shift.models";
import type { Expense } from "src/modules/timesheets/models/expense.models";
export const TIME_FORMAT_PATTERN = /^(\d{2}:\d{2})?$/;
export const DATE_FORMAT_PATTERN = /^\d{4}-\d{2}-\d{2}$/;
export interface TimesheetResponse {
has_preset_schedule: boolean;
employee_fullname: string;
daily_expected_hours: number;
timesheets: Timesheet[];
}
export interface Timesheet {
timesheet_id: number;
is_approved: boolean;
weekly_hours: TotalHours;
weekly_expenses: TotalExpenses;
days: TimesheetDay[];
}
export interface TimesheetDay {
date: string; // YYYY-MM-DD
daily_hours: TotalHours;
daily_expenses: TotalExpenses;
shifts: Shift[];
expenses: Expense[];
}
export interface TotalHours {
regular: number;
evening: number;
emergency: number;
overtime: number;
vacation: number;
holiday: number;
sick: number;
absent: number;
}
export interface TotalExpenses {
expenses: number;
per_diem: number;
on_call: number;
mileage: number;
}
export class TimesheetDayDisplay {
timesheetId: number;
isTimesheetApproved: boolean;
day: TimesheetDay;
constructor(timesheet: Timesheet, day: TimesheetDay) {
this.timesheetId = timesheet.timesheet_id;
this.isTimesheetApproved = timesheet.is_approved;
this.day = day;
}
}