'use client'; import { useEffect, useState } from 'react'; import { useRouter } from 'next/navigation'; import { useAuth } from '@/hooks'; import { Card } from '@/components/ui'; import { Loading } from '@/components/ui/Loading'; import { ROUTES, API_BASE_URL } from '@/utils/constants'; import toast from 'react-hot-toast'; import Link from 'next/link'; interface PendingTicket { id: string; code: string; status: string; played_at: string; user_email: string; user_name: string; user_phone: string; prize_name: string; prize_type: string; prize_value: string; } export default function EmployeDashboardPage() { const { user } = useAuth(); const [stats, setStats] = useState({ pendingTickets: 0, claimedToday: 0, totalClaimed: 0, }); const [pendingTickets, setPendingTickets] = useState([]); const [loadingTickets, setLoadingTickets] = useState(true); useEffect(() => { loadPendingTickets(); loadEmployeeStats(); }, []); const loadPendingTickets = async () => { try { setLoadingTickets(true); const token = localStorage.getItem('auth_token') || localStorage.getItem('token'); const response = await fetch( `${API_BASE_URL}/employee/pending-tickets?limit=10`, { headers: { Authorization: `Bearer ${token}`, }, } ); if (!response.ok) throw new Error('Erreur lors du chargement'); const data = await response.json(); setPendingTickets(data.data || []); setStats((prev) => ({ ...prev, pendingTickets: data.pagination?.total || data.data?.length || 0, })); } catch (error: any) { console.error('Error loading pending tickets:', error); } finally { setLoadingTickets(false); } }; const loadEmployeeStats = async () => { try { const token = localStorage.getItem('auth_token') || localStorage.getItem('token'); const response = await fetch( `${API_BASE_URL}/employee/stats`, { headers: { Authorization: `Bearer ${token}`, }, } ); if (!response.ok) throw new Error('Erreur lors du chargement des statistiques'); const result = await response.json(); const statsData = result.data; setStats((prev) => ({ ...prev, claimedToday: parseInt(statsData.claimed_today) || 0, totalClaimed: parseInt(statsData.total_approved) || 0, })); } catch (error: any) { console.error('Error loading employee stats:', error); } }; if (!user) { return null; } return (

Tableau de bord employé

Bienvenue {user?.firstName}, voici un aperçu de votre activité

{/* Statistics Cards */}

Tickets en attente

{stats.pendingTickets}

Réclamés aujourd'hui

{stats.claimedToday}

Total réclamés

{stats.totalClaimed}

📊
{/* Quick Actions */}
🔍

Validation des gains

Rechercher et valider les tickets des clients

🎁

Gains du Client

Rechercher tous les gains d'un client

📜

Historique

Consulter l'historique des validations

); }