import apiClient from './client' // ─── Tipi ───────────────────────────────────────────────────────────────────── export interface FascicoloResponse { id: string tenant_id: string titolo: string numero_pratica: string | null stato: 'aperto' | 'chiuso' | 'archiviato' categoria: string | null responsabile_id: string | null scadenza: string | null note: string | null created_by: string | null created_at: string updated_at: string message_count: number } export interface FascicoloCreate { titolo: string numero_pratica?: string | null stato?: 'aperto' | 'chiuso' | 'archiviato' categoria?: string | null responsabile_id?: string | null scadenza?: string | null note?: string | null } export interface FascicoloUpdate { titolo?: string numero_pratica?: string | null stato?: 'aperto' | 'chiuso' | 'archiviato' categoria?: string | null responsabile_id?: string | null scadenza?: string | null note?: string | null } export interface FascicoloMessageItem { id: string subject: string | null from_address: string | null to_addresses: string[] | null direction: 'inbound' | 'outbound' pec_type: string state: string mailbox_id: string received_at: string | null sent_at: string | null created_at: string added_at: string } export interface MessageFascicoloSummary { id: string titolo: string numero_pratica: string | null stato: 'aperto' | 'chiuso' | 'archiviato' categoria: string | null } export interface FascicoloDeadlineResponse { id: string tenant_id: string titolo: string numero_pratica: string | null stato: 'aperto' | 'chiuso' | 'archiviato' categoria: string | null responsabile_id: string | null scadenza: string | null note: string | null created_at: string updated_at: string message_count: number is_overdue: boolean } // ─── Client API ─────────────────────────────────────────────────────────────── export const fascicoliApi = { /** Lista fascicoli con filtri opzionali */ list: (params?: { stato?: string responsabile_id?: string search?: string }) => apiClient .get('/fascicoli', { params }) .then((r) => r.data), /** Dettaglio fascicolo */ get: (id: string) => apiClient.get(`/fascicoli/${id}`).then((r) => r.data), /** Crea fascicolo */ create: (data: FascicoloCreate) => apiClient.post('/fascicoli', data).then((r) => r.data), /** Modifica fascicolo */ update: (id: string, data: FascicoloUpdate) => apiClient .patch(`/fascicoli/${id}`, data) .then((r) => r.data), /** Elimina fascicolo */ delete: (id: string) => apiClient.delete(`/fascicoli/${id}`).then((r) => r.data), /** Messaggi del fascicolo */ getMessages: (id: string) => apiClient .get(`/fascicoli/${id}/messages`) .then((r) => r.data), /** Aggiungi messaggi al fascicolo */ addMessages: (id: string, message_ids: string[]) => apiClient .post<{ added: number }>(`/fascicoli/${id}/messages`, { message_ids }) .then((r) => r.data), /** Rimuovi messaggi dal fascicolo */ removeMessages: (id: string, message_ids: string[]) => apiClient .delete<{ removed: number }>(`/fascicoli/${id}/messages`, { data: { message_ids }, }) .then((r) => r.data), /** Fascicoli a cui appartiene un messaggio */ getMessageFascicoli: (messageId: string) => apiClient .get(`/messages/${messageId}/fascicoli`) .then((r) => r.data), /** Scadenzario pratiche: fascicoli con scadenza imminente o scaduta */ scadenzario: (params?: { days_ahead?: number; include_overdue?: boolean }) => apiClient .get('/fascicoli/scadenzario', { params }) .then((r) => r.data), }