Files
PecHub/frontend/src/api/virtual_boxes.api.ts
T
2026-03-19 15:47:42 +01:00

89 lines
3.2 KiB
TypeScript

import apiClient from './client'
import type {
AssignedUserResponse,
MailboxBriefResponse,
VirtualBoxAssignmentResponse,
VirtualBoxAssignRequest,
VirtualBoxCreate,
VirtualBoxListResponse,
VirtualBoxMailboxAssignRequest,
VirtualBoxResponse,
VirtualBoxRuleCreate,
VirtualBoxUpdate,
} from '@/types/api.types'
export const virtualBoxesApi = {
/** Crea una nuova Virtual Box. */
create: (data: VirtualBoxCreate) =>
apiClient.post<VirtualBoxResponse>('/virtual-boxes', data).then((r) => r.data),
/** Lista Virtual Box del tenant. */
list: (params?: { page?: number; page_size?: number; active_only?: boolean }) =>
apiClient
.get<VirtualBoxListResponse>('/virtual-boxes', { params })
.then((r) => r.data),
/** Virtual Box assegnate all'utente corrente. */
myVirtualBoxes: () =>
apiClient.get<VirtualBoxResponse[]>('/virtual-boxes/my').then((r) => r.data),
/**
* Caselle PEC attive da cui l'utente può inviare tramite le sue Virtual Box.
* Usato nella pagina di composizione per mostrare le caselle mittente disponibili.
*/
getMyMailboxes: () =>
apiClient
.get<MailboxBriefResponse[]>('/virtual-boxes/my/mailboxes')
.then((r) => r.data),
/** Dettaglio Virtual Box. */
get: (id: string) =>
apiClient.get<VirtualBoxResponse>(`/virtual-boxes/${id}`).then((r) => r.data),
/** Aggiorna Virtual Box (incluse caselle se fornito mailbox_ids). */
update: (id: string, data: VirtualBoxUpdate) =>
apiClient.patch<VirtualBoxResponse>(`/virtual-boxes/${id}`, data).then((r) => r.data),
/** Elimina Virtual Box. */
delete: (id: string) => apiClient.delete(`/virtual-boxes/${id}`),
/** Sostituisce le regole di una Virtual Box. */
replaceRules: (id: string, rules: VirtualBoxRuleCreate[]) =>
apiClient
.put<VirtualBoxResponse>(`/virtual-boxes/${id}/rules`, rules)
.then((r) => r.data),
// ─── Caselle reali ─────────────────────────────────────────────────────────
/** Imposta le caselle PEC reali associate (sostituzione completa). */
setMailboxes: (id: string, data: VirtualBoxMailboxAssignRequest) =>
apiClient
.put<VirtualBoxResponse>(`/virtual-boxes/${id}/mailboxes`, data)
.then((r) => r.data),
/** Lista caselle PEC reali associate. */
listMailboxes: (id: string) =>
apiClient
.get<MailboxBriefResponse[]>(`/virtual-boxes/${id}/mailboxes`)
.then((r) => r.data),
// ─── Assegnazioni utenti ───────────────────────────────────────────────────
/** Assegna utenti a una Virtual Box. */
assignUsers: (id: string, data: VirtualBoxAssignRequest) =>
apiClient
.post<VirtualBoxAssignmentResponse[]>(`/virtual-boxes/${id}/assignments`, data)
.then((r) => r.data),
/** Rimuovi assegnazione utente. */
unassignUser: (vboxId: string, userId: string) =>
apiClient.delete(`/virtual-boxes/${vboxId}/assignments/${userId}`),
/** Lista utenti assegnati. */
listAssignedUsers: (id: string) =>
apiClient
.get<AssignedUserResponse[]>(`/virtual-boxes/${id}/assignments`)
.then((r) => r.data),
}