Files
SIRH/frontend/services/audit-logs.ts
T
tristan 608eeaa450 feat(audit) : filtres Employé et Utilisateur en champ texte (recherche libre)
Employé = recherche partielle sur nom/prénom (nouveau filtre back 'employee', LIKE via join) ;
Utilisateur = recherche partielle sur username. Remplace les selects par des champs texte.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 12:05:07 +02:00

40 lines
1.3 KiB
TypeScript

import type { AuditLog } from './dto/audit-log'
export type AuditLogFilters = {
employee?: string
from?: string
to?: string
entityType?: string[]
action?: string[]
username?: string
ip?: string
device?: string
page?: number
perPage?: number
}
export type AuditLogPage = {
items: AuditLog[]
total: number
page: number
perPage: number
}
export const fetchAuditLogs = async (filters: AuditLogFilters = {}): Promise<AuditLogPage> => {
const api = useApi()
const params: Record<string, string | string[]> = {}
if (filters.employee && filters.employee.trim() !== '') params.employee = filters.employee.trim()
if (filters.from) params.from = filters.from
if (filters.to) params.to = filters.to
if (filters.entityType && filters.entityType.length > 0) params['entityType[]'] = filters.entityType
if (filters.action && filters.action.length > 0) params['action[]'] = filters.action
if (filters.username && filters.username.trim() !== '') params.username = filters.username.trim()
if (filters.ip && filters.ip.trim() !== '') params.ip = filters.ip.trim()
if (filters.device && filters.device.trim() !== '') params.device = filters.device.trim()
if (filters.page) params.page = String(filters.page)
if (filters.perPage) params.perPage = String(filters.perPage)
return api.get<AuditLogPage>('/audit-logs', params, { toast: false })
}