import type { Employee } from './dto/employee' import { extractItems } from '~/utils/api' export const listEmployees = async () => { const api = useApi() const data = await api.get( '/employees', {}, { toast: false } ) return extractItems(data) } export const listScopedEmployees = async () => { const api = useApi() const data = await api.get( '/employees/scoped', {}, { toast: false } ) return extractItems(data) } export const getEmployee = async (id: number) => { const api = useApi() return api.get(`/employees/${id}`, {}, { toast: false }) } export const createEmployee = async (payload: { firstName: string lastName: string siteId?: number | null contractId: number contractNature?: 'CDI' | 'CDD' | 'INTERIM' contractStartDate?: string contractEndDate?: string | null }) => { const api = useApi() return api.post('/employees', { firstName: payload.firstName, lastName: payload.lastName, site: payload.siteId ? `/api/sites/${payload.siteId}` : null, contract: `/api/contracts/${payload.contractId}`, contractNature: payload.contractNature, contractStartDate: payload.contractStartDate, contractEndDate: payload.contractEndDate ?? null }, { toastSuccessKey: 'success.employee.create', toastErrorKey: 'errors.employee.create' }) } export const updateEmployee = async ( id: number, payload: { firstName: string lastName: string siteId?: number | null contractId: number contractNature?: 'CDI' | 'CDD' | 'INTERIM' contractStartDate?: string contractEndDate?: string | null displayOrder?: number } ) => { const api = useApi() return api.patch(`/employees/${id}`, { firstName: payload.firstName, lastName: payload.lastName, site: payload.siteId ? `/api/sites/${payload.siteId}` : null, contract: `/api/contracts/${payload.contractId}`, contractNature: payload.contractNature, contractStartDate: payload.contractStartDate, contractEndDate: payload.contractEndDate ?? null, displayOrder: payload.displayOrder }, { toastSuccessKey: 'success.employee.update', toastErrorKey: 'errors.employee.update' }) } export const updateEmployeeOrder = async ( id: number, displayOrder: number ) => { const api = useApi() return api.patch(`/employees/${id}`, { displayOrder }, { toast: false }) } export const deleteEmployee = async (id: number) => { const api = useApi() return api.delete(`/employees/${id}`, {}, { toastSuccessKey: 'success.employee.delete', toastErrorKey: 'errors.employee.delete' }) }