You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Mobile/model/User.ts

239 lines
4.9 KiB

import {
EHealthProblem,
ESleepLevel,
ESport,
ESportLevel,
} from "./enums/Enums";
export class User {
private _name?: string;
private _age?: number;
private _height?: number;
private _weight?: number;
private _sexe?: boolean; // true = Male, false = Female
private _logo?: string;
private _nbSessionPerWeek?: number;
private _goal?: string;
private _healthProblems?: EHealthProblem[];
private _sport?: ESport;
private _sleepLevel?: ESleepLevel;
private _sportLevel?: ESportLevel;
private _email?: string;
private _password?: string;
constructor({
name,
age,
height,
weight,
sexe,
logo,
nbSessionPerWeek,
goal,
healthProblems,
sport,
sleepLevel,
sportLevel,
email,
password,
}: {
name?: string;
age?: number;
height?: number;
weight?: number;
sexe?: boolean;
logo?: string;
nbSessionPerWeek?: number;
goal?: string;
healthProblems?: EHealthProblem[];
sport?: ESport;
sleepLevel?: ESleepLevel;
sportLevel?: ESportLevel;
email?: string;
password?: string;
} = {}) {
this._name = name;
this._age = age;
this._height = height;
this._weight = weight;
this._sexe = sexe;
this._logo = logo;
this._nbSessionPerWeek = nbSessionPerWeek;
this._goal = goal;
this._healthProblems = healthProblems;
this._sport = sport;
this._sleepLevel = sleepLevel;
this._sportLevel = sportLevel;
this._email = email;
this._password = password;
}
// Getters
get name(): string | undefined {
return this._name;
}
get age(): number | undefined {
return this._age;
}
get height(): number | undefined {
return this._height;
}
get weight(): number | undefined {
return this._weight;
}
get sexe(): boolean | undefined {
return this._sexe;
}
get logo(): string | undefined {
return this._logo;
}
get nbSessionPerWeek(): number | undefined {
return this._nbSessionPerWeek;
}
get goal(): string | undefined {
return this._goal;
}
get healthProblems(): EHealthProblem[] | undefined {
return this._healthProblems;
}
get sport(): ESport | undefined {
return this._sport;
}
get sleepLevel(): ESleepLevel | undefined {
return this._sleepLevel;
}
get sportLevel(): ESportLevel | undefined {
return this._sportLevel;
}
get email(): string | undefined {
return this._email;
}
get password(): string | undefined {
return this._password;
}
// Setters
set name(value: string | undefined) {
this._name = value;
}
set age(value: number | undefined) {
this._age = value;
}
set height(value: number | undefined) {
this._height = value;
}
set weight(value: number | undefined) {
this._weight = value;
}
set sexe(value: boolean | undefined) {
this._sexe = value;
}
set logo(value: string | undefined) {
this._logo = value;
}
set nbSessionPerWeek(value: number | undefined) {
this._nbSessionPerWeek = value;
}
set goal(value: string | undefined) {
this._goal = value;
}
set healthProblems(value: EHealthProblem[] | undefined) {
this._healthProblems = value;
}
set sport(value: ESport | undefined) {
this._sport = value;
}
set sleepLevel(value: ESleepLevel | undefined) {
this._sleepLevel = value;
}
set sportLevel(value: ESportLevel | undefined) {
this._sportLevel = value;
}
set email(value: string) {
this._email = value;
}
set password(value: string) {
this._password = value;
}
public isQuizDone(): boolean {
return (
this._name !== undefined &&
this._age !== undefined &&
this._height !== undefined &&
this._weight !== undefined &&
this._sexe !== undefined &&
this._nbSessionPerWeek !== undefined &&
this._goal !== undefined &&
this._healthProblems !== undefined &&
this._sport !== undefined &&
this._sleepLevel !== undefined &&
this._sportLevel !== undefined
);
}
static fromJSON(json: any): User {
return new User({
name: json.name,
age: json.age,
height: json.height,
weight: json.weight,
sexe: json.sexe,
logo: json.logo,
nbSessionPerWeek: json.nbSessionPerWeek,
goal: json.goal,
healthProblems: json.healthProblems,
sport: json.sport,
sleepLevel: json.sleepLevel,
sportLevel: json.sportLevel,
email: json.email,
password: json.password,
});
}
toJSON(): any {
return JSON.stringify({
name: this.name,
age: this.age,
height: this.height,
weight: this.weight,
sexe: this.sexe,
logo: this.logo,
nbSessionPerWeek: this.nbSessionPerWeek,
goal: this.goal,
healthProblems: this.healthProblems,
sport: this.sport,
sleepLevel: this.sleepLevel,
sportLevel: this.sportLevel,
email: this.email,
password: this.password,
});
}
}