feat : ajout des sites pour les employés et retour arrière sur l'impression
This commit is contained in:
@@ -16,7 +16,8 @@ export const createAbsenceType = async (
|
||||
) => {
|
||||
const api = useApi()
|
||||
return api.post<AbsenceType>('/absence_types', payload, {
|
||||
toastSuccessMessage: 'Type créé.'
|
||||
toastSuccessKey: 'success.absenceType.create',
|
||||
toastErrorKey: 'errors.absenceType.create'
|
||||
})
|
||||
}
|
||||
|
||||
@@ -26,13 +27,15 @@ export const updateAbsenceType = async (
|
||||
) => {
|
||||
const api = useApi()
|
||||
return api.patch<AbsenceType>(`/absence_types/${id}`, payload, {
|
||||
toastSuccessMessage: 'Type mis à jour.'
|
||||
toastSuccessKey: 'success.absenceType.update',
|
||||
toastErrorKey: 'errors.absenceType.update'
|
||||
})
|
||||
}
|
||||
|
||||
export const deleteAbsenceType = async (id: number) => {
|
||||
const api = useApi()
|
||||
return api.delete(`/absence_types/${id}`, {}, {
|
||||
toastSuccessMessage: 'Type supprimé.'
|
||||
toastSuccessKey: 'success.absenceType.delete',
|
||||
toastErrorKey: 'errors.absenceType.delete'
|
||||
})
|
||||
}
|
||||
|
||||
@@ -26,7 +26,8 @@ export const createAbsence = async (payload: {
|
||||
endDate: payload.endDate,
|
||||
comment: payload.comment
|
||||
}, {
|
||||
toastSuccessMessage: 'Absence créée.'
|
||||
toastSuccessKey: 'success.absence.create',
|
||||
toastErrorKey: 'errors.absence.create'
|
||||
})
|
||||
}
|
||||
|
||||
@@ -46,13 +47,15 @@ export const updateAbsence = async (payload: {
|
||||
endDate: payload.endDate,
|
||||
comment: payload.comment
|
||||
}, {
|
||||
toastSuccessMessage: 'Absence mise à jour.'
|
||||
toastSuccessKey: 'success.absence.update',
|
||||
toastErrorKey: 'errors.absence.update'
|
||||
})
|
||||
}
|
||||
|
||||
export const deleteAbsence = async (id: number) => {
|
||||
const api = useApi()
|
||||
return api.delete(`/absences/${id}`, {}, {
|
||||
toastSuccessMessage: 'Absence supprimée.'
|
||||
toastSuccessKey: 'success.absence.delete',
|
||||
toastErrorKey: 'errors.absence.delete'
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
import type { Site } from './site'
|
||||
|
||||
export type Employee = {
|
||||
id: number
|
||||
firstName: string
|
||||
lastName: string
|
||||
site?: Site | null
|
||||
}
|
||||
|
||||
5
frontend/services/dto/site.ts
Normal file
5
frontend/services/dto/site.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
export type Site = {
|
||||
id: number
|
||||
name: string
|
||||
color: string
|
||||
}
|
||||
@@ -11,26 +11,45 @@ export const listEmployees = async () => {
|
||||
return extractItems<Employee>(data)
|
||||
}
|
||||
|
||||
export const createEmployee = async (payload: Pick<Employee, 'firstName' | 'lastName'>) => {
|
||||
export const createEmployee = async (payload: {
|
||||
firstName: string
|
||||
lastName: string
|
||||
siteId?: number | null
|
||||
}) => {
|
||||
const api = useApi()
|
||||
return api.post<Employee>('/employees', payload, {
|
||||
toastSuccessMessage: 'Employé créé.'
|
||||
return api.post<Employee>('/employees', {
|
||||
firstName: payload.firstName,
|
||||
lastName: payload.lastName,
|
||||
site: payload.siteId ? `/api/sites/${payload.siteId}` : null
|
||||
}, {
|
||||
toastSuccessKey: 'success.employee.create',
|
||||
toastErrorKey: 'errors.employee.create'
|
||||
})
|
||||
}
|
||||
|
||||
export const updateEmployee = async (
|
||||
id: number,
|
||||
payload: Pick<Employee, 'firstName' | 'lastName'>
|
||||
payload: {
|
||||
firstName: string
|
||||
lastName: string
|
||||
siteId?: number | null
|
||||
}
|
||||
) => {
|
||||
const api = useApi()
|
||||
return api.patch<Employee>(`/employees/${id}`, payload, {
|
||||
toastSuccessMessage: 'Employé mis à jour.'
|
||||
return api.patch<Employee>(`/employees/${id}`, {
|
||||
firstName: payload.firstName,
|
||||
lastName: payload.lastName,
|
||||
site: payload.siteId ? `/api/sites/${payload.siteId}` : null
|
||||
}, {
|
||||
toastSuccessKey: 'success.employee.update',
|
||||
toastErrorKey: 'errors.employee.update'
|
||||
})
|
||||
}
|
||||
|
||||
export const deleteEmployee = async (id: number) => {
|
||||
const api = useApi()
|
||||
return api.delete(`/employees/${id}`, {}, {
|
||||
toastSuccessMessage: 'Employé supprimé.'
|
||||
toastSuccessKey: 'success.employee.delete',
|
||||
toastErrorKey: 'errors.employee.delete'
|
||||
})
|
||||
}
|
||||
|
||||
36
frontend/services/sites.ts
Normal file
36
frontend/services/sites.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
import type { Site } from './dto/site'
|
||||
import { extractItems } from '~/utils/api'
|
||||
|
||||
export const listSites = async () => {
|
||||
const api = useApi()
|
||||
const data = await api.get<Site[] | { 'hydra:member'?: Site[] }>(
|
||||
'/sites',
|
||||
{},
|
||||
{ toast: false }
|
||||
)
|
||||
return extractItems<Site>(data)
|
||||
}
|
||||
|
||||
export const createSite = async (payload: Pick<Site, 'name' | 'color'>) => {
|
||||
const api = useApi()
|
||||
return api.post<Site>('/sites', payload, {
|
||||
toastSuccessKey: 'success.site.create',
|
||||
toastErrorKey: 'errors.site.create'
|
||||
})
|
||||
}
|
||||
|
||||
export const updateSite = async (id: number, payload: Pick<Site, 'name' | 'color'>) => {
|
||||
const api = useApi()
|
||||
return api.patch<Site>(`/sites/${id}`, payload, {
|
||||
toastSuccessKey: 'success.site.update',
|
||||
toastErrorKey: 'errors.site.update'
|
||||
})
|
||||
}
|
||||
|
||||
export const deleteSite = async (id: number) => {
|
||||
const api = useApi()
|
||||
return api.delete(`/sites/${id}`, {}, {
|
||||
toastSuccessKey: 'success.site.delete',
|
||||
toastErrorKey: 'errors.site.delete'
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user