import { usePlanning } from '@/context/PlanningContext'; import { format } from 'date-fns'; import React from 'react'; import { useNotification } from '@/context/NotificationContext'; export default function ScheduleEventModal({ isOpen, onClose, eventData, setEventData, specialities, teachers, classes, }) { const { addEvent, handleUpdateEvent, handleDeleteEvent, schedules, selectedSchedule, } = usePlanning(); const { showNotification } = useNotification(); React.useEffect(() => { if (!eventData?.planning && schedules.length > 0) { const defaultSchedule = schedules.find( (schedule) => Number(schedule.id) === Number(selectedSchedule) ) || schedules[0]; if (eventData?.planning !== defaultSchedule.id) { setEventData((prev) => ({ ...prev, planning: defaultSchedule.id, })); } } }, [schedules, selectedSchedule, eventData?.planning]); const handleSpecialityChange = (specialityId) => { const selectedSpeciality = specialities.find( (s) => s.id === parseInt(specialityId, 10) ); if (selectedSpeciality) { setEventData((prev) => ({ ...prev, speciality: selectedSpeciality.id, title: selectedSpeciality.name, // Définit la matière color: selectedSpeciality.color_code, // Définit la couleur associée })); } }; const handleTeacherChange = (teacherId) => { const selectedTeacher = teachers.find( (t) => t.id === parseInt(teacherId, 10) ); if (selectedTeacher) { setEventData((prev) => ({ ...prev, teacher: selectedTeacher.id, description: `${selectedTeacher.first_name} ${selectedTeacher.last_name}`, // Définit le nom du professeur })); } }; const handlePlanningChange = (planningId) => { const selectedSchedule = schedules.find( (s) => s.id === parseInt(planningId, 10) ); if (selectedSchedule) { setEventData((prev) => ({ ...prev, planning: selectedSchedule.id, })); } }; const handleColorChange = (color) => { setEventData((prev) => ({ ...prev, color, // Permet de changer manuellement la couleur })); }; if (!isOpen) return null; const handleSubmit = (e) => { e.preventDefault(); if (!eventData.speciality) { showNotification( 'Veuillez sélectionner une matière', 'warning', 'Attention' ); return; } if (!eventData.teacher) { showNotification( 'Veuillez sélectionner un professeur', 'warning', 'Attention' ); return; } if (!eventData.planning) { showNotification( 'Veuillez sélectionner un planning', 'warning', 'Attention' ); return; } if (!eventData.location) { showNotification('Veuillez saisir un lieu', 'warning', 'Attention'); return; } if (eventData.id) { handleUpdateEvent(eventData.id, eventData); } else { addEvent({ ...eventData, id: `event-${Date.now()}`, }); } onClose(); }; const handleDelete = () => { if ( eventData.id && confirm('Êtes-vous sûr de vouloir supprimer cet événement ?') ) { handleDeleteEvent(eventData.id); onClose(); } }; return (

{eventData.id ? "Modifier l'événement" : 'Nouvel événement'}

{/* Planning */}
{/* Matière */}
{/* Professeur */}
{/* Lieu */}
setEventData({ ...eventData, location: e.target.value }) } className="w-full p-2 border rounded focus:outline-none focus:ring-2 focus:ring-emerald-500" placeholder="Saisissez un lieu" required />
{/* Couleur */}
handleColorChange(e.target.value)} className="w-full h-10 p-1 rounded border" />
{/* Dates */}
setEventData({ ...eventData, start: new Date(e.target.value).toISOString(), }) } className="w-full p-2 border rounded focus:outline-none focus:ring-2 focus:ring-emerald-500" required />
setEventData({ ...eventData, end: new Date(e.target.value).toISOString(), }) } className="w-full p-2 border rounded focus:outline-none focus:ring-2 focus:ring-emerald-500" required />
{/* Boutons */}
{eventData.id && ( )}
); }