Files
SIRH/frontend/services/users.ts
tristan 0897154460
Some checks failed
Auto Tag Develop / tag (push) Has been cancelled
feat : ajout d'un écran pour le récap congés et RTT
2026-04-14 15:08:45 +02:00

66 lines
1.7 KiB
TypeScript

import type { User } from './dto/user'
import { extractItems } from '~/utils/api'
export const listUsers = async () => {
const api = useApi()
const data = await api.get<User[] | { 'hydra:member'?: User[] }>(
'/users',
{},
{ toast: false }
)
return extractItems<User>(data)
}
export const createUser = async (payload: {
username: string
plainPassword: string
roles: string[]
employeeId?: number | null
isLocked?: boolean
hasLeaveRecapAccess?: boolean
}) => {
const api = useApi()
return api.post<User>(
'/users',
{
username: payload.username,
plainPassword: payload.plainPassword,
roles: payload.roles,
employee: payload.employeeId ? `/api/employees/${payload.employeeId}` : null,
isLocked: payload.isLocked ?? false,
hasLeaveRecapAccess: payload.hasLeaveRecapAccess ?? false
},
{
toastSuccessKey: 'success.user.create',
toastErrorKey: 'errors.user.create'
}
)
}
export const updateUser = async (id: number, payload: {
username: string
plainPassword?: string
roles: string[]
employeeId?: number | null
isLocked?: boolean
hasLeaveRecapAccess?: boolean
}) => {
const api = useApi()
const body: Record<string, unknown> = {
username: payload.username,
roles: payload.roles,
employee: payload.employeeId ? `/api/employees/${payload.employeeId}` : null,
isLocked: payload.isLocked ?? false,
hasLeaveRecapAccess: payload.hasLeaveRecapAccess ?? false
}
if (payload.plainPassword) {
body.plainPassword = payload.plainPassword
}
return api.patch<User>(`/users/${id}`, body, {
toastSuccessKey: 'success.user.update',
toastErrorKey: 'errors.user.update'
})
}