import { NextRequest, NextResponse } from 'next/server'; import { prisma } from '@/lib/prisma'; import { getCurrentUser } from '@/lib/auth'; // GET - Liste tous les chauffeurs avec recherche export async function GET(request: NextRequest) { try { const user = await getCurrentUser(); if (!user) { return NextResponse.json({ error: 'Non autorisé' }, { status: 401 }); } const searchParams = request.nextUrl.searchParams; const search = searchParams.get('search') || ''; // Récupérer tous les chauffeurs (SQLite ne supporte pas bien les recherches complexes) const allChauffeurs = await prisma.chauffeur.findMany({ orderBy: { createdAt: 'desc' }, }); // Filtrer en JavaScript pour la recherche insensible à la casse const chauffeurs = search ? allChauffeurs.filter( (ch) => { const searchLower = search.toLowerCase(); return ( ch.nom.toLowerCase().includes(searchLower) || ch.prenom.toLowerCase().includes(searchLower) || ch.email.toLowerCase().includes(searchLower) || ch.telephone.includes(search) || ch.adresse.toLowerCase().includes(searchLower) ); } ) : allChauffeurs; return NextResponse.json(chauffeurs); } catch (error) { console.error('Erreur lors de la récupération des chauffeurs:', error); return NextResponse.json( { error: 'Erreur serveur' }, { status: 500 } ); } } // POST - Créer un nouveau chauffeur export async function POST(request: NextRequest) { try { const user = await getCurrentUser(); if (!user) { return NextResponse.json({ error: 'Non autorisé' }, { status: 401 }); } const body = await request.json(); const { nom, prenom, dateNaissance, telephone, email, adresse, heuresContrat, dateDebutContrat, dateFinContrat } = body; if (!nom || !prenom || !dateNaissance || !telephone || !email || !adresse || !heuresContrat || !dateDebutContrat) { return NextResponse.json( { error: 'Tous les champs obligatoires sont requis' }, { status: 400 } ); } const chauffeur = await prisma.chauffeur.create({ data: { nom, prenom, dateNaissance: new Date(dateNaissance), telephone, email, adresse, heuresContrat: heuresContrat || 35, dateDebutContrat: new Date(dateDebutContrat), dateFinContrat: dateFinContrat ? new Date(dateFinContrat) : null, heuresRestantes: heuresContrat || 35, // Initialiser avec le nombre d'heures du contrat status: 'Disponible', // Par défaut }, }); return NextResponse.json(chauffeur, { status: 201 }); } catch (error) { console.error('Erreur lors de la création du chauffeur:', error); return NextResponse.json( { error: 'Erreur serveur' }, { status: 500 } ); } }