From bfd418851eea1e337ed273a278ff0c9b82522078 Mon Sep 17 00:00:00 2001 From: matthieu Date: Sun, 15 Mar 2026 19:30:32 +0100 Subject: [PATCH] feat(frontend) : add client-tickets service Co-Authored-By: Claude Sonnet 4.6 --- frontend/services/client-tickets.ts | 39 +++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 frontend/services/client-tickets.ts diff --git a/frontend/services/client-tickets.ts b/frontend/services/client-tickets.ts new file mode 100644 index 0000000..18480f9 --- /dev/null +++ b/frontend/services/client-tickets.ts @@ -0,0 +1,39 @@ +import type { ClientTicket, ClientTicketWrite } from './dto/client-ticket' +import type { HydraCollection } from '~/utils/api' +import { extractHydraMembers } from '~/utils/api' + +export function useClientTicketService() { + const api = useApi() + + async function getAll(params?: Record): Promise { + const data = await api.get>('/client_tickets', params) + return extractHydraMembers(data) + } + + async function getById(id: number): Promise { + return await api.get(`/client_tickets/${id}`) + } + + async function create(data: ClientTicketWrite): Promise { + return await api.post('/client_tickets', data as Record, { + toastSuccessKey: 'clientTicket.created', + }) + } + + async function updateStatus(id: number, status: string, statusComment?: string): Promise { + return await api.patch(`/client_tickets/${id}`, { + status, + ...(statusComment ? { statusComment } : {}), + }, { + toastSuccessKey: 'clientTicket.statusUpdated', + }) + } + + async function remove(id: number): Promise { + await api.delete(`/client_tickets/${id}`, {}, { + toastSuccessKey: 'clientTicket.deleted', + }) + } + + return { getAll, getById, create, updateStatus, remove } +}