import { usePlanning, RecurrenceType } from '@/context/PlanningContext'; import { format } from 'date-fns'; import React from 'react'; import { useNotification } from '@/context/NotificationContext'; import Modal from '@/components/Modal'; export default function EventModal({ isOpen, onClose, eventData, setEventData, }) { const { addEvent, handleUpdateEvent, handleDeleteEvent, schedules, selectedSchedule, } = usePlanning(); const { showNotification } = useNotification(); // S'assurer que planning est défini lors du premier rendu React.useEffect(() => { if (!eventData?.planning && schedules.length > 0) { const defaultSchedule = schedules.find( (schedule) => Number(schedule.id) === Number(selectedSchedule) ) || schedules[0]; setEventData((prev) => ({ ...prev, planning: defaultSchedule.id, color: defaultSchedule.color, })); } }, [schedules, selectedSchedule, eventData?.planning]); if (!isOpen) return null; const recurrenceOptions = [ { value: RecurrenceType.NONE, label: 'Aucune' }, { value: RecurrenceType.DAILY, label: 'Quotidienne' }, { value: RecurrenceType.WEEKLY, label: 'Hebdomadaire' }, { value: RecurrenceType.MONTHLY, label: 'Mensuelle' }, /* { value: RecurrenceType.CUSTOM, label: 'Personnalisée' }, */ ]; const daysOfWeek = [ { value: 1, label: 'Lun' }, { value: 2, label: 'Mar' }, { value: 3, label: 'Mer' }, { value: 4, label: 'Jeu' }, { value: 5, label: 'Ven' }, { value: 6, label: 'Sam' }, { value: 0, label: 'Dim' }, ]; const handleSubmit = (e) => { e.preventDefault(); if (!eventData.planning) { showNotification( 'Veuillez sélectionner un planning', 'warning', 'Attention' ); return; } const selectedSchedule = schedules.find((s) => s.id === eventData.planning); if (eventData.id) { handleUpdateEvent(eventData.id, { ...eventData, planning: eventData.planning, // S'assurer que planning est bien défini color: eventData.color || selectedSchedule?.color, }); } else { addEvent({ ...eventData, id: `event-${Date.now()}`, planning: eventData.planning, // S'assurer que planning est bien défini color: eventData.color || selectedSchedule?.color, }); } onClose(); }; const handleDelete = () => { if ( eventData.id && confirm('Êtes-vous sûr de vouloir supprimer cet événement ?') ) { handleDeleteEvent(eventData.id); onClose(); } }; return (
{/* Titre */}
setEventData({ ...eventData, title: e.target.value }) } className="w-full p-2 border rounded focus:outline-none focus:ring-2 focus:ring-emerald-500" required />
{/* Description */}