- Timesheet Approval's download menu has had its UI overhauled and the script has been streamlined to better match backend structure and logic - Details window in timesheet approval has a few bug and oversight fixes. - Refactored UI store to work with camelCase instead of snake_case
25 lines
1.5 KiB
TypeScript
25 lines
1.5 KiB
TypeScript
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<PayPeriodOverviewResponse> => {
|
|
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<Blob> => {
|
|
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<BackendResponse<{ shifts: number, expenses: number }>> => {
|
|
const response = await api.patch<BackendResponse<{ shifts: number, expenses: number }>>('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`);
|
|
},
|
|
}; |