Merge remote-tracking branch 'refs/remotes/origin/main'
This commit is contained in:
@@ -12,7 +12,7 @@ export class Ligne{
|
|||||||
|
|
||||||
export class User{
|
export class User{
|
||||||
id!: number;
|
id!: number;
|
||||||
keycloakId!: String;
|
keycloakId!: string;
|
||||||
nom!: string;
|
nom!: string;
|
||||||
prenom!:string;
|
prenom!:string;
|
||||||
email!: string;
|
email!: string;
|
||||||
@@ -32,6 +32,16 @@ export class Admin extends User{
|
|||||||
this.email = ""; //TODO
|
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{
|
export class Athlete extends User{
|
||||||
@@ -53,6 +63,21 @@ export class Athlete extends User{
|
|||||||
this.sessionsID = dto?.sessionIds ?? [];
|
this.sessionsID = dto?.sessionIds ?? [];
|
||||||
this.sessions = [];
|
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{
|
export class Coach extends User{
|
||||||
@@ -73,6 +98,19 @@ export class Coach extends User{
|
|||||||
this.sessionsID = dto?.sessionIds ?? [];
|
this.sessionsID = dto?.sessionIds ?? [];
|
||||||
this.sessions = [];
|
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{
|
export class Session{
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { useEffect, useState } from "react"
|
import { useEffect, useState } from "react"
|
||||||
import { getUserTest, Session, User } from "../classes"
|
import { Athlete, Coach, Session} from "../classes"
|
||||||
import { useLocalData } from "../context/useLocalData"
|
import { useLocalData } from "../context/useLocalData"
|
||||||
import './style/edt.css';
|
import './style/edt.css';
|
||||||
import {updateSessionsOfUserAPI } from "../requetes";
|
import {updateSessionsOfUserAPI } from "../requetes";
|
||||||
@@ -41,11 +41,13 @@ export const EDT =() =>{
|
|||||||
var maxDate = getNextDay(date,6)
|
var maxDate = getNextDay(date,6)
|
||||||
|
|
||||||
var newWeek: Session[] = []
|
var newWeek: Session[] = []
|
||||||
user.sessions.forEach(session => {
|
if(user instanceof Athlete || user instanceof Coach){
|
||||||
if((session.creneau >= date && session.creneau <= maxDate && !session.isRecurrent) || (session.isRecurrent && session.creneau<maxDate)){
|
user.sessions.forEach(session => {
|
||||||
newWeek.push(session);
|
if((session.creneau >= date && session.creneau <= maxDate && !session.isRecurrent) || (session.isRecurrent && session.creneau<maxDate)){
|
||||||
}
|
newWeek.push(session);
|
||||||
});
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
setSessions(newWeek);
|
setSessions(newWeek);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { Athlete, User } from '../classes';
|
|||||||
import { useLocalData } from '../context/useLocalData';
|
import { useLocalData } from '../context/useLocalData';
|
||||||
import { postAthlete } from '../requetes';
|
import { postAthlete } from '../requetes';
|
||||||
import { clearAuthToken, setAuthToken } from '../api';
|
import { clearAuthToken, setAuthToken } from '../api';
|
||||||
|
import { AthleteDTO } from '../classesDTO';
|
||||||
|
|
||||||
export const Login =() =>{
|
export const Login =() =>{
|
||||||
const {user,setUser} = useLocalData()
|
const {user,setUser} = useLocalData()
|
||||||
@@ -11,12 +12,23 @@ export const Login =() =>{
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const syncAndLoadUser = async () => {
|
const syncAndLoadUser = async () => {
|
||||||
const newAthlete:Athlete = new 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 athlete:Athlete = await postAthlete(newAthlete)
|
const newAthleteDTO: AthleteDTO =newAthlete.toDTO();
|
||||||
|
setAuthToken(keycloak.token);
|
||||||
setAuthToken(keycloak.token);
|
const athlete: Athlete = await postAthlete(newAthlete);
|
||||||
setUser(athlete);
|
setUser(athlete);
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Error :", error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
/*postAthlete
|
/*postAthlete
|
||||||
if (keycloak.authenticated && keycloak.token) {
|
if (keycloak.authenticated && keycloak.token) {
|
||||||
const tokenParsed = keycloak.tokenParsed;
|
const tokenParsed = keycloak.tokenParsed;
|
||||||
@@ -44,7 +56,7 @@ export const Login =() =>{
|
|||||||
console.error("Sync fetch failed:", error);
|
console.error("Sync fetch failed:", error);
|
||||||
}
|
}
|
||||||
}*/
|
}*/
|
||||||
};
|
|
||||||
|
|
||||||
syncAndLoadUser();
|
syncAndLoadUser();
|
||||||
}, [keycloak.authenticated, keycloak.token, setUser]);
|
}, [keycloak.authenticated, keycloak.token, setUser]);
|
||||||
|
|||||||
@@ -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<User>(initialUser);
|
|
||||||
const [sessions, setSessions] = useState<Session[]>(initialUser.sessions || []);
|
|
||||||
const [users, setUsers] = useState<User[]>([initialUser]);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<LocalDataContext.Provider value={{ user, setUser, sessions, setSessions, users, setUsers }}>
|
|
||||||
<h1>Test Utilisateur</h1>
|
|
||||||
<div>Nom: {String(user.nom)}</div>
|
|
||||||
<RessourcePanel />
|
|
||||||
</LocalDataContext.Provider>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -128,7 +128,7 @@ export async function postActivityAPI(session: Session, activity: Activite){
|
|||||||
|
|
||||||
export async function postAthlete(athlete: Athlete):Promise<Athlete>{
|
export async function postAthlete(athlete: Athlete):Promise<Athlete>{
|
||||||
try {
|
try {
|
||||||
const response = await api.post<Athlete>("/athlete/create/",athlete);
|
const response = await api.post<Athlete>("/athlete/create/",athlete.toDTO);
|
||||||
console.log(response);
|
console.log(response);
|
||||||
return response.data;
|
return response.data;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
Reference in New Issue
Block a user