feat: planning events

This commit is contained in:
Luc SORIGNET
2025-03-02 15:35:56 +01:00
parent e3879f516b
commit c9b0f0d77a
21 changed files with 371 additions and 172 deletions

View File

@ -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,