import { ActiviteDTO, AdminDTO, AthleteDTO, CoachDTO, SessionDTO } from "./classesDTO"; export type Groupe = "Entrainement" | "Competition" | "Loisir"| ""; export class Ligne{ id: number|null = null; nom!: string; composition!: Athlete[] //les joueurs compososant la ligne tempsDeJeu!: number; // en minutes } export class User{ id: number|null = null; keycloakId!: string; nom!: string; prenom!:string; email!: string; } export class Admin extends User{ constructor(dto:AdminDTO); constructor(); constructor(dto?:AdminDTO){ super(); this.id = dto?.id ?? null; this.keycloakId = dto?.id_keycloak ?? ""; this.nom = dto?.name ?? ""; this.prenom = dto?.prenom ?? ""; 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{ groupes!: Groupe[]; sessionsID!: number[]; sessions: Session[] = []; constructor(dto:AthleteDTO); constructor(); constructor(dto?:AthleteDTO){ super(); this.id = dto?.id ?? null; this.keycloakId = dto?.id_keycloak ?? ""; this.nom = dto?.name ?? ""; this.prenom = dto?.prenom ?? "" ; this.email = ""; //TODO this.groupes = dto?.groupes ?? []; 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{ sessionsID!: number[]; sessions: Session[] = []; constructor(dto:CoachDTO); constructor(); constructor(dto?:CoachDTO){ super(); this.id = dto?.id ?? null; this.keycloakId = dto?.id_keycloak ?? ""; this.nom = dto?.name ?? ""; this.prenom = dto?.prenom ?? ""; this.email = ""; //TODO 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{ id: number|null = null; name!: string; activitesID: number[] = []; activites: Activite[] = []; isRecurrent! : boolean; creneau!: Date; coach!: Coach; athletesID!: number[] athletes!: Athlete[] duree! : number; groupe! : Groupe; ligne! : Ligne[]; constructor(dto:SessionDTO); constructor(); constructor(dto?:SessionDTO){ this.id = dto?.id?? 0; this.name = dto?.name?? ""; this.activitesID = dto?.activiteIds?? []; this.activites = []; this.isRecurrent = dto?.isRecurrent?? false; this.creneau = dto? new Date(dto.creneau) : new Date(); //this.coach = new Coach(); //dto.coachId; //TODO this.athletesID = dto?.athleteIds ?? []; this.athletes = []; this.duree = dto?.duree ?? 0; this.groupe = dto?.groupe ?? ""; this.ligne = []; //TODO } toDTO():SessionDTO{ const dto:SessionDTO = { id: this.id, name: this.name, isRecurrent: this.isRecurrent, creneau: this.creneau.toISOString(), duree: this.duree, groupe: "", //TODO coachId: this.coach?.id ?? null, athleteIds: [], activiteIds: [] }; return dto; } } export class Activite{ id: number|null = null; nom!: string; session!: Session; theme!: string; data!: Map; duree!: number; constructor(dto:ActiviteDTO); constructor(); constructor(dto?:ActiviteDTO){ this.id = dto?.id ?? 0; this.nom = dto?.name ?? ""; //this.session = dto.sessionId; //TODO this.theme = dto?.theme ?? ""; //this.data = //TODO this.duree = dto?.duree ?? 0; } toDTO():ActiviteDTO{ const dto:ActiviteDTO = { id: this.id, name: this.nom, duree: this.duree, dataActivite: [], sessionId: this.session.id, theme: this.theme }; return dto; } } /* export function getUserTest():User{ const user = new Athlete(); const s1 = new Session(); const s2 = new Session(); const s3 = new Session(); const athlete1 = new Athlete(); athlete1.id = 1; athlete1.nom = "Alice Dupont"; athlete1.email = "alice@nootnoot.yee"; athlete1.groupes = ["Entrainement"]; const athlete2 = new Athlete(); athlete2.id = 2; athlete2.nom = "Bob Martin"; athlete2.groupes = ["Competition"]; const athlete3 = new Athlete(); athlete3.id = 3; athlete3.nom = "Clara Lopez"; athlete3.groupes = ["Loisir"]; const ligne1 = new Ligne(); ligne1.id = 1; ligne1.nom = "Ligne A"; ligne1.composition = [athlete1, athlete2]; // Alice + Bob ligne1.tempsDeJeu = 45; const ligne2 = new Ligne(); ligne2.id = 2; ligne2.nom = "Ligne B"; ligne2.composition = [athlete2, athlete3]; // Bob + Clara ligne2.tempsDeJeu = 40; const ligne3 = new Ligne(); ligne3.id = 3; ligne3.nom = "Ligne C"; ligne3.composition = [athlete1, athlete3]; // Alice + Clara ligne3.tempsDeJeu = 50; user.id = 0; user.nom = "Emilien-Yee NootNoot"; user.email = "emilien@nootnoot.yee"; s1.creneau = new Date(); s1.id = 1; s1.name = "Entrainement Frisbee" s1.isRecurrent = true; s1.ligne = [ligne1]; s1.duree= 90; s1.athletes = [athlete1,athlete2]; var date2 = new Date(); date2.setDate(date2.getDate() + 2); s2.creneau = date2; s2.id = 2; s2.isRecurrent = false; s2.name = "entraintement 2" s2.ligne = [ligne2]; s2.duree= 120; s2.athletes = [athlete1,athlete2, athlete3]; s3.creneau = date2; s3.id = 3; s3.isRecurrent = false; s3.name = "entraintement 3" s3.ligne = [ligne3, ligne1]; s3.duree= 120; s3.athletes = [athlete2, athlete3]; const act1 = new Activite(); act1.id = 1; act1.nom = "Échauffement"; act1.theme = "Cardio"; act1.duree = 15; act1.session = s1; act1.data = new Map([["objectif", "Préparer le corps"], ["matériel", "Ballon"]]); const act2 = new Activite(); act2.id = 2; act2.nom = "Dribbles et passes"; act2.theme = "Technique"; act2.duree = 30; act2.session = s1; act2.data = new Map([["objectif", "Améliorer les passes"], ["niveau", "Intermédiaire"]]); const act3 = new Activite(); act3.id = 3; act3.nom = "Renforcement musculaire"; act3.theme = "Force"; act3.duree = 25; act3.session = s2; act3.data = new Map([["objectif", "Renforcer les jambes"], ["matériel", "Haltères"]]); const act4 = new Activite(); act4.id = 4; act4.nom = "Sprint et agilité"; act4.theme = "Vitesse"; act4.duree = 20; act4.session = s2; act4.data = new Map([["objectif", "Améliorer les sprints"], ["matériel", "Plots"]]); const act5 = new Activite(); act5.id = 5; act5.nom = "Match 5v5"; act5.theme = "Jeu"; act5.duree = 60; act5.session = s3; act5.data = new Map([["objectif", "Appliquer les techniques"], ["niveau", "Avancé"]]); const act6 = new Activite(); act6.id = 6; act6.nom = "Étirements"; act6.theme = "Récupération"; act6.duree = 10; act6.session = s3; act6.data = new Map([["objectif", "Éviter les blessures"], ["matériel", "Tapis"]]); // attach the concrete activities to their sessions s1.activites.push(act1); s1.activites.push(act2); s2.activites.push(act3); s2.activites.push(act4); s2.activites.push(act5); s2.activites.push(act6); user.sessions.push(s1); user.sessions.push(s2); user.sessions.push(s3); return user; } */