'use client'; import { useState, useEffect } from 'react'; import { useAuth } from '@/hooks'; import { Card, EmptyState, StatusBadge } from '@/components/ui'; import { Loading } from '@/components/ui/Loading'; import { api } from '@/hooks/useApi'; import toast from 'react-hot-toast'; import { Calendar, User, Gift, RefreshCw, } from 'lucide-react'; interface HistoryTicket { id: string; code: string; status: string; played_at: string; claimed_at: string | null; validated_at: string | null; rejection_reason: string | null; user_email: string; user_name: string; prize_name: string; prize_value: string; } export default function EmployeeHistoryPage() { const { user, isAuthenticated } = useAuth(); const [history, setHistory] = useState([]); const [loading, setLoading] = useState(true); const [filter, setFilter] = useState<'ALL' | 'CLAIMED' | 'REJECTED'>('ALL'); useEffect(() => { if (isAuthenticated) { loadHistory(); } }, [isAuthenticated]); const loadHistory = async () => { try { setLoading(true); const data = await api.get<{ data: HistoryTicket[] }>('/employee/history'); setHistory(data.data || []); } catch (error: any) { console.error('Error loading history:', error); toast.error(error.message || 'Erreur lors du chargement de l\'historique'); } finally { setLoading(false); } }; const filteredHistory = history.filter((ticket) => { if (filter === 'ALL') return true; return ticket.status === filter; }); const stats = { total: history.length, claimed: history.filter((t) => t.status === 'CLAIMED').length, rejected: history.filter((t) => t.status === 'REJECTED').length, }; if (loading) { return (
); } return (
{/* Header */}

Historique des Validations

Consultez l'historique de vos validations de tickets

{/* Statistics Cards */}

Total traités

{stats.total}

📊

Validés

{stats.claimed}

Rejetés

{stats.rejected}

{/* Filters */}
{/* History List */} {filteredHistory.length === 0 ? ( ) : (
{filteredHistory.map((ticket) => (
{ticket.code}

Client

{ticket.user_name}

{ticket.user_email}

Lot

{ticket.prize_name}

{ticket.prize_value}€

Validé le{' '} {ticket.validated_at ? new Date(ticket.validated_at).toLocaleDateString('fr-FR', { day: 'numeric', month: 'long', year: 'numeric', hour: '2-digit', minute: '2-digit', }) : 'N/A'}
{ticket.rejection_reason && (

Raison du rejet:

{ticket.rejection_reason}

)}
))}
)}
); }