import { api } from "src/boot/axios"; import type { BackendResponse } from "src/modules/shared/models/backend-response.models"; import type { CSVReportFilters } from "src/modules/timesheet-approval/models/timesheet-approval-csv-report.models"; import type { PayPeriodOverviewResponse } from "src/modules/timesheet-approval/models/timesheet-overview.models"; export const timesheetApprovalService = { getPayPeriodOverviews: async (year: number, period_number: number): Promise => { const response = await api.get<{ success: boolean, data: PayPeriodOverviewResponse, error?: string }>(`pay-periods/overview/${year}/${period_number}`); return response.data.data; }, getPayPeriodReportByYearAndPeriodNumber: async (year: number, period_number: number, filters?: CSVReportFilters): Promise => { const response = await api.post(`exports/csv/${year}/${period_number}`, filters, { responseType: 'blob' }); return response.data; }, updateTimesheetsApprovalStatus: async (email: string, timesheet_ids: number[], is_approved: boolean): Promise> => { const response = await api.patch>('pay-periods/pay-period-approval', { email, timesheet_ids, is_approved }); return response.data; }, subscribeToPayPeriodObservable: (): EventSource => { return new EventSource(`${import.meta.env.VITE_TARGO_BACKEND_URL}pay-periods/subscribe`); }, };