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 172d108..da1f786 100644 --- a/back_end/src/main/java/hackathon/FrisbYEE/rest/SessionResource.java +++ b/back_end/src/main/java/hackathon/FrisbYEE/rest/SessionResource.java @@ -130,6 +130,18 @@ public class SessionResource { return ResponseEntity.ok(activiteDTOs); } catch (Exception ex) { return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage()); + //Commented because not finished + + @GetMapping("/{id_session}/activities/add/{id_act}") + @PreAuthorize("hasRole('coach') or hasRole('admin')") + 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"); } } @@ -137,7 +149,7 @@ public class SessionResource { /* * @GetMapping("/activities/add") - * + * * @PreAuthorize("hasRole('coach') or hasRole('admin')") * public ResponseEntity addActivity(@RequestBody ActiviteDTO dto) { * try { @@ -149,6 +161,12 @@ public class SessionResource { * } * } */ + 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(); @@ -183,13 +201,13 @@ public class SessionResource { private Session maptoEntity(SessionDTO dto) { Session session = new Session(); - System.out.println("ID " + session.getId()); + System.out.println("ID "+ session.getId()); session.setName(dto.getName()); session.setIsRecurrent(dto.getIsRecurrent()); session.setCreneau(dto.getCreneau()); session.setDuree(dto.getDuree()); session.setGroupe(dto.getGroupe()); - + return session; } } diff --git a/front_end/src/api.ts b/front_end/src/api.ts index bd74948..cf5a953 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 = { @@ -70,10 +71,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) {