/*- * ============LICENSE_START======================================================= * SDC * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ============LICENSE_END========================================================= */ 'use strict'; export enum UserRole { ADMIN, DESIGNER } // tslint:disable-next-line:interface-name export interface IUserManager { isInEditMode: boolean; filterTerm: string; } // tslint:disable-next-line:interface-name export interface IUserProperties extends IUserManager { firstName: string; lastName: string; userId: string; email: string; role: string; tempRole: string; lastLoginTime: string; status: string; } // tslint:disable-next-line:interface-name export interface IUser { userInfo: IUserProperties; getRole(): UserRole; getRoleToView(): string; getName(): string; getFirstName(): string; getLastName(): string; } export class User implements IUser { constructor(public userInfo: IUserProperties) { } public getLastName = () => { return this.userInfo.lastName; } public getFirstName = () => { return this.userInfo.firstName; } public getName = () => { return this.userInfo.firstName + ' ' + this.userInfo.lastName; } public getLastLogin = () => { if (!this.userInfo.lastLoginTime || this.userInfo.lastLoginTime === '0') { return ''; } else { return this.userInfo.lastLoginTime; } } public getRole = (): UserRole => { let role: UserRole; switch (UserRole[this.userInfo.role.toUpperCase()]) { case UserRole.ADMIN: role = UserRole.ADMIN; break; case UserRole.DESIGNER: role = UserRole.DESIGNER; break; } return role; } public getRoleToView = (): string => { const role: string = this.userInfo.role.toLowerCase().replace('governor', 'governance_Rep'); return role.charAt(0).toUpperCase() + role.slice(1).replace('_', ' '); } }