import { NextRequest, NextResponse } from 'next/server'; import { prisma } from '@/lib/prisma'; import { getCurrentUser } from '@/lib/auth'; // POST - Valider un trajet et déduire les heures du chauffeur export async function POST( request: NextRequest, { params }: { params: { id: string } } ) { try { const user = await getCurrentUser(); if (!user) { return NextResponse.json({ error: 'Non autorisé' }, { status: 401 }); } const body = await request.json(); const { dureeHeures } = body; if (!dureeHeures || dureeHeures <= 0) { return NextResponse.json( { error: 'La durée du trajet est requise' }, { status: 400 } ); } // Récupérer le trajet avec le chauffeur const trajet = await prisma.trajet.findUnique({ where: { id: params.id }, include: { chauffeur: true, }, }); if (!trajet) { return NextResponse.json({ error: 'Trajet non trouvé' }, { status: 404 }); } if (!trajet.chauffeur) { return NextResponse.json( { error: 'Aucun chauffeur assigné à ce trajet' }, { status: 400 } ); } if (trajet.statut === 'Validé' || trajet.statut === 'Terminé') { return NextResponse.json( { error: 'Ce trajet a déjà été validé' }, { status: 400 } ); } // Vérifier que le chauffeur a assez d'heures disponibles const heuresRestantes = trajet.chauffeur.heuresRestantes; const heuresADeduire = Math.round(dureeHeures); if (heuresRestantes < heuresADeduire) { return NextResponse.json( { error: `Le chauffeur n'a que ${heuresRestantes}h disponibles. Le trajet nécessite ${heuresADeduire}h.`, }, { status: 400 } ); } // Mettre à jour le trajet et déduire les heures du chauffeur const [trajetUpdated, chauffeurUpdated] = await Promise.all([ prisma.trajet.update({ where: { id: params.id }, data: { statut: 'Validé', }, include: { adherent: { select: { id: true, nom: true, prenom: true, telephone: true, email: true, }, }, chauffeur: { select: { id: true, nom: true, prenom: true, telephone: true, }, }, }, }), prisma.chauffeur.update({ where: { id: trajet.chauffeur.id }, data: { heuresRestantes: heuresRestantes - heuresADeduire, }, }), ]); return NextResponse.json({ trajet: trajetUpdated, chauffeur: { id: chauffeurUpdated.id, heuresRestantes: chauffeurUpdated.heuresRestantes, }, heuresDeduites: heuresADeduire, }); } catch (error) { console.error('Erreur lors de la validation du trajet:', error); return NextResponse.json( { error: 'Erreur serveur' }, { status: 500 } ); } }