From f79433d0fbfd90b2f4efcc632b1d97c55968c355 Mon Sep 17 00:00:00 2001 From: Alexis Leboeuf Date: Fri, 9 Jan 2026 18:20:04 +0100 Subject: [PATCH 1/3] Added endpoint to add an existing activity to session --- .../FrisbYEE/rest/SessionResource.java | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/back_end/src/main/java/hackathon/FrisbYEE/rest/SessionResource.java b/back_end/src/main/java/hackathon/FrisbYEE/rest/SessionResource.java index e25b2d5..5ec326f 100644 --- a/back_end/src/main/java/hackathon/FrisbYEE/rest/SessionResource.java +++ b/back_end/src/main/java/hackathon/FrisbYEE/rest/SessionResource.java @@ -116,17 +116,23 @@ public class SessionResource { //Commented because not finished - /*@GetMapping("/activities/add") + @GetMapping("/{id_session}/activities/add/{id_act}") @PreAuthorize("hasRole('coach') or hasRole('admin')") - public ResponseEntity addActivity(@RequestBody ActiviteDTO dto) { - try { - Activite activite = maptoEntity(dto); - activiteDAO.save(activite); - return ResponseEntity.status(HttpStatus.CREATED).body(maptoDTO(activite)); - } catch (Exception ex) { - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(ex.getMessage()); + public ResponseEntity addActivity(@PathVariable Integer id_sess, @PathVariable Integer id_act) { + Session s = sessionDAO.findById(id_sess).get(); + if(s.equals(null)){ + return ResponseEntity.status(HttpStatus.NOT_FOUND).body("Session not found"); } - }*/ + Activite a = activiteDAO.findById(id_act).get(); + if(a.equals(null)){ + return ResponseEntity.status(HttpStatus.NOT_FOUND).body("Activite not found"); + } + List l = s.getActivites(); + l.add(a); + s.setActivites(l); + sessionDAO.save(s); + return ResponseEntity.status(200).body(maptoDTO(s)); + } private SessionDTO maptoDTO(Session s) { SessionDTO dto = new SessionDTO(); From a4963aed6a86a34a81573a72cc184df578a36a1a Mon Sep 17 00:00:00 2001 From: Alexis Leboeuf Date: Fri, 9 Jan 2026 18:20:42 +0100 Subject: [PATCH 2/3] Modifying front API to accept new endpoint --- front_end/src/api.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/front_end/src/api.ts b/front_end/src/api.ts index bd74948..c0098c3 100644 --- a/front_end/src/api.ts +++ b/front_end/src/api.ts @@ -50,6 +50,7 @@ export const athleteService = { getActivitiesForSession: (sessionId: number | string) => api.get(`/athletes/session/${sessionId}/activities`), getSessionsAfterDate: (athleteId: number | string, date: string) => api.get(`/athletes/${athleteId}/session/after/${encodeURIComponent(date)}`), getSessionsBetweenDates: (athleteId: number | string, startDate: string, endDate: string) => api.get(`/athletes/${athleteId}/session/between/${encodeURIComponent(startDate)}/${encodeURIComponent(endDate)}`), + addActivity: (id_sess: number, id_act: number) => api.get(`/${id_sess}/activities/add/${id_act}`) }; export const activiteService = { From 8638e962c94f4dd69462abe4740a5c46802a58d7 Mon Sep 17 00:00:00 2001 From: trochas Date: Fri, 9 Jan 2026 18:45:15 +0100 Subject: [PATCH 3/3] fix creation session avec activite --- front_end/src/api.ts | 8 ++++---- front_end/src/requetes.tsx | 29 +++++++++++++++++++---------- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/front_end/src/api.ts b/front_end/src/api.ts index bd74948..da90390 100644 --- a/front_end/src/api.ts +++ b/front_end/src/api.ts @@ -70,10 +70,10 @@ 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(`/sessions/${sessionId}/activities`), - addActivity: (sessionId: number | string, activity: any) => api.post(`/sessions/${sessionId}/activities`, activity), - subscribe: (sessionId: number | string, userId: number | string) => api.post(`/sessions/${sessionId}/subscribe`, { userId }), - unsubscribe: (sessionId: number | string, userId: number | string) => api.post(`/sessions/${sessionId}/unsubscribe`, { userId }), + 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 }), }; export const coachService = { diff --git a/front_end/src/requetes.tsx b/front_end/src/requetes.tsx index b5ff9c4..836c2f2 100644 --- a/front_end/src/requetes.tsx +++ b/front_end/src/requetes.tsx @@ -66,15 +66,20 @@ export async function loginOrRegister(keycloak:Keycloak): Promise{ } } -export async function updateActivitiesOfSessionAPI(session:Session,activities:Activite[]){ +export async function updateActivitiesOfSessionAPI(session:Session){ try { const session_id = session.id - for (const activity of activities) { - const response = await activiteService.update(activity.id!, activity.toDTO()); - } + console.log("TEST:"); + console.log(session.activites); + session.activites.forEach(activite => { + console.log("FOR"); + if(activite.id!=null){ + activiteService.update(activite.id, activite.toDTO()); + } + }); // To refresh the activities in the session object - const response = await sessionService.getActivities(session_id!); - session.activites = response.data; + //const response = await sessionService.getActivities(session_id!); + //session.activites = response.data; } catch (error) { console.error("Error fetching activities for session:", error); } @@ -113,16 +118,20 @@ export async function createSessionAPI(session: Session): Promise { async function postActivite(activite:Activite,sessionRes:Session){ activite.session = sessionRes; const activite2 = await createActivityAPI(activite); + activite2.session = sessionRes; sessionRes.activites.push(activite2); } try { const response = await api.post("/session/create", session.toDTO()); const sessionRes:Session = new Session(response.data); - await session.activites.forEach(activite => { - postActivite(activite,sessionRes); - }); - updateActivitiesOfSessionAPI(session,session.activites); + await Promise.all( + session.activites.map(activite => + postActivite(activite, sessionRes) + ) + ); + console.log(sessionRes.activites); + updateActivitiesOfSessionAPI(sessionRes); return sessionRes; } catch (error) {