'use client'; import { useEffect, useState } from 'react'; import { useAuth } from '@/hooks'; import { API_BASE_URL } from '@/utils/constants'; import Link from 'next/link'; import { LayoutDashboard, Clock, CheckCircle, BarChart3, Search, Gift, ClipboardList } from 'lucide-react'; 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 (
{/* Header */}

Dashboard

Bonjour {user?.firstName}, bienvenue dans votre espace employé

{/* Statistics Cards */}

{stats.pendingTickets}

En attente

{stats.claimedToday}

Validés aujourd'hui

{stats.totalClaimed}

Total validés

{/* Quick Actions */}

Actions rapides

Accédez rapidement aux fonctionnalités principales

Validation des gains

Rechercher et valider les tickets

Gains du Client

Rechercher les gains d'un client

Historique

Consulter l'historique des validations

); }