diff --git a/front_end/src/classes.tsx b/front_end/src/classes.tsx index 251e279..52266bb 100644 --- a/front_end/src/classes.tsx +++ b/front_end/src/classes.tsx @@ -12,7 +12,7 @@ export class Ligne{ export class User{ id!: number; - keycloakId!: String; + keycloakId!: string; nom!: string; prenom!:string; email!: string; @@ -32,6 +32,16 @@ export class Admin extends User{ this.email = ""; //TODO } + toDTO():AdminDTO{ + const dto:AdminDTO = { + id: this.id, + id_keycloak: this.keycloakId, + name: this.nom, + prenom: this.prenom, + }; + return dto; + } + } export class Athlete extends User{ @@ -53,6 +63,21 @@ export class Athlete extends User{ this.sessionsID = dto?.sessionIds ?? []; this.sessions = []; } + + toDTO():AthleteDTO{ + const dto:AthleteDTO = { + id: this.id, + id_keycloak: this.keycloakId, + name: this.nom, + prenom: this.prenom, + categorie: "", + niveau: "", + groupes: this.groupes, + sessionIds: this.sessionsID, + }; + return dto; + } + } export class Coach extends User{ @@ -73,6 +98,19 @@ export class Coach extends User{ this.sessionsID = dto?.sessionIds ?? []; this.sessions = []; } + + toDTO():CoachDTO{ + const dto:CoachDTO = { + id: this.id, + id_keycloak: this.keycloakId, + name: this.nom, + prenom: this.prenom, + sessionIds: this.sessionsID, + }; + return dto; + } + + } export class Session{ diff --git a/front_end/src/components/edt.tsx b/front_end/src/components/edt.tsx index e3ce908..db53199 100644 --- a/front_end/src/components/edt.tsx +++ b/front_end/src/components/edt.tsx @@ -1,5 +1,5 @@ import { useEffect, useState } from "react" -import { getUserTest, Session, User } from "../classes" +import { Athlete, Coach, Session} from "../classes" import { useLocalData } from "../context/useLocalData" import './style/edt.css'; import {updateSessionsOfUserAPI } from "../requetes"; @@ -41,11 +41,13 @@ export const EDT =() =>{ var maxDate = getNextDay(date,6) var newWeek: Session[] = [] - user.sessions.forEach(session => { - if((session.creneau >= date && session.creneau <= maxDate && !session.isRecurrent) || (session.isRecurrent && session.creneau { + if((session.creneau >= date && session.creneau <= maxDate && !session.isRecurrent) || (session.isRecurrent && session.creneau{ const {user,setUser} = useLocalData() @@ -11,12 +12,23 @@ export const Login =() =>{ useEffect(() => { const syncAndLoadUser = async () => { - const newAthlete:Athlete = new Athlete() - - const athlete:Athlete = await postAthlete(newAthlete) - - setAuthToken(keycloak.token); - setUser(athlete); + if (keycloak.authenticated && keycloak.token && keycloak.tokenParsed) { + try { + const newAthlete: Athlete = new Athlete(); + newAthlete.keycloakId = keycloak.tokenParsed.sub || ""; + newAthlete.email = keycloak.tokenParsed.email || ""; + newAthlete.nom = keycloak.tokenParsed.family_name || ""; + newAthlete.prenom = keycloak.tokenParsed.given_name || ""; + + const newAthleteDTO: AthleteDTO =newAthlete.toDTO(); + setAuthToken(keycloak.token); + const athlete: Athlete = await postAthlete(newAthlete); + setUser(athlete); + } catch (error) { + console.error("Error :", error); + } + } + }; /*postAthlete if (keycloak.authenticated && keycloak.token) { const tokenParsed = keycloak.tokenParsed; @@ -44,7 +56,7 @@ export const Login =() =>{ console.error("Sync fetch failed:", error); } }*/ - }; + syncAndLoadUser(); }, [keycloak.authenticated, keycloak.token, setUser]); diff --git a/front_end/src/components/test_app.tsx b/front_end/src/components/test_app.tsx deleted file mode 100644 index 1e13241..0000000 --- a/front_end/src/components/test_app.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import React, { useState } from "react"; -import { getUserTest, User, Session } from "../classes"; -import RessourcePanel from "./ressourcePanel"; -import { LocalDataContext } from "../context/LocalDataContext"; - -export default function TestApp() { - const initialUser = getUserTest(); - initialUser.role = "Athlete"; // Change role here for testing - const [user, setUser] = useState(initialUser); - const [sessions, setSessions] = useState(initialUser.sessions || []); - const [users, setUsers] = useState([initialUser]); - - return ( - -

Test Utilisateur

-
Nom: {String(user.nom)}
- -
- ); -} diff --git a/front_end/src/requetes.tsx b/front_end/src/requetes.tsx index 68f4b52..3e969bf 100644 --- a/front_end/src/requetes.tsx +++ b/front_end/src/requetes.tsx @@ -128,7 +128,7 @@ export async function postActivityAPI(session: Session, activity: Activite){ export async function postAthlete(athlete: Athlete):Promise{ try { - const response = await api.post("/athlete/create/",athlete); + const response = await api.post("/athlete/create/",athlete.toDTO); console.log(response); return response.data; } catch (error) {