import { Head, Link, router } from '@inertiajs/react'; import { Search, ScrollText } from 'lucide-react'; import type { FormEvent } from 'react'; import { useState } from 'react'; import { PageHeading } from '@/components/page-heading'; import { Button } from '@/components/ui/button'; import { Card, CardContent } from '@/components/ui/card'; import { Input } from '@/components/ui/input'; import type { Paginated } from '@/types'; type AuditLog = { id: number; event: string; auditable_type: string | null; auditable_id: string | null; before: Record | null; after: Record | null; metadata: Record | null; created_at: string; actor: { name: string; email: string } | null; }; export default function AuditIndex({ logs, actors, events, filters, }: { logs: Paginated; actors: { id: number; name: string }[]; events: string[]; filters: { event?: string; actor_id?: number; date_from?: string; date_to?: string; }; }) { const [event, setEvent] = useState(filters.event ?? ''); const [actorId, setActorId] = useState(filters.actor_id?.toString() ?? ''); const [dateFrom, setDateFrom] = useState(filters.date_from ?? ''); const [dateTo, setDateTo] = useState(filters.date_to ?? ''); function filter(submitEvent: FormEvent) { submitEvent.preventDefault(); router.get('/auditoria', { event: event || undefined, actor_id: actorId || undefined, date_from: dateFrom || undefined, date_to: dateTo || undefined, }); } return ( <>
setEvent(e.target.value)} placeholder="Evento…" /> {events.map((item) => (
setDateFrom(e.target.value)} aria-label="Data inicial" /> setDateTo(e.target.value)} aria-label="Data final" />
{logs.data.map((log) => (

{log.event}

{log.actor ? `${log.actor.name} · ${log.actor.email}` : 'Sistema'} {log.auditable_type ? ` · ${log.auditable_type} #${log.auditable_id}` : ''}

{(log.before || log.after || log.metadata) && (
Ver dados técnicos
                                            {JSON.stringify(
                                                {
                                                    before: log.before,
                                                    after: log.after,
                                                    metadata: log.metadata,
                                                },
                                                null,
                                                2,
                                            )}
                                        
)}
))}
{logs.last_page > 1 && ( )}
); } AuditIndex.layout = { breadcrumbs: [{ title: 'Auditoria', href: '/auditoria' }], };