71 lines
3.2 KiB
TypeScript
71 lines
3.2 KiB
TypeScript
import { useTimesheetStore } from "src/stores/timesheet-store";
|
|
import { useAuthStore } from "src/stores/auth-store";
|
|
import type { PayPeriodReportFilters } from "../types/timesheet-approval-pay-period-report-interface";
|
|
import type { PayPeriodOverviewEmployee } from "../types/timesheet-approval-pay-period-overview-employee-interface";
|
|
|
|
export const useTimesheetApprovalApi = () => {
|
|
const timesheet_store = useTimesheetStore();
|
|
const auth_store = useAuthStore();
|
|
|
|
const getPayPeriodOverviewByDate = async (date_string: string) => {
|
|
const success = await timesheet_store.getPayPeriodByDate(date_string);
|
|
|
|
if (success) {
|
|
const current_pay_period = timesheet_store.current_pay_period;
|
|
await timesheet_store.getTimesheetApprovalPayPeriodEmployeeOverviews(current_pay_period.pay_year, current_pay_period.pay_period_no, auth_store.user.email);
|
|
}
|
|
}
|
|
|
|
const getPayPeriodOverviewByEmployeeEmail = (email: string): PayPeriodOverviewEmployee | undefined => {
|
|
return timesheet_store.pay_period_overview_employees.find(overview => overview.email === email);
|
|
};
|
|
|
|
/* This method attempts to get the next or previous pay period.
|
|
It checks if pay period number is within a certain range, adjusts pay period and year accordingly.
|
|
It then requests the matching pay period object to set as current pay period from server.
|
|
If successful, it then requests pay period overviews from that new pay period. */
|
|
const getNextPayPeriodOverview = async (direction: number) => {
|
|
const current_pay_period = timesheet_store.current_pay_period;
|
|
let new_pay_period_no = current_pay_period.pay_period_no + direction;
|
|
let new_pay_year = current_pay_period.pay_year;
|
|
|
|
if (new_pay_period_no > 26) {
|
|
new_pay_period_no = 1;
|
|
new_pay_year += 1;
|
|
}
|
|
|
|
if (new_pay_period_no < 1) {
|
|
new_pay_period_no = 26;
|
|
new_pay_year -= 1;
|
|
}
|
|
|
|
const success = await timesheet_store.getPayPeriodByYearAndPeriodNumber(new_pay_year, new_pay_period_no);
|
|
|
|
if (success) {
|
|
await timesheet_store.getTimesheetApprovalPayPeriodEmployeeOverviews(new_pay_year, new_pay_period_no, auth_store.user.email);
|
|
}
|
|
};
|
|
|
|
const getTimesheetsByPayPeriodAndEmail = async (employee_email: string) => {
|
|
await timesheet_store.getTimesheetsByPayPeriodAndEmail(employee_email);
|
|
};
|
|
|
|
const getTimesheetApprovalCSVReport = async ( report_filter_company: boolean[], report_filter_type: boolean[] ) => {
|
|
const [ targo, solucom ] = report_filter_company;
|
|
const [ shifts, expenses, holiday, vacation ] = report_filter_type;
|
|
const options = {
|
|
company: { targo, solucom },
|
|
types: { shifts, expenses, holiday, vacation }
|
|
} as PayPeriodReportFilters;
|
|
|
|
await timesheet_store.getTimesheetApprovalCSVReport(options);
|
|
};
|
|
|
|
return {
|
|
getPayPeriodOverviewByDate,
|
|
getNextPayPeriodOverview,
|
|
getPayPeriodOverviewByEmployeeEmail,
|
|
getTimesheetsByPayPeriodAndEmail,
|
|
getTimesheetApprovalCSVReport
|
|
}
|
|
}; |