feat : first commit
This commit is contained in:
38
frontend/services/absence-types.ts
Normal file
38
frontend/services/absence-types.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
import type { AbsenceType } from './dto/absence-type'
|
||||
import { extractItems } from '~/utils/api'
|
||||
|
||||
export const listAbsenceTypes = async () => {
|
||||
const api = useApi()
|
||||
const data = await api.get<AbsenceType[] | { 'hydra:member'?: AbsenceType[] }>(
|
||||
'/absence_types',
|
||||
{},
|
||||
{ toast: false }
|
||||
)
|
||||
return extractItems<AbsenceType>(data)
|
||||
}
|
||||
|
||||
export const createAbsenceType = async (
|
||||
payload: Pick<AbsenceType, 'code' | 'label' | 'color'>
|
||||
) => {
|
||||
const api = useApi()
|
||||
return api.post<AbsenceType>('/absence_types', payload, {
|
||||
toastSuccessMessage: 'Type créé.'
|
||||
})
|
||||
}
|
||||
|
||||
export const updateAbsenceType = async (
|
||||
id: number,
|
||||
payload: Pick<AbsenceType, 'code' | 'label' | 'color'>
|
||||
) => {
|
||||
const api = useApi()
|
||||
return api.patch<AbsenceType>(`/absence_types/${id}`, payload, {
|
||||
toastSuccessMessage: 'Type mis à jour.'
|
||||
})
|
||||
}
|
||||
|
||||
export const deleteAbsenceType = async (id: number) => {
|
||||
const api = useApi()
|
||||
return api.delete(`/absence_types/${id}`, {}, {
|
||||
toastSuccessMessage: 'Type supprimé.'
|
||||
})
|
||||
}
|
||||
58
frontend/services/absences.ts
Normal file
58
frontend/services/absences.ts
Normal file
@@ -0,0 +1,58 @@
|
||||
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
|
||||
}, {
|
||||
toastSuccessMessage: 'Absence créée.'
|
||||
})
|
||||
}
|
||||
|
||||
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
|
||||
}, {
|
||||
toastSuccessMessage: 'Absence mise à jour.'
|
||||
})
|
||||
}
|
||||
|
||||
export const deleteAbsence = async (id: number) => {
|
||||
const api = useApi()
|
||||
return api.delete(`/absences/${id}`, {}, {
|
||||
toastSuccessMessage: 'Absence supprimée.'
|
||||
})
|
||||
}
|
||||
21
frontend/services/auth.ts
Normal file
21
frontend/services/auth.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import type { UserData } from './dto/user-data'
|
||||
|
||||
export const getCurrentUser = () => {
|
||||
const api = useApi()
|
||||
return api.get<UserData>('/me', {}, { toastErrorKey: 'errors.auth.session' })
|
||||
}
|
||||
|
||||
export const login = (username: string, password: string) => {
|
||||
const api = useApi()
|
||||
return api.post('/login_check', { username, password }, {
|
||||
toastErrorKey: 'errors.auth.login'
|
||||
})
|
||||
}
|
||||
|
||||
export const logout = () => {
|
||||
const api = useApi()
|
||||
return api.post('/logout', {}, {
|
||||
toastErrorKey: 'errors.auth.logout',
|
||||
toastSuccessKey: 'success.auth.logout'
|
||||
})
|
||||
}
|
||||
6
frontend/services/dto/absence-type.ts
Normal file
6
frontend/services/dto/absence-type.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
export type AbsenceType = {
|
||||
id: number
|
||||
code: string
|
||||
label: string
|
||||
color: string
|
||||
}
|
||||
11
frontend/services/dto/absence.ts
Normal file
11
frontend/services/dto/absence.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import type { Employee } from './employee'
|
||||
import type { AbsenceType } from './absence-type'
|
||||
|
||||
export type Absence = {
|
||||
id: number
|
||||
startDate: string
|
||||
endDate: string
|
||||
comment?: string | null
|
||||
employee: Employee
|
||||
type: AbsenceType
|
||||
}
|
||||
5
frontend/services/dto/employee.ts
Normal file
5
frontend/services/dto/employee.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
export type Employee = {
|
||||
id: number
|
||||
firstName: string
|
||||
lastName: string
|
||||
}
|
||||
4
frontend/services/dto/user-data.ts
Normal file
4
frontend/services/dto/user-data.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
export type UserData = {
|
||||
id: number
|
||||
username: string
|
||||
}
|
||||
36
frontend/services/employees.ts
Normal file
36
frontend/services/employees.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
import type { Employee } from './dto/employee'
|
||||
import { extractItems } from '~/utils/api'
|
||||
|
||||
export const listEmployees = async () => {
|
||||
const api = useApi()
|
||||
const data = await api.get<Employee[] | { 'hydra:member'?: Employee[] }>(
|
||||
'/employees',
|
||||
{},
|
||||
{ toast: false }
|
||||
)
|
||||
return extractItems<Employee>(data)
|
||||
}
|
||||
|
||||
export const createEmployee = async (payload: Pick<Employee, 'firstName' | 'lastName'>) => {
|
||||
const api = useApi()
|
||||
return api.post<Employee>('/employees', payload, {
|
||||
toastSuccessMessage: 'Employé créé.'
|
||||
})
|
||||
}
|
||||
|
||||
export const updateEmployee = async (
|
||||
id: number,
|
||||
payload: Pick<Employee, 'firstName' | 'lastName'>
|
||||
) => {
|
||||
const api = useApi()
|
||||
return api.patch<Employee>(`/employees/${id}`, payload, {
|
||||
toastSuccessMessage: 'Employé mis à jour.'
|
||||
})
|
||||
}
|
||||
|
||||
export const deleteEmployee = async (id: number) => {
|
||||
const api = useApi()
|
||||
return api.delete(`/employees/${id}`, {}, {
|
||||
toastSuccessMessage: 'Employé supprimé.'
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user