Fascicoli+Tassonomia+permessi
This commit is contained in:
@@ -0,0 +1,120 @@
|
||||
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
|
||||
}
|
||||
|
||||
// ─── Client API ───────────────────────────────────────────────────────────────
|
||||
|
||||
export const fascicoliApi = {
|
||||
/** Lista fascicoli con filtri opzionali */
|
||||
list: (params?: {
|
||||
stato?: string
|
||||
responsabile_id?: string
|
||||
search?: string
|
||||
}) =>
|
||||
apiClient
|
||||
.get<FascicoloResponse[]>('/fascicoli', { params })
|
||||
.then((r) => r.data),
|
||||
|
||||
/** Dettaglio fascicolo */
|
||||
get: (id: string) =>
|
||||
apiClient.get<FascicoloResponse>(`/fascicoli/${id}`).then((r) => r.data),
|
||||
|
||||
/** Crea fascicolo */
|
||||
create: (data: FascicoloCreate) =>
|
||||
apiClient.post<FascicoloResponse>('/fascicoli', data).then((r) => r.data),
|
||||
|
||||
/** Modifica fascicolo */
|
||||
update: (id: string, data: FascicoloUpdate) =>
|
||||
apiClient
|
||||
.patch<FascicoloResponse>(`/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<FascicoloMessageItem[]>(`/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<MessageFascicoloSummary[]>(`/messages/${messageId}/fascicoli`)
|
||||
.then((r) => r.data),
|
||||
}
|
||||
Reference in New Issue
Block a user