'use client'; import { useState, useEffect } from 'react'; import AlertModal from './AlertModal'; interface Chauffeur { id: string; nom: string; prenom: string; dateNaissance: string; telephone: string; email: string; adresse: string; heuresContrat: number; dateDebutContrat: string; dateFinContrat: string | null; heuresRestantes?: number; status?: string; } interface ChauffeurFormProps { chauffeur: Chauffeur | null; onClose: () => void; } export default function ChauffeurForm({ chauffeur, onClose }: ChauffeurFormProps) { const [loading, setLoading] = useState(false); const [isMobile, setIsMobile] = useState(false); const [alertModal, setAlertModal] = useState<{ show: boolean; type: 'success' | 'error' | 'info' | 'warning'; title: string; message: string; } | null>(null); const [formData, setFormData] = useState({ nom: '', prenom: '', dateNaissance: '', telephone: '', email: '', adresse: '', heuresContrat: 35, dateDebutContrat: new Date().toISOString().split('T')[0], // Date du jour par défaut dateFinContrat: '', status: 'Disponible', }); useEffect(() => { const checkMobile = () => { setIsMobile(window.innerWidth < 768); // md breakpoint }; checkMobile(); window.addEventListener('resize', checkMobile); return () => window.removeEventListener('resize', checkMobile); }, []); useEffect(() => { if (chauffeur) { const dateNaissance = new Date(chauffeur.dateNaissance); const dateDebut = new Date(chauffeur.dateDebutContrat); const dateFin = chauffeur.dateFinContrat ? new Date(chauffeur.dateFinContrat) : null; setFormData({ nom: chauffeur.nom, prenom: chauffeur.prenom, dateNaissance: dateNaissance.toISOString().split('T')[0], telephone: chauffeur.telephone, email: chauffeur.email, adresse: chauffeur.adresse, heuresContrat: chauffeur.heuresContrat, dateDebutContrat: dateDebut.toISOString().split('T')[0], dateFinContrat: dateFin ? dateFin.toISOString().split('T')[0] : '', status: chauffeur.status || 'Disponible', }); } }, [chauffeur]); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); try { const url = chauffeur ? `/api/chauffeurs/${chauffeur.id}` : '/api/chauffeurs'; const method = chauffeur ? 'PUT' : 'POST'; const payload = { ...formData, dateFinContrat: formData.dateFinContrat || null, // Convertir chaîne vide en null }; const response = await fetch(url, { method, headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(payload), }); if (response.ok) { onClose(); } else { const error = await response.json(); setAlertModal({ show: true, type: 'error', title: 'Erreur', message: error.error || 'Une erreur est survenue', }); } } catch (error) { console.error('Erreur:', error); setAlertModal({ show: true, type: 'error', title: 'Erreur', message: 'Une erreur est survenue', }); } finally { setLoading(false); } }; // Si on est sur mobile, afficher un message au lieu du formulaire if (isMobile) { return (
Pour {chauffeur ? 'modifier' : 'créer'} un chauffeur, veuillez utiliser un ordinateur. Cette fonctionnalité n'est pas optimisée pour les appareils mobiles.
{chauffeur ? 'Modifiez les informations du chauffeur ci-dessous.' : 'Remplissez les informations pour créer un nouveau chauffeur.'}