mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-29 16:03:21 +00:00
feat: Gestion du planning [3]
This commit is contained in:
@ -23,13 +23,25 @@ import { useEstablishment } from '@/context/EstablishmentContext';
|
||||
*/
|
||||
const PlanningContext = createContext();
|
||||
|
||||
export function PlanningProvider({ children }) {
|
||||
// const [events, setEvents] = useState([]);
|
||||
// const [schedules, setSchedules] = useState([]);
|
||||
// const [selectedSchedule, setSelectedSchedule] = useState(null);
|
||||
export const RecurrenceType = Object.freeze({
|
||||
NONE: 0,
|
||||
DAILY: 1,
|
||||
WEEKLY: 2,
|
||||
MONTHLY: 3,
|
||||
CUSTOM: 4,
|
||||
});
|
||||
|
||||
export const PlanningModes = Object.freeze({
|
||||
CLASS_SCHEDULE: 'classSchedule',
|
||||
PLANNING: 'planning'
|
||||
});
|
||||
|
||||
export function PlanningProvider({ children, modeSet=PlanningModes.PLANNING}) {
|
||||
|
||||
const [events, setEvents] = useState([]);
|
||||
const [schedules, setSchedules] = useState([]);
|
||||
const [selectedSchedule, setSelectedSchedule] = useState(0);
|
||||
const [planningMode, setPlanningMode] = useState(modeSet);
|
||||
const [currentDate, setCurrentDate] = useState(new Date());
|
||||
const [viewType, setViewType] = useState('week'); // Changer 'month' en 'week'
|
||||
const [hiddenSchedules, setHiddenSchedules] = useState([]);
|
||||
@ -37,60 +49,61 @@ export function PlanningProvider({ children }) {
|
||||
|
||||
const csrfToken = useCsrfToken();
|
||||
useEffect(() => {
|
||||
fetchPlannings().then((data) => {
|
||||
setSchedules(data);
|
||||
if (data.length > 0) {
|
||||
setSelectedSchedule(data[0].id);
|
||||
}
|
||||
});
|
||||
fetchEvents().then((data) => {
|
||||
setEvents(data);
|
||||
});
|
||||
}, []);
|
||||
reloadPlanning();
|
||||
reloadEvents();
|
||||
}, [planningMode, selectedEstablishmentId]);
|
||||
|
||||
|
||||
const reloadEvents = () =>{
|
||||
fetchEvents(selectedEstablishmentId, planningMode).then((data) => {
|
||||
setEvents(data);
|
||||
});
|
||||
}
|
||||
|
||||
const reloadPlanning = () =>{
|
||||
fetchPlannings(selectedEstablishmentId, planningMode).then((data) => {
|
||||
setSchedules(data);
|
||||
if (data.length > 0) {
|
||||
setSelectedSchedule(data[0].id);
|
||||
}
|
||||
});
|
||||
}
|
||||
const addEvent = (newEvent) => {
|
||||
createEvent(newEvent).then((data) => {
|
||||
setEvents((prevEvents) => [...prevEvents, data]);
|
||||
createEvent(newEvent).then(() => {
|
||||
reloadEvents();
|
||||
});
|
||||
};
|
||||
|
||||
const handleUpdateEvent = (id, updatedEvent) => {
|
||||
updateEvent(id, updatedEvent, csrfToken).then((data) => {
|
||||
setEvents((prevEvents) =>
|
||||
prevEvents.map((event) => (event.id === id ? updatedEvent : event))
|
||||
);
|
||||
reloadEvents();
|
||||
});
|
||||
};
|
||||
|
||||
const handleDeleteEvent = (id) => {
|
||||
deleteEvent(id, csrfToken).then((data) => {
|
||||
setEvents((prevEvents) => prevEvents.filter((event) => event.id !== id));
|
||||
reloadEvents();
|
||||
});
|
||||
};
|
||||
|
||||
const addSchedule = (newSchedule) => {
|
||||
logger.debug('newSchedule', newSchedule);
|
||||
newSchedule.establishment = selectedEstablishmentId;
|
||||
createPlanning(newSchedule, csrfToken).then((data) => {
|
||||
setSchedules((prevSchedules) => [...prevSchedules, data]);
|
||||
createPlanning(newSchedule, csrfToken).then((_) => {
|
||||
reloadPlanning();
|
||||
});
|
||||
};
|
||||
|
||||
const updateSchedule = (id, updatedSchedule) => {
|
||||
updatePlanning(id, updatedSchedule, csrfToken).then((data) => {
|
||||
setSchedules((prevSchedules) =>
|
||||
prevSchedules.map((schedule) =>
|
||||
schedule.id === id ? updatedSchedule : schedule
|
||||
)
|
||||
);
|
||||
reloadPlanning();
|
||||
});
|
||||
};
|
||||
|
||||
const deleteSchedule = (id) => {
|
||||
deletePlanning(id, csrfToken).then((data) => {
|
||||
setSchedules((prevSchedules) =>
|
||||
prevSchedules.filter((schedule) => schedule.id !== id)
|
||||
);
|
||||
reloadPlanning();
|
||||
reloadEvents();
|
||||
});
|
||||
};
|
||||
|
||||
@ -123,6 +136,9 @@ export function PlanningProvider({ children }) {
|
||||
setViewType,
|
||||
hiddenSchedules,
|
||||
toggleScheduleVisibility,
|
||||
planningMode,
|
||||
reloadEvents,
|
||||
reloadPlanning,
|
||||
};
|
||||
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user