mirror of
https://github.com/idrainformatica/PecFlow.git
synced 2026-06-16 12:45:42 +02:00
89 lines
3.2 KiB
TypeScript
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),
|
|
}
|