diff --git a/front_end/src/api.ts b/front_end/src/api.ts index cf5a953..9a71d48 100644 --- a/front_end/src/api.ts +++ b/front_end/src/api.ts @@ -71,7 +71,7 @@ export const sessionService = { delete: (id: number | string) => api.delete(`/session/delete/${id}`), update: (id: number | string, data: any) => api.put(`/session/update/${id}`, data), - getActivities: (sessionId: number | string) => api.get(`/session/${sessionId}/activities`), + getActivities: (sessionId: number | string) => api.get(`/session/${sessionId}/activities`), addActivity: (sessionId: number | string, activity: any) => api.post(`/session/${sessionId}/activities`, activity), subscribe: (sessionId: number | string, userId: number | string) => api.post(`/session/${sessionId}/subscribe`, { userId }), unsubscribe: (sessionId: number | string, userId: number | string) => api.post(`/session/${sessionId}/unsubscribe`, { userId }), diff --git a/front_end/src/components/object/detailSession.tsx b/front_end/src/components/object/detailSession.tsx index 24c2aab..7c02c09 100644 --- a/front_end/src/components/object/detailSession.tsx +++ b/front_end/src/components/object/detailSession.tsx @@ -4,7 +4,7 @@ import { dateToString, hoursToString } from "../edt"; import { Modal } from "../Modal"; import CreateActivite from "../createActivite"; import Loading from "../loading"; -import { delay } from "../../requetes"; +import { addActiviteToSession, delay, deletActiviteFromSession, getSessionOfActivite } from "../../requetes"; type Props = { session:Session; @@ -22,6 +22,7 @@ function DetailSession({session,open,setOpen}:Props){ function handleDeleteActivite(activite:Activite): void { session.activites.splice(session.activites.indexOf(activite), 1); + deletActiviteFromSession(activite); setActivites([...session.activites]) } @@ -31,8 +32,12 @@ function DetailSession({session,open,setOpen}:Props){ async function updateActivites(){ //TODO - await delay(2000); + //await delay(2000); //await updateActivitiesOfSessionAPI(session); + const newActivites = await getSessionOfActivite(session); + if(newActivites!=null){ + session.activites=newActivites; + } setLoading(false); } @@ -47,6 +52,7 @@ function DetailSession({session,open,setOpen}:Props){ function returnActivite(activite: Activite|null){ if(activite!==null){ + addActiviteToSession(session,activite); session.activites.push(activite); setActivites([...session.activites]) } diff --git a/front_end/src/requetes.tsx b/front_end/src/requetes.tsx index 836c2f2..ddb0a5f 100644 --- a/front_end/src/requetes.tsx +++ b/front_end/src/requetes.tsx @@ -66,6 +66,44 @@ export async function loginOrRegister(keycloak:Keycloak): Promise{ } } +export async function getSessionOfActivite(session:Session):Promise{ + try { + if(session.id !=null){ + const activites:Activite[] = []; + const response = await sessionService.getActivities(session.id!); + response.data.forEach(activiteDTO => { + activites.push(new Activite(activiteDTO)); + }); + return activites; + } + return null; + } catch (error) { + console.error("Error getting session:", error); + return null; + } +} + + +export async function deletActiviteFromSession(activite:Activite){ + try { + if(activite.id !=null){ + activiteService.delete(activite.id); + } + } catch (error) { + console.error("Error getting session:", error); + } +} + +export async function addActiviteToSession(session:Session,activite:Activite){ + try { + if(activite.id !=null && session.id !=null){ + sessionService.addActivity(session.id,activite.id) + } + } catch (error) { + console.error("Error getting session:", error); + } +} + export async function updateActivitiesOfSessionAPI(session:Session){ try { const session_id = session.id