Merge remote-tracking branch 'origin/main'

# Conflicts:
#	back_end/src/main/java/hackathon/FrisbYEE/rest/SessionResource.java
This commit is contained in:
tuanvu
2026-01-09 18:48:54 +01:00
3 changed files with 45 additions and 17 deletions

View File

@@ -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");
}
}
@@ -149,6 +161,12 @@ public class SessionResource {
* }
* }
*/
List<Activite> 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,7 +201,7 @@ 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());

View File

@@ -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 = {

View File

@@ -66,15 +66,20 @@ export async function loginOrRegister(keycloak:Keycloak): Promise<User|null>{
}
}
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<Session> {
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<SessionDTO>("/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) {