Files
SIRH/frontend/services/absences.ts

62 lines
1.6 KiB
TypeScript

import type { Absence } from './dto/absence'
import { extractItems } from '~/utils/api'
export const listAbsences = async () => {
const api = useApi()
const data = await api.get<Absence[] | { 'hydra:member'?: Absence[] }>(
'/absences',
{},
{ toast: false }
)
return extractItems<Absence>(data)
}
export const createAbsence = async (payload: {
employeeId: number
typeId: number
startDate: string
endDate: string
comment?: string
}) => {
const api = useApi()
return api.post<Absence>('/absences', {
employee: `/api/employees/${payload.employeeId}`,
type: `/api/absence_types/${payload.typeId}`,
startDate: payload.startDate,
endDate: payload.endDate,
comment: payload.comment
}, {
toastSuccessKey: 'success.absence.create',
toastErrorKey: 'errors.absence.create'
})
}
export const updateAbsence = async (payload: {
id: number
employeeId: number
typeId: number
startDate: string
endDate: string
comment?: string
}) => {
const api = useApi()
return api.patch<Absence>(`/absences/${payload.id}`, {
employee: `/api/employees/${payload.employeeId}`,
type: `/api/absence_types/${payload.typeId}`,
startDate: payload.startDate,
endDate: payload.endDate,
comment: payload.comment
}, {
toastSuccessKey: 'success.absence.update',
toastErrorKey: 'errors.absence.update'
})
}
export const deleteAbsence = async (id: number) => {
const api = useApi()
return api.delete(`/absences/${id}`, {}, {
toastSuccessKey: 'success.absence.delete',
toastErrorKey: 'errors.absence.delete'
})
}