import { createContext, useContext, useState } from 'react'; import { mockEvents, mockSchedules } from '@/data/mockData'; /** * Contexte de planification pour gérer l'état global du planning * Fournit des fonctionnalités pour : * - Gestion des événements (ajout, modification, suppression) * - Gestion des emplois du temps (ajout, modification, suppression) * - Gestion de la visibilité des emplois du temps * - Contrôle de la vue du calendrier (date courante, type de vue) * - Stockage de l'état des événements et des emplois du temps */ const PlanningContext = createContext(); export function PlanningProvider({ children }) { // const [events, setEvents] = useState([]); // const [schedules, setSchedules] = useState([]); // const [selectedSchedule, setSelectedSchedule] = useState(null); const [events, setEvents] = useState(mockEvents); const [schedules, setSchedules] = useState(mockSchedules); const [selectedSchedule, setSelectedSchedule] = useState(mockSchedules[0].id); const [currentDate, setCurrentDate] = useState(new Date()); const [viewType, setViewType] = useState('week'); // Changer 'month' en 'week' const [hiddenSchedules, setHiddenSchedules] = useState([]); const addEvent = (newEvent) => { setEvents((prevEvents) => [...prevEvents, newEvent]); }; const updateEvent = (id, updatedEvent) => { setEvents((prevEvents) => prevEvents.map((event) => (event.id === id ? updatedEvent : event)) ); }; const deleteEvent = (id) => { setEvents((prevEvents) => prevEvents.filter((event) => event.id !== id)); }; const addSchedule = (newSchedule) => { setSchedules((prevSchedules) => [...prevSchedules, newSchedule]); }; const updateSchedule = (id, updatedSchedule) => { setSchedules((prevSchedules) => prevSchedules.map((schedule) => schedule.id === id ? updatedSchedule : schedule ) ); }; const deleteSchedule = (id) => { setSchedules((prevSchedules) => prevSchedules.filter((schedule) => schedule.id !== id) ); }; const toggleScheduleVisibility = (scheduleId) => { setHiddenSchedules((prev) => { const isHidden = prev.includes(scheduleId); const newHiddenSchedules = isHidden ? prev.filter((id) => id !== scheduleId) : [...prev, scheduleId]; return newHiddenSchedules; }); }; const value = { events, setEvents, schedules, setSchedules, selectedSchedule, setSelectedSchedule, addEvent, updateEvent, deleteEvent, addSchedule, updateSchedule, deleteSchedule, currentDate, setCurrentDate, viewType, setViewType, hiddenSchedules, toggleScheduleVisibility }; return ( {children} ); } export const usePlanning = () => useContext(PlanningContext);