import { Enseignant } from "./Enseignant";
import { AlreadyExistsError } from "./errors/AlreadyExistsError";
import { Etudiant } from "./Etudiant";
export class Utilisateur {
private _id: string;
private _first_name: string;
private _last_name: string;
private _email: string;
private _token: string;
private static user: Utilisateur;
constructor(id: string, first_name: string, last_name: string, email: string, token: string) {
this._id = id;
this._first_name = first_name;
this._last_name = last_name;
this._email = email;
this._token = token;
}
public static connectUser(id: string, first_name: string, last_name: string, email: string, token: string): Utilisateur {
if (Utilisateur.user) {
throw new AlreadyExistsError("Un utilisateur est deja connecte");
} else {
if(email.includes("teacher")) {
Utilisateur.user = new Enseignant(id, first_name, last_name, email, token);//TODO ajouter tout les params de Enseignant
} else {
// Utilisateur.user = new Etudiant(id, first_name, last_name, email, token, code_permanant );//TODO ajouter tout les params de Etudiant
}
// Utilisateur.user = new Utilisateur(id, first_name, last_name, email, token);
}
return Utilisateur.user;
}
public static getUtilisateurConnecte(): Utilisateur {
return Utilisateur.user;
}
public getId() {
return Utilisateur.user._id;
}
public getFirstName() {
return Utilisateur.user._first_name;
}
};
import { Cours } from "./Cours";
import { NotFoundError } from "./errors/NotFoundError";
import { Utilisateur } from "./Utilisateur";
export class Enseignant extends Utilisateur {
private _idEnseignant : string;
private _mapCours : Map<string,Cours>;
private _cours : Cours;
constructor(idEnseignant:string, prenom:string, nom:string, email:string, token:string) {
super(idEnseignant, prenom, nom, email, token);
this._mapCours = new Map<string,Cours>();
}
public set setCours(cours: Cours){
this._cours = cours;
}
public add(cours: Cours){
this.mapCours.set(cours.sigle, cours)
}
public getCours(){
return this._cours;
}
// moi
public get Cours(){
return this._cours;
}
public ajouterEtudiant(id:string, prenom:string, nom:string, email:string, codePermanent:string, sigle:string){
let cours = this.getCoursSpecifique(sigle);
cours.ajouterEtudiant(id,prenom,nom,email,codePermanent)
}
public get mapCours() {
return this._mapCours;
}
public getCoursSpecifique(sigle:string){
return this._mapCours.get(sigle);
}
/**
* Utile pour : CU01b -demanderDetailsCours
* Méthode permettant d'obtenir les informations du cours
* Les informations sont le sigle, le titre, les détails
* du cours ainsi que la liste des codes permanents de tous
* les étudiants incrits dans un groupe cours associé à ce
* cours
* @param sigle Le sigle du cours
*/
public getInfosCours(sigle:string) {
let cours = this._mapCours.get(sigle);
if (cours === undefined) {
// Le cours n'existe pas
throw new NotFoundError("Cours '" + sigle + "'n'existe pas.");
}
let resultat = {
messageSigle: "Sigle du cours : ",
sigle: sigle,
messageTitre: "Titre du cours : ",
titre: cours.titre,
messageDetails: "Détails du cours : ",
detail: cours.detail
//messageCP: "Code permenanents des étudiants inscrits : "
//codePermanents: cours.getEtudiantsCours(),
};
return resultat;
}
public toJSON() {
return {
"idEnseignant": this._idEnseignant,
}
}
}
in a certain method, I want to achieve something similar to this
let teacher = Utilisateur.getUilisateurConnecter();
then I would like to invoke a function from Enseignant like this
teacher.add( new ... ) ; However, it gives an error: property 'add' does not exist on type 'Utilisateur' usually in java you can cast like : Animal n = new Dog() I was considering doing something like this : let teacher : Enseignant = Utilisateur.getUtilisateurConnecter()