1
0
mirror of https://gitlab.com/comunic/comunicapiv2 synced 2024-11-30 01:06:28 +00:00
comunicapiv2/src/entities/User.ts

146 lines
3.3 KiB
TypeScript
Raw Normal View History

2019-11-23 15:10:51 +00:00
import { AccountImage } from "./AccountImage";
/**
* User information
*
* @author Pierre HUBERT
*/
2020-03-21 17:54:30 +00:00
export const SupportedLanguages = ["fr", "en"]
export enum UserPageStatus {
PRIVATE,
PUBLIC,
OPEN
}
export interface UserInfo {
id: number,
firstName: string,
lastName: string,
timeCreate: number,
virtualDirectory: string,
pageStatus: UserPageStatus,
2019-11-23 15:10:51 +00:00
accountImage: AccountImage,
friendsListPublic: boolean,
personnalWebsite ?: string,
publicNote ?: string,
blockComments : boolean,
allowPostsFromFriends: boolean,
2020-03-21 17:05:17 +00:00
}
export interface GeneralSettings {
id: number,
email ?: string,
firstName: string,
lastName: string,
pageStatus: UserPageStatus,
blockComments: boolean,
allowPostsFromFriends: boolean,
friendsListPublic: boolean,
personnalWebsite ?: string,
virtualDirectory: string,
allowMails: boolean,
publicNote ?: string
}
2020-03-21 17:45:45 +00:00
export interface LangSettings {
id: number,
lang: string,
}
export interface SecuritySettings {
id: number,
security_question_1 ?: string,
security_answer_1 ?: string,
security_question_2 ?: string,
security_answer_2 ?: string
}
2020-03-21 17:45:45 +00:00
export interface UserBuilder extends UserInfo, SecuritySettings, LangSettings, GeneralSettings {
}
export class User implements UserBuilder {
id: number;
2020-03-21 16:16:30 +00:00
email: string;
firstName: string;
lastName: string;
timeCreate: number;
virtualDirectory: string;
pageStatus: UserPageStatus;
2019-11-23 15:10:51 +00:00
accountImage: AccountImage;
friendsListPublic: boolean;
personnalWebsite?: string;
publicNote?: string;
blockComments: boolean;
allowPostsFromFriends: boolean;
2020-03-21 16:16:30 +00:00
allowMails: boolean;
2020-03-21 17:45:45 +00:00
lang: string;
security_question_1?: string;
security_answer_1?: string;
security_question_2?: string;
security_answer_2?: string;
public constructor(info : UserBuilder) {
for (const key in info) {
if (info.hasOwnProperty(key)) {
this[key] = info[key];
}
}
}
2020-03-21 16:16:30 +00:00
get isPublic() : boolean {
2020-03-21 17:05:17 +00:00
return this.pageStatus != UserPageStatus.PRIVATE;
2020-03-21 16:16:30 +00:00
}
get isOpen() : boolean {
return this.pageStatus == UserPageStatus.OPEN;
}
2020-01-01 10:33:51 +00:00
get hasVirtualDirectory() : boolean {
return this.virtualDirectory != null
&& this.virtualDirectory != "null"
&& this.virtualDirectory.length > 0
}
get hasWebsite() : boolean {
return this.personnalWebsite
&& this.personnalWebsite != null
&& this.personnalWebsite.length > 0
&& this.personnalWebsite != "null"
}
get hasPublicNote() : boolean {
return this.publicNote
&& this.publicNote != null
&& this.publicNote.length > 0
&& this.publicNote != "null"
}
get hasSecurityQuestion1() : boolean {
return this.security_question_1 != null && this.security_question_1 && this.security_question_1.length > 0;
}
get hasSecurityAnswer1() : boolean {
return this.security_answer_1 != null && this.security_answer_1 && this.security_answer_1.length > 0;
}
get hasSecurityQuestion2() : boolean {
return this.security_question_2 != null && this.security_question_2 != null && this.security_question_2 && this.security_question_2.length > 0;
}
get hasSecurityAnswer2() : boolean {
return this.security_answer_2 != null && this.security_answer_2 && this.security_answer_2.length > 0;
}
get hasSecurityQuestions() : boolean {
return (this.hasSecurityQuestion1 && this.hasSecurityAnswer1
&& this.hasSecurityQuestion2 && this.hasSecurityAnswer2) == true;
}
}