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('/virtual-boxes', data).then((r) => r.data), /** Lista Virtual Box del tenant. */ list: (params?: { page?: number; page_size?: number; active_only?: boolean }) => apiClient .get('/virtual-boxes', { params }) .then((r) => r.data), /** Virtual Box assegnate all'utente corrente. */ myVirtualBoxes: () => apiClient.get('/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('/virtual-boxes/my/mailboxes') .then((r) => r.data), /** Dettaglio Virtual Box. */ get: (id: string) => apiClient.get(`/virtual-boxes/${id}`).then((r) => r.data), /** Aggiorna Virtual Box (incluse caselle se fornito mailbox_ids). */ update: (id: string, data: VirtualBoxUpdate) => apiClient.patch(`/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(`/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(`/virtual-boxes/${id}/mailboxes`, data) .then((r) => r.data), /** Lista caselle PEC reali associate. */ listMailboxes: (id: string) => apiClient .get(`/virtual-boxes/${id}/mailboxes`) .then((r) => r.data), // ─── Assegnazioni utenti ─────────────────────────────────────────────────── /** Assegna utenti a una Virtual Box. */ assignUsers: (id: string, data: VirtualBoxAssignRequest) => apiClient .post(`/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(`/virtual-boxes/${id}/assignments`) .then((r) => r.data), }