mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-29 07:53:23 +00:00
feat: planning events
This commit is contained in:
@ -1,5 +1,10 @@
|
||||
import { createContext, useContext, useState } from 'react';
|
||||
import { mockEvents, mockSchedules } from '@/data/mockData';
|
||||
import { createContext, useContext, useEffect, useState } from 'react';
|
||||
import { createPlanning, fetchEvents, fetchPlannings, updatePlanning, createEvent, deleteEvent, updateEvent } from '@/app/actions/planningAction';
|
||||
import { useCsrfToken } from './CsrfContext';
|
||||
import { ESTABLISHMENT_ID } from '@/utils/Url';
|
||||
import logger from '@/utils/logger';
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Contexte de planification pour gérer l'état global du planning
|
||||
@ -16,51 +21,90 @@ 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 [events, setEvents] = useState([]);
|
||||
const [schedules, setSchedules] = useState([]);
|
||||
const [selectedSchedule, setSelectedSchedule] = useState(0);
|
||||
const [currentDate, setCurrentDate] = useState(new Date());
|
||||
const [viewType, setViewType] = useState('week'); // Changer 'month' en 'week'
|
||||
const [hiddenSchedules, setHiddenSchedules] = useState([]);
|
||||
|
||||
const csrfToken = useCsrfToken();
|
||||
useEffect(()=>{
|
||||
|
||||
fetchPlannings().then((data) => {
|
||||
setSchedules(data)
|
||||
setSelectedSchedule(data[0].id);
|
||||
});
|
||||
fetchEvents().then((data)=>{
|
||||
setEvents(data);
|
||||
});
|
||||
},[]);
|
||||
|
||||
|
||||
|
||||
|
||||
const addEvent = (newEvent) => {
|
||||
setEvents((prevEvents) => [...prevEvents, newEvent]);
|
||||
createEvent(newEvent).then((data) => {
|
||||
setEvents((prevEvents) => [...prevEvents, data]);
|
||||
});
|
||||
console.log('newEvent',newEvent);
|
||||
|
||||
//dssetEvents((prevEvents) => [...prevEvents, newEvent]);
|
||||
};
|
||||
|
||||
const updateEvent = (id, updatedEvent) => {
|
||||
setEvents((prevEvents) =>
|
||||
prevEvents.map((event) => (event.id === id ? updatedEvent : event))
|
||||
);
|
||||
const handleUpdateEvent = (id, updatedEvent) => {
|
||||
updateEvent(id,updatedEvent,csrfToken).then((data) => {
|
||||
setEvents((prevEvents) =>
|
||||
prevEvents.map((event) => (event.id === id ? updatedEvent : event))
|
||||
);
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
const deleteEvent = (id) => {
|
||||
setEvents((prevEvents) => prevEvents.filter((event) => event.id !== id));
|
||||
const handleDeleteEvent = (id) => {
|
||||
deleteEvent(id,csrfToken).then((data) => {
|
||||
setEvents((prevEvents) => prevEvents.filter((event) => event.id !== id));
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
const addSchedule = (newSchedule) => {
|
||||
setSchedules((prevSchedules) => [...prevSchedules, newSchedule]);
|
||||
//FIXME:Gerenr lestablshment
|
||||
logger.debug('newSchedule',newSchedule);
|
||||
newSchedule.establishment = ESTABLISHMENT_ID;
|
||||
|
||||
createPlanning(newSchedule,csrfToken).then((data) => {
|
||||
setSchedules((prevSchedules) => [...prevSchedules, data]);
|
||||
});
|
||||
};
|
||||
|
||||
const updateSchedule = (id, updatedSchedule) => {
|
||||
setSchedules((prevSchedules) =>
|
||||
prevSchedules.map((schedule) =>
|
||||
schedule.id === id ? updatedSchedule : schedule
|
||||
)
|
||||
);
|
||||
|
||||
updatePlanning(id,updatedSchedule,csrfToken).then((data) => {
|
||||
setSchedules((prevSchedules) =>
|
||||
prevSchedules.map((schedule) =>
|
||||
schedule.id === id ? updatedSchedule : schedule
|
||||
)
|
||||
);
|
||||
});
|
||||
};
|
||||
|
||||
const deleteSchedule = (id) => {
|
||||
setSchedules((prevSchedules) =>
|
||||
prevSchedules.filter((schedule) => schedule.id !== id)
|
||||
deletePlanning(id,csrfToken).then((data) => {
|
||||
setSchedules((prevSchedules) =>
|
||||
prevSchedules.filter((schedule) => schedule.id !== id)
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
};
|
||||
|
||||
const toggleScheduleVisibility = (scheduleId) => {
|
||||
const toggleScheduleVisibility = (planning) => {
|
||||
setHiddenSchedules((prev) => {
|
||||
const isHidden = prev.includes(scheduleId);
|
||||
const isHidden = prev.includes(planning);
|
||||
const newHiddenSchedules = isHidden
|
||||
? prev.filter((id) => id !== scheduleId)
|
||||
: [...prev, scheduleId];
|
||||
? prev.filter((id) => id !== planning)
|
||||
: [...prev, planning];
|
||||
return newHiddenSchedules;
|
||||
});
|
||||
};
|
||||
@ -73,8 +117,8 @@ export function PlanningProvider({ children }) {
|
||||
selectedSchedule,
|
||||
setSelectedSchedule,
|
||||
addEvent,
|
||||
updateEvent,
|
||||
deleteEvent,
|
||||
handleUpdateEvent,
|
||||
handleDeleteEvent,
|
||||
addSchedule,
|
||||
updateSchedule,
|
||||
deleteSchedule,
|
||||
|
||||
Reference in New Issue
Block a user