Modifiche varie
This commit is contained in:
@@ -9,6 +9,8 @@ export interface AuditLogEntry {
|
||||
id: number
|
||||
tenant_id: string | null
|
||||
user_id: string | null
|
||||
user_email: string | null
|
||||
user_full_name: string | null
|
||||
action: string
|
||||
resource_type: string | null
|
||||
resource_id: string | null
|
||||
@@ -38,4 +40,19 @@ export const auditLogApi = {
|
||||
apiClient
|
||||
.get<AuditLogListResponse>('/audit-log', { params })
|
||||
.then((r) => r.data),
|
||||
|
||||
/**
|
||||
* Esporta i log come file (CSV o PDF).
|
||||
* Restituisce un Blob per il download lato browser.
|
||||
*/
|
||||
export: async (
|
||||
format: 'csv' | 'pdf',
|
||||
params: Omit<AuditLogParams, 'page' | 'page_size'> = {},
|
||||
): Promise<Blob> => {
|
||||
const response = await apiClient.get('/audit-log/export', {
|
||||
params: { format, ...params },
|
||||
responseType: 'blob',
|
||||
})
|
||||
return response.data as Blob
|
||||
},
|
||||
}
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
import apiClient from './client'
|
||||
|
||||
// ─── Firme ────────────────────────────────────────────────────────────────────
|
||||
|
||||
export interface SignatureResponse {
|
||||
id: string
|
||||
tenant_id: string
|
||||
name: string
|
||||
description: string | null
|
||||
body_html: string | null
|
||||
body_text: string | null
|
||||
created_by: string | null
|
||||
created_at: string
|
||||
updated_at: string
|
||||
}
|
||||
|
||||
export interface SignatureCreate {
|
||||
name: string
|
||||
description?: string | null
|
||||
body_html?: string | null
|
||||
body_text?: string | null
|
||||
}
|
||||
|
||||
export interface SignatureUpdate {
|
||||
name?: string
|
||||
description?: string | null
|
||||
body_html?: string | null
|
||||
body_text?: string | null
|
||||
}
|
||||
|
||||
// ─── Assegnazioni ─────────────────────────────────────────────────────────────
|
||||
|
||||
export type SignatureContext = 'reply' | 'compose' | 'both'
|
||||
|
||||
export interface SignatureAssignmentResponse {
|
||||
id: string
|
||||
tenant_id: string
|
||||
signature_id: string
|
||||
mailbox_id: string | null
|
||||
virtual_box_id: string | null
|
||||
context: SignatureContext
|
||||
created_at: string
|
||||
signature_name: string | null
|
||||
}
|
||||
|
||||
export interface SignatureAssignmentCreate {
|
||||
signature_id: string
|
||||
mailbox_id?: string | null
|
||||
virtual_box_id?: string | null
|
||||
context: SignatureContext
|
||||
}
|
||||
|
||||
// ─── API client ───────────────────────────────────────────────────────────────
|
||||
|
||||
export const signaturesApi = {
|
||||
// Firme
|
||||
list: (q?: string) =>
|
||||
apiClient
|
||||
.get<{ items: SignatureResponse[]; total: number }>('/signatures', {
|
||||
params: { q },
|
||||
})
|
||||
.then((r) => r.data),
|
||||
|
||||
get: (id: string) =>
|
||||
apiClient.get<SignatureResponse>(`/signatures/${id}`).then((r) => r.data),
|
||||
|
||||
create: (data: SignatureCreate) =>
|
||||
apiClient.post<SignatureResponse>('/signatures', data).then((r) => r.data),
|
||||
|
||||
update: (id: string, data: SignatureUpdate) =>
|
||||
apiClient.put<SignatureResponse>(`/signatures/${id}`, data).then((r) => r.data),
|
||||
|
||||
delete: (id: string) =>
|
||||
apiClient.delete(`/signatures/${id}`).then((r) => r.data),
|
||||
|
||||
// Assegnazioni
|
||||
listAssignments: (params?: { mailbox_id?: string; virtual_box_id?: string }) =>
|
||||
apiClient
|
||||
.get<{ items: SignatureAssignmentResponse[]; total: number }>('/signatures/assignments', {
|
||||
params,
|
||||
})
|
||||
.then((r) => r.data),
|
||||
|
||||
createAssignment: (data: SignatureAssignmentCreate) =>
|
||||
apiClient
|
||||
.post<SignatureAssignmentResponse>('/signatures/assignments', data)
|
||||
.then((r) => r.data),
|
||||
|
||||
deleteAssignment: (id: string) =>
|
||||
apiClient.delete(`/signatures/assignments/${id}`).then((r) => r.data),
|
||||
|
||||
// Risolve la firma per una casella/vbox nel contesto dato (usato dal ComposeModal)
|
||||
resolve: (params: { context: 'reply' | 'compose'; mailbox_id?: string; virtual_box_id?: string }) =>
|
||||
apiClient
|
||||
.get<SignatureResponse | null>('/signatures/resolve', { params })
|
||||
.then((r) => r.data),
|
||||
}
|
||||
Reference in New Issue
Block a user