chore: Initial Commit

feat: Gestion des inscriptions [#1]
feat(frontend): Création des vues pour le paramétrage de l'école [#2]
feat: Gestion du login [#6]
fix: Correction lors de la migration des modèle [#8]
feat: Révision du menu principal [#9]
feat: Ajout d'un footer [#10]
feat: Création des dockers compose pour les environnements de
développement et de production [#12]
doc(ci): Mise en place de Husky et d'un suivi de version automatique [#14]
This commit is contained in:
Luc SORIGNET
2024-11-18 10:02:58 +01:00
committed by N3WT DE COMPET
commit af0cd1c840
228 changed files with 22694 additions and 0 deletions

View File

@ -0,0 +1,93 @@
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(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 (
<PlanningContext.Provider value={value}>
{children}
</PlanningContext.Provider>
);
}
export const usePlanning = () => useContext(PlanningContext);