{"version":3,"file":"inet-layout.mjs","sources":["../../../projects/inet-layout/src/lib/core/services/organization.service.ts","../../../projects/inet-layout/src/lib/layout/bootstrap/navbar/navbar.component.ts","../../../projects/inet-layout/src/lib/layout/bootstrap/navbar/navbar.component.html","../../../projects/inet-layout/src/lib/layout/bootstrap/userlog/userlog.service.ts","../../../projects/inet-layout/src/lib/layout/bootstrap/userlog/time-ago.service.ts","../../../projects/inet-layout/src/lib/layout/bootstrap/userlog/time-ago.pipe.ts","../../../projects/inet-layout/src/lib/layout/bootstrap/userlog/userlogs/userlogs.component.ts","../../../projects/inet-layout/src/lib/layout/bootstrap/userlog/userlogs/userlogs.component.html","../../../projects/inet-layout/src/lib/layout/bootstrap/abstract-side-nav.component.ts","../../../projects/inet-layout/src/lib/layout/bootstrap/message-side-nav/message-side-nav.component.ts","../../../projects/inet-layout/src/lib/layout/bootstrap/message-side-nav/message-side-nav.component.html","../../../projects/inet-layout/src/lib/layout/bootstrap/app-side-nav/app-side-nav.component.ts","../../../projects/inet-layout/src/lib/layout/bootstrap/app-side-nav/app-side-nav.component.html","../../../projects/inet-layout/src/lib/layout/bootstrap/social-side-nav/social-side-nav.component.ts","../../../projects/inet-layout/src/lib/layout/bootstrap/social-side-nav/social-side-nav.component.html","../../../projects/inet-layout/src/lib/layout/bootstrap/layout.component.ts","../../../projects/inet-layout/src/lib/layout/bootstrap/layout.component.html","../../../projects/inet-layout/src/lib/layout/bootstrap/vertical-layout/vertical-layout.component.ts","../../../projects/inet-layout/src/lib/layout/bootstrap/vertical-layout/vertical-layout.component.html","../../../projects/inet-layout/src/lib/layout/bootstrap/user-profile/must-match.validator.ts","../../../projects/inet-layout/src/lib/layout/bootstrap/contact.ts","../../../projects/inet-layout/src/lib/layout/bootstrap/user-profile/user-profile-info/user-profile-info.component.ts","../../../projects/inet-layout/src/lib/layout/bootstrap/user-profile/user-profile-info/user-profile-info.component.html","../../../projects/inet-layout/src/lib/layout/bootstrap/user-profile/global-contact.service.ts","../../../projects/inet-layout/src/lib/layout/bootstrap/user-profile/user-profile/user-profile.component.ts","../../../projects/inet-layout/src/lib/layout/bootstrap/user-profile/user-profile/user-profile.component.html","../../../projects/inet-layout/src/lib/layout/bootstrap/common-toolbar/common-toolbar.component.ts","../../../projects/inet-layout/src/lib/layout/bootstrap/common-toolbar/common-toolbar.component.html","../../../projects/inet-layout/src/lib/layout/bootstrap/profile/bootstrap-user-profile.component.ts","../../../projects/inet-layout/src/lib/layout/bootstrap/profile/bootstrap-user-profile.component.html","../../../projects/inet-layout/src/lib/layout/bootstrap/bootstrap-layout-routing.module.ts","../../../projects/inet-layout/src/lib/layout/bootstrap/user-profile/access-role/access-role.component.ts","../../../projects/inet-layout/src/lib/layout/bootstrap/user-profile/access-role/access-role.component.html","../../../projects/inet-layout/src/lib/layout/bootstrap/user-profile/user-profile.module.ts","../../../projects/inet-layout/src/lib/layout/bootstrap/userlog/userlog.module.ts","../../../projects/inet-layout/src/lib/core/route-reusable-strategy.ts","../../../projects/inet-layout/src/lib/core/store/state/settings.state.ts","../../../projects/inet-layout/src/lib/core/store/actions/settings.action.ts","../../../projects/inet-layout/src/lib/core/store/reducers/settings.reducer.ts","../../../projects/inet-layout/src/lib/core/model/cloud-config.ts","../../../projects/inet-layout/src/lib/core/services/local-storage.service.ts","../../../projects/inet-layout/src/lib/core/store/reducers/local-storage.reducer.ts","../../../projects/inet-layout/src/lib/core/store/reducers/app.reducers.ts","../../../projects/inet-layout/src/lib/core/store/selectors/settings.selector.ts","../../../projects/inet-layout/src/lib/core/store/effects/settings.effects.ts","../../../projects/inet-layout/src/lib/core/calista-core.module.ts","../../../projects/inet-layout/src/lib/layout/bootstrap/bootstrap-layout.module.ts","../../../projects/inet-layout/src/lib/layout/directive/menu.directive.ts","../../../projects/inet-layout/src/lib/layout/directive/toolbar.directive.ts","../../../projects/inet-layout/src/lib/layout/directive/navbar-item.directive.ts","../../../projects/inet-layout/src/lib/layout/directive/navbar-menu.directive.ts","../../../projects/inet-layout/src/lib/layout/directive/profile-item.directive.ts","../../../projects/inet-layout/src/lib/layout/directive/navbar-search.directive.ts","../../../projects/inet-layout/src/lib/layout/directive/logo.directive.ts","../../../projects/inet-layout/src/lib/layout/directive/action-menu.directive.ts","../../../projects/inet-layout/src/lib/layout/calista-layout/plugin/plugin-utils.ts","../../../projects/inet-layout/src/lib/layout/calista-layout/calista.interface.ts","../../../projects/inet-layout/src/lib/layout/calista-layout/calista-menu.service.ts","../../../projects/inet-layout/src/lib/layout/calista-layout/plugin/calista-plugin.service.ts","../../../projects/inet-layout/src/lib/layout/calista-layout/navbar/calista-navbar.component.ts","../../../projects/inet-layout/src/lib/layout/calista-layout/navbar/calista-navbar.component.html","../../../projects/inet-layout/src/lib/layout/calista-layout/plugin/plugin-view/plugin-view.component.ts","../../../projects/inet-layout/src/lib/layout/calista-layout/plugin/plugin-view/plugin-view.component.html","../../../projects/inet-layout/src/lib/layout/calista-layout/plugin/app-plugin.ts","../../../projects/inet-layout/src/lib/layout/calista-layout/plugin/document-viewer/document-viewer.component.ts","../../../projects/inet-layout/src/lib/layout/calista-layout/plugin/document-viewer/document-viewer.component.html","../../../projects/inet-layout/src/lib/layout/calista-layout/plugin/plugin-sub/plugin-sub.component.ts","../../../projects/inet-layout/src/lib/layout/calista-layout/plugin/plugin-sub/plugin-sub.component.html","../../../projects/inet-layout/src/lib/layout/calista-layout/abstract-calista-side-nav.component.ts","../../../projects/inet-layout/src/lib/layout/calista-layout/workspace-side-nav/workspace-side-nav.component.ts","../../../projects/inet-layout/src/lib/layout/calista-layout/workspace-side-nav/workspace-side-nav.component.html","../../../projects/inet-layout/src/lib/layout/calista-layout/calista-menu/calista-menu.component.ts","../../../projects/inet-layout/src/lib/layout/calista-layout/calista-menu/calista-menu.component.html","../../../projects/inet-layout/src/lib/layout/calista-layout/calista-layout.component.ts","../../../projects/inet-layout/src/lib/layout/calista-layout/calista-layout.component.html","../../../projects/inet-layout/src/lib/layout/calista-layout/profile/user-profile/must-match.validator.ts","../../../projects/inet-layout/src/lib/layout/calista-layout/profile/profile.service.ts","../../../projects/inet-layout/src/lib/layout/calista-layout/profile/user-profile/user-profile.component.ts","../../../projects/inet-layout/src/lib/layout/calista-layout/profile/user-profile/user-profile.component.html","../../../projects/inet-layout/src/lib/layout/calista-layout/calista-layout-routing.module.ts","../../../projects/inet-layout/src/lib/core/translate/calista-trans-loader.ts","../../../projects/inet-layout/src/lib/core/services/cloud-translate.service.ts","../../../projects/inet-layout/src/lib/core/translate/cloud-translate.module.ts","../../../projects/inet-layout/src/lib/layout/calista-layout/plugin/plugin.module.ts","../../../projects/inet-layout/src/lib/layout/calista-layout/profile/profile.module.ts","../../../projects/inet-layout/src/lib/layout/calista-layout/calista-layout.module.ts","../../../projects/inet-layout/src/lib/layout/index.ts","../../../projects/inet-layout/src/public-api.ts","../../../projects/inet-layout/src/inet-layout.ts"],"sourcesContent":["import {Injectable} from '@angular/core';\nimport {CoreService, HttpClientService, iNet} from 'inet-core';\nimport {Observable} from \"rxjs\";\nimport {shareReplay, tap} from \"rxjs/operators\";\nimport {Organization, OrganizationInformation} from \"inet-ui\";\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class OrganizationService {\n    private $orgCache?: Observable<Organization> | null;\n\n    private url = {\n        firm_load: iNet.getPUrl('cloud/firmorganid/load'),\n        firm_update: iNet.getPUrl('cloud/firmprofile/update'),\n        update_logo: iNet.getPUrl('cloud/firmprofile/logoupdate'),\n        view_logo: iNet.getPUrl('plugin/firmlogo/view'),\n        // For Essentials\n        //load_info: iNet.getPUrl('gl/organ/profile/load'),\n        load_info: iNet.getPUrl('cloud/firmprofile/load'),\n        update_info: iNet.getPUrl('cloud/firmprofile/update'),\n        search_org: iNet.getPUrl('plugin/organization/search'),\n        view_org: iNet.getPUrl('plugin/firmprofile/view')\n        //update_logo: iNet.getPUrl('gl/organ/profile/logo')\n    };\n\n    constructor(private http: HttpClientService, private coreService: CoreService) {\n    }\n\n    firmLoad(): Observable<OrganizationInformation> {\n        this.http.showLoading();\n        return this.http.getJSON(this.url.firm_load, {organId: iNet.getOrganId()})\n            .pipe(tap((res: OrganizationInformation) => res))\n    }\n\n    // saveLogoOrganization(params: any): Observable<any> {\n    //     return this.http.postJSON(this.url.save_logo, params);\n    // }\n\n    firmUpdate(orgInfo: OrganizationInformation): Observable<any> {\n        this.http.showLoading();\n        return this.http.postJSON(this.url.firm_update, orgInfo);\n    }\n\n    updateLogo(data: FormData): Observable<any> {\n        this.http.showLoading();\n        return this.http.post(this.url.update_logo, data);\n    }\n\n    removeLogo(params: any): Observable<any> {\n        this.http.showLoading();\n        return this.http.postJSON(this.url.update_logo, params);\n    }\n\n    load(): Observable<Organization> {\n        if (!this.$orgCache) {\n            this.http.showLoading();\n            this.$orgCache = this.http.getJSON(this.url.view_org)\n                .pipe(shareReplay(1))\n        }\n        return this.$orgCache;\n    }\n    loadInfo(): Observable<any>{\n        this.http.showLoading();\n        return this.http.postJSON(this.url.load_info);\n    }\n\n    update(data: Organization): Observable<any> {\n        this.http.showLoading();\n        // Clone data for update\n        const org: any = Object.assign(new Organization(), data);\n        org.officeAddressStr = JSON.stringify(org.officeAddress);\n        delete org.officeAddress;\n        delete org.createdDate;\n        delete org.createdBy;\n        delete org.banks;\n        delete org.busAces;\n        this.$orgCache = null;\n        return this.http.postJSON(this.url.update_info, org);\n    }\n\n    searchOrganization(params: any = {}): Observable<any> {\n        return this.http.postJSON(this.url.search_org, params);\n    }\n\n    getLogoUrlByOrganization(orgInfo: Organization): string {\n        /*\n        if (!orgInfo.logo) {\n            return iNet.BLANK_IMAGE_URL;\n        }\n         */\n        return `${this.url.view_logo}?version=${orgInfo.modifiedDate}`;\n        //return this.coreService.getFileUrl(orgInfo.logo + `?version=${orgInfo.modifiedDate}`);\n    }\n\n    getLogoUrl(): string {\n        return this.url.view_logo;\n    }\n\n    viewInfo(): Observable<any>{\n        this.http.showLoading();\n        return this.http.postJSON(this.url.view_org);\n    }\n}\n","import {\n    Component,\n    OnInit,\n    EventEmitter,\n    Output,\n    TemplateRef,\n    ElementRef,\n    Input, ViewChild\n} from '@angular/core';\nimport {CoreService, iNet, SecurityService, UserProfileService} from 'inet-core';\nimport {TranslateService} from \"@ngx-translate/core\";\nimport {OrganizationService} from \"../../../core/services/organization.service\";\nimport {Router} from \"@angular/router\";\nimport {CloudTranslateService, NotifyMessageService} from \"inet-ui\";\nexport const BLANK_IMAGE_URL = 'data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==';\n@Component({\n    selector: 'app-admin-navbar',\n    templateUrl: './navbar.component.html',\n    styleUrls: ['./navbar.component.scss']\n})\nexport class AdminNavbarComponent implements OnInit {\n\n    @Input() navbarItemTpl!: TemplateRef<ElementRef>;\n    @Input() profileItemTpl!: TemplateRef<ElementRef>;\n    @Input() navbarMenuTpl!: TemplateRef<ElementRef>;\n    @Input() titleMenuTpl!: TemplateRef<ElementRef>;\n    @Input() hideToggler: boolean = false;\n    @Input() hideTogglerButton: boolean = false;\n    @Input() hideCompanyMenu: boolean = false;\n    @Input() hideProfileMenu: boolean = false;\n    @Input() hideSearch: boolean = false;\n    @Input() applicationName?: string;\n    @Input() homeRouterLink?: string;\n    @Input() noteRouterLink?: string;\n    @Input() messageCount: string = '';\n    @Input() hideBrandName: boolean = true;\n    @Input() hideLogo: boolean = false;\n    @Output() onToggleMenu = new EventEmitter<void>();\n    @Output() onToggleMessageSideNav = new EventEmitter<void>();\n    @Output() onToggleUserLogSideNav = new EventEmitter<void>();\n    @Output() onToggleAppSideNav = new EventEmitter<void>();\n    @Output() onToggleChatSideNav = new EventEmitter<void>();\n    @Output() onToggleSocialSideNav = new EventEmitter<void>();\n    @Output() onToggleNoteSideNav = new EventEmitter<void>();\n    @Output() onClickLogo = new EventEmitter<string>();\n    @Input() visibleChatIcon: boolean = !!iNet.getPrefix();\n    @Input() visibleMessageIcon: boolean = !!iNet.getPrefix();\n    @Input() visibleUserLogIcon: boolean = !!iNet.getPrefix();\n    @Input() visibleAppIcon: boolean = !!iNet.getPrefix();\n    @Input() visibleNoteIcon: boolean = false;\n    @Input() visibleSearch: boolean = false;\n    @Input() visibleLogo: boolean = true;\n    //externalUrl = 'javascript:;';\n    avatarUrl: string = BLANK_IMAGE_URL;\n    displayName = iNet.getDisplayName();\n    @Input() brandName: string = '';\n\n    @ViewChild('brandLink') brandLink!: ElementRef;\n    langs: Array<string> = [];\n    currentLanguage: string = 'en';\n\n    logoUrl?: string;\n\n    constructor(private coreService: CoreService,\n                private router: Router,\n                private userProfileService: UserProfileService,\n                private orgService: OrganizationService,\n                private cloudTranslateService: CloudTranslateService,\n                private messageService: NotifyMessageService,\n                public translate: TranslateService,\n                private securityService : SecurityService) {\n    }\n\n    ngOnInit() {\n        //this.brandName = !iNet.isEmpty(this.applicationName) ? `${this.applicationName} - ${this.orgName}` : this.orgName;\n        //this.externalUrl = window.location.protocol + '\\/\\/' + window.location.host + '\\/' + iNet.firmPrefix;\n        this.langs = this.translate.getLangs(); // Languages\n        this.currentLanguage = this.cloudTranslateService.getCurrentLang();\n        if(this.isUser()) {\n            if (!!iNet.getPrefix()) {\n                this.userProfileService.getFullName().then(fullname => {\n                    this.displayName = fullname || iNet.getDisplayName() || iNet.getUserName();\n                });\n                this.userProfileService.getAvatarUrl().then(url => {\n                    this.avatarUrl = url;\n                });\n                if(this.visibleMessageIcon){\n                    this.countMessage();\n                }\n                //Load logo for header\n                this.logoUrl = this.orgService.getLogoUrl();\n            }\n        }\n    }\n\n    private isUser(): boolean {\n        if(!iNet.getUserName()) {\n           return false;\n        }\n        return this.securityService.hasRole('firmuser,firm_user,community');\n    }\n    logout() {\n        if (this.coreService.getEnvironment()['production']) {\n            this.coreService.logout();\n        }\n    }\n\n    toggleMenu() {\n        this.onToggleMenu.emit();\n    }\n\n    toggleMessageSideNav($event: any) {\n        this.onToggleMessageSideNav.emit();\n    }\n    toggleUserLogSideNav($event: any) {\n        this.onToggleUserLogSideNav.emit();\n    }\n\n\n    toggleAppSideNav($event: any) {\n        this.onToggleAppSideNav.emit();\n    }\n\n    // toggleSocialSideNav($event) {\n    //     this.onToggleSocialSideNav.emit();\n    // }\n\n    toggleChatSideNav($event: any) {\n        this.onToggleChatSideNav.emit();\n    }\n\n    toggleNoteNav($event: any) {\n        this.onToggleNoteSideNav.emit()\n    }\n\n    changeLanguage(lang: string) {\n        this.translate.use(lang).subscribe(\n            (v: any) => {\n                this.currentLanguage = lang;\n                this.cloudTranslateService.setCurrentLang(lang);\n                if (this.coreService.getEnvironment()['production']) {\n                    this.coreService.updateLanguage(lang, function () {\n                        window.location.reload();\n                    });\n                } else {\n                    window.location.reload();\n                }\n            }\n        );\n    }\n\n    updateImageUrl($event: any) {\n        this.avatarUrl = UserProfileService.DEFAULT_AVATAR_URL;\n    }\n\n    updateBlankImage($event: any) {\n        if ($event) {\n            this.logoUrl = BLANK_IMAGE_URL;\n        }\n    }\n\n    countMessage(){\n        this.messageService.count().then((count: number) => {\n            //console.log('count')\n            this.messageCount = (count && count > 0) ? count.toString() : '';\n        });\n    }\n\n    setMessageCount(v: string) {\n        this.messageCount = v;\n    }\n    clickLogo($event: any) {\n        this.onClickLogo.emit(this.homeRouterLink);\n    }\n}\n","<nav class=\"navbar navbar-expand-md\">\n    <div *ngIf=\"visibleLogo\" class=\"navbar-header logo-area p-1\" (click)=\"clickLogo($event)\" [routerLink]=\"homeRouterLink\">\n        <ng-container>\n            <img *ngIf=\"!hideLogo && logoUrl\" alt=\"Logo\" class=\"logo\" [title]=\"brandName\" [src]=\"logoUrl\"\n                 (error)=\"updateBlankImage($event)\">\n            <a *ngIf=\"!hideBrandName\" #brandLink class=\"navbar-brand\">{{brandName}}</a>\n        </ng-container>\n    </div>\n    <ng-template [ngTemplateOutlet]=\"navbarMenuTpl\"></ng-template>\n    <ng-template [ngTemplateOutlet]=\"titleMenuTpl\"></ng-template>\n    <div class=\"navbar-collapse collapse in\" id=\"navbar-collapse\" aria-expanded=\"true\">\n        <ul class=\"navbar-nav navbar-right ml-auto d-flex align-items-center\">\n            <ng-template [ngTemplateOutlet]=\"navbarItemTpl\"></ng-template>\n            <li *ngIf=\"visibleNoteIcon\" class=\"nav-item\"><a href=\"javascript:;\" (click)=\"toggleNoteNav($event)\"><i\n                    class=\"fa fa-pencil-square-o\" aria-hidden=\"true\"></i></a>\n            </li>\n\n            <div *ngIf=\"visibleSearch\" class=\"search-input-group\">\n                <div class=\"input-group input-group-sm\">\n                    <div class=\"input-group-prepend\">\n                <span class=\"input-group-text border-radius-left\">\n                    <i class=\"fa fa-search\" aria-hidden=\"true\" ></i>\n                </span>\n                    </div>\n                    <input type=\"text\"\n                           class=\"form-control text-white border-radius-right\">\n                </div>\n            </div>\n            <li *ngIf=\"visibleMessageIcon\" class=\"nav-item\" [ngClass]=\"{'icon-animated-heartbeat': messageCount}\">\n                <a href=\"javascript:;\" (click)=\"toggleMessageSideNav($event)\">\n                    <i class=\"fa fa-bell rotate-15\"></i><span class=\"number\">{{messageCount}}</span>\n                </a>\n            </li>\n            <li *ngIf=\"visibleUserLogIcon\" class=\"nav-item\">\n                <a href=\"javascript:;\" (click)=\"toggleUserLogSideNav($event)\">\n                    <i class=\"fa fa-history\"></i>\n                </a>\n            </li>\n            <li *ngIf=\"visibleAppIcon\" class=\"nav-item\"><a href=\"javascript:;\" (click)=\"toggleAppSideNav($event)\"><i\n                    class=\"fa fa-th-large\"></i></a></li>\n            <li id=\"user-profile\" class=\"light-blue user-profile\">\n                <a *ngIf=\"displayName\" class=\"dropdown-toggle\" href=\"javascript:;\" data-toggle=\"dropdown\">\n                    <img [src]=\"avatarUrl\" [alt]=\"displayName\" class=\"nav-user-photo\" (error)=\"updateImageUrl($event)\">\n                    <!--span class=\"user-info\" [title]=\"displayName\"><small>{{'COMMON.WELCOME' | translate}},</small>{{displayName}}</span-->\n                </a>\n                <div class=\"dropdown-menu\">\n                    <a *ngIf=\"!hideProfileMenu\" class=\"dropdown-item\" href=\"javascript:;\" routerLink=\"user-profile\">\n                        <i class=\"fa fa-user\"></i> {{'COMMON.MENU.USER_PROFILE' | translate}}\n                    </a>\n                    <ng-template [ngTemplateOutlet]=\"profileItemTpl\"></ng-template>\n                    <a class=\"dropdown-submenu pull-left\">\n                        <a class=\"dropdown-item dropdown-toggle\" href=\"#\">\n                            <i class=\"fa fa-language\"></i> {{'COMMON.MENU.LANGUAGE' | translate}}\n                            <small class=\"text-lowercase\">({{ currentLanguage | translate }})</small>\n                        </a>\n                        <div class=\"dropdown-menu\">\n                            <a class=\"dropdown-item\" href=\"javascript:;\" *ngFor=\"let lang of langs\"\n                               (click)=\"changeLanguage(lang)\" [ngClass]=\"{'active': currentLanguage===lang}\">\n                                <i class=\"fa\"\n                                   [ngClass]=\"{'fa-check': currentLanguage===lang}\"></i> {{ lang | translate }}\n                            </a>\n                        </div>\n                        <div class=\"dropdown-divider\"></div>\n                    </a>\n                    <a class=\"dropdown-item\" href=\"javascript:;\" (click)=\"logout()\">\n                        <i class=\"fa fa-sign-out\"></i> {{'COMMON.MENU.LOGOUT' | translate}}\n                    </a>\n                </div>\n            </li>\n        </ul>\n    </div>\n</nav>\n","import { Injectable } from '@angular/core';\nimport {HttpClientService} from \"inet-core\";\nimport {Observable} from \"rxjs\";\ndeclare let iNet: any;\n@Injectable({\n  providedIn: 'root'\n})\nexport class UserlogService {\n  private url = {\n    list_user_log: iNet.getPUrl('plugin/memberaccess'),\n  };\n  constructor(private http: HttpClientService) { }\n\n  loadData(params: any = {}): Observable<any>{\n    this.http.showLoading();\n    return this.http.getJSON(this.url.list_user_log, params);\n  }\n}\n","import {Injectable} from '@angular/core';\nimport {Observable, of, timer} from 'rxjs';\nimport {delay, expand, skip} from 'rxjs/operators';\n\nexport const MINUTE = 60;\nexport const HOUR = MINUTE * 60;\nexport const DAY = HOUR * 24;\n/*\nexport const WEEK = DAY * 7;\nexport const MONTH = DAY * 30;\nexport const YEAR = DAY * 365;\n\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class TimeAgoService {\n\n  constructor() {\n  }\n\n  tick(then: number): Observable<any> {\n    return of(0)\n      .pipe(\n        delay(60000),\n        expand(() => {\n          const now = Date.now();\n          const seconds = Math.round(Math.abs(now - then) / 1000);\n          //console.log('[tick]', new Date(), seconds);\n          const period =\n            seconds < MINUTE\n              ? 1000\n              : seconds < HOUR\n              ? 1000 * MINUTE\n              : seconds < DAY\n                ? 1000 * HOUR\n                : 0;\n          //console.log('[period]',period);\n          return period ? timer(period) : of(0);\n        }),\n        skip(1)\n      );\n  }\n}\n\n","import {ChangeDetectorRef, OnDestroy, Pipe, PipeTransform} from '@angular/core';\nimport { format, register } from 'timeago.js';\nimport {TimeAgoService} from \"./time-ago.service\";\nimport {Subject, Subscription} from \"rxjs\";\nimport {filter} from \"rxjs/operators\";\nimport {CloudTranslateService} from \"inet-ui\";\nregister('vi', (number: any, index: any, total_sec: any): [string, string] => {\n  // number: the timeago / timein number;\n  // index: the index of array below;\n  // total_sec: total seconds between date to be formatted and today's date;\n  // @ts-ignore\n  return [\n    ['vừa xong', 'một lúc'],\n    ['%s giây trước', '%s giây nữa'],\n    ['1 phút trước', '1 phút nữa'],\n    ['%s phút trước', '%s phút nữa'],\n    ['1 giờ trước', '1 giờ nữa'],\n    ['%s giờ trước', '%s giờ nữa'],\n    ['1 ngày trước', '1 ngày nữa'],\n    ['%s ngày trước', '%s ngày nữa'],\n    ['1 tuần trước', '1 tuần nữa'],\n    ['%s tuần trước', '%s tuần nữa'],\n    ['1 tháng trước', '1 tháng nữa'],\n    ['%s tháng trước', '%s tháng nữa'],\n    ['1 năm trước', '1 năm nữa'],\n    ['%s năm trước', '%s năm nữa']\n  ][index];\n});\n\n@Pipe({\n  name: 'timeAgo',\n  pure: false\n})\nexport class TimeAgoPipe implements PipeTransform, OnDestroy {\n  private clockSubscription!: Subscription;\n  private date!: number;\n  private value!: string;\n  private live: boolean = true;\n  private locale!: string;\n  stateChanges = new Subject<void>();\n\n  constructor(cd: ChangeDetectorRef,\n              private timeService: TimeAgoService,\n              private cloudTranslateService: CloudTranslateService) {\n\n    this.stateChanges.subscribe(() => {\n      this.value = format(this.date, this.locale);\n      cd.markForCheck();\n    });\n  }\n\n  transform(date: any, live?: boolean): string {\n    this.date = date;\n    if(live){\n      this.live = live;\n    }\n    this.locale = this.cloudTranslateService.getCurrentLang() || 'vi';\n    if (this.date) {\n      if (this.clockSubscription) {\n        this.clockSubscription.unsubscribe();\n        // this.clockSubscription = undefined;\n      }\n      this.clockSubscription = this.timeService.tick(this.date)\n        .pipe(filter(() => this.live, this))\n        .subscribe((v) => {\n          this.stateChanges.next()\n\n        });\n      this.stateChanges.next();\n\n      return format(this.date, this.locale);\n    } else {\n      //throw new SyntaxError(`Expected a valid date, received: ${date}`);\n      return '';\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.clockSubscription) {\n      this.clockSubscription.unsubscribe();\n      // this.clockSubscription = undefined;\n    }\n    this.stateChanges.complete();\n  }\n}\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {UserlogService} from \"../userlog.service\";\nimport {MemberAccess} from \"../memberaccess\";\nimport {ErrorMessage} from \"inet-core\";\n\n\n@Component({\n  selector: 'app-userlogs',\n  templateUrl: './userlogs.component.html',\n  styleUrls: ['./userlogs.component.scss']\n})\nexport class UserlogsComponent implements OnInit {\n  @Input() opened: boolean = false;\n  @Output() onClose = new EventEmitter<boolean>();\n  memberAccess: MemberAccess[] = [];\n  constructor(private userlogService: UserlogService) { }\n\n  ngOnInit(): void {\n    this.init();\n  }\n  init(){\n    this.userlogService.loadData({pageSize : 20, pageNumber: 0}).subscribe((data) => {\n      if(data.type !== ErrorMessage.TYPE){\n        this.memberAccess = data?.items || [];\n      }\n    })\n  }\n  closeUserlog(){\n    this.onClose.emit(true);\n  }\n}\n","<div class=\"slide-nav \" [ngClass]=\"{'opened': opened}\">\n    <div class=\" bg-white  pt-2\">\n        <div class=\"d-flex justify-content-between align-items-center w-100 mb-2 px-3\">\n            <div style=\"font-size: 16px\" class=\"mb-0 header\">ACCESS HISTORY</div>\n            <button class=\"btn btn-sm btn-light bg-white border-0\" (click)=\"closeUserlog()\">\n              <i class=\"fa fa-times text-primary\" aria-hidden=\"true\"></i></button>\n        </div>\n        <div style=\"height: calc( 100vh - 95px );overflow: auto;\" class=\"mb-2\">\n            <div class=\"mx-3\">\n                <div *ngFor=\"let access of memberAccess\" class=\"rounded bg-user-log w-100 d-flex mb-3 row m-0 pt-2 f-12\">\n                    <div class=\" d-flex justify-content-between mb-2 row m-0 col-sm-12 px-2\">\n                        <div class=\"p-2 rounded bg-light-blue col-sm-4 d-flex align-items-center justify-content-center\">\n                            <p class=\"common-font text-primary text-center mb-0\"><i class=\"fa fa-history mr-1\" aria-hidden=\"true\"></i> {{access?.logtime | timeAgo}}\n                            </p>\n<!--                            <p class=\"mb-0 common-font text-primary\">{{access?.logtime | date: 'dd/MM/yyy'}}</p>-->\n                        </div>\n                        <div class=\" common-font col-sm-8 \">\n                            <p class=\" mb-2\">Browser: <span class=\"text-primary ml-2\">{{access?.browser}}</span></p>\n                            <div class=\"mb-0 font-weight-bold d-flex align-items-center mb-0\"><i\n                                    class=\"fa fa-adn fa-2x text-primary mr-2\"\n                                    aria-hidden=\"true\"></i> {{access?.application }}</div>\n                        </div>\n\n                    </div>\n                    <div class=\" d-flex justify-content-between mb-2 row m-0 col-sm-12\">\n                        <div class=\" d-flex align-items-center common-font col-sm-4 p-0\">\n                            <div class=\"font-weight-bold d-flex align-items-center mb-0\"><i\n                                    class=\"fa fa-laptop  text-primary mr-2\" aria-hidden=\"true\"></i> <span\n                                    class=\"font-weight-bold\">{{access?.deviceType }}</span></div>\n                        </div>\n                        <div class=\" common-font col-sm-8\">\n<!--                            <p class=\"mb-2\">Url access: <span class=\"text-primary ml-2\">{{access?.serviceName}}</span>-->\n<!--                            </p>-->\n                            <div class=\"font-weight-bold d-flex align-items-center mb-0\"><i\n                                    class=\"fa fa-map-marker fa-2x text-primary mr-2\" aria-hidden=\"true\"></i> <span\n                                    class=\"font-weight-bold\">{{access?.remoteAddress}}</span></div>\n                        </div>\n                    </div>\n                </div>\n\n            </div>\n        </div>\n    </div>\n</div>\n","import {\n    Component,\n    ElementRef,\n    EventEmitter,\n    HostListener,\n    Input,\n    OnChanges, OnDestroy,\n    Output,\n    SimpleChanges\n} from \"@angular/core\";\n\n@Component({\n    selector: 'app-admin-side-nav',\n    template: ``\n})\n\nexport class AbstractSideNavComponent implements OnChanges, OnDestroy {\n    @Input() opened: boolean = false;\n    @Output() onClose = new EventEmitter<boolean>();\n    @Output() onClear = new EventEmitter<boolean>();\n    @Output() onLoad = new EventEmitter<boolean>();\n    private overflowCls = 'overflow-hidden';\n    constructor(public elementRef: ElementRef) { }\n\n    ngOnChanges(changes: SimpleChanges) {\n        const currentValue = changes['opened'][\"currentValue\"];\n        setTimeout(() => {\n            if (currentValue) {\n                this.open();\n            } else if (changes['opened']['previousValue'] != currentValue) {\n                this.close();\n            }\n        }, 1)\n    }\n\n    open() {\n        if(!document.body.classList.contains(this.overflowCls)) {\n            document.body.classList.add(this.overflowCls);\n        }\n    }\n\n    close() {\n        if(document.body.classList.contains(this.overflowCls)) {\n            document.body.classList.remove(this.overflowCls);\n        }\n        this.opened = false;\n        this.onClose.emit(this.opened);\n    }\n\n    // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n    ngOnDestroy(): void {\n    }\n\n    @HostListener('document:click', ['$event'])\n    clickOut(event: any) {\n        if (!this.elementRef.nativeElement.contains(event.target)\n            && this.opened && !event.target.closest('.nav-item') &&\n            !event.target.closest('.search-input__icon')) {\n            this.close();\n        }\n    }\n    @HostListener('click',  ['$event'])\n    clickInside(event: any) {\n        if(this.elementRef.nativeElement.contains(event.target)) {\n\n        }\n    }\n}\n","import {\n    Component, SimpleChanges, ElementRef\n} from '@angular/core';\nimport {ResponseData, SecurityService} from \"inet-core\";\nimport {AbstractSideNavComponent} from \"../abstract-side-nav.component\";\nimport {NotifyMessage, NotifyMessageService} from \"inet-ui\";\ndeclare let iNet: any;\n\n@Component({\n    selector: 'app-admin-message-side-nav',\n    templateUrl: './message-side-nav.component.html',\n    styleUrls: ['./message-side-nav.component.scss']\n})\nexport class MessageSideNavComponent  extends AbstractSideNavComponent   {\n    // keyword: string;\n    loaded = false;\n    messages: NotifyMessage[] = [];\n    totalMessage: number = 0;\n    pageNumber= 0;\n    pageSize = 10;\n    constructor(private service: NotifyMessageService,\n                public elementRef: ElementRef,\n                private securityService : SecurityService) {\n        super(elementRef);\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        const currentValue = changes['opened'][\"currentValue\"];\n        setTimeout(() => {\n            if (currentValue) {\n                this.open();\n                if (!this.loaded) {\n                    this.pageNumber = 0;\n                    this.listMessage({pageSize: this.pageSize, pageNumber: this.pageNumber, notifylist: true});\n                }\n            } else {\n                this.close();\n            }\n        }, 10)\n\n    }\n\n    private isUser(): boolean {\n        if(!iNet.username) {\n            return false;\n        }\n        return this.securityService.hasRole('firmuser,firm_user');\n    }\n\n    listMessage(params: any) {\n        if(this.isUser()) {\n            this.service.getMessages(params).subscribe((response: ResponseData) => {\n                this.messages = response.items as Array<NotifyMessage>;\n                this.totalMessage = response.total;\n                this.loaded = true;\n            });\n        }\n    }\n\n    loadMessageMore() {\n        if(this.isUser()) {\n            this.pageNumber += 1;\n            this.service.getMessages({\n                pageSize: this.pageSize,\n                pageNumber: this.pageNumber,\n                notifylist: true\n            }).subscribe((response: ResponseData) => {\n                this.messages = [...this.messages, ...response.items as Array<NotifyMessage>];\n            });\n        }\n    }\n\n    clearMessage(){\n        if(this.isUser()) {\n            this.service.clearAll().subscribe(response => {\n                this.messages = [];\n                this.totalMessage = 0;\n                this.onClear.emit(true);\n            })\n        }\n    }\n\n    openMessage(msg: NotifyMessage) {\n        if(this.isUser()) {\n            if (!msg.read && msg.application && msg.activityID) {\n                this.service.loadNotify(msg.application, msg.activityID).subscribe((message: NotifyMessage) => {\n                    msg.read = true;\n                    this.onLoad.emit(true);\n                });\n            }\n        }\n    }\n}\n","<div class=\"slide-nav\" [ngClass]=\"{'opened': opened}\">\n    <div class=\"list-header\">\n        <span class=\"font-weight-bold\"><i class=\"fa fa-bell\"></i> {{'COMMON.NOTIFICATION.TITLE' | translate}}</span>\n        <button (click)=\"close()\" class=\"close\" type=\"button\"><i class=\"fa fa-times\"></i></button>\n    </div>\n    <ul class=\"list-box\">\n        <li *ngFor=\"let item of messages\">\n            <a href=\"javascript:;\" (click)=\"openMessage(item)\">\n                <div class=\"list-item\">\n                    <div class=\"list-left\">\n                        <img *ngIf=\"item && item.sender\" userAvatar [usercode]=\"item.sender\" class=\"user-avatar mt-0 mr-2 rounded-circle\">\n                    </div>\n                    <div class=\"list-body\">\n                        <div class=\"media-body ml-2\">\n                            <p class=\"mb-1 message-item p-2\" [ngClass]=\"{'unread': !item.read}\">\n                                <b>{{item?.fullname}}</b> {{item?.message}}\n                            </p>\n                            <!--div class=\"px-2\">{{item.created | date}}</div-->\n                        </div>\n                    </div>\n                </div>\n            </a>\n        </li>\n        <li *ngIf=\"!messages?.length\">\n            <div class=\"empty-msg-container\">\n                <i>{{'COMMON.NOTIFICATION.EMPTY_MSG' | translate}}</i>\n            </div>\n        </li>\n        <div *ngIf=\"messages.length && totalMessage!=messages.length\" class=\"mt-1 text-center\">\n            <a (click)=\"loadMessageMore()\" href=\"javascript:;\">\n                {{'COMMON.NOTIFICATION.LOAD_MORE' | translate}} {{totalMessage-messages.length}} {{'COMMON.NOTIFICATION.ITEMS' | translate}}\n            </a>\n        </div>\n    </ul>\n    <div class=\"list-footer\">\n        <a *ngIf=\"messages?.length\" (click)=\"clearMessage()\" href=\"javascript:;\"><i class=\"fa fa-eraser text-danger\"></i> {{'COMMON.NOTIFICATION.CLEAR_ALL' | translate}}</a>\n    </div>\n</div>\n","import {\n    Component, ElementRef, OnDestroy, OnInit, SimpleChanges\n} from '@angular/core';\nimport {AbstractSideNavComponent} from \"../abstract-side-nav.component\";\nimport {Subscription} from \"rxjs\";\nimport {Router} from \"@angular/router\";\nimport {CoreService, SecurityService} from \"inet-core\";\nimport {SystemApplication} from \"inet-ui\";\n\ndeclare let iNet: any;\n\n@Component({\n    selector: 'app-admin-app-side-nav',\n    templateUrl: './app-side-nav.component.html',\n    styles: [`\n        iframe {\n            width: 100%;\n            border: none;\n            overflow: hidden;\n        }\n    `]\n})\nexport class AppSideNavComponent extends AbstractSideNavComponent implements OnInit, OnDestroy {\n    //private loaded = false;\n    private _router?: Subscription;\n    applications: SystemApplication[] = [];\n    widgetApps: SystemApplication[] = [];\n    systemUrl: string = 'about:blank';\n    SYSTEM_APPS = ['social', 'calendar'];\n\n    constructor(\n        private coreService: CoreService,\n        private router: Router,\n        public elementRef: ElementRef,\n        private securityService : SecurityService) {\n        super(elementRef);\n\n        this.listApp();\n    }\n\n    ngOnInit() {\n        window.addEventListener('message', (e) => {\n            var __data = e.data || {};\n            var __eventName = __data['eventName'];\n            var __result: any = {};\n            if (!iNet.isEmpty(__data.result)) {\n                if (typeof (__data.result) === 'string') {\n                    __result = JSON.parse(__data.result);\n                } else if (typeof (__data.result) === 'object') {\n                    __result = __data.result || {};\n                }\n                //console.log('[message]', __result);\n                switch (__eventName) {\n                    case 'open':\n                    case 'openApp':\n                        this.openApp(__result['application']);\n                        this.close();\n                        break;\n                    case 'openUrl':\n                        window.location.href = iNet.getSSOUrl(__result['url']);\n                        break;\n                    case 'loaded':\n                        const iFrame: any = document.querySelectorAll(`iframe[src=\"${__result['src']}\"]`)[0];\n                        if (iFrame) {\n                            iFrame['height'] = __result['height'];\n                            iFrame['valid'] = true;\n                        }\n                        break;\n                }\n            }\n\n        }, false);\n    }\n\n    ngOnDestroy(): void {\n        this.close();\n        if (this._router) {\n            this._router.unsubscribe();\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        const currentValue = changes['opened'][\"currentValue\"];\n        setTimeout(() => {\n            if (currentValue) {\n                this.systemUrl = iNet.getPUrl('common/page/apps') + '?appname=system';\n                this.open();\n            } else {\n                this.close();\n            }\n        }, 250)\n    }\n\n    private isUser(): boolean {\n        if (!iNet.username) {\n            return false;\n        }\n        return this.securityService.hasRole('firmuser,firm_user,community');\n    }\n\n    private listApp() {\n        if(this.isUser()) {\n            this.coreService.getSystemApplication().subscribe((apps: any = []) => {\n                if (apps && apps.length > 0) {\n                    this.applications = apps\n                        .filter((app: SystemApplication) => (app.organId !== 'community' && app.firmContext))\n                        .map((application: SystemApplication) => {\n                            if (application.homepage && application.homepage.indexOf('http') < 0) {\n                                application.homepage = iNet.getPUrl(`${application.module}/${application.homepage}`);\n                                application.icon = `${this.coreService.getFileServerPath()}/images/${application.module}/${application.icon}`;\n                            }\n                            if (!!application.widget) {\n                                application.widget = `${iNet.getPUrl('common/page/apps')}?appname=${application.firmContext}`; //rebuild the widget url\n                            }\n                            return application;\n                        });\n                    this.widgetApps = this.applications.filter((app: SystemApplication) => (!!app.widget));\n                }\n            });\n        }\n    }\n\n    openApp(app: string) {\n        if (this.SYSTEM_APPS.includes(app)) { //system app\n            this.router.navigate([app]);\n        } else {\n            const url = iNet.getSSOUrl(this.getUrlByContext(app));\n            if (url) {\n                window.location.href = url;\n            }\n        }\n    }\n\n    private getUrlByContext(content: string): string {\n        const app: any = this.applications.find(({webContext}) => webContext === content);\n        return app.homepage;\n    }\n\n    getLink(app?: any): string {\n        return (app && app.widget) ? app.widget : 'about:blank';\n    }\n}\n","<div class=\"slide-nav\" [ngClass]=\"{'opened': opened}\">\n    <ul class=\"list-box list-app\" *ngIf=\"opened\">\n        <iframe id=\"system-app-iframe\" [src]=\"systemUrl | safe\" scrolling=\"no\"></iframe>\n        <iframe *ngFor=\"let widgetApp of widgetApps\" [src]=\"getLink(widgetApp) | safe\" scrolling=\"no\"></iframe>\n    </ul>\n</div>\n","import {\n    Component, ElementRef\n} from '@angular/core';\nimport {AbstractSideNavComponent} from \"../abstract-side-nav.component\";\n\n@Component({\n    selector: 'app-admin-social-side-nav',\n    templateUrl: './social-side-nav.component.html',\n    styleUrls: ['./social-side-nav.component.css']\n})\nexport class SocialSideNavComponent extends AbstractSideNavComponent {\n    constructor(public elementRef: ElementRef) {\n        super(elementRef);\n    }\n}\n","<div class=\"slide-nav\" [ngClass]=\"{'opened': opened}\">\n    <div class=\"m-3\">\n        Social component\n    </div>\n</div>\n","import {\n    AfterViewInit,\n    Component,\n    ContentChild,\n    ElementRef, EventEmitter,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n    TemplateRef, ViewChild\n} from '@angular/core';\nimport {NavigationEnd, Router} from \"@angular/router\";\nimport {AdminNavbarComponent} from \"./navbar/navbar.component\";\nimport {Subscription} from \"rxjs\";\nimport {filter} from \"rxjs/operators\";\nimport {SecurityService} from \"inet-core\";\n\ndeclare let iNet: any;\n\n@Component({\n    selector: 'app-layout',\n    templateUrl: './layout.component.html'\n})\nexport class LayoutComponent implements OnInit, OnDestroy, AfterViewInit {\n    @Input('theme') themeClass: string = 'theme-silver';\n    @ContentChild('menu') menu!: TemplateRef<ElementRef>;\n    @ContentChild('navbarItem') navbarItemTpl!: TemplateRef<ElementRef>;\n    @ContentChild('profileItem') profileItemTpl!: TemplateRef<ElementRef>;\n    @ContentChild('navbarMenu') navbarMenu!: TemplateRef<ElementRef>;\n    @ContentChild('toolbar') toolbar!: TemplateRef<ElementRef>;\n\n    @Input('homeRouterLink') homeRouterLink: string = '';\n    @Input() appName?: string;\n\n    @Input() hideToggler: boolean = false;\n    @Input() hideTogglerButton: boolean = true;\n    @Input() visibleMenu: boolean = true;\n    @Input() expandedMenu: boolean = false;\n    @Input() expandedSlider: boolean = false;\n    @Input() expandedMessageSlider: boolean = false;\n    @Input() expandedUserLogSlider: boolean = false;\n    @Input() expandedAppSlider: boolean = false;\n    @Input() expandedSocialSlider: boolean = false;\n    @Input() expandedChatSlider: boolean = false;\n    @Input() hideSearch: boolean = false;\n    @Input() hideCompanyMenu: boolean = false;\n    @Input() hideProfileMenu: boolean = false;\n    @Input() hideBrandName: boolean = true;\n    @Input() hideLogo: boolean = false;\n    @Input() visibleOverlay: boolean = false;\n    @Input() fullScreenLayout: boolean = false;\n\n    @Input() fullLayoutWithUrls: Array<string> = [];\n    @Output() routeChange = new EventEmitter();\n    @Output() onToggle = new EventEmitter<boolean>();\n    @Output() onClickLogo = new EventEmitter<string>();\n    @Input() visibleToolbar: boolean = false;\n\n    @Input() visibleChatIcon: boolean = true;\n    @Input() visibleMessageIcon: boolean = true;\n    @Input() visibleUserLogIcon: boolean = true;\n    @Input() visibleAppIcon: boolean = true;\n    @Input() visibleNoteIcon: boolean = false;\n    @Input() visibleSearch: boolean = false;\n\n    private _router?: Subscription;\n    @ViewChild(AdminNavbarComponent) navbarComponent!: AdminNavbarComponent;\n\n    constructor(private router: Router,\n                private securityService: SecurityService) {\n\n    }\n\n    ngOnInit() {\n        if (window.localStorage) {\n            this.expandedMenu = (window.localStorage.getItem('expandedMenu') === '1');\n        }\n        this.router.events.pipe(\n            filter(event => event instanceof NavigationEnd),\n        ).subscribe((e: NavigationEnd | any) => {\n            this.onChangeUrl(e.url);\n        });\n\n        if (this.visibleChatIcon) {\n            this.visibleChatIcon = this.isUser();\n        }\n        if (this.visibleMessageIcon) {\n            this.visibleMessageIcon = this.isUser();\n        }\n        if (this.visibleAppIcon) {\n            this.visibleAppIcon = this.isUser();\n        }\n    }\n\n    private isUser(): boolean {\n        if (!iNet.username) {\n            return false;\n        }\n        return this.securityService.hasRole('firmuser,firm_user,community');\n    }\n\n    private onChangeUrl(url: string) {\n        if (!this.fullScreenLayout) {\n            let __visibleMenu = !!this.menu;\n            if (__visibleMenu) {\n                for (let i = 0; i < this.fullLayoutWithUrls.length; i++) {\n                    if ((url !== '/' && this.fullLayoutWithUrls[i] !== '/' && url.indexOf(this.fullLayoutWithUrls[i]) === 0)\n                        || (url === this.fullLayoutWithUrls[i])) {\n                        __visibleMenu = false;\n                        break;\n                    }\n                }\n            }\n            this.visibleMenu = __visibleMenu;\n        } else {\n            this.visibleMenu = false;\n        }\n        this.hideToggler = !this.visibleMenu;\n        this.routeChange.emit({\n            url: url,\n            visibleMenu: this.visibleMenu,\n            hideToggler: this.hideToggler,\n            expandedMenu: this.expandedMenu,\n            layout: this\n        });\n    }\n\n    ngAfterViewInit() {\n        /*\n        //Using jQuery to handle menu\n        $(document).ready(function () {\n            const $menu = $('#mainnav-menu');\n            const activeCls = 'active';\n            const $elements = $menu.find('li');\n\n            $elements.on('hide.bs.collapse', (e: any) => {\n                //console.log('[hide]', e.currentTarget);\n                e.currentTarget.classList.remove(activeCls);\n            });\n\n            $elements.on('show.bs.collapse', (e: any) => {\n                const $currentActive = $menu.find('li.active');\n                $currentActive.find('a[data-toggle]').trigger(\"click\");\n                //console.log('[show]', e.currentTarget);\n                e.currentTarget.classList.add(activeCls);\n            });\n        });\n        */\n    }\n\n    ngOnDestroy(): void {\n        if (this._router) {\n            this._router.unsubscribe();\n        }\n    }\n\n    onToggleMenu($event: any) {\n        this.expandedMenu = !this.expandedMenu;\n        window.localStorage.setItem('expandedMenu', this.expandedMenu ? '1' : '0');\n        window.dispatchEvent(new Event('resize'));\n        this.onToggle.emit(this.expandedMenu);\n    }\n\n    private updateSlider(v: boolean) {\n        this.expandedSlider = v;\n        this.visibleOverlay = v;\n    }\n\n    onToggleMessageSlider($event: any) {\n        this.expandedAppSlider = false;\n        this.expandedSocialSlider = false;\n        this.expandedChatSlider = false;\n        this.expandedUserLogSlider = false;\n        this.expandedMessageSlider = !this.expandedMessageSlider;\n        this.updateSlider(this.expandedMessageSlider);\n    }\n    onToggleUserLogSlider($event: any) {\n        this.expandedAppSlider = false;\n        this.expandedSocialSlider = false;\n        this.expandedChatSlider = false;\n        this.expandedMessageSlider = false;\n        this.expandedUserLogSlider = !this.expandedUserLogSlider;\n        this.updateSlider(this.expandedUserLogSlider);\n    }\n\n\n    onToggleAppSlider($event: any) {\n        this.expandedChatSlider = false;\n        this.expandedSocialSlider = false;\n        this.expandedMessageSlider = false;\n        this.expandedUserLogSlider = false;\n        this.expandedAppSlider = !this.expandedAppSlider;\n        this.updateSlider(this.expandedAppSlider);\n    }\n\n    onToggleSocialSlider($event: any) {\n        this.expandedAppSlider = false;\n        this.expandedChatSlider = false;\n        this.expandedMessageSlider = false;\n        this.expandedUserLogSlider = false;\n        this.expandedSocialSlider = !this.expandedSocialSlider;\n        this.updateSlider(this.expandedSocialSlider);\n    }\n\n    onToggleNoteSlider($event: any) {\n        this.expandedAppSlider = false;\n        this.expandedSocialSlider = false;\n        this.expandedChatSlider = false;\n        this.expandedMessageSlider = false;\n        this.expandedUserLogSlider = false;\n        this.updateSlider(this.expandedMessageSlider);\n        this.router.navigate(['note', 'list'])\n    }\n\n    onCloseSlider($event: any) {\n        this.expandedMessageSlider = false;\n        this.expandedAppSlider = false;\n        this.expandedChatSlider = false;\n        this.expandedSocialSlider = false;\n        this.expandedSlider = false;\n        this.visibleOverlay = false;\n        this.expandedUserLogSlider = false;\n\n    }\n\n    //====================Message count=================\n    onClearMessage($event: any) {\n        if (this.navbarComponent) {\n            this.navbarComponent.setMessageCount('');\n        }\n    }\n\n    onLoadMessage($event: any) {\n        if (this.navbarComponent ) {\n            this.navbarComponent.countMessage();\n        }\n    }\n\n    clickLogo($event: any) {\n        this.onClickLogo.emit(this.homeRouterLink);\n    }\n\n}\n","<div id=\"container\" [class]=\"themeClass\" [ngClass]=\"{'mainnav-lg': expandedMenu, 'mainnav-sm': !expandedMenu}\">\n    <div toastContainer></div>\n    <app-admin-navbar (onToggleMenu)=\"onToggleMenu($event)\"\n                      (onToggleMessageSideNav)=\"onToggleMessageSlider($event)\"\n                      (onToggleUserLogSideNav)=\"onToggleUserLogSlider($event)\"\n                      (onToggleAppSideNav)=\"onToggleAppSlider($event)\"\n                      (onToggleSocialSideNav)=\"onToggleSocialSlider($event)\"\n                      (onToggleNoteSideNav)=\"onToggleNoteSlider($event)\"\n                      (onClickLogo)=\"clickLogo($event)\"\n                      [hideSearch]=\"hideSearch\" [applicationName]=\"appName\"\n                      [homeRouterLink]=\"homeRouterLink\" [navbarItemTpl]=\"navbarItemTpl\" [profileItemTpl]=\"profileItemTpl\"\n                      [navbarMenuTpl]=\"navbarMenu\" [visibleAppIcon]=\"visibleAppIcon\" [visibleChatIcon]=\"visibleChatIcon\"\n                      [visibleMessageIcon]=\"visibleMessageIcon\" [visibleNoteIcon]=\"visibleNoteIcon\" [visibleSearch]=\"visibleSearch\"\n                      [visibleUserLogIcon]=\"visibleUserLogIcon\"\n                      [hideToggler]=\"hideToggler\" [hideTogglerButton]=\"hideTogglerButton\"\n                      [hideBrandName]=\"hideBrandName\" [hideLogo]=\"hideLogo\"\n                      [hideCompanyMenu]=\"hideCompanyMenu\" [hideProfileMenu]=\"hideProfileMenu\">\n    </app-admin-navbar>\n    <app-admin-message-side-nav *ngIf=\"expandedMessageSlider\" [opened]=\"expandedMessageSlider\" (onClear)=\"onClearMessage($event)\"\n                          (onClose)=\"onCloseSlider($event)\"\n                          (onLoad)=\"onLoadMessage($event)\"></app-admin-message-side-nav>\n    <app-userlogs *ngIf=\"expandedUserLogSlider\" [opened]=\"expandedUserLogSlider\" (onClose)=\"onCloseSlider($event)\"></app-userlogs>\n    <app-admin-app-side-nav *ngIf=\"expandedAppSlider\" [opened]=\"expandedAppSlider\" (onClose)=\"onCloseSlider($event)\"></app-admin-app-side-nav>\n    <app-admin-social-side-nav *ngIf=\"expandedSocialSlider\" [opened]=\"expandedSocialSlider\" (onClose)=\"onCloseSlider($event)\"></app-admin-social-side-nav>\n    <div class=\"container-fluid\">\n        <div class=\"row\">\n            <nav id=\"mainnav-container\" *ngIf=\"visibleMenu\">\n                <div id=\"mainnav\">\n                    <ng-template [ngTemplateOutlet]=\"menu\"></ng-template>\n                </div>\n            </nav>\n            <div id=\"content-container\" [ngClass]=\"{'pl-0': !visibleMenu , 'tb-visible': !!toolbar && visibleToolbar}\">\n                <ng-template [ngTemplateOutlet]=\"toolbar\"></ng-template>\n                <router-outlet></router-outlet>\n                <div id=\"loading-indicator\" title=\"{{'INDICATOR.PROCESSING' | translate}}\">\n                    <span>{{'INDICATOR.PROCESSING' | translate}}</span>\n                </div>\n            </div>\n        </div>\n    </div>\n    <div class=\"overlay\" [ngClass]=\"{'d-block': expandedSlider || visibleOverlay}\"></div>\n</div>\n","import {\n  AfterViewInit,\n  Component,\n  ContentChild,\n  ElementRef,\n  EventEmitter,\n  Input, OnDestroy,\n  OnInit,\n  Output,\n  TemplateRef,\n  ViewChild\n} from '@angular/core';\nimport {Subscription} from \"rxjs\";\nimport {AdminNavbarComponent} from \"../navbar/navbar.component\";\nimport {NavigationEnd, Router} from \"@angular/router\";\nimport {SecurityService} from \"inet-core\";\nimport {filter} from \"rxjs/operators\";\ndeclare let iNet: any;\n@Component({\n  selector: 'app-vertical-layout',\n  templateUrl: './vertical-layout.component.html',\n  styleUrls: ['./vertical-layout.component.scss']\n})\nexport class VerticalLayoutComponent implements OnInit, OnDestroy, AfterViewInit  {\n\n  @Input('theme') themeClass: string = 'theme-silver';\n  @ContentChild('menu') menu!: TemplateRef<ElementRef>;\n  @ContentChild('navbarItem') navbarItemTpl!: TemplateRef<ElementRef>;\n  @ContentChild('profileItem') profileItemTpl!: TemplateRef<ElementRef>;\n  @ContentChild('navbarMenu') navbarMenu!: TemplateRef<ElementRef>;\n  @ContentChild('titleMenu') titleMenu!: TemplateRef<ElementRef>;\n  @ContentChild('toolbar') toolbar!: TemplateRef<ElementRef>;\n\n  @Input('homeRouterLink') homeRouterLink: string = '';\n  @Input() appName?: string;\n\n  @Input() hideToggler: boolean = false;\n  @Input() hideTogglerButton: boolean = true;\n  @Input() visibleMenu: boolean = true;\n  @Input() expandedMenu: boolean = false;\n  @Input() expandedSlider: boolean = false;\n  @Input() expandedMessageSlider: boolean = false;\n  @Input() expandedUserLogSlider: boolean = false;\n  @Input() expandedAppSlider: boolean = false;\n  @Input() expandedSocialSlider: boolean = false;\n  @Input() expandedChatSlider: boolean = false;\n  @Input() hideSearch: boolean = false;\n  @Input() hideCompanyMenu: boolean = false;\n  @Input() hideProfileMenu: boolean = false;\n  @Input() hideBrandName: boolean = true;\n  @Input() hideLogo: boolean = false;\n  @Input() visibleOverlay: boolean = false;\n  @Input() fullScreenLayout: boolean = false;\n\n  @Input() fullLayoutWithUrls: Array<string> = [];\n  @Output() routeChange = new EventEmitter();\n  @Output() onToggle = new EventEmitter<boolean>();\n  @Output() onClickLogo = new EventEmitter<string>();\n  @Input() visibleToolbar: boolean = false;\n\n  @Input() visibleChatIcon: boolean = true;\n  @Input() visibleMessageIcon: boolean = true;\n  @Input() visibleUserLogIcon: boolean = true;\n  @Input() visibleAppIcon: boolean = true;\n  @Input() visibleNoteIcon: boolean = false;\n  @Input() visibleSearch: boolean = false;\n  @Input() visibleLogo: boolean = true;\n\n  private _router?: Subscription;\n  @ViewChild(AdminNavbarComponent) navbarComponent!: AdminNavbarComponent;\n\n  constructor(private router: Router,\n              private securityService: SecurityService) {\n\n  }\n\n  ngOnInit() {\n    if (window.localStorage) {\n      this.expandedMenu = (window.localStorage.getItem('expandedMenu') === '1');\n    }\n    this.router.events.pipe(\n        filter(event => event instanceof NavigationEnd),\n    ).subscribe((e: NavigationEnd | any) => {\n      this.onChangeUrl(e.url);\n    });\n\n    if (this.visibleChatIcon) {\n      this.visibleChatIcon = this.isUser();\n    }\n    if (this.visibleMessageIcon) {\n      this.visibleMessageIcon = this.isUser();\n    }\n    if (this.visibleAppIcon) {\n      this.visibleAppIcon = this.isUser();\n    }\n  }\n\n  private isUser(): boolean {\n    if (!iNet.username) {\n      return false;\n    }\n    return this.securityService.hasRole('firmuser,firm_user,community');\n  }\n\n  private onChangeUrl(url: string) {\n    if (!this.fullScreenLayout) {\n      let __visibleMenu = !!this.menu;\n      if (__visibleMenu) {\n        for (let i = 0; i < this.fullLayoutWithUrls.length; i++) {\n          if ((url !== '/' && this.fullLayoutWithUrls[i] !== '/' && url.indexOf(this.fullLayoutWithUrls[i]) === 0)\n              || (url === this.fullLayoutWithUrls[i])) {\n            __visibleMenu = false;\n            break;\n          }\n        }\n      }\n      this.visibleMenu = __visibleMenu;\n    } else {\n      this.visibleMenu = false;\n    }\n    this.hideToggler = !this.visibleMenu;\n    this.routeChange.emit({\n      url: url,\n      visibleMenu: this.visibleMenu,\n      hideToggler: this.hideToggler,\n      expandedMenu: this.expandedMenu,\n      layout: this\n    });\n  }\n\n  ngAfterViewInit() {\n    //Using jQuery to handle menu\n    /*\n    $(document).ready(function () {\n      const $menu = $('#mainnav-menu');\n      const activeCls = 'active';\n      const $elements = $menu.find('li');\n\n      $elements.on('hide.bs.collapse', (e: any) => {\n        //console.log('[hide]', e.currentTarget);\n        e.currentTarget.classList.remove(activeCls);\n      });\n\n      $elements.on('show.bs.collapse', (e: any) => {\n        const $currentActive = $menu.find('li.active');\n        $currentActive.find('a[data-toggle]').trigger(\"click\");\n        //console.log('[show]', e.currentTarget);\n        e.currentTarget.classList.add(activeCls);\n      });\n    });\n    */\n  }\n\n  ngOnDestroy(): void {\n    if (this._router) {\n      this._router.unsubscribe();\n    }\n  }\n\n  onToggleMenu($event: any) {\n    this.expandedMenu = !this.expandedMenu;\n    window.localStorage.setItem('expandedMenu', this.expandedMenu ? '1' : '0');\n    window.dispatchEvent(new Event('resize'));\n    this.onToggle.emit(this.expandedMenu);\n  }\n\n  private updateSlider(v: boolean) {\n    this.expandedSlider = v;\n    this.visibleOverlay = v;\n  }\n\n  onToggleMessageSlider($event: any) {\n    this.expandedAppSlider = false;\n    this.expandedSocialSlider = false;\n    this.expandedChatSlider = false;\n    this.expandedUserLogSlider = false;\n    this.expandedMessageSlider = !this.expandedMessageSlider;\n    this.updateSlider(this.expandedMessageSlider);\n  }\n  onToggleUserLogSlider($event: any) {\n    this.expandedAppSlider = false;\n    this.expandedSocialSlider = false;\n    this.expandedChatSlider = false;\n    this.expandedMessageSlider = false;\n    this.expandedUserLogSlider = !this.expandedUserLogSlider;\n    this.updateSlider(this.expandedUserLogSlider);\n  }\n\n\n  onToggleAppSlider($event: any) {\n    this.expandedChatSlider = false;\n    this.expandedSocialSlider = false;\n    this.expandedMessageSlider = false;\n    this.expandedUserLogSlider = false;\n    this.expandedAppSlider = !this.expandedAppSlider;\n    this.updateSlider(this.expandedAppSlider);\n  }\n\n  onToggleSocialSlider($event: any) {\n    this.expandedAppSlider = false;\n    this.expandedChatSlider = false;\n    this.expandedMessageSlider = false;\n    this.expandedUserLogSlider = false;\n    this.expandedSocialSlider = !this.expandedSocialSlider;\n    this.updateSlider(this.expandedSocialSlider);\n  }\n\n  onToggleNoteSlider($event: any) {\n    this.expandedAppSlider = false;\n    this.expandedSocialSlider = false;\n    this.expandedChatSlider = false;\n    this.expandedMessageSlider = false;\n    this.expandedUserLogSlider = false;\n    this.updateSlider(this.expandedMessageSlider);\n    this.router.navigate(['note', 'list'])\n  }\n\n  onCloseSlider($event: any) {\n    this.expandedMessageSlider = false;\n    this.expandedAppSlider = false;\n    this.expandedChatSlider = false;\n    this.expandedSocialSlider = false;\n    this.expandedSlider = false;\n    this.visibleOverlay = false;\n    this.expandedUserLogSlider = false;\n\n  }\n\n  //====================Message count=================\n  onClearMessage($event: any) {\n    if (this.navbarComponent) {\n      this.navbarComponent.setMessageCount('');\n    }\n  }\n\n  onLoadMessage($event: any) {\n    if (this.navbarComponent && this.visibleMessageIcon) {\n      //console.log('visibleMessageIcon')\n      this.navbarComponent.countMessage();\n    }\n  }\n\n  clickLogo($event: any) {\n    this.onClickLogo.emit(this.homeRouterLink);\n  }\n\n}\n","<div id=\"container\" [class]=\"themeClass\" [ngClass]=\"{'mainnav-lg': expandedMenu, 'mainnav-sm': !expandedMenu}\">\n    <div toastContainer></div>\n    <app-admin-message-side-nav *ngIf=\"expandedMessageSlider\" [opened]=\"expandedMessageSlider\" (onClear)=\"onClearMessage($event)\"\n                                (onClose)=\"onCloseSlider($event)\"\n                                (onLoad)=\"onLoadMessage($event)\"></app-admin-message-side-nav>\n    <app-userlogs *ngIf=\"expandedUserLogSlider\" [opened]=\"expandedUserLogSlider\" (onClose)=\"onCloseSlider($event)\"></app-userlogs>\n    <app-admin-app-side-nav *ngIf=\"expandedAppSlider\" [opened]=\"expandedAppSlider\" (onClose)=\"onCloseSlider($event)\"></app-admin-app-side-nav>\n    <app-admin-social-side-nav *ngIf=\"expandedSocialSlider\" [opened]=\"expandedSocialSlider\" (onClose)=\"onCloseSlider($event)\"></app-admin-social-side-nav>\n    <div class=\"container-fluid\">\n        <div class=\"row\">\n            <nav id=\"mainnav-container\" *ngIf=\"visibleMenu\">\n                <div id=\"mainnav\">\n                    <ng-template [ngTemplateOutlet]=\"menu\"></ng-template>\n                </div>\n            </nav>\n            <div id=\"content-container\" [ngClass]=\"{'pl-0': !visibleMenu , 'tb-visible': !!toolbar && visibleToolbar}\">\n                <app-admin-navbar (onToggleMenu)=\"onToggleMenu($event)\"\n                                  (onToggleMessageSideNav)=\"onToggleMessageSlider($event)\"\n                                  (onToggleUserLogSideNav)=\"onToggleUserLogSlider($event)\"\n                                  (onToggleAppSideNav)=\"onToggleAppSlider($event)\"\n                                  (onToggleSocialSideNav)=\"onToggleSocialSlider($event)\"\n                                  (onToggleNoteSideNav)=\"onToggleNoteSlider($event)\"\n                                  (onClickLogo)=\"clickLogo($event)\"\n                                  [hideSearch]=\"hideSearch\" [applicationName]=\"appName\"\n                                  [homeRouterLink]=\"homeRouterLink\" [navbarItemTpl]=\"navbarItemTpl\" [profileItemTpl]=\"profileItemTpl\"\n                                  [navbarMenuTpl]=\"navbarMenu\"\n                                  [titleMenuTpl]=\"titleMenu\"\n                                  [visibleAppIcon]=\"visibleAppIcon\" [visibleChatIcon]=\"visibleChatIcon\"\n                                  [visibleMessageIcon]=\"visibleMessageIcon\" [visibleNoteIcon]=\"visibleNoteIcon\" [visibleSearch]=\"visibleSearch\"\n                                  [visibleLogo]=\"visibleLogo\"\n                                  [visibleUserLogIcon]=\"visibleUserLogIcon\"\n                                  [hideToggler]=\"hideToggler\" [hideTogglerButton]=\"hideTogglerButton\"\n                                  [hideBrandName]=\"hideBrandName\" [hideLogo]=\"hideLogo\"\n                                  [hideCompanyMenu]=\"hideCompanyMenu\" [hideProfileMenu]=\"hideProfileMenu\">\n                </app-admin-navbar>\n                    <ng-template [ngTemplateOutlet]=\"toolbar\"></ng-template>\n                    <router-outlet></router-outlet>\n                    <div id=\"loading-indicator\" title=\"{{'INDICATOR.PROCESSING' | translate}}\">\n                        <span>{{'INDICATOR.PROCESSING' | translate}}</span>\n                    </div>\n\n            </div>\n        </div>\n    </div>\n    <div class=\"overlay\" [ngClass]=\"{'d-block': expandedSlider || visibleOverlay}\"></div>\n</div>\n","import { UntypedFormGroup } from '@angular/forms';\n\n// custom validator to check that two fields match\nexport function MustMatch(controlName: string, matchingControlName: string) {\n    return (formGroup: UntypedFormGroup) => {\n        const control = formGroup.controls[controlName];\n        const matchingControl = formGroup.controls[matchingControlName];\n\n        if (matchingControl.errors && !matchingControl.errors.mustMatch) {\n            // return if another validator has already found an error on the matchingControl\n            return;\n        }\n\n        // set error on matchingControl if validation fails\n        if (control.value !== matchingControl.value) {\n            matchingControl.setErrors({ mustMatch: true });\n        } else {\n            matchingControl.setErrors(null);\n        }\n    }\n}\n","import {Address} from \"inet-ui\";\n\nexport class Contact {\n    salutationType?: string;\n    sex?: string;\n    firstName?: string;\n    lastName?: string;\n    middleName?: string;\n    fullName?: string;\n    primaryEmail?: string;\n    officePhone?: number;\n    mobilePhone?: string;\n    homePhone?: string;\n    fax?: number;\n    dateOfBirth?: number;\n    fullDateOfBirth?: any;\n    organId?: string;\n    organName?: string;\n    title?: string;\n    department?: string;\n    contactType?: string;\n    leadSource?: string;\n    address?: Address;\n    addressStr?: string;\n    description?: string;\n    status?: string;\n    uuid?: string;\n    type?: string;\n    avatar?: string;\n    country?:string;\n    street?:string;\n    district?: string;\n    province?: string;\n    readonly userCode?: string;\n\n    constructor() {\n        this.address = new Address();\n    }\n}\n","import {Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges} from '@angular/core';\nimport {UntypedFormBuilder, Validators} from \"@angular/forms\";\nimport {Subject} from \"rxjs\";\nimport {debounceTime, distinctUntilChanged} from 'rxjs/operators';\nimport {LocationService} from \"inet-ui\";\nimport { Contact } from '../../contact';\n\n@Component({\n    selector: 'lib-user-profile-info',\n    templateUrl: './user-profile-info.component.html'\n})\nexport class UserProfileInfoComponent implements OnInit, OnChanges {\n    @Input() profile = new Contact();\n    profileForm = this.fb.group({\n        lastName: ['', Validators.required],\n        middleName: ['', null],\n        firstName: ['', Validators.required],\n        email: ['', [Validators.email]],\n        fullDateOfBirth: [null, null],\n        sex: [null, null],\n        phone: [null, null],\n        country: [null, null],\n        street: [null, null],\n        district: [null, null],\n        province: [null, null]\n    });\n    countries: Array<any> = [];\n    provinces: Array<any> = [];\n    districts: Array<any> = [];\n    genders: Array<any> = [\n        {code: \"M\", key: \"COMMON.MODULE.USER_PROFILE.MALE\"},\n        {code: \"FM\", key: \"COMMON.MODULE.USER_PROFILE.FEMALE\"},\n        {code: \"OT\", key: \"COMMON.MODULE.USER_PROFILE.OTHER\"}];\n\n    /*    \n    private countryCode = 'VN';\n    private provinceCode?: string | null;\n    */\n    @Input() editable =  false;\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n    @Output() onValidate = new EventEmitter();\n\n    private formChanged = new Subject<boolean>();\n\n    constructor(\n                private locationService: LocationService,\n                private fb: UntypedFormBuilder) {\n    }\n\n    ngOnInit() {\n        this.formChanged.pipe(\n            debounceTime(250),\n            distinctUntilChanged()\n        ).subscribe((v) => {\n            this.onValidate.emit(v);\n        });\n\n        this.onChanges();\n        //this.loadAddress();\n\n    }\n    ngOnChanges(changes: SimpleChanges): void {\n        this.setValueAddress();\n\n    }\n\n    setValueAddress(){\n        this.profile.district =this.profile.address?.districtCode;\n        this.profile.province =   this.profile.address?.provinceCode;\n        this.profile.country =this.profile.address?.countryCode;\n        this.profile.street =  this.profile.address?.address;\n        this.profileForm.patchValue(this.profile)\n    }\n\n    onChangeDate(event?: any) {\n\n    }\n\n    private onChanges(): void {\n        this.profileForm.valueChanges.subscribe(val => {\n            this.formChanged.next(this.profileForm.valid);\n        });\n\n        if(this.editable) {\n            this.profileForm.enable();\n        } else {\n            this.profileForm.disable();\n        }\n    }\n    getValue(){\n        return this.profileForm.getRawValue();\n    }\n}\n\n","<form [formGroup]=\"profileForm\">\n    <div class=\"row mt-2\">\n        <div class=\"col-sm-12\">\n            <div class=\"form-group margin-b-form-group row\">\n                <label class=\"control-label col-form-label col-sm-3 lbl-bold\">\n                    {{'COMMON.MODULE.USER_PROFILE.LAST_NAME' | translate}} : <i class=\"required\"></i>\n                </label>\n                <div class=\"col-sm-9 pl-0\">\n                    <input [(ngModel)]=\"profile.lastName\" formControlName=\"lastName\" required name=\"lastName\"\n                           [ngClass]=\"{'is-invalid':profileForm.controls['lastName'].hasError('required') && profileForm.controls['lastName'].touched}\"\n                           class=\"form-control form-control-sm col-xs-12 col-sm-12\" maxlength=\"256\"/>\n                    <div *ngIf=\"profileForm.controls['lastName'].hasError('required') && profileForm.controls['lastName'].touched\" class=\"text-danger col-sm-12 pl-0\"><i\n                            class=\"fa fa-exclamation-triangle\"></i> {{'COMMON.MODULE.USER_PROFILE.LAST_NAME_REQUIRED_MSG' | translate}}\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"col-sm-12\">\n            <div class=\"form-group margin-b-form-group row\">\n                <label class=\"control-label col-form-label col-sm-3 lbl-bold\">{{'COMMON.MODULE.USER_PROFILE.MIDDLE_NAME' | translate}} : </label>\n                <div class=\"col-sm-9 pl-0\">\n                    <input [(ngModel)]=\"profile.middleName\"  formControlName=\"middleName\"\n                           name=\"middleName\" class=\"form-control form-control-sm col-xs-12 col-sm-12\" maxlength=\"64\"/>\n                </div>\n            </div>\n        </div>\n        <div class=\"col-sm-12\">\n            <div class=\"form-group margin-b-form-group row\">\n                <label class=\"control-label col-form-label col-sm-3 lbl-bold\">\n                    {{'COMMON.MODULE.USER_PROFILE.FIRST_NAME' | translate}} : <i class=\"required\"></i></label>\n                <div class=\"col-sm-9 pl-0\">\n                    <input [(ngModel)]=\"profile.firstName\" formControlName=\"firstName\" required name=\"firstName\"\n                           [ngClass]=\"{'is-invalid':profileForm.controls['firstName'].hasError('required') && profileForm.controls['firstName'].touched}\"\n                           class=\"form-control form-control-sm col-xs-12 col-sm-12 \"/>\n                    <div *ngIf=\"profileForm.controls['firstName'].hasError('required') && profileForm.controls['firstName'].touched\"\n                         class=\"text-danger col-sm-12 pl-0\">\n                        <i class=\"fa fa-exclamation-triangle\"></i> {{'COMMON.MODULE.USER_PROFILE.FIRST_NAME_REQUIRED_MSG' | translate}}\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"col-sm-12\">\n            <div class=\"form-group margin-b-form-group row\">\n                <label class=\"control-label col-form-label col-sm-3 lbl-bold\">{{'COMMON.MODULE.USER_PROFILE.BIRTHDAY' | translate}} :</label>\n                <div class=\"input-group input-group-sm col-sm-3 pl-0\">\n                    <input [(ngModel)]=\"profile.fullDateOfBirth\" formControlName=\"fullDateOfBirth\"\n                           type=\"text\" name=\"fullDateOfBirth\" class=\"form-control form-control-sm col-xs-12 col-sm-12\"\n                           bsDatepicker #fullDateOfBirth=\"bsDatepicker\"\n                           (bsValueChange)=\"onChangeDate($event)\">\n                    <div (click)=\"fullDateOfBirth.toggle()\" class=\"input-group-append input-group-sm\">\n                        <div class=\"input-group-text\"><i class=\"fa fa-calendar\"></i></div>\n                    </div>\n                </div>\n                <label class=\"control-label col-form-label col-sm-3 lbl-bold\">{{'COMMON.MODULE.USER_PROFILE.GENDER' | translate}} : </label>\n                <div class=\"col-sm-3 pl-0\">\n                    <select [(ngModel)]=\"profile.sex\" name=\"sex\" formControlName=\"sex\" class=\"form-control form-control-sm col-xs-12 col-sm-12 \">\n                        <option [ngValue]=\"!profile.sex ? profile.sex : null\">{{'COMMON.SELECTION.DEFAULT_VALUE' | translate}}</option>\n                        <option *ngFor=\"let gender of genders\" [value]=\"gender.code\">\n                            {{gender.key | translate}}\n                        </option>\n                    </select>\n                </div>\n            </div>\n        </div>\n        <div class=\"col-sm-12\">\n            <div class=\"form-group margin-b-form-group row\">\n                <label class=\"control-label col-form-label col-sm-3 lbl-bold\">{{'COMMON.MODULE.USER_PROFILE.EMAIL' | translate}} :</label>\n                <div class=\"col-sm-9 pl-0 input-group input-group-sm\">\n                    <div class=\"input-group-prepend input-group-sm\">\n                        <div class=\"input-group-text icon-div\"><i class=\"fa fa-envelope\"></i></div>\n                    </div>\n                    <input [(ngModel)]=\"profile.primaryEmail\" name=\"primaryEmail\" class=\"form-control form-control-sm col-xs-12 col-sm-12\"\n                           type=\"email\" formControlName=\"email\"\n                           [ngClass]=\"{'is-invalid': profileForm.controls['email'].hasError('pattern')\n                           && profileForm.controls['email'].touched}\"/>\n                    <div *ngIf=\"profileForm.controls['email'].hasError('email') && profileForm.controls['email'].touched\"\n                         class=\"pl-0 ml-0 col-xs-12 col-sm-12 text-danger\">\n                        <i class=\"fa fa-exclamation-triangle\"></i> {{'MODULE.USER_MANAGER.EMAIL_INVALID_MSG' | translate}}\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"col-sm-12\">\n            <div class=\"form-group margin-b-form-group row\">\n                <label class=\"control-label col-form-label col-sm-3 lbl-bold\">{{'COMMON.MODULE.USER_PROFILE.MOBILE' | translate}}: </label>\n                <div class=\"col-sm-9 pl-0 input-group input-group-sm\">\n                    <div class=\"input-group-prepend input-group-sm\">\n                        <div class=\"input-group-text icon-div\"><i class=\"fa fa-phone icon-custom\"></i>\n                        </div>\n                    </div>\n                    <input [(ngModel)]=\"profile.mobilePhone\" formControlName=\"phone\" name=\"mobilePhone\" class=\"form-control form-control-sm col-xs-12 col-sm-12\" type=\"text\"/>\n                </div>\n            </div>\n        </div>\n        <div class=\"col-sm-12\">\n            <div class=\"form-group margin-b-form-group row\">\n                <label class=\"control-label col-form-label col-sm-3 lbl-bold\">\n                    {{'COMMON.MODULE.ADDRESS.STREET' | translate}} : </label>\n                <div class=\"col-sm-9 pl-0\">\n                    <input name=\"street\" formControlName=\"street\" class=\"form-control form-control-sm col-xs-12 col-sm-12 \"/>\n                </div>\n            </div>\n        </div>\n    </div>\n</form>\n","import {Injectable} from '@angular/core';\nimport {HttpClientService, UserProfileService} from 'inet-core';\nimport {Observable} from \"rxjs\";\nimport {Contact} from \"inet-ui\";\n\ndeclare let iNet: any;\n\n@Injectable()\nexport class GlobalContactService {\n\n    private url = {\n        // update: iNet.getPUrl('gl/contact/update'),\n        update: iNet.getPUrl('system/userprofile/update'),\n        upload_photo:iNet.getPUrl('system/userprofile/photoupdate'),\n        delete_photo: iNet.getPUrl('system/userprofile/delphoto'),\n        update_signature: iNet.getPUrl('system/userprofile/updatesign'),\n        remove_signature: iNet.getPUrl('system/userprofile/delsign'),\n        view_signature_photo: iNet.getPUrl('usersignature/photo'),\n        access_roles: iNet.getPUrl('cloud/subfirmrole/group')\n    };\n\n    constructor(private http: HttpClientService,\n                private userProfileService: UserProfileService) {\n    }\n\n    getProfile(): Observable<any> {\n        return this.userProfileService.getProfile();\n    }\n\n    update(data: Contact): Observable<any> {\n        this.showLoading();\n        const contact = Object.assign(new Contact(), data);\n        if (contact.address) {\n            contact.addressStr = JSON.stringify(contact.address);\n        }\n        if (contact.fullDateOfBirth) {\n            contact.dateOfBirth = contact.fullDateOfBirth.getTime();\n        }\n        delete contact.address;\n        delete contact.fullName;\n        return this.http.postJSON(this.url.update, contact);\n    }\n\n    uploadPhoto(data: FormData): Observable<any> {\n        this.http.showLoading();\n        return this.http.post(this.url.upload_photo, data);\n    }\n\n    deleteAvatar(): Observable<any> {\n        this.http.showLoading();\n        return this.http.post(this.url.delete_photo, null);\n    }\n\n    showLoading() {\n        this.http.showLoading();\n    }\n\n    uploadSignaturePhoto(data: FormData): Observable<any> {\n        this.http.showLoading();\n        return this.http.post(this.url.update_signature, data);\n    }\n\n    getSignatureImageUrl(): string {\n        return this.url.view_signature_photo;\n    }\n\n    getAccessRoles() {\n        return this.http.postJSON(this.url.access_roles);\n    }\n}\n","import {Component, ContentChild, ElementRef, Input, OnDestroy, OnInit, TemplateRef, ViewChild} from '@angular/core';\nimport {GlobalContactService} from \"../global-contact.service\";\nimport {Subscription} from \"rxjs\";\nimport {ErrorMessage, NotificationService, UserProfileService} from \"inet-core\";\nimport {TranslateService} from \"@ngx-translate/core\";\nimport {Address, Contact, CropperAvatarDialogComponent} from \"inet-ui\";\n@Component({\n    selector: 'lib-user-profile',\n    templateUrl: './user-profile.component.html',\n    styleUrls: ['./user-profile.component.scss']\n})\nexport class UserProfileComponent implements OnInit, OnDestroy {\n\n    @ContentChild('tabContent') tabContent!: TemplateRef<ElementRef>;\n    @ViewChild('userPhotoFrm') photoFrmElementRef!: ElementRef;\n    @ViewChild('fileAvatar') fileUpload!: ElementRef;\n    @ViewChild(CropperAvatarDialogComponent) cropperAvatarDialog!: CropperAvatarDialogComponent;\n\n    @Input() profile: Contact = new Contact();\n\n    @Input() imageAvatarUrl?: string;\n    @Input() upload: boolean = false;\n    defaultAvatarUrl = UserProfileService.DEFAULT_AVATAR_URL;\n    address = new Address();\n\n    private isAvatarExist = false;\n\n    private profileTranslations: any;\n    private readonly translateSubscription: Subscription;\n\n    constructor(private contactService: GlobalContactService,\n                private userProfileService: UserProfileService,\n                private notification: NotificationService,\n                private translate: TranslateService) {\n\n        this.translateSubscription = translate.get(['COMMON.MODULE.USER_PROFILE']).subscribe(res => {\n            this.profileTranslations = res['COMMON.MODULE.USER_PROFILE'];\n        });\n    }\n\n    ngOnInit() {\n        if (!this.profile.address) {\n            this.profile.address = new Address();\n        }\n        this.isAvatarExist = !!(this.imageAvatarUrl); // Check avatar exist to delete\n    }\n\n    ngOnDestroy() {\n        if (this.translateSubscription) {\n            this.translateSubscription.unsubscribe();\n        }\n    }\n\n    changeFileAvatar($event: any) {\n        const files = $event.target.files;\n        if (files.length > 0) {\n            const image = files[0];\n            image['value'] = image;\n            if (image) {\n                const reader = new FileReader();\n                reader.onload = (e: any) => {\n                    image.url = e.target.result;\n                    this.imageAvatarUrl = image.url;\n                };\n                reader.readAsDataURL(image);\n            }\n            this.cropperAvatarDialog.show($event);\n        }\n    }\n\n    onSelectFile($event: any) {\n        if (!this.upload) {\n            return;\n        }\n        if (this.fileUpload && this.fileUpload.nativeElement) {\n            this.fileUpload.nativeElement.click();\n        }\n    }\n\n    uploadImage($event: any) {\n        if (this.fileUpload.nativeElement.value) {\n            this.updateAvatar();\n        }\n    }\n\n    isFileExist(): boolean {\n        if (this.fileUpload && this.fileUpload.nativeElement &&\n            this.fileUpload.nativeElement.value) {\n            return true;\n        }\n        return false;\n    }\n\n    removeImage($event: any) {\n        if (this.fileUpload.nativeElement.value) {\n            this.fileUpload.nativeElement.value = '';\n            if (this.isAvatarExist) {\n                this.userProfileService.getAvatarUrl().then(url => {\n                    this.imageAvatarUrl = url;\n                });\n            } else {\n                this.imageAvatarUrl = this.defaultAvatarUrl;\n            }\n\n            //this.imageChangedEvent = $event;\n        }\n        // Delete avatar\n        /*\n        if (this.upload && this.isAvatarExist) {\n            this.contactService.deleteAvatar().subscribe((data: any) => {\n                const {AVATAR, IMAGE_REMOVE_SUCCESSFUL_MSG, IMAGE_REMOVE_ERROR_MSG} = this.profileTranslations;\n                if (ErrorMessage.TYPE !== data.type) {\n                    this.fileUpload.nativeElement.value = '';\n                    this.notification.showMessage(IMAGE_REMOVE_SUCCESSFUL_MSG, 'success', AVATAR);\n                } else {\n                    this.notification.showMessage(IMAGE_REMOVE_ERROR_MSG, 'error', AVATAR);\n                }\n            });\n        }\n        */\n    }\n\n    updateBlankImage($event: any) {\n        if ($event) {\n            this.imageAvatarUrl = this.defaultAvatarUrl;\n        }\n    }\n\n    private updateAvatar() {\n        const formData = new FormData(this.photoFrmElementRef.nativeElement);\n        const name  = this.fileUpload.nativeElement.name;\n        formData.delete(name);\n        //Upload Blob (cropped image) instead of file.\n        if(this.cropperAvatarDialog ) {\n            const blob = this.cropperAvatarDialog.getImageBlob();\n            if(blob) {\n                formData.append(name, blob);\n            }\n        }\n        // Upload Avatar\n        this.contactService.uploadPhoto(formData).subscribe((data: any) => {\n            const {AVATAR, IMAGE_UPDATE_SUCCESSFUL_MSG, IMAGE_UPDATE_ERROR_MSG} = this.profileTranslations;\n            if (ErrorMessage.TYPE !== data.type) {\n                this.fileUpload.nativeElement.value = '';\n                this.userProfileService.increaseAvatarVersion();\n                this.notification.showMessage(IMAGE_UPDATE_SUCCESSFUL_MSG, 'success', AVATAR);\n            } else {\n                this.notification.showMessage(IMAGE_UPDATE_ERROR_MSG, 'error', AVATAR);\n            }\n        });\n    }\n\n    onCropped(url: string) {\n        this.imageAvatarUrl = url;\n    }\n\n}\n","<div class=\"content-profile\">\n    <div class=\"row\">\n        <div class=\"col-lg-4\">\n            <div class=\"text-center card-box\">\n                <div class=\"member-card\">\n                    <div class=\"thumb-xl member-thumb mb-3 center-block\">\n                        <form #userPhotoFrm style=\"display: none\">\n                            <input #fileAvatar name=\"fileUpload\" (change)=\"changeFileAvatar($event)\" type=\"file\"\n                                   accept=\"image/*\"\n                                   class=\"form-control-file\">\n                        </form>\n                        <img [src]=\"imageAvatarUrl ? imageAvatarUrl: defaultAvatarUrl\" (error)=\"updateBlankImage($event)\"\n                             class=\"rounded-circle\" [ngClass]=\"{'empty-photo': !imageAvatarUrl, 'img-thumbnail': imageAvatarUrl}\"\n                             (click)=\"onSelectFile($event)\">\n                    </div>\n                    <div>\n                        <div class=\"mt-3\">\n                            <h6 *ngIf=\"profile.salutationType\" class=\"text-uppercase\">{{profile.salutationType}}. {{profile.firstName}}</h6>\n                            <h6 *ngIf=\"!profile.salutationType\" class=\"text-uppercase\">{{profile.fullName}}</h6>\n                            <!--                            <p *ngIf=\"profile.userCode\" class=\"mt-0\">-->\n                            <!--                                <i class=\"fa fa-user-circle\" aria-hidden=\"true\"></i>-->\n                            <!--                                {{profile.userCode}}-->\n                            <!--                            </p>-->\n                        </div>\n                        <div *ngIf=\"upload\" class=\"m-t-10 mb-2\">\n                            <button type=\"button\" class=\"btn btn-sm btn-outline-primary \" (click)=\"fileAvatar.click()\">\n                                <i class=\"fa fa-picture-o\"></i> {{'COMMON.MODULE.USER_PROFILE.CHOSEN_IMAGE' | translate}}\n                            </button>\n                            <button *ngIf=\"isFileExist()\" type=\"button\" class=\"btn btn-sm btn-outline-success  ml-1\" (click)=\"uploadImage($event)\">\n                                <i class=\"fa fa-upload\"></i> {{'COMMON.MODULE.USER_PROFILE.SAVE_IMAGE' | translate}}\n                            </button>\n                            <button *ngIf=\"isFileExist()\" type=\"button\" (click)=\"removeImage($event)\" class=\"btn btn-sm btn-outline-danger ml-1\">\n                                <i class=\"fa fa-trash\"></i> {{'COMMON.MODULE.USER_PROFILE.REMOVE_IMAGE' | translate}}\n                            </button>\n                        </div>\n\n                    </div>\n                    <div class=\"text-left bg-white p-3 rounded\">\n                        <div class=\"d-flex align-items-center\">\n                            <div class=\"bg-icon p-2 rounded-circle\"><i class=\"fa fa-birthday-cake mx-1\"></i> </div>\n                            <div class=\"ml-2\">\n                                <strong  class=\"text-muted\">{{'COMMON.MODULE.USER_PROFILE.BIRTHDAY' | translate}}</strong>\n                                <p class=\" mb-0\">{{profile.fullDateOfBirth | date: 'dd/MM/yyyy'}}</p>\n                            </div>\n                        </div>\n                        <hr>\n                        <div class=\"d-flex align-items-center\">\n                            <div class=\"bg-icon p-2 rounded-circle\"><i class=\"fa fa-phone mx-1\"></i> </div>\n                            <div class=\"ml-2\">\n                                <strong  class=\"text-muted\">{{'COMMON.MODULE.USER_PROFILE.MOBILE' | translate}}</strong>\n                                <p class=\" mb-0\">{{profile.mobilePhone}}</p>\n                            </div>\n                        </div>\n                        <hr>\n                        <div class=\"d-flex align-items-center\">\n                            <div class=\"bg-icon p-2 rounded-circle\"><i class=\"fa fa-envelope mx-1\"></i> </div>\n                            <div class=\"ml-2\">\n                                <strong  class=\"text-muted\">{{'COMMON.MODULE.USER_PROFILE.EMAIL' | translate}}</strong>\n                                <p class=\" mb-0\">{{profile.primaryEmail}}</p>\n                            </div>\n                        </div>\n                        <hr>\n                        <div class=\"d-flex align-items-center\">\n                            <div class=\"bg-icon p-2 rounded-circle\"><i class=\"fa fa-map-marker mx-1\"></i> </div>\n                            <div class=\"ml-2\">\n                                <strong  class=\"text-muted\">{{'COMMON.MODULE.ADDRESS.ADDRESS' | translate}}</strong>\n                                <p class=\" mb-0\">{{profile.address?.address}}</p>\n                            </div>\n                        </div>\n<!--                        <hr>-->\n<!--                        <strong><i class=\"fa fa-phone margin-r-5\"></i> {{'COMMON.MODULE.USER_PROFILE.MOBILE' | translate}}</strong>-->\n<!--                        <p class=\"text-muted\"><a href=\"tel:{{profile.mobilePhone}}\">{{profile.mobilePhone}}</a></p>-->\n<!--                        <hr>-->\n<!--                        <strong><i class=\"fa fa-envelope margin-r-5\"></i> {{'COMMON.MODULE.USER_PROFILE.EMAIL' | translate}}</strong>-->\n<!--                        <p class=\"text-muted\"><a href=\"mailto:{{profile.primaryEmail}}\">{{profile.primaryEmail}}</a></p>-->\n<!--                        <hr>-->\n<!--                        <strong><i class=\"fa fa-map-marker margin-r-5\"></i> {{'COMMON.MODULE.ADDRESS.ADDRESS' | translate}}</strong>-->\n<!--                        <p>{{profile?.address?.address}}</p>-->\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"col-lg-8 p-0\">\n            <div class=\"info-box\">\n                <div class=\"card tab-style1\">\n                    <div>\n                        <ng-template [ngTemplateOutlet]=\"tabContent\"></ng-template>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n    <app-cropper-avatar-dialog (onCropped)=\"onCropped($event)\" (onSelectFile)=\"onSelectFile($event)\"></app-cropper-avatar-dialog>\n</div>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'app-common-toolbar',\n  templateUrl: './common-toolbar.component.html',\n  styleUrls: ['./common-toolbar.component.scss']\n})\nexport class CommonToolbarComponent implements OnInit {\n\n  constructor() { }\n\n  ngOnInit() {\n  }\n\n}\n","<div class=\"nav-fixed-top app-toolbar\">\n  <ul class=\"nav nav-tabs toolbar-tab bg-nav d-flex align-items-center ml-3\">\n    <li class=\"nav-item\" title=\"{{'COMMON.MENU.USER_PROFILE' | translate}}\">\n      <a routerLink=\"/user-profile\" routerLinkActive=\"active\" class=\"nav-link\"><i class=\"fa fa-user\"></i> <span>{{'COMMON.MENU.USER_PROFILE' | translate}}</span></a>\n    </li>\n    <li class=\"nav-item\" title=\"{{'COMMON.MENU.ORGANIZATION_INFORMATION' | translate}}\">\n      <a routerLink=\"/company-profile\" routerLinkActive=\"active\" class=\"nav-link\"><i class=\"fa fa-building\"></i> <span>{{'COMMON.MENU.ORGANIZATION_INFORMATION' | translate}}</span></a>\n    </li>\n  </ul>\n</div>\n","import {Component, ElementRef, Input, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {Location} from \"@angular/common\";\nimport {\n    CoreService,\n    ErrorMessage,\n    NewPassword,\n    NotificationService,\n    UserProfile,\n    UserProfileService\n} from \"inet-core\";\nimport {UntypedFormBuilder, Validators} from \"@angular/forms\";\nimport {GlobalContactService} from \"../user-profile/global-contact.service\";\nimport {TranslateService} from \"@ngx-translate/core\";\nimport {Subscription} from \"rxjs\";\nimport {MustMatch} from \"../user-profile/must-match.validator\";\nimport {Address} from \"inet-ui\";\nimport {Contact} from \"../contact\";\nimport { UserProfileInfoComponent } from '../user-profile/user-profile-info/user-profile-info.component';\n\ndeclare let iNet: any;\n\n@Component({\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: 'app-bootstrap-user-profile',\n    templateUrl: './bootstrap-user-profile.component.html',\n    styleUrls: [ './bootstrap-user-profile.component.scss']\n})\n\nexport class BootstrapUserProfileComponent implements OnInit, OnDestroy {\n    @Input() profile?: Contact;\n    generalFormValid = false;\n\n    password = new NewPassword();\n\n    frmChangePassword = this.fb.group({\n        password: ['', Validators.required],\n        newPassword: ['', Validators.required],\n        confirmNewPassword: ['', Validators.required]\n    },{\n        validator: MustMatch('newPassword', 'confirmNewPassword')\n    });\n\n    frmSignature = this.fb.group({\n        signVerify: ['', Validators.required],\n        fileUpload: ['', Validators.required]\n    });\n\n    avatarUrl?: string;\n    signatureUrl?: string | null;\n\n    tabName: string = 'profile-general-info'; //default tab\n\n    private userTranslations: any;\n    private translateSubscription: Subscription;\n    userProfile?: UserProfile;\n    fileName?: string;\n    signVerifyNumber?: string;\n\n    @ViewChild('frmSignaturePhoto') frmSignaturePhotoElementRef!: ElementRef;\n    @ViewChild('signatureFileUpload') signatureFileUpload!: ElementRef;\n    @ViewChild(UserProfileInfoComponent) userProfileInfoComponent!: UserProfileInfoComponent;\n\n    constructor(private location: Location,\n                private fb: UntypedFormBuilder,\n                private translate: TranslateService,\n                private notificationService: NotificationService,\n                private contactService: GlobalContactService,\n                private userProfileService: UserProfileService,\n                private coreService: CoreService) {\n\n        this.translateSubscription = translate.get(['COMMON.MODULE.USER_PROFILE']).subscribe(res => {\n            this.userTranslations = res['COMMON.MODULE.USER_PROFILE'];\n        });\n    }\n\n    ngOnInit() {\n        this.loadProfile();\n    }\n\n    ngOnDestroy() {\n        if (this.translateSubscription) {\n            this.translateSubscription.unsubscribe();\n        }\n    }\n\n    private loadProfile() {\n        this.userProfileService.getProfile().subscribe((profile: any) => {\n            this.userProfile = Object.assign({}, profile);\n            this.profile = Object.assign(new Contact(), profile);\n            if(this.profile && this.userProfile) {\n                this.profile.lastName = this.profile?.lastName || this.userProfile.fname;\n                this.profile.middleName = this.profile?.middleName || this.userProfile.mname;\n                this.profile.firstName = this.profile?.firstName  || this.userProfile.lname;\n                this.profile.district =  this.profile.address?.districtCode;\n                this.profile.province =  this.profile.address?.provinceCode;\n                this.profile.country =  this.profile.address?.countryCode;\n                this.profile.street =  this.profile.address?.address;\n                if (this.userProfile.birthday) {\n                    this.profile.fullDateOfBirth = new Date(this.userProfile.birthday);\n                }\n                if (this.userProfile.phone) {\n                    this.profile.mobilePhone = this.userProfile.phone;\n                }\n                if (this.userProfile.email) {\n                    this.profile.primaryEmail = this.userProfile.email\n                }\n                if(this.profile.address?.address){\n                    this.profile.street = this.profile.address?.address;\n                }\n\n                if(this.profile.fullName) {\n                    this.profile.fullName = [this.profile.lastName, this.profile.middleName, this.profile.firstName].join(' ');\n                } else { //old data\n                    this.profile.fullName = [this.userProfile.fname, this.userProfile.mname, this.userProfile.lname].join(' ');\n                }\n                if (!this.profile.address) {\n                    this.profile.address = new Address();\n                }\n            }\n            /*\n            if (this.profile.avatar) {\n                let avatarUrl: string;\n                avatarUrl = this.coreService.getFileUrl(this.profile.avatar);\n                if (this.userProfileService.getAvatarVersion() > 0) {\n                    avatarUrl = `${avatarUrl}?version=${this.userProfileService.getAvatarVersion()}`;\n                }\n                this.avatarUrl = avatarUrl;\n            }\n             */\n        });\n\n        this.userProfileService.getAvatarUrl().then(url => {\n            this.avatarUrl = url\n        });\n\n        this.userProfileService.getSignPictureId().then(pictureId => {\n            if (pictureId) { //get signature image from contact service\n                this.signatureUrl = this.contactService.getSignatureImageUrl();\n            }\n        });\n\n        this.userProfileService.getSignVerifyNumber().then(signVerifyNumber => {\n            if (signVerifyNumber) { //get signature image from contact service\n                this.signVerifyNumber = signVerifyNumber;\n            }\n        });\n\n        /*\n        this.contactService.getProfile().subscribe((data: Contact) => {\n            this.profile = Object.assign(new Contact(), data);\n            if (this.profile.dateOfBirth) {\n                this.profile.fullDateOfBirth = new Date(this.profile.dateOfBirth);\n            }\n            this.profile.fullName = [this.profile.lastName, this.profile.middleName, this.profile.firstName].join(' ');\n            if (!this.profile.address) {\n                this.profile.address = new Address();\n            }\n            if(this.profile.avatar) {\n                this.avatarUrl = this.coreService.getFileUrl(this.profile.avatar);\n            }\n        });\n        */\n    }\n\n    onChange($event: any) {\n        this.generalFormValid = $event;\n    }\n\n    back(): void {\n        this.location.back();\n    }\n\n    updateProfile($event? : any) {\n        if (this.generalFormValid && this.profile) {\n            // delete  this.profile.address;\n            let userProfile: any = Object.assign( this.profile, this.userProfileInfoComponent.getValue());\n            userProfile.mname = this.profile.middleName;\n            userProfile.fname = this.profile.firstName;\n            userProfile.lname = this.profile.lastName;\n            userProfile.fullname =  this.profile.fullName;\n\n            if(this.profile.fullDateOfBirth){\n                userProfile.birthday = this.profile.fullDateOfBirth.valueOf();\n            }\n            if(this.profile.mobilePhone){\n                userProfile.phone = this.profile.mobilePhone;\n            }\n            if(this.profile.primaryEmail){\n                userProfile.email = this.profile.primaryEmail;\n            }\n            if(userProfile.street){\n                userProfile.address.address = userProfile.street;\n            }\n\n            if (userProfile.address) {\n                userProfile.addressStr = JSON.stringify(Object.assign({address:userProfile.street },{districtCode:\n                    userProfile.district, countryCode:  userProfile.country, provinceCode: userProfile.province}));\n            }\n\n            delete userProfile.address;\n            delete userProfile.fullName;\n            this.userProfileService.update(userProfile).subscribe((data: any) => {\n                    const {TITLE, UPDATE_PROFILE_SUCCESSFUL_MSG, UPDATE_PROFILE_ERROR_MSG} = this.userTranslations;\n                    if (ErrorMessage.TYPE !== data.type) {\n                        this.notificationService.showMessage(UPDATE_PROFILE_SUCCESSFUL_MSG, 'success', TITLE);\n                    } else {\n                        this.notificationService.showMessage(UPDATE_PROFILE_ERROR_MSG, 'error', TITLE);\n                    }\n                }\n            );\n        }\n    }\n\n\n    changePassword($event?: any) {\n        if (this.frmChangePassword.valid) {\n            this.contactService.showLoading();\n            this.userProfileService.changePassword(this.password).subscribe(\n                (data: any) => {\n                    const {USERNAME, CHANGE_PASSWORD_SUCCESSFUL_MSG, CURRENT_PASSWORD_INCORRECT, CHANGE_PASSWORD_ERROR_MSG} = this.userTranslations;\n                    if (ErrorMessage.TYPE !== data.type) {\n                        if (\"SUCCESS\" === data.uuid) {\n                            this.notificationService.showMessage(CHANGE_PASSWORD_SUCCESSFUL_MSG, 'sucsess', USERNAME);\n                            this.frmChangePassword.reset();\n                        } else {\n                            this.notificationService.showMessage(CURRENT_PASSWORD_INCORRECT, 'error', USERNAME);\n                        }\n                    } else {\n                        this.notificationService.showMessage(CHANGE_PASSWORD_ERROR_MSG, 'error', USERNAME);\n                    }\n                }\n            );\n        }\n    }\n\n    updateSignature($event?: any) {\n        if (this.frmSignature.valid) {\n            const formData = new FormData(this.frmSignaturePhotoElementRef.nativeElement);\n            // Upload Signature\n            this.contactService.uploadSignaturePhoto(formData).subscribe((data: any) => {\n                const {SIGNATURE_INFORMATION, UPDATE_SIGNATURE_SUCCESSFUL_MSG, UPDATE_SIGNATURE_ERROR_MSG} = this.userTranslations;\n\n                if (ErrorMessage.TYPE !== data.type) {\n                    this.notificationService.showMessage(UPDATE_SIGNATURE_SUCCESSFUL_MSG, 'success', SIGNATURE_INFORMATION);\n                } else {\n                    this.notificationService.showMessage(UPDATE_SIGNATURE_ERROR_MSG, 'error', SIGNATURE_INFORMATION);\n                }\n            });\n        }\n    }\n\n    changeSignatureFile($event: any) {\n        const files = $event.target.files;\n        if (files.length > 0) {\n            const image = files[0];\n            if (image) {\n                this.fileName = image['name'];\n                const reader = new FileReader();\n                reader.onload = (e: any) => {\n                    image.url = e.target.result;\n                    this.signatureUrl = image.url;\n                };\n                reader.readAsDataURL(image);\n            }\n        } else {\n            this.signatureUrl = null;\n        }\n    }\n\n    onSelectSignatureFile($event: any) {\n        if (this.signatureFileUpload && this.signatureFileUpload.nativeElement) {\n            this.signatureFileUpload.nativeElement.click();\n        }\n    }\n\n    updateBlankImage($event: any) {\n        if ($event) {\n            this.signatureUrl = iNet.BLANK_IMAGE_URL;\n        }\n    }\n\n    clearSignatureForm() {\n        if (this.signatureFileUpload.nativeElement.value) {\n            this.signatureFileUpload.nativeElement.value = '';\n            this.fileName = '';\n            if (this.profile && this.profile.avatar) {\n                this.avatarUrl = this.coreService.getFileUrl(this.profile.avatar);\n            }\n        }\n    }\n\n    onSelectTab(tabName: string){\n        this.tabName=tabName;\n    }\n\n}\n","<div class=\"default-layout tb-visible\"   style=\"height: calc(100vh - 56px );\"  >\n    <app-common-toolbar></app-common-toolbar>\n    <div class=\"cp-content p-0\" [ngClass]=\"tabName==='sharing-information'?'toolbar-none':''\">\n        <div class=\"container-fluid p-0\">\n            <lib-user-profile *ngIf=\"profile\" [profile]=\"profile\" [imageAvatarUrl]=\"avatarUrl\" [upload]=\"true\">\n                <ng-template #tabContent>\n\n                    <div class=\" d-flex align-items-center justify-content-between\">\n                        <ul class=\"nav nav-tabs\" id=\"myTab\" role=\"tablist\">\n                            <li class=\"nav-item\" role=\"presentation\" (click)=\"onSelectTab('profile-general-info')\">\n                                <a class=\"nav-link active\" id=\"home-tab\" data-toggle=\"tab\" href=\"#home\" role=\"tab\" aria-controls=\"home\" aria-selected=\"true\">\n                                    <b><i class=\"fa fa-id-card margin-r-5\"></i> {{'COMMON.MODULE.USER_PROFILE.GENERAL_INFORMATION' | translate}}</b>\n                                </a>\n                            </li>\n                            <li class=\"nav-item\" role=\"presentation\" (click)=\"onSelectTab('profile-signature-info')\">\n                                <a class=\"nav-link\" id=\"profile-tab\" data-toggle=\"tab\" href=\"#profile\" role=\"tab\" aria-controls=\"profile\" aria-selected=\"false\">\n                                    <b><i class=\"fa fa-gear margin-r-5\"></i> {{'COMMON.MODULE.USER_PROFILE.SIGNATURE_INFORMATION' | translate}}</b>\n                                </a>\n                            </li>\n                            <li class=\"nav-item\" role=\"presentation\" (click)=\"onSelectTab('profile-security-info')\">\n                                <a class=\"nav-link\" id=\"contact-tab\" data-toggle=\"tab\" href=\"#contact\" role=\"tab\" aria-controls=\"contact\" aria-selected=\"false\">\n                                    <b><i class=\"fa fa-lock margin-r-5\"></i> {{'COMMON.MODULE.USER_PROFILE.SECURITY_INFORMATION' | translate}}</b>\n                                </a>\n                            </li>\n                        </ul>\n                        <div *ngIf=\"tabName!=='sharing-information'\" class=\"\">\n                            <button *ngIf=\"tabName==='profile-general-info'\" [title]=\"'Cập nhật thông tin cá nhân'\" (click)=\"updateProfile($event)\" class=\"btn btn-sm btn-primary\" [disabled]=\"!generalFormValid\" type=\"button\">\n                                <i class=\"fa fa-save\"></i> Cập nhật\n                            </button>\n                            <button *ngIf=\"tabName==='profile-signature-info'\" [title]=\"'Cập nhật chữ ký số'\" class=\"btn btn-sm btn-primary\" [disabled]=\"!frmSignature.valid\" type=\"button\"\n                                    (click)=\"updateSignature($event)\">\n                                <i class=\"fa fa-save\"></i> {{'COMMON.MODULE.USER_PROFILE.UPDATE_SIGNATURE' | translate}}\n                            </button>\n                            <button *ngIf=\"tabName==='profile-security-info'\" [title]=\"'Đổi mật khẩu'\" class=\"btn btn-sm btn-primary\" [disabled]=\"!frmChangePassword.valid\" type=\"button\"\n                                    (click)=\"changePassword($event)\">\n                                <i class=\"fa fa-key\"></i> {{'COMMON.MODULE.USER_PROFILE.CHANGE_PASSWORD' | translate}}\n                            </button>\n                        </div>\n                    </div>\n\n                    <div class=\"tab-content\" id=\"myTabContent\">\n                        <div class=\"tab-pane fade show active\" id=\"home\" role=\"tabpanel\" aria-labelledby=\"home-tab\">\n                            <lib-user-profile-info class=\"mt-2\" [profile]=\"profile\" [editable]=\"true\" (onValidate)=\"onChange($event)\"></lib-user-profile-info>\n                        </div>\n                        <div class=\"tab-pane fade\" id=\"profile\" role=\"tabpanel\" aria-labelledby=\"profile-tab\">\n                            <form #frmSignaturePhoto [formGroup]=\"frmSignature\" (ngSubmit)=\"updateSignature($event)\" class=\"col-sm-12 mt-2\">\n                                <div class=\"col-sm-12\">\n                                    <div class=\"form-group margin-b-form-group row\">\n                                        <label class=\"control-label col-form-label col-sm-3 font-weight-bold\">\n                                            {{'COMMON.MODULE.USER_PROFILE.SIGNATURE_VERIFY' | translate}}  <i class=\"required\"></i>:</label>\n                                        <div class=\"col-sm-4 pl-0\">\n                                            <div class=\"input-group\">\n                                                <div class=\"input-group-prepend\">\n                                                    <div class=\"input-group-text\"><i class=\"fa fa-phone\"></i></div>\n                                                </div>\n                                                <input formControlName=\"signVerify\" [(ngModel)]=\"signVerifyNumber\" name=\"phone\"\n                                                       class=\"form-control form-control-sm col-xs-12 col-sm-12\" autocomplete=\"off\"\n                                                       [ngClass]=\"{'is-invalid':frmSignature.controls['signVerify'].hasError('required')\n                                                            && frmSignature.controls['signVerify'].touched}\"\n                                                       type=\"text\" maxlength=\"64\"/>\n                                            </div>\n                                            <div *ngIf=\"frmSignature.controls['signVerify'].hasError('required') && frmSignature.controls['signVerify'].touched\" class=\"text-danger mt-1\">\n                                                <i class=\"fa fa-exclamation-triangle\"></i> {{'COMMON.MODULE.USER_PROFILE.SIGNATURE_VERIFY_REQUIRED_MSG' | translate}}\n                                            </div>\n\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"col-sm-12\">\n                                    <div class=\"form-group margin-b-form-group row\">\n                                        <label class=\"control-label col-form-label col-sm-3 font-weight-bold\">\n                                            {{'COMMON.MODULE.USER_PROFILE.SIGNATURE_FILE' | translate}}  <i class=\"required\"></i>:\n                                        </label>\n                                        <div class=\"col-sm-4 pl-0\">\n                                            <label class=\"i-file-input\">\n                                                <input #signatureFileUpload formControlName=\"fileUpload\" required\n                                                       name=\"fileUpload\" type=\"file\" accept=\"image/*\" (change)=\"changeSignatureFile($event)\"\n                                                       class=\"form-control form-control-sm col-xs-12 col-sm-12\">\n                                                <span class=\"i-file-container\" [ngClass]=\"{'selected': fileName}\" [attr.data-title]=\"'COMMON.MODULE.USER_PROFILE.CHOOSE' | translate\">\n                                                            <span class=\"i-file-name\" [attr.data-title]=\"fileName || ('COMMON.MODULE.USER_PROFILE.NO_FILE' | translate)\">\n                                                                <i class=\"file-icon fa fa-upload\"></i>\n                                                            </span>\n                                                        </span>\n                                                <a class=\"remove\" *ngIf=\"fileName\" href=\"javascript:;\" (click)=\"clearSignatureForm()\">\n                                                    <i class=\"fa fa-times\"></i>\n                                                </a>\n                                            </label>\n                                            <!--input #signatureFileUpload [formControl]=\"frmSignature.controls['fileUpload']\" required\n                                                   name=\"fileUpload\" type=\"file\" accept=\"image/*\" (change)=\"changeSignatureFile($event)\"\n                                                   class=\"form-control form-control-sm col-xs-12 col-sm-12\"-->\n                                            <div *ngIf=\"!signatureUrl || frmSignature.controls['fileUpload'].hasError('required') && frmSignature.controls['fileUpload'].touched\" class=\"text-danger\">\n                                                <i class=\"fa fa-exclamation-triangle\"></i> {{'COMMON.MODULE.USER_PROFILE.SIGNATURE_FILE_REQUIRED_MSG' | translate}}\n                                            </div>\n                                            <div class=\"thumb-xl member-thumb mt-3 m-b-10 center-block\">\n                                                <img *ngIf=\"signatureUrl\" (click)=\"onSelectSignatureFile($event)\" [src]=\"signatureUrl\" (error)=\"updateBlankImage($event)\"\n                                                     class=\"signature-thumbnail border\" alt=\"Signature\">\n                                                <div *ngIf=\"!signatureUrl\" class=\"text-center upload-signature-photo mt-3\" (click)=\"onSelectSignatureFile($event)\">\n                                                    <i aria-hidden=\"true\" class=\"fa fa-picture-o\"></i>\n                                                </div>\n                                            </div>\n\n                                        </div>\n                                    </div>\n                                </div>\n                                <!--                                    <div class=\"col-sm-12 mt-3\">-->\n                                <!--                                        <div class=\"form-group margin-b-form-group row\">-->\n                                <!--                                            <label class=\"control-label col-form-label col-sm-3 font-weight-bold\"></label>-->\n                                <!--                                            <div class=\"col-sm-9 pl-0\">-->\n                                <!--                                                <button class=\"btn btn-primary btn-sm\" [disabled]=\"!frmSignature.valid\" type=\"button\" (click)=\"updateSignature($event)\">-->\n                                <!--                                                    <i class=\"fa fa-save\"></i> {{'COMMON.MODULE.USER_PROFILE.UPDATE_SIGNATURE' | translate}}-->\n                                <!--                                                </button>-->\n                                <!--                                            </div>-->\n                                <!--                                        </div>-->\n                                <!--                                    </div>-->\n                            </form>\n                        </div>\n                        <div class=\"tab-pane fade\" id=\"contact\" role=\"tabpanel\" aria-labelledby=\"contact-tab\">\n                            <form [formGroup]=\"frmChangePassword\" (ngSubmit)=\"changePassword($event)\" class=\"col-sm-12 mt-2\">\n                                <div class=\"col-sm-12 alert alert-info\">\n                                    {{'COMMON.MODULE.USER_PROFILE.CHANGE_PASSWORD_INFO_MSG' | translate}}\n                                </div>\n                                <div class=\"col-sm-12\">\n                                    <div class=\"form-group margin-b-form-group row\">\n                                        <label class=\"control-label col-form-label col-sm-3 font-weight-bold\">\n                                            {{'COMMON.MODULE.USER_PROFILE.CURRENT_PASSWORD' | translate}} <i class=\"required\"></i>: </label>\n                                        <div class=\"col-sm-9 pl-0\">\n                                            <input type=\"password\" [(ngModel)]=\"password.oldpass\" name=\"password\"\n                                                   formControlName=\"password\" required maxlength=\"64\"\n                                                   [ngClass]=\"{'is-invalid':frmChangePassword.controls['password'].hasError('required')\n                                                        && frmChangePassword.controls['password'].touched}\"\n                                                   class=\"form-control col-xs-12 col-sm-12\" />\n\n                                            <div *ngIf=\"frmChangePassword.controls['password'].hasError('required')\n                                                 && frmChangePassword.controls['password'].touched\" class=\"text-danger\">\n                                                <i class=\"fa fa-exclamation-triangle\"></i> {{'COMMON.MODULE.USER_PROFILE.CURRENT_PASSWORD_REQUIRED_MSG' | translate}}\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"col-sm-12\">\n                                    <div class=\"form-group margin-b-form-group row\">\n                                        <label class=\"control-label col-form-label col-sm-3 font-weight-bold\">\n                                            {{'COMMON.MODULE.USER_PROFILE.NEW_PASSWORD' | translate}} <i class=\"required\"></i>: </label>\n                                        <div class=\"col-sm-9 pl-0\">\n                                            <input type=\"password\" [(ngModel)]=\"password.newpass\" name=\"newPassword\"\n                                                   formControlName=\"newPassword\" required maxlength=\"64\"\n                                                   [ngClass]=\"{'is-invalid':frmChangePassword.controls['newPassword'].hasError('required')\n                                                        && frmChangePassword.controls['newPassword'].touched}\"\n                                                   class=\"form-control col-xs-12 col-sm-12\" />\n\n                                            <div *ngIf=\"frmChangePassword.controls['newPassword'].hasError('required')\n                                                 && frmChangePassword.controls['newPassword'].touched\" class=\"text-danger\">\n                                                <i class=\"fa fa-exclamation-triangle\"></i> {{'COMMON.MODULE.USER_PROFILE.NEW_PASSWORD_REQUIRED_MSG' | translate}}\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"col-sm-12\">\n                                    <div class=\"form-group margin-b-form-group row\">\n                                        <label class=\"control-label col-form-label col-sm-3 font-weight-bold\">\n                                            {{'COMMON.MODULE.USER_PROFILE.CONFIRM_NEW_PASSWORD' | translate}} <i class=\"required\"></i>: </label>\n                                        <div class=\"col-sm-9 pl-0\">\n                                            <input type=\"password\" [(ngModel)]=\"password.confirmpass\" name=\"confirmNewPassword\"\n                                                   formControlName=\"confirmNewPassword\" required maxlength=\"64\"\n                                                   [ngClass]=\"{'is-invalid': (frmChangePassword.controls['confirmNewPassword'].hasError('required')\n                                                        || frmChangePassword.controls['confirmNewPassword'].hasError('equalTo'))\n                                                        && frmChangePassword.controls['confirmNewPassword'].touched}\"\n                                                   class=\"form-control col-xs-12 col-sm-12\" />\n\n                                            <div *ngIf=\"frmChangePassword.controls['confirmNewPassword'].hasError('required')\n                                                 && frmChangePassword.controls['confirmNewPassword'].touched\" class=\"text-danger\">\n                                                <i class=\"fa fa-exclamation-triangle\"></i> {{'COMMON.MODULE.USER_PROFILE.CONFIRM_NEW_PASSWORD_REQUIRED_MSG' | translate}}\n                                            </div>\n                                            <div *ngIf=\"frmChangePassword.controls['confirmNewPassword'].hasError('mustMatch')\n                                                 && frmChangePassword.controls['confirmNewPassword'].touched\"  class=\"text-danger\">\n                                                <i class=\"fa fa-exclamation-triangle\"></i> {{'COMMON.MODULE.USER_PROFILE.PASSWORD_DO_NOT_MATCH' | translate}}\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                            </form>\n                        </div>\n                    </div>\n                </ng-template>\n            </lib-user-profile>\n        </div>\n    </div>\n</div>\n","import {NgModule} from '@angular/core';\nimport {Routes, RouterModule} from '@angular/router';\nimport {BootstrapUserProfileComponent} from \"./profile/bootstrap-user-profile.component\";\n\nconst routes: Routes = [\n    {path: 'user-profile', component: BootstrapUserProfileComponent}\n];\n\n@NgModule({\n    imports: [RouterModule.forChild(routes)],\n    exports: [RouterModule]\n})\nexport class BootstrapLayoutRoutingModule {\n}\n","import {Component, OnInit} from '@angular/core';\nimport {GlobalContactService} from \"../global-contact.service\";\nimport {ErrorMessage} from \"inet-core\";\n\n@Component({\n    selector: 'app-access-role',\n    templateUrl: './access-role.component.html'\n})\nexport class AccessRoleComponent implements OnInit {\n\n    arrayRoleUser: Array<any> = [];\n    constructor(private glService: GlobalContactService) {\n    }\n\n    ngOnInit() {\n        this.loadAccessRole();\n    }\n\n    loadAccessRole() {\n        this.glService.getAccessRoles().subscribe((result: any) => {\n           if (result.type !== ErrorMessage.TYPE) {\n               this.arrayRoleUser = result.items;\n           }\n        });\n    }\n\n}\n","<data-table [items]=\"arrayRoleUser\"\n            [itemCount]=\"arrayRoleUser.length\"\n            [sortAsc]=\"true\"\n            [limit]=\"9999\"\n            [header]=\"false\"\n            [selectColumn]=\"false\"\n            [multiSelect]=\"false\"\n            (reload)=\"loadAccessRole()\"\n            [expandableRows]=\"false\"\n            [pagination]=\"false\"\n            [pagination_input]=\"true\"\n            [pagination_range]=\"true\"\n            [indexColumnHeader]=\"'#'\"\n            [indexColumn]=\"true\"\n            [selectOnRowClick]=\"true\"\n            [showReloading]=\"false\">\n  <data-table-column\n      [property]=\"'name'\"\n      [header]=\"'COMMON.MODULE.USER_PROFILE.GROUP_NAME' | translate\"\n      [width]=\"200\">\n  </data-table-column>\n  <data-table-column\n      [property]=\"'description'\"\n      [header]=\"'COMMON.MODULE.USER_PROFILE.DESCRIPTION' | translate\">\n  </data-table-column>\n</data-table>","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\nimport {UserProfileComponent} from './user-profile/user-profile.component';\nimport {BsDatepickerModule} from \"ngx-bootstrap/datepicker\";\nimport {TabsModule} from \"ngx-bootstrap/tabs\";\nimport {BsModalService, ModalModule} from \"ngx-bootstrap/modal\";\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\nimport {CoreModule, UserProfileService} from \"inet-core\";\nimport {UserProfileInfoComponent} from './user-profile-info/user-profile-info.component';\nimport {GlobalContactService} from \"./global-contact.service\";\nimport {TranslateModule} from \"@ngx-translate/core\";\nimport {HttpClientModule} from \"@angular/common/http\";\nimport {AccessRoleComponent} from \"./access-role/access-role.component\";\nimport {DictionaryService, GridModule, ImageCropperModule, LocationService} from \"inet-ui\";\n@NgModule({\n    imports: [\n        CommonModule,\n        HttpClientModule,\n        CoreModule,\n        FormsModule,\n        ReactiveFormsModule,\n        TranslateModule,\n        TabsModule.forRoot(),\n        ModalModule.forRoot(),\n        BsDatepickerModule.forRoot(),\n        ImageCropperModule,\n        GridModule,\n    ],\n    declarations: [UserProfileComponent, UserProfileInfoComponent, AccessRoleComponent],\n    providers: [UserProfileService, GlobalContactService, LocationService,\n        DictionaryService, BsModalService],\n    exports: [\n        FormsModule, ReactiveFormsModule, TabsModule,\n        UserProfileComponent, UserProfileInfoComponent, AccessRoleComponent\n    ]\n})\nexport class UserProfileModule {\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UserlogsComponent } from './userlogs/userlogs.component';\nimport {TranslateModule} from \"@ngx-translate/core\";\nimport {TimeAgoPipe} from \"./time-ago.pipe\";\n@NgModule({\n  declarations: [\n    UserlogsComponent,\n      TimeAgoPipe\n  ],\n  imports: [\n    CommonModule,\n    TranslateModule,\n\n\n  ],\n  exports:[UserlogsComponent],\n})\nexport class UserlogModule { }\n","import {ActivatedRouteSnapshot, DetachedRouteHandle, RouteReuseStrategy} from '@angular/router';\n\n/**\n * A route strategy allowing for explicit route reuse.\n * Used as a workaround for https://github.com/angular/angular/issues/18374\n * To reuse a given route, add `data: { reuse: true }` to the route definition.\n */\nexport class RouteReusableStrategy extends RouteReuseStrategy {\n\n  public shouldDetach(route: ActivatedRouteSnapshot): boolean {\n    return false;\n  }\n\n  public store(route: ActivatedRouteSnapshot, detachedTree: DetachedRouteHandle | null): void {\n  }\n\n  public shouldAttach(route: ActivatedRouteSnapshot): boolean {\n    return false;\n  }\n\n  public retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle | null {\n    return null;\n  }\n\n  public shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\n    return (future.routeConfig === curr.routeConfig) || future.data['reuse'];\n  }\n\n}\n","import { iNet } from \"inet-core\";\n\nexport interface ISettingsState {\n  language: string;\n  i18n: string;\n  version: string,\n  username: string,\n  displayName: string,\n  avatarVersion: number\n}\n\nexport const initialSettingsState: ISettingsState = {\n  language: 'vi',\n  i18n: '',\n  version: '',\n  avatarVersion: 1,\n  username: '',\n  displayName: iNet.getDisplayName()\n};\n","import {ActionType, createAction, props} from \"@ngrx/store\";\n\nexport enum ESettingsActions {\n  CHANGE_LANGUAGE = '[Settings] Change language',\n  UPDATE_I18N = '[Settings] Update Resources',\n  UPDATE_VERSION = '[Settings] Update Version',\n  UPDATE_PROFILE = '[Settings] Update Profile',\n  UPDATE_AVATAR = '[Settings] Update Avatar',\n  RESET_PROFILE = '[Settings] Reset User Profile',\n}\nexport const changeLanguage = createAction(ESettingsActions.CHANGE_LANGUAGE, props<{ language: string }>());\nexport const updateI18n = createAction(ESettingsActions.UPDATE_I18N, props<{ i18n: string }>());\nexport const updateVersion = createAction(ESettingsActions.UPDATE_VERSION, props<{ version: string }>());\nexport const updateProfile = createAction(ESettingsActions.UPDATE_PROFILE, props<{ displayName: string }>());\nexport const updateAvatar = createAction(ESettingsActions.UPDATE_AVATAR);\nexport const resetProfile = createAction(ESettingsActions.RESET_PROFILE);\n\nexport type SettingsActions =\n  | ActionType<typeof changeLanguage>\n  | ActionType<typeof updateI18n>\n  | ActionType<typeof updateVersion>\n  | ActionType<typeof updateProfile>\n  | ActionType<typeof updateAvatar>\n  | ActionType<typeof resetProfile>\n;\n","import {ISettingsState, initialSettingsState} from '../state/settings.state';\nimport {ESettingsActions, SettingsActions} from \"../actions/settings.action\";\nimport { iNet } from 'inet-core';\n\nexport function settingsReducers(state: ISettingsState = initialSettingsState,\n                                 action: SettingsActions): ISettingsState {\n  switch (action.type) {\n    case ESettingsActions.CHANGE_LANGUAGE: {\n      return {\n        ...state,\n        language: action.language\n      };\n    }\n    case ESettingsActions.UPDATE_I18N: {\n      return {\n        ...state,\n        i18n: action.i18n\n      };\n    }\n    case ESettingsActions.UPDATE_VERSION: {\n      return {\n        ...state,\n        version: action.version\n      };\n    }\n    case ESettingsActions.UPDATE_PROFILE: {\n      return {\n        ...state,\n        username: iNet.getUserName(),\n        displayName: action.displayName\n      };\n    }\n    case ESettingsActions.RESET_PROFILE: {\n      return {\n        ...state,\n        username: iNet.getUserName(),\n        displayName: iNet.getDisplayName()\n      };\n    }\n    case ESettingsActions.UPDATE_AVATAR: {\n      return {\n        ...state,\n        avatarVersion: ((state.avatarVersion || 0) + 1)\n      };\n    }\n\n    default:\n      return state;\n  }\n}\n","export class CloudConfig {\n    production?: boolean;\n    version?: string;\n    moduleName?: string;\n    i18nModule?: string;\n    i18nFile?: string;\n    appPrefix?: string;\n    collaborationUrl?: string;\n    collaborationPort?: number;\n    profileUrl?: string\n}","import {Injectable} from '@angular/core';\nimport { CloudConfig } from '../model/cloud-config';\n\n/**\n * Prefix for our app keys in local storage\n */\nlet APP_PREFIX = 'calista-app-';\n\n/**\n * LocalStorageService service to get and set store changes to local storage\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class LocalStorageService {\n  constructor(private config: CloudConfig) {\n    if(this.config?.appPrefix) {\n      APP_PREFIX = this.config.appPrefix;\n    }\n  }\n  /**\n   * check if the localstorage have store data and load it\n   */\n  static loadInitialState() {\n    return Object.keys(localStorage).reduce((state: any, storageKey) => {\n      if (storageKey.includes(APP_PREFIX)) {\n        const stateKeys = storageKey\n          .replace(APP_PREFIX, '')\n          .toLowerCase()\n          .split('.')\n          .map(key =>\n            key\n              .split('-')\n              .map(\n                (token, index) =>\n                  index === 0\n                    ? token\n                    : token.charAt(0).toUpperCase() + token.slice(1)\n              )\n              .join('')\n          );\n        let currentStateRef = state;\n        stateKeys.forEach((key, index) => {\n          if (index === stateKeys.length - 1) {\n            // @ts-ignore\n            currentStateRef[key] = JSON.parse(localStorage.getItem(storageKey));\n            return;\n          }\n          currentStateRef[key] = currentStateRef[key] || {};\n          currentStateRef = currentStateRef[key];\n        });\n      }\n      return state;\n    }, {});\n  }\n\n  /**\n   * Set item to localstorage\n   */\n  setItem(key: string, value: any) {\n    localStorage.setItem(`${APP_PREFIX}${key}`, JSON.stringify(value));\n  }\n\n  /**\n   * get item from localstorage\n   */\n  getItem(key: string) {\n    // @ts-ignore\n    return JSON.parse(localStorage.getItem(`${APP_PREFIX}${key}`));\n  }\n\n  /**\n   * remove item from localstorage\n   */\n  removeItem(key: string) {\n    localStorage.removeItem(`${APP_PREFIX}${key}`);\n  }\n}\n","import {Action, ActionReducer, INIT, UPDATE} from '@ngrx/store';\nimport {IAppState} from \"../state/app.state\";\nimport {LocalStorageService} from \"../../services/local-storage.service\";\n\nexport function initStateFromLocalStorage(\n  reducer: ActionReducer<IAppState>\n): ActionReducer<IAppState> {\n  // @ts-ignore\n  return function (state: IAppState, action: Action) {\n    const newState = reducer(state, action);\n    if ([INIT.toString(), UPDATE.toString()].includes(action.type)) {\n      return {...newState, ...LocalStorageService.loadInitialState()};\n    }\n    return newState;\n  };\n}\n","import {ActionReducerMap, MetaReducer} from '@ngrx/store';\nimport {routerReducer} from '@ngrx/router-store';\nimport {IAppState} from \"../state/app.state\";\nimport {settingsReducers} from \"./settings.reducer\";\nimport {initStateFromLocalStorage} from \"./local-storage.reducer\";\n\n\nexport const metaReducers: MetaReducer<IAppState>[] = [\n  initStateFromLocalStorage\n];\n\nexport const appReducers: ActionReducerMap<IAppState, any> = {\n  router: routerReducer,\n  settings: settingsReducers,\n};\n","import {createSelector} from '@ngrx/store';\nimport {IAppState} from \"../state/app.state\";\nimport {ISettingsState} from \"../state/settings.state\";\n\nconst settingsState = (state: IAppState) => state.settings;\nexport const selectSettings = createSelector(\n  settingsState,\n  (state: ISettingsState) => state\n);\n\nexport const languageSelector = createSelector(\n  settingsState, state => state.language\n);\n\nexport const userSelector = createSelector(\n  settingsState, state => state.username\n);\n\nexport const displayNameSelector = createSelector(\n  settingsState, state => state.displayName\n);\n\nexport const avatarVersionSelector = createSelector(\n  settingsState, state => state.avatarVersion\n);\n","import {Injectable} from '@angular/core';\nimport {Actions, createEffect, ofType} from '@ngrx/effects';\nimport * as SettingsActions from '../actions/settings.action';\nimport {IAppState} from '../state/app.state';\nimport {select, Store} from '@ngrx/store';\nimport {map, tap, withLatestFrom, distinctUntilChanged} from 'rxjs/operators';\nimport {LocalStorageService} from \"../../services/local-storage.service\";\nimport {TranslateService} from \"@ngx-translate/core\";\nimport {selectSettings} from \"../selectors/settings.selector\";\nimport { iNet } from 'inet-core';\n\n/**\n * SettingsEffects class used to attach side effects for store settings actions\n */\n@Injectable()\nexport class SettingsEffects {\n  constructor(\n    private actions$: Actions,\n    private store: Store<IAppState>,\n    private localStorageService: LocalStorageService,\n    private translateService: TranslateService\n  ) {\n  }\n\n  /**\n   * attach setitem to localstorage with each action in ESettingsActions\n   */\n  persistSettings =\n    createEffect(() => {\n      return this.actions$.pipe(\n        ofType(\n          SettingsActions.changeLanguage,\n          SettingsActions.updateVersion,\n          SettingsActions.updateI18n,\n          SettingsActions.updateProfile,\n          SettingsActions.updateAvatar\n        ),\n        withLatestFrom(this.store.pipe(select(selectSettings))),\n        tap(([action, settings]) =>\n          this.localStorageService.setItem('settings', settings)\n        )\n      );\n    }, {dispatch: false});\n\n  changeLanguage$ = createEffect(() => this.actions$.pipe(\n    ofType(SettingsActions.changeLanguage),\n    map((action) => action.language),\n    distinctUntilChanged(),\n    tap(language => {\n      //console.log('[currentLang]', language);\n      this.translateService.use(language).subscribe((json)=> {\n        this.store.dispatch(SettingsActions.updateI18n({i18n: JSON.stringify(json || '')}));\n      })\n    })\n  ), {dispatch: false});\n\n  updateProfile$ = createEffect(() => this.actions$.pipe(\n    ofType(SettingsActions.updateProfile),\n    distinctUntilChanged(),\n    tap(action => {\n      iNet.getInstances()['displayName'] = action.displayName;\n    })\n  ), { dispatch: false });\n\n \n\n}\n","import {ModuleWithProviders, NgModule, Optional, SkipSelf} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {HttpClientModule} from '@angular/common/http';\nimport {RouteReuseStrategy, RouterModule} from '@angular/router';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {RouteReusableStrategy} from './route-reusable-strategy';\nimport {StoreModule} from '@ngrx/store';\nimport {EffectsModule} from '@ngrx/effects';\nimport {StoreRouterConnectingModule} from '@ngrx/router-store';\nimport {appReducers, metaReducers} from \"./store/reducers/app.reducers\";\nimport {CoreModule, WebSocketClientService} from \"inet-core\";\nimport {SettingsEffects} from \"./store/effects/settings.effects\";\n//import { StoreDevtoolsModule } from '@ngrx/store-devtools';\nexport function extract(s: string) {\n  return s;\n}\n\n@NgModule({\n  imports: [\n    CommonModule,\n    HttpClientModule,\n    TranslateModule,\n    CoreModule,\n    StoreModule.forRoot(appReducers, {metaReducers}),\n    EffectsModule.forRoot([SettingsEffects]),\n    StoreRouterConnectingModule.forRoot({stateKey: 'router'}),\n    //StoreDevtoolsModule.instrument(),\n    RouterModule\n  ],\n  exports: [],\n  providers: [\n    {\n      provide: RouteReuseStrategy,\n      useClass: RouteReusableStrategy\n    },\n    WebSocketClientService\n  ]\n})\nexport class CalistaCoreModule {\n  constructor(@Optional() @SkipSelf() parentModule: CalistaCoreModule) {\n    if (parentModule) {\n      throw new Error(\n        `${parentModule} has already been loaded. Import Calista Core module in the AppModule only.`\n      );\n    }\n  }\n}\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { LayoutComponent } from './layout.component';\nimport { AdminNavbarComponent } from './navbar/navbar.component';\nimport { BootstrapLayoutRoutingModule } from \"./bootstrap-layout-routing.module\";\nimport { CommonModule } from \"@angular/common\";\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { ModalModule } from \"ngx-bootstrap/modal\";\nimport { CoreModule, HttpClientService, LoadingIndicatorService } from \"inet-core\";\nimport { UserProfileModule } from \"./user-profile/user-profile.module\";\nimport { BootstrapUserProfileComponent } from \"./profile/bootstrap-user-profile.component\";\nimport { NavigationCancel, NavigationEnd, NavigationError, NavigationStart, Router } from \"@angular/router\";\nimport { MessageSideNavComponent } from \"./message-side-nav/message-side-nav.component\";\nimport { AppSideNavComponent } from \"./app-side-nav/app-side-nav.component\";\nimport { SocialSideNavComponent } from \"./social-side-nav/social-side-nav.component\";\nimport { AbstractSideNavComponent } from \"./abstract-side-nav.component\";\nimport { CommonToolbarComponent } from \"./common-toolbar/common-toolbar.component\";\nimport {\n    AuthenticateGuard,\n    CloudTranslateModule,\n    InterceptorModule,\n    NotifyMessageService,\n    NotifyModule,\n    SafePipeModule\n} from \"inet-ui\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { UserlogModule } from \"./userlog/userlog.module\";\nimport { VerticalLayoutComponent } from './vertical-layout/vertical-layout.component';\nimport { CalistaCoreModule } from '../../core/calista-core.module';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        CoreModule,\n        BootstrapLayoutRoutingModule,\n        HttpClientModule,\n        InterceptorModule,\n        ModalModule.forRoot(),\n        CloudTranslateModule.forRoot(),\n        NotifyModule,\n        UserProfileModule,\n        SafePipeModule,\n        TranslateModule,\n        UserlogModule,\n        CalistaCoreModule\n    ],\n    declarations: [\n        AdminNavbarComponent,\n        LayoutComponent,\n        BootstrapUserProfileComponent,\n        MessageSideNavComponent,\n        AppSideNavComponent,\n        SocialSideNavComponent,\n        AbstractSideNavComponent,\n        CommonToolbarComponent,\n        VerticalLayoutComponent\n    ],\n    exports: [\n        InterceptorModule, CloudTranslateModule, LayoutComponent, VerticalLayoutComponent,\n        AbstractSideNavComponent, BootstrapUserProfileComponent],\n    schemas: [CUSTOM_ELEMENTS_SCHEMA],\n    providers: [AuthenticateGuard, HttpClientService, NotifyMessageService]\n})\nexport class BootstrapLayoutModule {\n    constructor(\n        router: Router,\n        loadingService: LoadingIndicatorService\n    ) {\n        /*\n        * True to enable layout for controlling the menu,header,etc....\n        * This option should generally be enabled when layout are being used inside the framework.\n         */\n        router.events.subscribe(event => {\n            if (event instanceof NavigationStart) {\n                loadingService.showLoading();\n            }\n            if ((event instanceof NavigationError || event instanceof NavigationEnd || event instanceof NavigationCancel)) {\n                loadingService.hideLoading();\n            }\n        });\n    }\n}\n","import {Directive, TemplateRef} from '@angular/core';\n@Directive({\n  selector: 'ng-template[menu]'\n})\nexport class MenuDirective {\n\n  constructor(public templateRef: TemplateRef<unknown>) { }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\n@Directive({\n  selector: 'ng-template[toolbar]'\n})\nexport class ToolbarDirective {\n\n  constructor(public templateRef: TemplateRef<unknown>) { }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\n@Directive({\n  selector: 'ng-template[navbarItem]'\n})\nexport class NavbarItemDirective {\n\n  constructor(public templateRef: TemplateRef<unknown>) { }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n@Directive({\n  selector: 'ng-template[navbarMenu]'\n})\nexport class NavbarMenuDirective {\n\n  constructor(public templateRef: TemplateRef<unknown>) { }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n@Directive({\n  selector: 'ng-template[profileItem]'\n})\nexport class ProfileItemDirective {\n\n  constructor(public templateRef: TemplateRef<unknown>) { }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\n@Directive({\n  selector: 'ng-template[navbarSearch]'\n})\nexport class NavbarSearchDirective {\n\n  constructor(public templateRef: TemplateRef<unknown>) { }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\n@Directive({\n  selector: 'ng-template[logo]'\n})\nexport class LogoDirective {\n\n  constructor(public templateRef: TemplateRef<unknown>) { }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\n@Directive({\n  selector: 'ng-template[actionMenu]'\n})\nexport class ActionMenuDirective {\n\n  constructor(public templateRef: TemplateRef<unknown>) { }\n\n}\n","import { FileInfomation } from \"./app-plugin\";\n\nconst PDF_MINETYPE = 'application/pdf';\nconst PDF_FORMAT = ['pdf'];\nconst IMAGES_FORMAT = ['png', 'jpg', 'jpeg', 'gif', 'svg', 'webp', 'bmp', 'jpeg', 'pjpeg', 'jfif', 'pjp'];\nconst OFFICE_FORMAT = ['doc', 'docx', 'odt', 'ods', 'xls', 'xlsx', 'ppt', 'pps', 'pptm', 'pptx',\n 'pot', 'potx', 'dot', 'dotx', 'docm', 'dotx', 'csv', 'sxw'];\n\nexport function isOffice(fileName: string) {\n    return OFFICE_FORMAT.includes(getExtByName(fileName));\n}\n\nexport function isPdf(fileInfo: FileInfomation) {\n    return PDF_FORMAT.includes(getExtByName(fileInfo?.name)) || fileInfo?.minetype?.includes(PDF_MINETYPE);\n}\n\nexport function isImage(fileInfo: FileInfomation) {\n    return IMAGES_FORMAT.includes(getExtByName(fileInfo?.name)) || (!!fileInfo?.minetype?.includes('image'));\n}\n\nexport function getExtByName(name: string) {\n    if (!name.includes('.') || !name) {\n        return '';\n    }\n    return name?.split('.').pop()?.toLowerCase() || '';\n}","export const COLLABORATION_CONTEXT: string = 'collaboration';\nexport const COLLABORATION_MODULE: string = 'ida';\nexport const MAIL_MODULE_NAME = 'mailpro';\nexport const MAIL_CONTEXT = 'bigmail';\nexport const FSIGN_CONTEXT = 'fsign';\nexport const SYSTEM_CONTEXT = [FSIGN_CONTEXT, COLLABORATION_CONTEXT];\nexport const PREFIX_CALISTA_MENU = 'calista-menu';\nexport interface SystemApplication {\n    domain?: string,\n    firmContext?: string,\n    homepage?: string,\n    icon?: string,\n    module?: string,\n    name: string,\n    organId?: string,\n    pattern?: string,\n    prefixUri?: string,\n    webContext?: string,\n    widget?: string,\n    hash?: string,\n    isModule?: boolean,\n    hidden: boolean,\n    badgeId?:string,\n    active?: boolean;\n}","import { Injectable } from '@angular/core';\r\nimport { CoreService, EnvelopBody, HttpClientService, iNet } from 'inet-core';\r\nimport { catchError, forkJoin, map, Observable, of } from 'rxjs';\r\nimport { COLLABORATION_CONTEXT, COLLABORATION_MODULE, MAIL_CONTEXT, PREFIX_CALISTA_MENU, SYSTEM_CONTEXT, SystemApplication } from './calista.interface';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nconst CALISTA_DEV_PORT = '3100';\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class CalistaMenuService {\r\n  private moduleUrl = iNet.getPUrl(`${COLLABORATION_MODULE}/page/module`);\r\n  private calista: boolean = false;\r\n  private apps?: SystemApplication[];\r\n  private collaborationModules?: SystemApplication[];\r\n  constructor(\r\n    private httpService: HttpClientService,\r\n    private coreService: CoreService,\r\n    private translateService: TranslateService,\r\n  ) {\r\n\r\n  }\r\n\r\n  getIconUrlByModule(app: SystemApplication): string {\r\n    let module = app?.module;\r\n    if (app.homepage && app.homepage?.includes('http')) {\r\n      let newUrl = new URL(app.homepage);\r\n      const paths = newUrl.pathname.split('/');\r\n      module = paths[3];\r\n    }\r\n    return this.coreService.getImageUrlFromModule(`${module}.svg`, module);\r\n  }\r\n\r\n  private listCloudApp(excludeApps: string[] = []): Observable<SystemApplication[]> {\r\n    if (!!this.apps && this.apps.length>0) {\r\n      return of(this.apps);\r\n    }\r\n    return this.coreService.getApps().pipe(\r\n      map((apps: any[]) => {\r\n        let contexts: string[] = [];\r\n        apps = apps.filter((app: any) => {\r\n          app = app as SystemApplication;\r\n          if (app.webContext && app.name && app.homepage?.includes('http')) {\r\n            app.hidden = SYSTEM_CONTEXT.includes(app?.webContext) || excludeApps.includes(app.webContext) || contexts.includes(app.webContext);\r\n            if (app.webContext !== MAIL_CONTEXT) {\r\n              app.name = app.webContext;\r\n            }\r\n            //Corect module name\r\n            if (app.homepage && app.homepage?.includes('http')) {\r\n              app.module = (new URL(app.homepage)).pathname.split('/')[3];\r\n            }\r\n            app.badgeId = `${PREFIX_CALISTA_MENU}-${app.webContext}`;\r\n            app.icon = this.getIconUrlByModule(app);\r\n            contexts.push(app.webContext);\r\n            return app;\r\n          }\r\n        })\r\n        this.apps = [...apps];\r\n        return apps;\r\n      }),\r\n      catchError(err => {\r\n        return of([]);\r\n      })\r\n    )\r\n  }\r\n\r\n  listApplication(calista: boolean = false, excludeApps: string[] = []): Observable<SystemApplication[]> {\r\n    this.calista = calista;\r\n    if (calista) {\r\n      return forkJoin([this.listCloudApp(), this.getCollaborationModules(), this.getModules()]).pipe(\r\n        map((results) => {\r\n          let apps: SystemApplication[] = [];\r\n          results.forEach((items: SystemApplication[]) => {\r\n            apps = apps.concat(items);\r\n          });\r\n          //console.log(apps);\r\n          return apps;\r\n        }),\r\n        catchError(err => {\r\n          return of([]);\r\n        })\r\n      )\r\n    } else {\r\n      return this.getModules().pipe(\r\n        map((items)=> {\r\n          return items.filter((item)=> {\r\n            return item.module && !excludeApps.includes(item.module);\r\n          });\r\n        })\r\n      )\r\n    }\r\n  }\r\n\r\n  private isProduction() {\r\n    return this.coreService.getEnvironment()['production'];\r\n  }\r\n\r\n  getCollaborationModules(): Observable<SystemApplication[]> { \r\n    if (!this.isProduction()) {\r\n      return of([])\r\n    }\r\n    if (this.collaborationModules && this.collaborationModules?.length>0) {\r\n      return of(this.collaborationModules)\r\n    }\r\n    let newUrl = new URL(this.moduleUrl);\r\n    const paths = newUrl.pathname.split('/');\r\n    paths[1] = COLLABORATION_CONTEXT;\r\n    newUrl.pathname = paths.join('/');\r\n    if (!this.isProduction()) {\r\n      newUrl.port = CALISTA_DEV_PORT;\r\n    }\r\n    //console.log(window.location.hostname, newUrl.hostname)\r\n    if (window.location.hostname !== newUrl.hostname) {\r\n      return of([]);\r\n    }\r\n    return this.httpService.getJSON(newUrl.href, { intl: this.translateService.currentLang }).pipe(\r\n      map((apps: SystemApplication[]) => {\r\n        apps = apps.map((app: SystemApplication) => {\r\n          app.webContext = COLLABORATION_CONTEXT;\r\n          if (!app.badgeId && app.hash?.includes('#/chat')) {\r\n            app.badgeId = 'iChat';\r\n          }\r\n          if (app.badgeId) {\r\n            app.badgeId = `${PREFIX_CALISTA_MENU}-${app.badgeId}`\r\n          } else {\r\n            app.badgeId = iNet.generateId();\r\n          }\r\n          if (app.icon) {\r\n            app.icon = this.coreService.getImageUrlFromModule(app.icon, app.module);\r\n          }\r\n          if (!app?.homepage?.includes('http')) {\r\n            //Update webContext\r\n            let newUrl = new URL(iNet.getPUrl(`${app.module}/${app?.homepage}`));\r\n            if (app?.homepage?.startsWith(`/${COLLABORATION_CONTEXT}/`)) {\r\n              app.homepage = `${newUrl.origin}${app?.homepage}`;\r\n            } else {\r\n              const paths = newUrl.pathname.split('/');\r\n              paths[1] = COLLABORATION_CONTEXT;\r\n              if (!this.coreService.getEnvironment()['production']) {\r\n                newUrl.port = CALISTA_DEV_PORT;\r\n              }\r\n              newUrl.pathname = paths.join('/');\r\n              if (app.hash) {\r\n                newUrl.hash = !app.hash.startsWith('#/') ? `#/${app.hash}` : app.hash;\r\n              }\r\n              app.homepage = newUrl.href;\r\n            }\r\n          }\r\n          app.isModule = true;\r\n          return app;\r\n        })\r\n        this.collaborationModules = [...apps];\r\n        return apps;\r\n      }),\r\n      catchError(err => {\r\n        return of([]);\r\n      })\r\n    )\r\n  }\r\n\r\n  getUrlPlugin(context: string, pluginUrl: string) {\r\n    let url = new URL(pluginUrl);\r\n    const paths = url.pathname.split('/');\r\n    paths[1] = context;\r\n    url.pathname = paths.join('/');\r\n    return url.href\r\n  }\r\n\r\n  openApp(app: SystemApplication) {\r\n    if (!app.active) {\r\n      window.location.href = this.getUrlByModule(app);\r\n    }\r\n  }\r\n\r\n  getUrlByModule(app: SystemApplication) {\r\n    let newUrl: URL;\r\n    if (app.homepage && app.homepage?.includes('http')) {\r\n      newUrl = new URL(app.homepage);\r\n      const paths = newUrl.pathname.split('/');\r\n      paths[2] = iNet.getFirmPrefix();\r\n      newUrl.pathname = paths.join('/');\r\n    } else { //the same server\r\n      newUrl = new URL(iNet.getPUrl(`${app.module}/${app?.homepage}`));\r\n    }\r\n    if (app.hash) {\r\n      newUrl.hash = !app.hash.startsWith('#/') ? `#/${app.hash}` : app.hash;\r\n    }\r\n    return newUrl.href;\r\n  }\r\n\r\n  /**\r\n   * Checks if the specified Web Context exists on application list.\r\n   */\r\n  hasApp(webContext: string): Observable<boolean> {\r\n    return new Observable<boolean>((observer) => {\r\n      this.listApplication(this.calista).subscribe((apps) => {\r\n        let exist = apps.some(app => {\r\n          return this.calista ? app.webContext === webContext : app.module === webContext;\r\n        });\r\n        observer.next(exist);\r\n      })\r\n    });\r\n  }\r\n\r\n/**\r\n * Checks if the specified module exists on application list.\r\n */\r\n  hasModule(module: string): Observable<boolean> {\r\n    return new Observable<boolean>((observer) => {\r\n      this.coreService.getSystemApplication().subscribe((apps)=> {\r\n        observer.next(apps.some(app => { return app?.module === module }));\r\n      }) \r\n    });\r\n  }\r\n\r\n  getUrlByWebContext(webContext: string): Observable<string> {\r\n    return new Observable<string>((observer) => {\r\n      this.listApplication(this.calista).subscribe((apps) => {\r\n        let app = apps.find(app => {\r\n          return this.calista ? app.webContext === webContext : app.module === webContext;\r\n        });\r\n        if (app) {\r\n          observer.next(this.getUrlByModule(app));\r\n        } else {\r\n          observer.next('');\r\n        }\r\n      })\r\n    });\r\n  }\r\n\r\n  openModule(module: string) {\r\n    window.location.href = iNet.getPUrl(`${module}/page/index`);\r\n  }\r\n\r\n  getCollaborationUrl(): string {\r\n    let url = new URL(iNet.getPUrl(`${COLLABORATION_MODULE}/page/index`));\r\n    const paths = url.pathname.split('/');\r\n    paths[1] = COLLABORATION_CONTEXT;\r\n    url.pathname = paths.join('/');\r\n    if (!this.isProduction()) {\r\n      url.port = CALISTA_DEV_PORT;\r\n    }\r\n    return url.href;\r\n  }\r\n  /**\r\n    * Badges appear as small icons that sit on top of your app. \r\n    * For instance, a small red number indicating how many updates are available.\r\n    */\r\n  updateBadgeIcon(message: EnvelopBody) {\r\n    // console.log('[updateSignal]--update--', message)\r\n    if (message.application) {\r\n      const el = document.getElementById(`${PREFIX_CALISTA_MENU}-${message.application}`);\r\n      let menuActive;\r\n      if (el) {\r\n        menuActive = this.closest(el, '.actions-nav__item.active'); //Menu is actived\r\n      }\r\n      if (!menuActive) {\r\n        let classList = el?.classList;\r\n        if (classList && !classList.contains('active')) {\r\n          classList.add('active');\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  clearBadgeIconByApp(appName: string) {\r\n    const el = document.getElementById(`${PREFIX_CALISTA_MENU}-${appName}`);\r\n    let classList = el?.classList;\r\n    if (classList && classList.contains('active')) {\r\n      classList.remove('active');\r\n    }\r\n  }\r\n\r\n  getModules(): Observable<SystemApplication[]> {\r\n    return this.coreService.getSystemApplication().pipe(\r\n      map((apps: any[]) => {\r\n        return (apps || []).filter((app: any) => {\r\n          return app.homepage && !app.homepage?.includes('http');\r\n        }).map((app)=> {\r\n          app = {\r\n            ...app, ...{\r\n              isModule: true,\r\n              badgeId: iNet.generateId(),\r\n              icon: this.coreService.getImageUrlFromModule(app?.icon || `${app.module}.svg`, app.module)\r\n            }\r\n          }\r\n          return app;\r\n        })\r\n      }),\r\n      catchError(err => {\r\n        return of([]);\r\n      })\r\n    );\r\n  }\r\n\r\n  private closest(el: HTMLElement, selector: string): any | null {\r\n    return document.querySelector(`#${el.id}`)?.closest(selector);\r\n  }\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\nimport { EnvelopBody, iNet } from 'inet-core';\nimport { Subject } from 'rxjs';\nimport { DocumentViewerPlugin, PluginItem } from './app-plugin';\nimport { isOffice } from './plugin-utils';\nimport { CalistaMenuService } from '../calista-menu.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class CalistaPluginService {\n  pluginView$ = new Subject<PluginItem>();\n  documentView$ = new Subject<DocumentViewerPlugin>();\n  closeSubject$ = new Subject<void>();\n  constructor(private menuService : CalistaMenuService) { }\n\n  private getSourceName(): string {\n    return iNet.getInstances().webContext || 'Calista';\n  }\n\n  openPlugin(plugin: PluginItem) {\n    this.pluginView$.next(plugin);\n  }\n\n  openViewer(plugin: DocumentViewerPlugin) {\n    this.documentView$.next(plugin);\n  }\n\n  closePlugin() {\n    this.closeSubject$.next();\n  }\n\n  chatWith(username: string) {\n   this.openPlugin({\n     source: this.getSourceName(),\n      name: 'Trò chuyện',\n      url: `${this.getCollaborationUrl()}#/plugin/chat?action=CHAT&username=${username}`\n   })\n  }\n\n  makeVideoCall(username: string) {\n    this.openPlugin({\n      source: this.getSourceName(),\n      name: 'Trò chuyện',\n      url: `${this.getCollaborationUrl()}#/plugin/chat?action=VIDEO_CALL&username=${username}`\n    })\n  }\n\n  broadcastMessage(message: string) {\n    this.openPlugin({\n      source: this.getSourceName(),\n      name: 'Trò chuyện',\n      url: `${this.getCollaborationUrl()}#/plugin/chat?action=BROADCAST&message=${message}`\n    }) \n  }\n\n  updateSignal(message: EnvelopBody) {\n    this.menuService.updateBadgeIcon(message);\n  }\n\n  clearBadgeIconByApp(appName: string) {\n    this.menuService.clearBadgeIconByApp(appName);\n  }\n\n  getCollaborationUrl(): string {\n    return this.menuService.getCollaborationUrl();\n  }\n\n  isOffice(fileName: string): boolean {\n    return isOffice(fileName);\n  }\n}\n","import {\n    Component,\n    OnInit,\n    EventEmitter,\n    Output,\n    ElementRef,\n    Input, ViewChild\n} from '@angular/core';\nimport {CoreService, iNet, UserProfileService} from 'inet-core';\nimport {TranslateService} from \"@ngx-translate/core\";\nimport {OrganizationService} from \"../../../core/services/organization.service\";\nimport { select, Store } from '@ngrx/store';\nimport { IAppState } from '../../../core/store/state/app.state';\nimport { displayNameSelector, languageSelector } from '../../../core/store/selectors/settings.selector';\nimport * as SettingsActions from \"../../../core/store/actions/settings.action\";\nimport { NavbarItemDirective } from '../../directive/navbar-item.directive';\nimport { ProfileItemDirective } from '../../directive/profile-item.directive';\nimport { NavbarSearchDirective } from '../../directive/navbar-search.directive';\nimport { NavbarMenuDirective } from '../../directive/navbar-menu.directive';\nimport { LogoDirective } from '../../directive/logo.directive';\nimport { CalistaPluginService } from '../plugin/calista-plugin.service';\nimport { CloudConfig } from '../../../core/model/cloud-config';\nimport { Router } from '@angular/router';\nexport const DEFAULT_AVATAR_URL = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAxCAMAAACvdQotAAABnlBMVEUAAADx8vL6+vr29vb19fX39/fv8PD7+/v39/f19fX19fXw8fH49/f6+fn4+Pj5+Pj39/f49/f39/f39/f49/f6+vr09PT4+Pj8+/v19fX5+Pj49/f5+fn29vb39/f19fX39/f29vb19fX19fX19fXy8vL39/f09PT19fX29vb4+Pj19fX19fX19fX49/f4+Pj19fX19fX19fUcYF8ZX14AWlkaYF8eYF8AV1a4wsIWX14SXl0AU1INXVz8/f3x8/M7a2siY2IATUzo6urO1NS0v797kpFcfn4/bW3v8fHj5ubb4ODL0dHHzs6Gm5qEmZlXe3oUXl0GXFsAW1r+/v7y9PTs7u7l6Oji5eXAyMi+x8exvLyqt7aVpaV5kJBuiYlBb2709PTe4+PEzMyuubmJnJtyjIxLc3MmY2IgYWEAUU/5+vrp7OzR19a8xsW6xMSksrGXqKeBl5Z9lJN3kI9phoVQd3ZIcXFFcHABXFsASkieraycq6uQoaGNn59OdXM2amkQY2IAT04ARUTV29rU2tpigoFfgIAuZmYAS0kZfnB2AAAAM3RSTlMA49VBE/v63SkaEPPCs62dm5OEViT35eTXzsa9o1BMSCAW+PLf29PHu4piPDk0i1s9NjWNNj8iAAADBklEQVRIx5WWZ1MiQRCGB5CggIo5p1PPC15admVhWXLOkpNECeZ86nnGi//6UCzcnVnCPZ+mauqtmZ5+u6cBQpfko0LGkzocUt6kYnCoB7RjZkpscqfSPuvGhtWbLrp3xqZmWwpmR3We30E1gT1DqPFTd3jkfVOBQOYsnhu1GIt141nSJG8i6hce6DVKDEGpsSeFbwBK93LsFF/DOFlTnThlXbBCMpqwB7Gm4OXCWDekyO0psZZUCwssTfcoSRGtJUo8zmfejb9ngBQoRMUz8aLoi+mxDriJNt5NILQFO5HgpeHPz5KJAxzrCFVSXldMx+xoPgIqVQDNz1fTuyfJq9Q6eofs4WEWPXudHHlUDOpu4ZRobD+3IxH6h00DbajPcoKapDexhZyvM9v0eptZdw7f2Gjuq1WU2K+Bo0y4VGuPznIlVNBW8ITfAyROWIEZt6/ri+ttI7ynjcyBtx4MQn0XytRXmdCdGt7dnQH9KcRNFH1cXx3TFGJWywB4ncZgtlyk9ukSpGsL2fzWC3he1LQl2me4uDD4QiW0Ir6PA5GVw7RXdH5vP09fcdh7kwccVq7iuCWdTvIPV0H4eI1T4Ce4vKwXHXoKFAsKGgvXi2EBXG0vl+1qPIBxvBhXXi79ZD6i00XypP8vR17Q7BPZ3ZBj32uzefcdIXOWQLMvibI9Rvl0Lt89hWu1OHV/5HJ4KbbHRHOwk7VHtKUSaARVsdBHWqaTN2pOBr1xpiv0psIDxuChYNLD9VKrSj0jxky4SrAiq4YzDJP7c4Kn2i8yat9gwCAMVWbtL9Y7jJPRYQgl8uYE1GH+r49Z5I1u+auzbnkyvNr4v2LZTiRn0QHQYDnevvMrK24ZeGFeTFLK9v8LawYYyiWw1hg8C/OAxZw4fo63iPzGw59HfuTxWEbV9Ee2Rie7AIpCmGr271uGBwAnnyajybIR+jkujH6LSb7afCQZCbtPcdYMUzKHF7+0HnymxnbcxfRmbVI63jxMmnf4fQLQjq6hQcXKklQkki6tfJjmmMf+AY5IrME07GQ1AAAAAElFTkSuQmCC';\n@Component({\n    selector: 'app-calista-navbar',\n    templateUrl: './calista-navbar.component.html',\n    styleUrls: ['./calista-navbar.component.scss']\n})\nexport class CalistaNavbarComponent implements OnInit {\n    @Input() logoItem?: LogoDirective;\n    @Input() navbarItem?: NavbarItemDirective;\n    @Input() navbarMenu?: NavbarMenuDirective;\n    @Input() profileMenuItem?: ProfileItemDirective;\n    @Input() navbarSearch?: NavbarSearchDirective;\n    \n    @Input() hideToggler: boolean = false;\n    @Input() hideTogglerButton: boolean = false;\n    @Input() hideCompanyMenu: boolean = false;\n    @Input() hideProfileMenu: boolean = false;\n    @Input() hideWorkspaceMenu: boolean = true;\n    @Input() hideSearch: boolean = false;\n    @Input() applicationName?: string;\n    @Input() homeRouterLink?: string;\n    @Input() noteRouterLink?: string;\n    @Input() messageCount: string = '';\n    @Input() hideBrandName: boolean = true;\n    @Input() hideLogo: boolean = false;\n    @Output() toggleMenu = new EventEmitter<void>();\n    @Input() calista: boolean = true;\n    /*\n    @Output() onToggleMessageSideNav = new EventEmitter<void>();\n    @Output() onToggleUserLogSideNav = new EventEmitter<void>();\n    @Output() onToggleAppSideNav = new EventEmitter<void>();\n    @Output() onToggleChatSideNav = new EventEmitter<void>();\n    @Output() onToggleSocialSideNav = new EventEmitter<void>();\n    @Output() onToggleNoteSideNav = new EventEmitter<void>();\n    */\n\n    @Output() clickLogo = new EventEmitter<string>();\n    @Output() clickWorkspaceMenu = new EventEmitter<void>();\n    @Output() toogleWorkspace = new EventEmitter<boolean>();\n    @Input() visibleNoteIcon: boolean = false;\n    @Input() visibleSearch: boolean = false;\n    @Input() visibleLogo: boolean = true;\n    @Input() visibleWorkspaceIcon: boolean = true;\n\n    avatarUrl: string = DEFAULT_AVATAR_URL;\n    displayName = iNet.getDisplayName();\n    username = iNet.getUserName()\n    @Input() brandName: string =  '';\n\n    @ViewChild('brandLink') brandLink!: ElementRef;\n    langs: Array<string> = [];\n    currentLanguage: string = 'en';\n\n    logoUrl?: string;\n    activeWorkspace = false;\n\n    constructor(private coreService: CoreService,\n                private userProfileService: UserProfileService,\n                private orgService: OrganizationService,\n                public translate: TranslateService,\n                private calistaService : CalistaPluginService,\n                private cloudConfig: CloudConfig,\n                private router: Router,\n                private store: Store<IAppState>) {\n    }\n\n    ngOnInit() {\n        //this.brandName = !iNet.isEmpty(this.applicationName) ? `${this.applicationName} - ${this.orgName}` : this.orgName;\n        //this.externalUrl = window.location.protocol + '\\/\\/' + window.location.host + '\\/' + iNet.firmPrefix;\n        this.langs = this.translate.getLangs(); // Languages\n\n        this.store.pipe(\n            select(languageSelector),\n        ).subscribe(lang => {\n            this.currentLanguage = lang;\n        });\n\n        //this.store.dispatch(SettingsActions.resetProfile());\n\n        this.store.pipe(\n            select(displayNameSelector),\n        ).subscribe((name) => {\n            this.userProfileService.getAvatarUrl().then(url => {\n                this.avatarUrl = url;\n            });\n            //Load logo for header\n            this.logoUrl = this.orgService.getLogoUrl();\n        });\n\n        //this.currentLanguage = this.cloudTranslateService.getCurrentLang();\n        /*\n        if(this.isUser()) {\n            if (iNet.getPrefix()) {\n                this.userProfileService.getAvatarUrl().then(url => {\n                    this.avatarUrl = url;\n                });\n                //Load logo for header\n                this.logoUrl = this.orgService.getLogoUrl();\n            }\n        }\n        */\n    }\n\n    /*\n    private isUser(): boolean {\n        if(!iNet.getUserName()) {\n           return false;\n        }\n        return this.securityService.hasRole('firmuser,firm_user,community');\n    }\n    */\n\n    logout() {\n        if (this.coreService.getEnvironment()['production']) {\n            this.coreService.logout(this.translate.currentLang);\n        }\n    }\n\n    onToggleMenu() {\n        this.toggleMenu.emit();\n    }\n    /*\n\n    toggleMessageSideNav($event: any) {\n        this.onToggleMessageSideNav.emit();\n    }\n    toggleUserLogSideNav($event: any) {\n        this.onToggleUserLogSideNav.emit();\n    }\n\n\n    toggleAppSideNav($event: any) {\n        this.onToggleAppSideNav.emit();\n    }\n\n\n    toggleChatSideNav($event: any) {\n        this.onToggleChatSideNav.emit();\n    }\n\n    toggleNoteNav($event: any) {\n        this.onToggleNoteSideNav.emit()\n    }\n    */\n\n    changeLanguage(lang: string) {\n        this.store.dispatch(SettingsActions.changeLanguage({ language: lang }));\n    }\n\n    updateImageUrl($event: any) {\n        this.avatarUrl = DEFAULT_AVATAR_URL;\n    }\n\n    updateBlankImage($event: any) {\n        /*\n        if ($event) {\n            this.logoUrl = UserProfileService.DEFAULT_AVATAR_URL;\n        }\n        */\n    }\n\n    /*\n    countMessage(){\n        this.messageService.count().then((count: number) => {\n            this.messageCount = (count && count > 0) ? count.toString() : '';\n        });\n    }\n\n    setMessageCount(v: string) {\n        this.messageCount = v;\n    }\n    */\n\n    onClickLogo($event: any) {\n        this.clickLogo.emit(this.homeRouterLink);\n    }\n\n    onClickWorkspaceMenu() {\n        this.clickWorkspaceMenu.emit();\n    }\n\n    onToogleWorkspace() {\n        this.activeWorkspace = !this.activeWorkspace;\n        this.toogleWorkspace.emit(this.activeWorkspace);\n    }\n\n    onViewProfile() {\n        if (this.calista) {\n            if (this.cloudConfig?.profileUrl) {\n                window.location.href = this.cloudConfig?.profileUrl;\n            } else {\n                window.location.href = `${this.calistaService.getCollaborationUrl()}#/profile`;\n            }\n        } else {\n            this.router.navigate(['/profile']).then(()=> {\n                \n            })\n        }\n        \n    }\n}\n","<nav class=\"navbar navbar-expand-md calista-navbar\">\n    <ng-container *ngIf=\"logoItem else defaultLogo\">\n        <ng-template [ngTemplateOutlet]=\"logoItem.templateRef\"></ng-template>\n     </ng-container>   \n     <ng-template #defaultLogo>\n        <div *ngIf=\"visibleLogo\" class=\"navbar-header logo-area p-1\" (click)=\"onClickLogo($event)\" [routerLink]=\"homeRouterLink\">\n            <ng-container>\n                <img *ngIf=\"!hideLogo && logoUrl\" alt=\"Logo\" class=\"logo\" [title]=\"brandName\" [src]=\"logoUrl\"\n                    (error)=\"updateBlankImage($event)\">\n                <a *ngIf=\"!hideBrandName\" #brandLink class=\"navbar-brand\">{{brandName}}</a>\n            </ng-container>\n        </div>\n     </ng-template>\n    <ng-container *ngIf=\"navbarSearch\">\n        <ng-template [ngTemplateOutlet]=\"navbarSearch.templateRef\"></ng-template>\n    </ng-container>\n    <ng-container *ngIf=\"navbarMenu\">\n        <ng-template [ngTemplateOutlet]=\"navbarMenu.templateRef\"></ng-template>\n    </ng-container>\n    <div class=\"navbar-collapse collapse in\" id=\"navbar-collapse\" aria-expanded=\"true\">\n        <ul class=\"navbar-nav navbar-right ml-auto d-flex align-items-center\">\n            <ng-container *ngIf=\"navbarItem\">\n                <ng-template [ngTemplateOutlet]=\"navbarItem.templateRef\"></ng-template>\n            </ng-container>\n            <li class=\"nav-item\" *ngIf=\"visibleWorkspaceIcon\">\n                <div class=\"group-item\" (click)=\"onToogleWorkspace()\" [ngClass]=\"{'active': activeWorkspace}\">\n                    <div class=\"group-icon\">\n                        <svg viewBox=\"0 0 25 25\" fill=\"none\">\n                            <rect x=\"3.625\" y=\"3.20898\" width=\"7\" height=\"7\" rx=\"1\" stroke-width=\"1.5\"\n                                stroke-linecap=\"round\" />\n                            <rect x=\"3.625\" y=\"14.209\" width=\"7\" height=\"7\" rx=\"1\" stroke-width=\"1.5\"\n                                stroke-linecap=\"round\" />\n                            <rect x=\"14.625\" y=\"3.20898\" width=\"7\" height=\"7\" rx=\"1\" stroke-width=\"1.5\"\n                                stroke-linecap=\"round\" />\n                            <rect x=\"14.625\" y=\"14.209\" width=\"7\" height=\"7\" rx=\"1\" stroke-width=\"1.5\"\n                                stroke-linecap=\"round\" />\n                        </svg>\n                    </div>\n                </div>\n            </li>\n            <li id=\"user-profile\" class=\"light-blue user-profile\" *ngIf=\"username\">\n                <a class=\"dropdown-toggle\" href=\"javascript:;\" data-toggle=\"dropdown\">\n                    <img [src]=\"avatarUrl\" [alt]=\"displayName\" class=\"nav-user-photo\" (error)=\"updateImageUrl($event)\">\n                    <span class=\"user-info\" [title]=\"displayName\">\n                        <span class=\"name\">{{displayName}}</span>\n                        <span class=\"username\">\n                            <i  class=\"fa fa-key\"></i> {{username}}\n                        </span>\n                    </span>\n                </a>\n                <div class=\"dropdown-menu\">\n                    <a *ngIf=\"!hideProfileMenu\" class=\"dropdown-item\" href=\"javascript:;\" (click)=\"onViewProfile()\">\n                        <span class=\"dropdown-text\">{{'SETTING.USER_PROFILE.GENERAL_INFORMATION' | translate}}</span>\n                        <span class=\"dropdown-icon\">\n                            <svg width=\"24px\" height=\"24px\"\n                                viewBox=\"-10 0 1034 1024\">\n                                <path fill=\"#90a1b4\"\n                                    d=\"M847.127 743.364c-9.30859 0 -18.6182 -4.65527 -23.2734 -13.9639c-18.6172 -46.5449 -55.8545 -88.4365 -107.055 -121.019c-107.055 -60.5088 -269.964 -60.5088 -377.018 0c-51.2002 27.9268 -88.4365 74.4736 -107.056 121.019\n                            c0 9.30859 -13.9639 18.6172 -27.9268 13.9639c-13.9629 -4.6543 -18.6182 -18.6182 -13.9639 -27.9277c18.6182 -55.8545 65.1641 -107.055 125.673 -144.29c121.019 -69.8184 302.545 -69.8184 423.564 0c60.5088 37.2354 107.055 88.4355 125.673 144.29\n                            c4.65527 13.9648 0 23.2734 -13.9639 27.9277h-4.65527h0.000976562zM530.618 398.927c-102.4 0 -186.183 -83.7822 -186.183 -186.182c0 -102.4 83.7822 -186.182 186.183 -186.182c102.399 0 186.182 83.7812 186.182 186.182\n                            c0 102.399 -83.7822 186.182 -186.182 186.182zM530.618 68.4551c-79.127 0 -139.636 65.1641 -139.636 139.636c0 74.4727 65.1641 139.636 139.636 139.636s139.636 -65.1631 139.636 -139.636c0 -74.4717 -60.5088 -139.636 -139.636 -139.636z\" />\n                            </svg>\n                        </span>\n                    </a>\n                    <ng-container *ngIf=\"profileMenuItem\">\n                        <ng-template [ngTemplateOutlet]=\"profileMenuItem.templateRef\"></ng-template>\n                    </ng-container>    \n                    <a class=\"dropdown-submenu pull-left\">\n                        <a class=\"dropdown-item dropdown-toggle\" href=\"#\">\n                            <span class=\"dropdown-text\">\n                                {{'COMMON.MENU.LANGUAGE' | translate}} <small class=\"text-lowercase\">({{ currentLanguage | translate }})</small>\n                            </span>\n                            <span class=\"dropdown-icon\"><i class=\"lang-{{currentLanguage}}\"></i></span>\n                        </a>\n                        <div class=\"dropdown-menu\">\n                            <a class=\"dropdown-item\" href=\"javascript:;\" *ngFor=\"let lang of langs\"\n                               (click)=\"changeLanguage(lang)\" [ngClass]=\"{'active': currentLanguage===lang}\">\n                                <span class=\"dropdown-lang\">{{ lang | translate }}</span>\n                                <span class=\"dropdown-icon\"><i class=\"lang-{{lang}}\"></i></span>\n                            </a>\n                        </div>\n                    </a>\n                    <a class=\"dropdown-item\" href=\"javascript:;\" (click)=\"logout()\">\n                        <span class=\"dropdown-text\">{{'COMMON.MENU.LOGOUT' | translate}}</span>\n                        <span class=\"dropdown-icon\">\n                                <svg width=\"20px\" height=\"20px\" viewBox=\"-10 0 1034 1024\">\n                                    <path fill=\"#90a1b4\" d=\"M626.447 63.7998c12.0469 -12.0469 36.1406 -12.0469 48.1875 0l259.013 259.012c24.0938 24.0947 24.0938 66.2598 0 96.377l-259.013 259.012c-12.0469 12.0469 -36.1406 12.0469 -48.1875 0s-12.0469 -36.1416 0 -48.1885l216.847 -216.847h-451.765\n                                                            c-18.0713 0 -36.1416 -18.0713 -36.1416 -36.1406c0 -18.0703 18.0713 -36.1416 36.1416 -36.1416h457.788l-216.848 -216.847c-18.0703 -24.0938 -18.0703 -42.165 -6.02344 -60.2354zM656.565 690.247c-12.0479 0 -24.0947 -6.02441 -30.1182 -12.0469\n                                                            c-18.0713 -18.0713 -18.0713 -42.165 0 -60.2354l210.824 -210.824h-445.741c-24.0947 0 -42.165 -18.0703 -42.165 -42.165c0 -24.0938 18.0703 -42.165 42.165 -42.165h439.718l-210.824 -210.823c-18.0713 -18.0713 -18.0713 -42.165 0 -60.2354v0\n                                                            c18.0713 -18.0713 42.165 -18.0713 60.2354 0l259.012 259.012c30.1182 30.1182 30.1182 72.2822 0 102.4l-259.012 259.012c-6.02441 18.0713 -18.0713 18.0713 -24.0938 18.0713zM391.529 340.882c-18.0713 0 -30.1182 12.0469 -30.1182 30.1182\n                                                            s12.0469 30.1182 30.1182 30.1182h457.788s6.02344 0 6.02344 6.02344v6.02441l-216.847 216.847c-12.0469 12.0469 -12.0469 30.1182 0 42.165s30.1182 12.0469 42.165 0l259.012 -259.012c24.0938 -24.0938 24.0938 -60.2354 0 -84.3291l-259.012 -259.012\n                                                            c-12.0469 -12.0469 -30.1182 -12.0469 -42.165 0v0c-12.0469 12.0469 -12.0469 30.1182 0 42.165l216.847 216.847v6.02441l-6.02344 6.02344h-457.788v-0.00292969zM240.941 -14.5059c18.0703 0 36.1406 -18.0713 36.1406 -36.1416\n                                                            c0 -18.0693 -18.0713 -36.1406 -36.1406 -36.1406h-30.1182c-84.3291 0 -156.612 72.2822 -156.612 156.612v602.353c0 84.3291 72.2822 156.612 156.612 156.612h30.1182c18.0703 0 36.1406 -18.0713 36.1406 -36.1406c0 -18.0703 -18.0713 -36.1416 -36.1406 -36.1416\n                                                            h-30.1182c-48.1885 0 -84.3291 -36.1406 -84.3291 -84.3291v-602.353c0 -48.1885 36.1406 -84.3291 84.3291 -84.3291h30.1182v-0.00195312zM240.941 834.812h-30.1182c-90.3535 0 -162.635 -72.2812 -162.635 -162.635v-602.353\n                                                            c0 -90.3535 72.2812 -162.635 162.635 -162.635h30.1182c24.0938 0 42.165 18.0703 42.165 42.1641c0 24.0947 -18.0713 42.165 -42.165 42.165h-30.1182c-42.165 0 -78.3066 36.1416 -78.3066 78.3066v602.353c0 42.165 36.1416 78.3066 78.3066 78.3066h30.1182\n                                                            c24.0938 0 42.165 18.0703 42.165 42.165c0 24.0938 -18.0713 42.165 -42.165 42.165v-0.00292969zM210.824 -80.7646c-84.3291 0 -150.588 66.2588 -150.588 150.588v602.353c0 84.3291 66.2588 150.588 150.588 150.588h30.1182\n                                                            c18.0703 0 30.1172 -12.0469 30.1172 -30.1172c0 -18.0713 -12.0469 -30.1182 -30.1172 -30.1182h-30.1182c-48.1885 0 -90.3535 -42.165 -90.3535 -90.3535v-602.353c0 -48.1885 42.165 -90.3535 90.3535 -90.3535h30.1182c18.0703 0 30.1172 -12.0469 30.1172 -30.1182\n                                                            c0 -18.0703 -12.0469 -30.1172 -30.1172 -30.1172h-30.1182v0.00195312z\" />\n                                </svg>\n                        </span>\n                    </a>\n                    \n                </div>\n            </li>\n        </ul>\n    </div>\n</nav>\n","import { AfterViewInit, Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { iNet } from 'inet-core';\nimport { PluginItem } from '../app-plugin';\nexport const EVENT_MESSAGE_HANDLER = 'eventMessageHandler';\nexport const COLLABORATION_CONTEXT = 'collaboration';\nexport const EVENT_MESSSAGE = 'message';\n\n@Component({\n  selector: 'lib-plugin-view',\n  templateUrl: './plugin-view.component.html',\n  styleUrls: ['./plugin-view.component.scss']\n})\nexport class PluginViewComponent implements OnInit, OnDestroy, AfterViewInit {\n  iframeId: string = 'iframe-calista-plugin';\n  pluginUrl?: SafeResourceUrl;\n  @Input() plugin?: PluginItem;\n  @Output() loaded: EventEmitter<boolean> = new EventEmitter();\n  @Output() closed: EventEmitter<void> = new EventEmitter();\n  isNotFound = false;\n  loading = false;\n  handshake = true;\n  pluginManager = iNet.getPluginManager();\n  constructor(\n    private domSanitizer: DomSanitizer) { }\n\n  ngOnInit(): void {\n    this.connect();\n  }\n\n  ngAfterViewInit() {\n    const _window = window as any;\n    _window[EVENT_MESSAGE_HANDLER] = (e: any) => {\n      const __data = e.data || {};\n      const __eventName = __data['eventName'];\n      const __sourceId = __data['sourceId'];\n      if (!__sourceId && !__eventName) {\n        return;\n      }\n      let __result: any = {};\n      if (__data.result) {\n        if (typeof (__data.result) === 'string') {\n          __result = JSON.parse(__data.result);\n        } else if (typeof (__data.result) === 'object') {\n          __result = __data.result || {};\n        }\n      }\n      //console.log('[result]', __result);\n\n      switch (__eventName?.toUpperCase()) {\n        case 'LOADED':\n          if (__result.handshake) {\n            this.handshake = true\n            this.isNotFound = false;\n          }\n          break;\n      }\n    };\n    _window.addEventListener(EVENT_MESSSAGE, _window[EVENT_MESSAGE_HANDLER], false);\n  }\n\n  ngOnDestroy() {\n    const _window = window as any;\n    if (_window[EVENT_MESSAGE_HANDLER]) {\n      _window.removeEventListener(EVENT_MESSSAGE, _window[EVENT_MESSAGE_HANDLER], false);\n    }\n  }\n\n  iframeLoaded() {\n    const iframe:any = document.getElementById(this.iframeId);\n    if (iframe && iframe?.src && this.plugin?.url) {\n      this.loaded.emit(true);\n    }\n  }\n\n  onClose() {\n    this.closed.emit();\n  }\n\n  connect() {\n    if (this.plugin) {\n      this.isNotFound = false;\n      this.loading = false;\n      this.pluginUrl = this.domSanitizer.bypassSecurityTrustResourceUrl(this.plugin.url);\n      this.handshake = true;\n      /*\n      setTimeout(() => {\n        this.loading = false;\n        if (!this.handshake) {\n          this.isNotFound = true;\n        }\n      }, 3000)\n      */\n    }\n  }\n}\n","<div class=\"plugin-container\">\n    <div class=\"viewer\">\n        <div class=\"viewer__header\">\n            <ul class=\"calista-breadcrumb\">\n                <li (click)=\"onClose()\" style=\"text-transform: capitalize;\">\n                    {{(plugin?.source || 'SOURCE_NAME') | translate}} <i class=\"fa fa-chevron-right icon-next\"></i></li>\n                <li class=\"active\">{{(plugin?.name || 'PLUGIN_NAME') | translate}}</li>\n            </ul>\n            <div class=\"action-container\">\n                <div class=\"action-item\" (click)=\"onClose()\">\n                    <span class=\"fa fa-close icon-close\"></span>\n                </div>\n            </div>\n        </div>\n        <div class=\"viewer__body\">\n            <!--ng-container *ngIf=\"loading || isNotFound\">\n                    <div class=\"empty-container\">\n                        <div class=\"empty-message-container\">\n                            <ng-container *ngIf=\"!isNotFound else notFoundBlock\">\n                                <div class=\"empty-message\">\n                                    <div class=\"loading\"></div>\n                                </div>\n                            </ng-container>\n                            <ng-template #notFoundBlock>\n                                <div class=\"empty-message\">\n                                    <p class=\"empty-message-title\">{{'COMMON.PLUGIN.SERVICE_UNAVAILABLE' | translate}}</p>\n                                    <p>{{'COMMON.PLUGIN.SERVICE_MESSAGE_ERROR' | translate}}</p>\n                                </div>\n                            </ng-template>    \n                        </div>\n                    </div>\n            </ng-container-->\n            <iframe *ngIf=\"pluginUrl\" (load)=\"iframeLoaded()\"  allow=\"camera;microphone\" [id]=\"iframeId\" [src]=\"pluginUrl\">\n            </iframe>\n        </div>\n    </div>\n</div>","export interface PluginItem {\n    source: string,\n    name: string,\n    url: string\n}\n\nexport interface DocumentViewerPlugin {\n    source: string,\n    name: string,\n    fileUrl: string,\n    fileInfo?: FileInfomation,\n    officeViewerUrl?: string\n}\n\nexport interface FileInfomation {\n    name: string,\n    minetype?: string,\n    size?: string,\n    created?: number,\n    modified?: number\n}\n\nexport enum ViewerType {\n    PDF = 'PDF',\n    IMAGE = 'IMAGE',\n    OFFICE = 'OFFICE',\n    AUDIEO = 'AUDIO',\n    VIDEO = 'VIDEO',\n    UNKNOW = 'UNKNOW'\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { iNet } from 'inet-core';\nimport { DocumentViewerPlugin, ViewerType } from '../app-plugin';\nimport { isImage, isOffice, isPdf } from '../plugin-utils';\n\n@Component({\n  selector: 'lib-document-viewer',\n  templateUrl: './document-viewer.component.html',\n  styleUrls: ['./document-viewer.component.scss']\n})\nexport class PluginDocumentViewerComponent implements OnInit {\n  iframeId: string = 'iframe-calista-plugin-document-viewer';\n  viewerUrl?: SafeResourceUrl;\n  @Input() plugin?: DocumentViewerPlugin;\n  @Output() loaded: EventEmitter<boolean> = new EventEmitter();\n  @Output() closed: EventEmitter<void> = new EventEmitter();\n  isNotFound = false;\n  isNotSupport = false;\n  viewerType: ViewerType = ViewerType.UNKNOW;\n  type = ViewerType;\n  visibleSideBar = false;\n\n  constructor(\n    private domSanitizer: DomSanitizer) { }\n\n  ngOnInit(): void {\n    this.connect();\n  }\n\n  iframeLoaded() {\n    this.loaded.emit(true);\n  }\n\n  onClose() {\n    this.closed.emit();\n  }\n\n  connect() {\n    if (this.plugin) {\n      //this.httpClient.showLoading();\n      const fileInfo = this.plugin.fileInfo ;\n      let viewerUrl: string = this.plugin.fileUrl;\n      if (fileInfo) {\n        if (isOffice(fileInfo.name)) {\n          this.viewerType = ViewerType.OFFICE;\n          if (this.plugin?.officeViewerUrl) {\n            viewerUrl = this.getOfficeLink(this.plugin.officeViewerUrl);\n            //console.log('[viewerUrl]', viewerUrl);\n          } else {\n            throw Error('officeViewerUrl must not empty');\n          }\n        } else if (isPdf(fileInfo)) {\n          this.viewerType = ViewerType.PDF;\n          viewerUrl = this.getPdfLink(this.plugin.fileUrl);\n        } else if (isImage(fileInfo)){\n          this.viewerType = ViewerType.IMAGE;\n        } else {\n          this.isNotSupport = true; \n        }\n        this.viewerUrl = this.domSanitizer.bypassSecurityTrustResourceUrl(viewerUrl);\n      }\n      //console.log('[viewerType]', this.viewerType);\n      \n    }\n  }\n  \n  private getPdfLink(fileUrl: string): string {\n    return `${iNet.getPUrl('common/page/pdf/viewer')}?url=${encodeURIComponent(fileUrl)}`\n  }\n\n  private getOfficeLink(serviceUrl: string): string {\n    return `${iNet.getPUrl('common/page/office/viewer')}?url=${encodeURIComponent(serviceUrl)}`\n  }\n\n  onError($event: any) {\n    this.isNotFound = true;\n  }\n\n  toogleSidebar() {\n    this.visibleSideBar = !this.visibleSideBar;\n  }\n\n}\n\n","<div class=\"plugin-container\">\n    <div class=\"viewer\">\n        <div class=\"viewer__header\">\n            <ul class=\"calista-breadcrumb\">\n                <li (click)=\"onClose()\" style=\"text-transform: capitalize;\">\n                    {{plugin?.source}} <i class=\"fa fa-chevron-right icon-next\"></i></li>\n                <li class=\"active\">{{plugin?.name}}</li>\n            </ul>\n            <div class=\"action-container\">\n                <!--div class=\"action-item\" [ngClass]=\"{'active': visibleSideBar }\" (click)=\"toogleSidebar()\">\n                    <span class=\"fa fa fa-window-maximize icon-group\"></span>\n                </div-->\n                <div class=\"action-item\" (click)=\"onClose()\">\n                    <span class=\"fa fa-close icon-close\"></span>\n                </div>\n            </div>\n        </div>\n        <div class=\"viewer__body\">\n            <ng-container *ngIf=\"(isNotFound || isNotSupport) else viewerBlock\">\n                    <div class=\"empty-container\">\n                        <div class=\"empty-message-container\">\n                            <div class=\"empty-box\">\n                            <ng-container *ngIf=\"isNotSupport;else notFoundBlock\">\n                                <div class=\"empty-image\">\n                                    <i class=\"icon-not-support fa fa-file-text-o\"></i>\n                                </div>\n                                <div class=\"empty-message\">\n                                    <p class=\"empty-message-title\">{{'Không thể mở tài liệu' | translate}}</p>\n                                    <p>{{'Tài liệu không có bản xem trước' | translate}}</p>\n                                    <p *ngIf=\"plugin?.fileUrl\">\n                                        <a download [href]=\"plugin?.fileUrl\">Tải xuống</a>\n                                    </p>\n                                </div>\n                            </ng-container>\n                            <ng-template #notFoundBlock>\n                                <div class=\"empty-image\">\n                                    <i class=\"icon-search fa fa-search\"></i>\n                                </div>\n                                <div class=\"empty-message\">\n                                    <p class=\"empty-message-title\">{{'Không thể mở tài liệu' | translate}}</p>\n                                    <p>{{'Tài liệu đã bị xóa hoặc không có quyền' | translate}}</p>\n                                </div>\n                            </ng-template>\n                            </div>\n                        </div>\n                    </div>\n            </ng-container>\n             <ng-template #viewerBlock>\n                    <ng-container *ngIf=\"viewerType===type.PDF || viewerType===type.OFFICE\">\n                        <iframe *ngIf=\"viewerUrl\" (load)=\"iframeLoaded()\" [id]=\"iframeId\" [src]=\"viewerUrl\"></iframe>\n                    </ng-container>\n                    <ng-container *ngIf=\"viewerType===type.IMAGE\">\n                        <div class=\"image-viewer\">\n                            <img [src]=\"viewerUrl\" (error)=\"onError($event)\" />\n                        </div>\n                    </ng-container>\n             </ng-template>   \n        </div>\n    </div>\n</div>","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { EnvelopBody, WebSocketClientService } from 'inet-core';\nimport { Subscription } from 'rxjs';\nimport { PluginItem, DocumentViewerPlugin } from '../app-plugin';\nimport { CalistaPluginService } from '../calista-plugin.service';\nimport { Base64 } from 'js-base64';\n\nexport const APP_CHAT_ID = 'iChat';\nexport const URI_MESSAGE_PREFIX = 'uri_message';\nexport const VIDEO_CONFERENCE_PREFIX = 'video_conference';\nexport const CONFERENCE_MESSAGE = `${URI_MESSAGE_PREFIX}:${VIDEO_CONFERENCE_PREFIX}`;\n\n@Component({\n  selector: 'lib-plugin-sub',\n  templateUrl: './plugin-sub.component.html',\n  styleUrls: ['./plugin-sub.component.css']\n})\nexport class PluginSubComponent implements OnInit, OnDestroy {\n  visiblePlugin: boolean = false;\n  visibleViewer: boolean = false;\n  plugin?: PluginItem;\n  pluginViewer?: DocumentViewerPlugin;\n  private socketSub$?: Subscription;\n  constructor(\n    private socketService: WebSocketClientService,\n    private calistaPlugin: CalistaPluginService) { }\n\n  ngOnInit(): void {\n    /*\n    setTimeout(()=> {\n      this.testSignal();\n      setTimeout(() => {\n        this.calistaPlugin.clearBadgeIconByApp('iChat');\n      }, 3000);\n    }, 3000)\n    */\n    \n\n    this.socketSub$ = this.socketService.onMessage.subscribe((message: EnvelopBody) => {\n      if (message && message.application === APP_CHAT_ID) {\n        if (!this.visiblePlugin) {\n          if (this.isConferenceMessage(message.message?.alert) || this.isConferenceMessage(message.message?.content)) {\n            this.calistaPlugin.broadcastMessage(Base64.encode(JSON.stringify(message)))\n          }/* else {\n            this.calistaPlugin.chatWith(message.sender);\n          }\n          */\n        }\n      }\n      //Update signal to notification on the menu\n      this.calistaPlugin.updateSignal(message);\n    \n    });\n    //console.log('[ngOnInit]--PluginSubComponent--', )\n    this.calistaPlugin.pluginView$.subscribe((plugin: PluginItem) => {\n      this.visibleViewer = false;\n      this.visiblePlugin = !!plugin;\n      this.plugin = plugin;\n    });\n\n    this.calistaPlugin.documentView$.subscribe((plugin: DocumentViewerPlugin) => {\n      this.visiblePlugin = false;\n      this.visibleViewer = !!plugin;\n      this.pluginViewer = plugin;\n    });\n\n    this.calistaPlugin.closeSubject$.subscribe(() => {\n      this.onClose();\n    })\n  }\n\n  testSignal() {\n    \n    let testMessage: any = { \"alias\": [\"dev@calista-dev.inetcloud.vn\"], \"uuid\": \"6493fe4d9b1f5d4a6e1f4944\", \"ttl\": 3600, \"application\": \"iChat\", \"organization\": \"\", \"sender\": \"ngontt@calista-dev.inetcloud.vn\", \"sent\": 1687420493064, \"messageType\": \"ACK\", \"message\": { \"duration\": \"0\", \"alert\": \"ABC\", \"content\": \"ABC\", \"socialOrgid\": \"034.01.01.M01\" } }\n    this.calistaPlugin.updateSignal(testMessage);\n    \n  }\n\n  ngOnDestroy(): void {\n    if (this.socketSub$) {\n      this.socketSub$.unsubscribe();\n    }\n  }\n\n  onClose() {\n    this.visibleViewer = false;\n    this.visiblePlugin = false;\n    this.plugin = undefined;\n    this.pluginViewer = undefined;\n  }\n\n  /*\n  Returns true if the passed value is a conference message.\n  */\n  private isConferenceMessage(value: string): boolean {\n    return value?.startsWith(CONFERENCE_MESSAGE);\n  }\n\n}","<lib-plugin-view *ngIf=\"visiblePlugin\" [plugin]=\"plugin\" (closed)=\"onClose()\"></lib-plugin-view>\n<lib-document-viewer *ngIf=\"visibleViewer\" [plugin]=\"pluginViewer\" (closed)=\"onClose()\"></lib-document-viewer>","import {\n    Component,\n    ElementRef,\n    EventEmitter,\n    Input,\n    OnChanges,\n    Output,\n    SimpleChanges\n} from \"@angular/core\";\n\n@Component({\n    selector: 'app-calista-side-nav',\n    template: ``\n})\n\nexport class AbstractCalistaSideNavComponent implements OnChanges {\n    @Input() opened: boolean = false;\n    @Output() onClose = new EventEmitter<boolean>();\n    @Output() onClear = new EventEmitter<boolean>();\n    @Output() onLoad = new EventEmitter<boolean>();\n    private overflowCls = 'overflow-hidden';\n    constructor(public elementRef: ElementRef) { }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if ('opened' in changes) {\n            const currentValue = changes['opened'][\"currentValue\"];\n            setTimeout(() => {\n                if (currentValue) {\n                    this.open();\n                } else if (changes['opened']['previousValue'] != currentValue) {\n                    this.close();\n                }\n            }, 1)\n        }\n    }\n\n    open() {\n        if(!document.body.classList.contains(this.overflowCls)) {\n            document.body.classList.add(this.overflowCls);\n        }\n    }\n\n    close() {\n        if(document.body.classList.contains(this.overflowCls)) {\n            document.body.classList.remove(this.overflowCls);\n        }\n        this.opened = false;\n        this.onClose.emit(this.opened);\n    }\n}\n","import {\n    AfterViewInit,\n    Component, ElementRef, OnDestroy, OnInit, SimpleChanges\n} from '@angular/core';\nimport { iNet } from 'inet-core';\nimport { AbstractCalistaSideNavComponent } from '../abstract-calista-side-nav.component';\nimport { CalistaPluginService } from '../plugin/calista-plugin.service';\nexport const EVENT_MESSAGE_HANDLER = 'eventMessageHandler';\nexport const COLLABORATION_CONTEXT = 'collaboration';\nexport const EVENT_MESSSAGE = 'message';\n@Component({\n    selector: 'app-workspace-side-nav',\n    templateUrl: './workspace-side-nav.component.html',\n    styles: [`\n        iframe {\n            width: 100%;\n            border: none;\n            overflow: hidden;\n        }\n    `]\n})\nexport class WorkspaceSideNavComponent extends AbstractCalistaSideNavComponent implements OnInit, OnDestroy, AfterViewInit {\n    url: string = '';\n    pluginManager = iNet.getPluginManager();\n    iframeId: string = 'iframe-workspace-plugin';\n    constructor(\n        public elementRef: ElementRef,\n        private calistaPlugin: CalistaPluginService) {\n\n        super(elementRef);\n    }\n\n    ngOnInit() {\n        this.url = this.calistaPlugin.getCollaborationUrl() + '#/plugin/workspace'\n    }\n\n    ngOnDestroy(): void {\n        this.close();\n        const _window = window as any;\n        if (_window[EVENT_MESSAGE_HANDLER]) {\n            _window.removeEventListener(EVENT_MESSSAGE, _window[EVENT_MESSAGE_HANDLER], false);\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        //const currentValue = changes['opened'][\"currentValue\"];\n    }\n\n    ngAfterViewInit() {\n        const _window = window as any;\n        _window[EVENT_MESSAGE_HANDLER] = (e: any) => {\n            const __data = e.data || {};\n            const __eventName = __data['eventName'];\n            const __sourceId = __data['sourceId'];\n            if (!__sourceId && __sourceId !== COLLABORATION_CONTEXT || !__eventName) {\n                return;\n            }\n            let __result: any = {};\n            if (__data.result) {\n                if (typeof (__data.result) === 'string') {\n                    __result = JSON.parse(__data.result);\n                } else if (typeof (__data.result) === 'object') {\n                    __result = __data.result || {};\n                }\n            }\n            if (__eventName?.toUpperCase() === 'OPEN_URL' && __result.url) {\n                window.location.href = __result.url;\n            }\n        };\n        _window.addEventListener(EVENT_MESSSAGE, _window[EVENT_MESSAGE_HANDLER], false);\n    }\n}\n","<div class=\"slide-nav\" [ngClass]=\"{'opened': opened}\">\n    <ul class=\"list-box\" *ngIf=\"opened\">\n        <iframe *ngIf=\"url\" [id]=\"iframeId\" [src]=\"url | safe\" scrolling=\"no\" style=\"height: 100%;\"></iframe>\n    </ul>\n</div>\n","import { AfterViewInit, Component, Input, OnInit } from '@angular/core';\nimport { CalistaMenuService } from '../calista-menu.service';\nimport { COLLABORATION_CONTEXT, SystemApplication } from '../calista.interface';\nimport { iNet } from 'inet-core';\nimport { ActionMenuDirective } from '../../directive/action-menu.directive';\n\n@Component({\n  selector: 'lib-calista-menu',\n  templateUrl: './calista-menu.component.html',\n  styleUrls: ['./calista-menu.component.scss']\n})\nexport class CalistaMenuComponent implements OnInit, AfterViewInit {\n  @Input() actionMenu?: ActionMenuDirective;\n  @Input() calista: boolean = false;\n  @Input() excludeApps: string[] = [];\n  @Input() currentModule: string = (iNet.getWebContext() !== COLLABORATION_CONTEXT) ? iNet.getImageFolder()?.split('/').pop() || '' : '';\n  @Input() appSameContext: boolean = false;\n  //This method converts an object containing application objects\n  @Input() convertApps?: (apps: SystemApplication[]) => SystemApplication[];\n\n  webContext = iNet.getWebContext();\n  apps: SystemApplication[] = [];\n  errorClass = 'app-calista-error';\n\n  constructor(private menuService: CalistaMenuService) {\n\n  }\n  ngOnInit(): void {\n    this.listApplication();\n  }\n\n  ngAfterViewInit(): void {\n\n  }\n\n  private listApplication(): void {\n    this.menuService.listApplication(this.calista, this.excludeApps).subscribe((apps: SystemApplication[]) => {\n      let items = apps.filter(app => {\n        if (app.isModule) {\n          return !app.hidden && (this.appSameContext ? app.firmContext === iNet.getWebContext() : true) && !(apps.filter((_item) => {\n            return !_item.isModule;\n          }).some((_item) => {\n            return app.module === _item.module;\n          }));\n        }\n        return !app.hidden;\n      });\n      if (this.convertApps) {\n        items = this.convertApps(items);\n      }\n\n      items.forEach((item) => {\n        item.active = (this.currentModule === item.module);\n      })\n      if (!items.some((_item) => _item.active)) {\n        let activeItem = items.find((_item) => _item.webContext===this.webContext);\n        if (activeItem) {\n          activeItem.active = true\n        }\n      }\n      this.apps = items;\n    })\n  }\n\n  openApp(app: SystemApplication) {\n    this.menuService.openApp(app);\n  }\n\n  onError($event: any) {\n    const element = $event.target;\n    if (element) {\n      element.src = 'data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==';\n      let classList = element.classList;\n      if (!classList.contains(this.errorClass)) {\n        classList.add(this.errorClass);\n      }\n    }\n  }\n\n  onAdd() {\n\n  }\n}\n","<div class=\"actions-nav h-100\" [ngClass]=\"{'has-action-menu': actionMenu }\">\n    <div *ngFor=\"let app of apps\" class=\"actions-nav__item custom-href\" \n    [ngClass]=\"{'active' : app?.active}\"\n     (click)=\"openApp(app)\">\n        <a class=\"custom-href\">\n            <div class=\"actions-nav__icon\">\n                <img class=\"app-calista-icon\" [src]=\"app.icon\" (error)=\"onError($event)\" />\n                <span [id]=\"app?.badgeId\" class=\"badge\"></span>\n            </div>\n            <span class=\"actions-nav__txt\">{{app.name}}</span>\n        </a>\n    </div>\n</div>\n<ng-container *ngIf=\"actionMenu\">\n    <ng-template [ngTemplateOutlet]=\"actionMenu.templateRef\"></ng-template>\n</ng-container>","import {\n    AfterViewInit,\n    Component,\n    ContentChild,\n    EventEmitter,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n    ViewChild\n} from '@angular/core';\nimport { NavigationEnd, Router } from \"@angular/router\";\nimport { CalistaNavbarComponent } from \"./navbar/calista-navbar.component\";\nimport { Subscription } from \"rxjs\";\nimport { filter, first } from \"rxjs/operators\";\nimport { iNet, SecurityService } from \"inet-core\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { select, Store } from '@ngrx/store';\nimport { IAppState } from '../../core/store/state/app.state';\nimport { languageSelector } from '../../core/store/selectors/settings.selector';\nimport * as SettingsActions from \"../../core/store/actions/settings.action\";\nimport { MenuDirective } from '../directive/menu.directive';\nimport { ToolbarDirective } from '../directive/toolbar.directive';\nimport { NavbarItemDirective } from '../directive/navbar-item.directive';\nimport { ProfileItemDirective } from '../directive/profile-item.directive';\nimport { NavbarSearchDirective } from '../directive/navbar-search.directive';\nimport { NavbarMenuDirective } from '../directive/navbar-menu.directive';\nimport { LogoDirective } from '../directive/logo.directive';\nimport { COLLABORATION_CONTEXT, SystemApplication } from './calista.interface';\nimport { ActionMenuDirective } from '../directive/action-menu.directive';\n\n@Component({\n    selector: 'app-calista-layout',\n    templateUrl: './calista-layout.component.html'\n})\nexport class CalistaLayoutComponent implements OnInit, OnDestroy, AfterViewInit {\n    @Input('theme') themeClass: string = 'theme-calista';\n    @Input() excludeApps: string[] = [];\n    @Input() currentModule: string = (iNet.getWebContext() !== COLLABORATION_CONTEXT) ? iNet.getImageFolder()?.split('/').pop() || '' : '';\n    @ContentChild(MenuDirective) menu?: MenuDirective;\n    @ContentChild(ToolbarDirective) toolbar?: ToolbarDirective;\n\n    @ContentChild(NavbarItemDirective) navbarItem?: NavbarItemDirective;\n    @ContentChild(ProfileItemDirective) profileMenuItem?: ProfileItemDirective;\n    @ContentChild(NavbarSearchDirective) navbarSearch?: NavbarSearchDirective;\n    @ContentChild(NavbarMenuDirective) navbarMenu?: NavbarMenuDirective;\n    @ContentChild(LogoDirective) logoItem?: LogoDirective;\n    @ContentChild(ActionMenuDirective) actionMenu?: ActionMenuDirective;\n\n    \n    // @Input('homeRouterLink') homeRouterLink: string = '';\n    @Input() calista: boolean = false;\n    @Input() appName?: string;\n    @Input() hideToggler: boolean = false;\n    @Input() hideTogglerButton: boolean = false;\n    @Input() visibleNavbar: boolean = true;\n    @Input() visibleMenu: boolean = true;\n    @Input() expandedMenu: boolean = false;\n    @Input() expandedSlider: boolean = false;\n    @Input() expandedMessageSlider: boolean = false;\n    @Input() expandedUserLogSlider: boolean = false;\n    @Input() expandedAppSlider: boolean = false;\n    @Input() expandedSocialSlider: boolean = false;\n    @Input() expandedChatSlider: boolean = false;\n\n    @Input() hideSearch: boolean = false;\n    @Input() hideCompanyMenu: boolean = false;\n    @Input() hideProfileMenu: boolean = false;\n    @Input() hideBrandName: boolean = true;\n    @Input() hideLogo: boolean = false;\n    @Input() visibleOverlay: boolean = false;\n    @Input() fullScreenLayout: boolean = false;\n    @Input() hideWorkspaceMenu: boolean = true;\n\n    @Input() fullLayoutWithUrls: Array<string> = [];\n    @Output() routeChange = new EventEmitter();\n    @Output() clickLogo = new EventEmitter<string>();\n    @Output() clickWorkspaceMenu = new EventEmitter<void>();\n\n    @Input() visibleToolbar: boolean = false;\n    @Input() visibleChatIcon: boolean = true;\n    @Input() visibleMessageIcon: boolean = true;\n    @Input() visibleUserLogIcon: boolean = true;\n    @Input() visibleAppIcon: boolean = true;\n    @Input() visibleNoteIcon: boolean = false;\n    @Input() visibleSearch: boolean = false;\n    @Input() visibleWorkspaceIcon: boolean = true;\n    @Input() appSameContext: boolean = false;\n    @Input() languages: string[] = ['vi', 'en'];//system/language/list\n    @Input() convertApps?: (apps: SystemApplication[]) => SystemApplication[];\n\n    private _router?: Subscription;\n    workspaceOpened: boolean = false;\n    \n    @ViewChild(CalistaNavbarComponent) navbarComponent!: CalistaNavbarComponent;\n\n    locale: string = iNet.getParam('locale');\n    constructor(private router: Router,\n        private translate: TranslateService,\n        private store: Store<IAppState>,) {\n    }\n\n    ngOnInit() {\n        this.translate.addLangs(this.languages); //Languages Support\n        this.store.pipe(\n            select(languageSelector),\n            first()\n        ).subscribe(lang => {\n            if (this.translate.getLangs().includes(this.locale)) {\n                lang = this.locale;\n            }\n            this.store.dispatch(SettingsActions.changeLanguage({ language: lang }));\n        }).unsubscribe();\n\n        if (window.localStorage) {\n            this.expandedMenu = (window.localStorage.getItem('expandedMenu') === '1');\n        }\n        this.router.events.pipe(\n            filter(event => event instanceof NavigationEnd),\n        ).subscribe((e: NavigationEnd | any) => {\n            this.onChangeUrl(e.url);\n        });\n        /*\n        if (this.visibleChatIcon) {\n            this.visibleChatIcon = this.isUser();\n        }\n        if (this.visibleMessageIcon) {\n            this.visibleMessageIcon = this.isUser();\n        }\n        if (this.visibleAppIcon) {\n            this.visibleAppIcon = this.isUser();\n        }\n        */\n    }\n    /*\n    private isUser(): boolean {\n        if (!iNet.getUserName()) {\n            return false;\n        }\n        return this.securityService.hasRole('firmuser,firm_user,community');\n    }\n    */\n\n    private onChangeUrl(url: string) {\n        this.hideToggler = !this.visibleMenu;\n        this.routeChange.emit({\n            url: url,\n            visibleMenu: this.visibleMenu,\n            hideToggler: this.hideToggler,\n            expandedMenu: this.expandedMenu,\n            layout: this\n        });\n    }\n\n    ngAfterViewInit() {\n        //console.log('[actionMenu]', this.actionMenu)\n    }\n\n    ngOnDestroy(): void {\n        if (this._router) {\n            this._router.unsubscribe();\n        }\n    }\n\n    //====================Message count=================\n    /*\n    onClearMessage($event: any) {\n        if (this.navbarComponent) {\n            this.navbarComponent.setMessageCount('');\n        }\n    }\n\n    onLoadMessage($event: any) {\n        if (this.navbarComponent) {\n            this.navbarComponent.countMessage();\n        }\n    }\n    */\n\n    onClickLogo($event: any) {\n        //this.clickLogo.emit(this.homeRouterLink);\n    }\n\n    onClickWorkspaceMenu() {\n        this.clickWorkspaceMenu.emit();\n    }\n\n    onToogleWorkspace($event: boolean) {\n        this.workspaceOpened = !!$event;\n        //console.log(this.workspaceOpened);\n        /*\n        if (!!$event) {\n            window.location.href = `${this.calistaPluginService.getCollaborationUrl()}#/workspace`;\n        }\n        */\n    }\n\n}\n","<div id=\"container\" [class]=\"themeClass\" [ngClass]=\"{'mainnav-lg': expandedMenu, 'mainnav-sm': !expandedMenu, 'has-menu': visibleMenu }\">\n    <div toastContainer></div>\n    <app-calista-navbar *ngIf=\"visibleNavbar\" (clickLogo)=\"onClickLogo($event)\" (clickWorkspaceMenu)=\"onClickWorkspaceMenu()\"\n                      [hideSearch]=\"hideSearch\" [applicationName]=\"appName\"\n                      [navbarItem]=\"navbarItem\" [profileMenuItem]=\"profileMenuItem\"\n                      [navbarMenu]=\"navbarMenu\" [navbarSearch]=\"navbarSearch\" \n                      [logoItem]=\"logoItem\" [calista]=\"calista\"\n                      [visibleAppIcon]=\"visibleAppIcon\" [visibleChatIcon]=\"visibleChatIcon\"\n                      [visibleMessageIcon]=\"visibleMessageIcon\" [visibleNoteIcon]=\"visibleNoteIcon\"\n                      [visibleSearch]=\"visibleSearch\" [visibleUserLogIcon]=\"visibleUserLogIcon\"\n                      [hideToggler]=\"hideToggler\" [hideTogglerButton]=\"hideTogglerButton\" \n                      [hideBrandName]=\"hideBrandName\" [hideLogo]=\"hideLogo\" \n                      [hideCompanyMenu]=\"hideCompanyMenu\" [hideProfileMenu]=\"hideProfileMenu\" (toogleWorkspace)=\"onToogleWorkspace($event)\"\n                      [visibleWorkspaceIcon]=\"visibleWorkspaceIcon && calista\" [hideWorkspaceMenu]=\"hideWorkspaceMenu\">\n    </app-calista-navbar>\n    <nav id=\"mainnav-container\" *ngIf=\"visibleMenu\" [ngClass]=\"{'menu-has-navbar' : visibleNavbar}\">\n        <div id=\"mainnav\">\n            <ng-container *ngIf=\"menu else defaultMenu\">\n                <ng-template [ngTemplateOutlet]=\"menu.templateRef\"></ng-template>\n            </ng-container>\n            <ng-template #defaultMenu>\n                <lib-calista-menu [actionMenu]=\"actionMenu\" [convertApps]=\"convertApps\" [excludeApps]=\"excludeApps\" [calista]=\"calista\" [currentModule]=\"currentModule\" [appSameContext]=\"appSameContext\"></lib-calista-menu>\n            </ng-template>\n        </div>\n    </nav>\n    <app-workspace-side-nav [opened]=\"workspaceOpened\"></app-workspace-side-nav>\n\n    <div id=\"content-container\" [ngClass]=\"{'pl-0': !visibleMenu , 'tb-visible': !!toolbar && visibleToolbar, 'has-navbar' : visibleNavbar}\">\n        <ng-container *ngIf=\"toolbar\">\n            <ng-template [ngTemplateOutlet]=\"toolbar.templateRef\"></ng-template>\n        </ng-container>\n        <lib-plugin-sub></lib-plugin-sub>\n        <router-outlet></router-outlet>\n        <div id=\"loading-indicator\" title=\"{{'INDICATOR.PROCESSING' | translate}}\">\n            <span>{{'INDICATOR.PROCESSING' | translate}}</span>\n        </div>\n    </div>\n</div>\n","import { FormGroup } from '@angular/forms';\n\n// custom validator to check that two fields match\nexport function MustMatch(controlName: string, matchingControlName: string) {\n    return (formGroup: FormGroup) => {\n        const control = formGroup.controls[controlName];\n        const matchingControl = formGroup.controls[matchingControlName];\n\n        if (matchingControl.errors && !matchingControl.errors['mustMatch']) {\n            // return if another validator has already found an error on the matchingControl\n            return;\n        }\n\n        // set error on matchingControl if validation fails\n        if (control.value !== matchingControl.value) {\n            matchingControl.setErrors({ mustMatch: true });\n        } else {\n            matchingControl.setErrors(null);\n        }\n    }\n}\n","import {Injectable} from '@angular/core';\r\nimport {HttpClientService, iNet} from \"inet-core\";\r\nimport {Observable} from \"rxjs\";\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ProfileService {\r\n\r\n  private url = {\r\n    upload_photo: iNet.getPUrl('system/userprofile/photoupdate')\r\n  }\r\n  constructor(private http: HttpClientService) {\r\n  }\r\n\r\n  uploadPhoto(formData: FormData): Observable<any> {\r\n    this.http.showLoading();\r\n    return this.http.post(this.url.upload_photo, formData);\r\n  }\r\n\r\n}\r\n","import { Component, ElementRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\nimport { CoreService, ErrorMessage, HttpClientService, iNet, NotificationService, UserProfile, UserProfileService } from \"inet-core\";\nimport { MustMatch } from \"./must-match.validator\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { ProfileService } from \"../../profile/profile.service\";\nimport { IAppState } from '../../../../core/store/state/app.state';\nimport { Store } from '@ngrx/store';\nimport * as SettingsActions from \"../../../../core/store/actions/settings.action\";\nimport { CropperAvatarDialogComponent } from 'inet-ui';\nexport const USER_PROFILE_KEY = 'SETTING.USER_PROFILE';\n@Component({\n  selector: 'lib-user-profile',\n  templateUrl: './user-profile.component.html',\n  styleUrls: ['./user-profile.component.scss']\n})\nexport class UserProfileComponent implements OnInit {\n\n  tabIndex = 1;\n  profile?: Profile;\n  frmProfile = this.fb.group({\n    lastName: ['', Validators.required],\n    middleName: ['', null],\n    firstName: ['', Validators.required],\n    email: ['', [Validators.email]],\n    primaryEmail: ['', [Validators.email]],\n    phone: ['', [Validators.required,Validators.pattern(/^[0-9]{2,24}$/)]],\n    officePhone: ['', [Validators.pattern(/^[0-9]{2,24}$/)]],\n    address: ['',null],\n    disabled: false,\n  });\n\n  frmChangePassword = this.fb.group({\n    password: ['', Validators.required],\n    newPassword: ['', [Validators.required, Validators.minLength(8), Validators.pattern(/^[\\x00-\\x7F]{0,}$/)]],\n    confirmNewPassword: ['', Validators.required]\n  }, {\n    validator: MustMatch('newPassword', 'confirmNewPassword')\n  });\n\n  @ViewChild('userPhotoFrm') photoFrmElementRef!: ElementRef;\n  @ViewChild('fileAvatar') fileUpload!: ElementRef;\n  imageAvatarUrl?: string;\n  internalUser = false;\n  title: string = '';\n  passwordError: string = '';\n  @ViewChild(CropperAvatarDialogComponent) cropperAvatarDialog!: CropperAvatarDialogComponent;\n\n  constructor(private fb: FormBuilder,\n    private userService: UserProfileService,\n    private translate: TranslateService,\n    private toasterService: NotificationService,\n    private coreService: CoreService,\n    private profileService: ProfileService,\n    private http: HttpClientService,\n    private store: Store<IAppState>,\n  ) {\n  }\n\n  ngOnInit() {\n    //this.frmProfile.disable();\n    this.frmProfile.enable();\n    this.frmChangePassword.controls['newPassword'].valueChanges.subscribe(data => {\n      this.passwordError = '';\n    })\n    this.loadProfile();\n    this.translate.stream(`${USER_PROFILE_KEY}.GENERAL_INFORMATION`).subscribe((v)=> {\n      this.title = v\n    })\n  }\n\n  loadProfile() {\n    this.http.showLoading();\n    this.userService.getAvatarUrl().then(url => {\n      this.imageAvatarUrl = url;\n    });\n\n    this.userService.getProfile().subscribe({\n      next: (profile: any) => {\n        this.patchForm(profile);\n      },\n      error: () => {\n        this.http.hideLoading();\n      }\n    }).add(() => {\n      this.http.hideLoading();\n    });\n  }\n\n  private patchForm(profile: any) {\n    if (profile.fname) {\n      profile.firstName = profile.fname\n    }\n    if (profile.mname) {\n      profile.middleName = profile.mname;\n    }\n    if (profile.lname) {\n      profile.lastName = profile.lname;\n    }\n    this.frmProfile.patchValue(profile);\n    this.profile = <Profile>profile;\n    this.profile.fullName = [this.profile.firstName, this.profile.middleName, this.profile.lastName].join(' ');\n    this.internalUser = !!this.profile.password;\n  }\n\n  updatePassword() {\n    const formData = this.frmChangePassword.getRawValue();\n    if (formData.password === formData.newPassword) {\n      const NEW_PASSWORD_INVALID = `${USER_PROFILE_KEY}.NEW_PASSWORD_INVALID`;\n      this.translate.get([NEW_PASSWORD_INVALID]).subscribe(res => {\n        this.toasterService.showMessage(res[NEW_PASSWORD_INVALID], 'error', this.title);\n      })\n    } else if (this.frmChangePassword.valid) {\n      this.userService.changePassword({\n        oldpass: formData?.password,\n        newpass: formData?.newPassword,\n        confirmpass: formData?.confirmNewPassword,\n      }).subscribe(\n        (data: any) => {\n          if (ErrorMessage.TYPE !== data.type) {\n            if (\"SUCCESS\" === data.uuid) {\n              this.frmChangePassword.reset();\n              this.toasterService.showMessage(`${USER_PROFILE_KEY}.CHANGE_PASSWORD_SUCCESSFUL_MSG`, 'success', this.title)\n            } else {\n              this.toasterService.showMessage(`${USER_PROFILE_KEY}.CURRENT_PASSWORD_INCORRECT`, 'error', this.title);\n            }\n          } else {\n            if (data?.errors && data?.errors.length > 0) {\n              let errors = data.errors[0].message.replaceAll(\")\", \"\");\n              let errorsValid = errors.split('(');\n              this.passwordError = this.translate.instant(`${USER_PROFILE_KEY}.${errorsValid[0]}`, { quality: errorsValid[1]});\n              this.toasterService.showMessage(this.translate.instant(`${USER_PROFILE_KEY}.PASSWORD_NOT_STRONG_ENOUGH`), 'error', this.title);\n            } else {\n              this.toasterService.showMessage(this.translate.instant(`${USER_PROFILE_KEY}.CHANGE_PASSWORD_ERROR_MSG`), 'error', this.title);\n            }\n          }\n        }\n      );\n    }\n  }\n\n\n  logout() {\n    if (this.coreService.getEnvironment().production) {\n      this.coreService.logout();\n    }\n  }\n\n  updateProfile() {\n    if (this.frmProfile.valid && this.profile) {\n      //console.log(this.frmProfile.getRawValue());\n      let formData: any = this.frmProfile.getRawValue();\n      let userProfile: any = { ...this.profile, ...formData };\n\n      userProfile.mname = formData.middleName || ' ';\n      userProfile.fname = formData.firstName;\n      userProfile.lname = formData.lastName;\n\n      userProfile.fullName = [userProfile.firstName, userProfile.middleName, userProfile.lastName].filter((v) => !!v).join(' ');\n\n      //userProfile.fullname= userProfile.fullName;\n\n      if (formData.mobilePhone) {\n        userProfile.phone = formData.mobilePhone;\n      }\n      if (formData.email) {\n        userProfile.primaryEmail = formData.email;\n      }\n\n      delete userProfile.others;\n      delete userProfile.fullname;\n      delete userProfile['otpCtx'];\n\n      this.userService.update(userProfile).subscribe((data: any) => {\n        if (ErrorMessage.TYPE !== data.type) {\n          if( this.internalUser) {\n            data.password= 'INTERNAL';\n          }\n          this.patchForm(data);\n          \n          this.store.dispatch(SettingsActions.updateProfile({ displayName: userProfile.fullName }));\n          const UPDATE_PROFILE_SUCCESSFUL_MSG = `${USER_PROFILE_KEY}.UPDATE_PROFILE_SUCCESSFUL_MSG`;\n          this.toasterService.showMessage(this.translate.instant(UPDATE_PROFILE_SUCCESSFUL_MSG), 'success', this.title);\n\n        } else {\n          this.toasterService.showMessage(this.translate.instant(`${USER_PROFILE_KEY}.UPDATE_PROFILE_ERROR_MSG`), 'error', this.title);\n        }\n      }\n      );\n    }\n  }\n\n  onSelectFile($event?: any) {\n    if (this.fileUpload && this.fileUpload.nativeElement) {\n      this.fileUpload.nativeElement.click();\n    }\n  }\n\n  changeFileAvatar($event: any) {\n    \n    const files = $event.target.files;\n    if (files.length > 0) {\n      /*\n      const image = files[0];\n      image['value'] = image;\n      if (image) {\n        const reader = new FileReader();\n        reader.onload = (e: any) => {\n          image.url = e.target.result;\n          //this.imageAvatarUrl = image.url;\n        };\n        reader.readAsDataURL(image);\n      }*/\n\n\n      this.cropperAvatarDialog.show($event);\n    }\n  }\n\n  updateBlankImage(element: Element) {\n    if (element) {\n      if (element && !element?.classList?.contains('default-avatar')) {\n        element.classList.add('default-avatar');\n      }\n    }\n  }\n\n  private updateAvatar() {\n    const formData = new FormData(this.photoFrmElementRef.nativeElement);\n    const name = this.fileUpload.nativeElement.name;\n    formData.delete(name);\n    //Upload Blob (cropped image) instead of file.\n    if (this.cropperAvatarDialog) {\n      const blob = this.cropperAvatarDialog.getImageBlob();\n      if (blob) {\n        formData.append(name, blob);\n      }\n    }\n\n    this.profileService.uploadPhoto(formData).subscribe((data: any) => {\n      if (ErrorMessage.TYPE !== data.type) {\n        this.fileUpload.nativeElement.value = '';\n        this.store.dispatch(SettingsActions.updateAvatar());\n        const IMAGE_UPDATE_SUCCESSFUL_MSG = `${USER_PROFILE_KEY}.IMAGE_UPDATE_SUCCESSFUL_MSG`;\n        this.translate.get([IMAGE_UPDATE_SUCCESSFUL_MSG]).subscribe(res => {\n          this.toasterService.showMessage(res[IMAGE_UPDATE_SUCCESSFUL_MSG], 'success', this.title);\n        }).unsubscribe();\n      } else {\n        const IMAGE_UPDATE_ERROR_MSG = `${USER_PROFILE_KEY}.IMAGE_UPDATE_ERROR_MSG`;\n        this.translate.get([IMAGE_UPDATE_ERROR_MSG]).subscribe(res => {\n          this.toasterService.showMessage(res[IMAGE_UPDATE_ERROR_MSG], 'error', this.title);\n        }).unsubscribe();\n      }\n    });\n  }\n\n  private uploadImage() {\n    if (this.fileUpload.nativeElement.value) {\n      this.updateAvatar();\n    }\n  }\n\n  onCropped(url: string) {\n    this.imageAvatarUrl = url;\n    this.uploadImage();\n  }\n\n  onHideCropper() {\n    this.fileUpload.nativeElement.value = '';\n  }\n\n}\n\nexport interface Profile extends UserProfile {\n  title?: string,\n  fullName?: string,\n  street?: string\n}\n","<div class=\"user-content\">\n  <div class=\"middle__content\">\n    <div class=\"profile\">\n      <div class=\"profile-left\">\n        <div class=\"conversation\" *ngIf=\"profile\">\n          <form #userPhotoFrm style=\"display: none\">\n            <input #fileAvatar name=\"fileUpload\" (change)=\"changeFileAvatar($event)\" type=\"file\"\n              accept=\"image/png, image/jpg, image/jpeg\" class=\"form-control-file\">\n          </form>\n          <div class=\"picture\">\n            <img #imageAvatar (click)=\"onSelectFile()\" [src]=\"imageAvatarUrl\" (error)=\"updateBlankImage(imageAvatar)\" />\n          </div>\n\n          <div class=\"content\">\n            <div class=\"name\">{{profile.fullName || profile.username}}</div>\n            <div class=\"position\">{{profile.username}}</div>\n          </div>\n        </div>\n\n        <div class=\"profile-nav\">\n          <div class=\"profile-nav__item\" [class.current]=\"tabIndex===1\" (click)=\"tabIndex=1\">\n            {{'SETTING.USER_PROFILE.GENERAL_INFORMATION' | translate}}\n          </div>\n          <div *ngIf=\"internalUser\" class=\"profile-nav__item\" [class.current]=\"tabIndex===2\" (click)=\"tabIndex=2\">\n            {{'SETTING.USER_PROFILE.CHANGE_PASSWORD' | translate}}\n          </div>\n          <div class=\"profile-nav__item logout\" (click)=\"logout()\">\n            {{'COMMON.MENU.LOGOUT' | translate}}\n            <i class=\"fa fa-sign-out\"></i>\n          </div>\n        </div>\n      </div>\n      <div class=\"profile-right\">\n\n        <div class=\"form-box\" *ngIf=\"tabIndex===1\">\n          <div class=\"profile-cap\">{{'SETTING.USER_PROFILE.PERSONAL_INFORMATION' | translate}}</div>\n          <form [formGroup]=\"frmProfile\">\n            <div class=\"flex-group\">\n              <div class=\"form-group form-group-3\">\n                <input id=\"profile_firstname\" type=\"text\" class=\"input-txt\" formControlName=\"firstName\"\n                  [placeholder]=\"'SETTING.USER_PROFILE.FIRST_NAME' | translate\" required name=\"firstName\"\n                  autocomplete=\"off\" maxlength=\"256\" />\n                <label class=\"caption\" for=\"profile_firstname\">{{'SETTING.USER_PROFILE.FIRST_NAME' | translate}}<i\n                    class=\"text-danger\">*</i></label>\n                <div\n                  *ngIf=\"frmProfile.controls['firstName'].hasError('required') && frmProfile.controls['firstName'].touched\"\n                  class=\"input-error\">\n                  <div>{{'SETTING.USER_PROFILE.FIRST_NAME_REQUIRED_MSG' | translate}}</div>\n                </div>\n              </div>\n              <div class=\"form-group form-group-3\">\n                <input id=\"profile_middlename\" type=\"text\" class=\"input-txt\" formControlName=\"middleName\"\n                  [placeholder]=\"'SETTING.USER_PROFILE.MIDDLE_NAME' | translate\" name=\"middleName\"\n                  autocomplete=\"off\" maxlength=\"256\" />\n                <label class=\"caption\" for=\"profile_middlename\">{{'SETTING.USER_PROFILE.MIDDLE_NAME' |\n                  translate}}</label>\n              </div>\n              \n              <div class=\"form-group form-group-3\">\n                <input id=\"profile_lastname\" type=\"text\" class=\"input-txt\" formControlName=\"lastName\"\n                  [placeholder]=\"'SETTING.USER_PROFILE.LAST_NAME' | translate\" required name=\"lastName\"\n                  autocomplete=\"off\" maxlength=\"256\" />\n                <label class=\"caption\" for=\"profile_lastname\">{{'SETTING.USER_PROFILE.LAST_NAME' | translate}}<i\n                    class=\"text-danger\">*</i></label>\n                <div\n                  *ngIf=\"frmProfile.controls['lastName'].hasError('required') && frmProfile.controls['lastName'].touched\"\n                  class=\"input-error\">\n                  <div>{{'SETTING.USER_PROFILE.LAST_NAME_REQUIRED_MSG' | translate}}</div>\n                </div>\n              </div>\n\n            </div>\n            <div class=\"form-group\">\n              <input type=\"text\" class=\"input-txt\" id=\"profile_email\" name=\"profile_email\" formControlName=\"email\"\n                [placeholder]=\"'SETTING.USER_PROFILE.EMAIL' | translate\" autocomplete=\"off\" required />\n              <label class=\"caption\" for=\"profile_email\">{{'SETTING.USER_PROFILE.EMAIL' | translate}}<i\n                  class=\"text-danger\">*</i></label>\n              <div class=\"input-error\">\n                <div *ngIf=\"frmProfile.controls['email'].hasError('required') && frmProfile.controls['email'].touched\">\n                  {{'SETTING.USER_PROFILE.EMAIL_REQUIRED_MSG' | translate}}\n                </div>\n                <div *ngIf=\"frmProfile.controls['email'].hasError('email') && frmProfile.controls['email'].touched\">\n                  {{'SETTING.USER_PROFILE.EMAIL_INVALID_MSG' | translate}}\n                </div>\n              </div>\n            </div>\n            <div class=\"form-group\">\n              <input type=\"text\" class=\"input-txt\" id=\"profile_phone\" required\n                [placeholder]=\"'SETTING.USER_PROFILE.MOBILE' | translate\" name=\"profile_phone\" autocomplete=\"off\"\n                formControlName=\"phone\" />\n              <label class=\"caption\" for=\"profile_phone\">{{'SETTING.USER_PROFILE.MOBILE' | translate}}<i\n                  class=\"text-danger\">*</i></label>\n              <div *ngIf=\"frmProfile.controls['phone'].hasError('required') && frmProfile.controls['phone'].touched\"\n                class=\"input-error\">\n                <div>{{'SETTING.USER_PROFILE.PHONE_REQUIRED_MSG' | translate}}</div>\n              </div>\n              <div *ngIf=\"frmProfile.controls['phone'].hasError('pattern') && frmProfile.controls['phone'].touched\"\n                class=\"input-error\">\n                <div>{{'SETTING.USER_PROFILE.PHONE_INVALID_MSG' | translate}}</div>\n              </div>\n            </div>\n            <div class=\"form-group\">\n              <input type=\"text\" class=\"input-txt\" id=\"company_phone\"\n                [placeholder]=\"'SETTING.USER_PROFILE.COMPANY_PHONE' | translate\" name=\"company_phone\"\n                autocomplete=\"off\" formControlName=\"officePhone\" />\n              <label class=\"caption\" for=\"company_phone\">{{'SETTING.USER_PROFILE.COMPANY_PHONE' | translate}}</label>\n              <div\n                *ngIf=\"frmProfile.controls['officePhone'].hasError('pattern') && frmProfile.controls['officePhone'].touched\"\n                class=\"input-error\">\n                <div>{{'SETTING.USER_PROFILE.PHONE_INVALID_MSG' | translate}}</div>\n              </div>\n            </div>\n            <div class=\"form-group\">\n              <input type=\"text\" class=\"input-txt\" id=\"profile_street\"\n                [placeholder]=\"'SETTING.USER_PROFILE.ADDRESS' | translate\" name=\"profile_street\" autocomplete=\"off\"\n                formControlName=\"address\" />\n              <label class=\"caption\" for=\"profile_street\">{{'SETTING.USER_PROFILE.ADDRESS' | translate}}</label>\n            </div>\n            <div *ngIf=\"!frmProfile.disabled\" class=\"buts\">\n              <button type=\"submit\" class=\"btn but h_40\" [disabled]=\"frmProfile.invalid\"\n                (click)=\"updateProfile()\"><span>{{'SETTING.USER_PROFILE.UPDATE'| translate}}</span></button>\n            </div>\n          </form>\n        </div>\n\n        <div class=\"form-box\" *ngIf=\"tabIndex===2\">\n          <div class=\"profile-cap\">\n            {{'SETTING.USER_PROFILE.CHANGE_PASSWORD'| translate}}\n          </div>\n          <form [formGroup]=\"frmChangePassword\" (ngSubmit)=\"updatePassword()\">\n            <div class=\"form-group\">\n              <input type=\"password\" class=\"input-txt\" trim id=\"profile_old_password\" name=\"password\"\n                formControlName=\"password\" required maxlength=\"64\" autocomplete=\"off\"\n                [placeholder]=\"'SETTING.USER_PROFILE.CURRENT_PASSWORD'| translate\" />\n              <label class=\"caption\" for=\"profile_old_password\">{{'SETTING.USER_PROFILE.CURRENT_PASSWORD'|\n                translate}}</label>\n              <div class=\"input-error\"\n                *ngIf=\"frmChangePassword.controls['password'].hasError('required') && frmChangePassword.controls['password'].touched\">\n                <div>{{'SETTING.USER_PROFILE.CURRENT_PASSWORD_REQUIRED_MSG'| translate}}</div>\n              </div>\n              <div\n                *ngIf=\"frmChangePassword.controls['password'].hasError('mustMatch') && frmChangePassword.controls['password'].touched\">\n                {{'SETTING.USER_PROFILE.PASSWORD_DO_NOT_MATCH'| translate}}\n              </div>\n            </div>\n            <div class=\"form-group\">\n              <input type=\"password\" class=\"input-txt\" id=\"profile_new_password\" trim\n                [placeholder]=\"'SETTING.USER_PROFILE.NEW_PASSWORD'| translate\" name=\"profile_new_password\"\n                formControlName=\"newPassword\" autocomplete=\"off\" required />\n              <label class=\"caption\" for=\"profile_new_password\">{{'SETTING.USER_PROFILE.NEW_PASSWORD'|\n                translate}}</label>\n              <div class=\"input-error\"\n                *ngIf=\"frmChangePassword.controls['newPassword'].hasError('required') && frmChangePassword.controls['newPassword'].touched\">\n                <div>{{'SETTING.USER_PROFILE.NEW_PASSWORD_REQUIRED_MSG'| translate}}</div>\n              </div>\n                <div\n                  *ngIf=\"frmChangePassword.controls['newPassword'].hasError('pattern') && frmChangePassword.controls['newPassword'].touched\"\n                  class=\"input-error\">\n                  <div>{{'SETTING.USER_PROFILE.PASSWORD_INVALID_MSG'| translate}}</div>\n                </div>\n                <div\n                  *ngIf=\"frmChangePassword.controls['newPassword'].hasError('minlength') && !frmChangePassword.controls['newPassword'].hasError('pattern') && frmChangePassword.controls['newPassword'].touched\"\n                  class=\"input-error\">\n                  <div>{{'SETTING.USER_PROFILE.PASSWORD_LENGTH_INVALID_MSG'| translate}}</div>\n                </div>\n                \n                <div *ngIf=\"!frmChangePassword.controls['newPassword'].errors && passwordError\" class=\"input-error\"\n                  style=\"display: block\">\n                  <div>{{passwordError}}</div>\n                </div>\n            </div>\n            <div class=\"form-group\">\n              <input type=\"password\" class=\"input-txt\" id=\"profile_confirm_new_password\" trim\n                [placeholder]=\"'SETTING.USER_PROFILE.CONFIRM_NEW_PASSWORD'| translate\"\n                name=\"profile_confirm_new_password\" formControlName=\"confirmNewPassword\" autocomplete=\"off\" required />\n              <label class=\"caption\"\n                for=\"profile_confirm_new_password\">{{'SETTING.USER_PROFILE.CONFIRM_NEW_PASSWORD'|\n                translate}}</label>\n              <div class=\"input-error\">\n                <div\n                  *ngIf=\"frmChangePassword.controls['confirmNewPassword'].hasError('required') && frmChangePassword.controls['confirmNewPassword'].touched\">\n                  {{'SETTING.USER_PROFILE.CONFIRM_NEW_PASSWORD_REQUIRED_MSG'| translate}}\n                </div>\n                <div\n                  *ngIf=\"frmChangePassword.controls['confirmNewPassword'].hasError('mustMatch') && frmChangePassword.controls['confirmNewPassword'].touched\">\n                  {{'SETTING.USER_PROFILE.PASSWORD_DO_NOT_MATCH'| translate}}\n                </div>\n                \n              </div>\n            </div>\n            <div class=\"form-group mt-2\" *ngIf=\"!passwordError || frmChangePassword.invalid\">\n              <p><small>{{'SETTING.USER_PROFILE.PASSWORD_WARNING' | translate}}</small></p>\n            </div>\n            <div class=\"buts\">\n              <button type=\"button\" class=\"btn but h_40\" [disabled]=\"frmChangePassword.invalid\" (click)=\"updatePassword()\">\n                <span>{{'SETTING.USER_PROFILE.CHANGE_PASSWORD'| translate}}</span>\n              </button>\n            </div>\n          </form>\n        </div>\n      </div>\n    </div>\n  </div>\n\n</div>\n<app-cropper-avatar-dialog (onCropped)=\"onCropped($event)\" (onHide)=\"onHideCropper()\"\n      (onSelectFile)=\"onSelectFile($event)\"></app-cropper-avatar-dialog>","import {NgModule} from '@angular/core';\nimport {Routes, RouterModule} from '@angular/router';\nimport { UserProfileComponent } from './profile/user-profile/user-profile.component';\nconst routes: Routes = [\n    { path: 'profile', component: UserProfileComponent }\n];\n@NgModule({\n    imports: [RouterModule.forChild(routes)],\n    exports: [RouterModule]\n})\nexport class CalistaLayoutRoutingModule {\n}\n","import {map, Observable, of} from 'rxjs';\nimport {CloudTranslateService} from \"../services/cloud-translate.service\";\nimport { CloudTransLoader } from 'inet-ui';\nimport { HttpClientService } from 'inet-core';\n\nexport class CalistaTransLoader extends CloudTransLoader {\n  constructor(private http: HttpClientService,\n     private cloudTranslateService: CloudTranslateService) {\n    super();\n  }\n\n  getTranslation(lang: string): Observable<any> {\n    return this.cloudTranslateService.getI18n(lang).pipe(\n      map(resources => {\n        return {\n          ...this.getResourceByLang(lang) , ...resources \n        }\n      })\n    );\n  }\n}\n","import {Injectable} from '@angular/core';\nimport {EMPTY, Observable, of} from \"rxjs\";\nimport {select, Store} from \"@ngrx/store\";\nimport {selectSettings} from \"../store/selectors/settings.selector\";\nimport {catchError, first, map, tap} from \"rxjs/operators\";\nimport {HttpClientService, iNet} from \"inet-core\";\nimport {IAppState} from \"../store/state/app.state\";\nimport {HttpHeaders} from \"@angular/common/http\";\nimport {ISettingsState} from \"../store/state/settings.state\";\nimport * as SettingsActions from \"../store/actions/settings.action\";\nimport { CloudConfig } from '../model/cloud-config';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class CloudTranslateService {\n  settings!: ISettingsState;\n  cloudConfig: CloudConfig = new CloudConfig;\n  constructor(\n    private config: CloudConfig,\n    private http: HttpClientService,\n    private store: Store<IAppState>) {\n    this.store.pipe(\n      select(selectSettings),\n      first()\n    ).subscribe((settings) => {\n      //console.log('[settings]', JSON.stringify(settings));\n      this.settings = settings;\n    })\n  }\n  \n\n  getConfig(): CloudConfig {\n    return this.config;\n  }\n\n  getI18n(lang: string): Observable<any> {\n    if (this.getConfig().production) {\n      return this.getFromServer(lang);\n    } else {\n      return this.getFromAssets(lang);\n    }\n  }\n\n  private fetchI18n(lang: string, group: string = this.getConfig().i18nModule || this.getConfig().moduleName || 'common'): Observable<any> {\n    //fetch data from server side\n    return this.http.postJSON(iNet.getPUrl('message/keys'), {group:`${group}`, language: lang}).pipe(\n      tap(() => {\n        if (this.getConfig().production && this.getConfig().version !== this.settings.version) {\n          this.store.dispatch(SettingsActions.updateVersion({ version: this.getConfig().version || '1.0.0'}));\n          // this.coreService.updateLanguage(lang, () => {});\n        }\n      }),\n      map((response: any) => {\n        //console.log('Get i18n from server');\n        return {...this.convertResourceToObject(response['items'] || [])};\n      }),\n      catchError(err => {\n        return of({})\n      })\n    )\n  }\n\n  private getFromServer(lang: string): Observable<any> {\n    //get data from storage\n    //console.log(this.settings.language, lang, this.settings.version, environment.version);\n    if (this.getConfig().version === this.settings.version && this.settings.language === lang) {\n      try {\n        //console.log('Get i18n from localstorage');\n        return of(JSON.parse(this.settings.i18n));\n      } catch (ex) {}\n    }\n    return this.fetchI18n(lang);\n  }\n\n  private getFromAssets(lang: string): Observable<any> {\n    const filePath = this.getConfig().i18nFile || './assets/i18n/common';\n    const headers = new HttpHeaders().set('Content-Type', 'text/plain; charset=utf-8');\n    return this.http.get(`${filePath}_${lang}.properties`, {headers, responseType: 'text'})\n      .pipe(\n        map((response: any) => {\n          return {...this.convertPropertiesToObject(response)}\n        }),\n        catchError(err => {\n          return of({})\n        })\n      );\n  }\n\n  /**\n   * Convert complex js object to dot notation js object\n   */\n  private dotizeStringToJSON(message: string, value: string, obj: any) {\n    const parts = message.split(\".\");\n    const last = parts.pop();\n    let part;\n    while (part = parts.shift()) {\n      if (typeof obj[part] !== \"object\") {\n        obj[part] = {};\n      }\n      obj = obj[part];\n    }\n    // @ts-ignore\n    obj[last] = value;\n  }\n\n  /**\n   * Convert Java .properties files data to JSON\n   */\n  private propertiesToJSON(str: string): any {\n    // Concat lines that end with '\\'.\n    // Split by line breaks.\n    // Remove commented lines\n    // Create the JSON\n    return str.replace(/\\\\\\n/, \"\").split(\"\\n\")\n      .filter((line) => /(\\#|\\!)/.test(line.replace(/\\s/g, \"\").slice(0, 1)) ? false : line)\n      .reduce((obj, line) => {\n        const colonifiedLine = line.replace(/(\\=)/, \":\");\n        const key = colonifiedLine.substring(0, colonifiedLine.indexOf(\":\")).trim();\n        const value = this.asciiToNative(colonifiedLine.substring(colonifiedLine.indexOf(\":\") + 1).trim());\n        // @ts-ignore\n        obj[key] = value;\n        return obj;\n      }, {});\n  }\n\n  /*\n  * Convert ASCII value to Native Character\n   */\n  private asciiToNative(value: string): string {\n    let character = value.split(\"\\\\u\");\n    let nativeStr = character[0];\n    for (let i = 1; i < character.length; i++) {\n      let code = character[i];\n      nativeStr += String.fromCharCode(parseInt(\"0x\" + code.substring(0, 4)));\n      if (code.length > 4) {\n        nativeStr += code.substring(4, code.length);\n      }\n    }\n    return nativeStr;\n  }\n\n  /*\n  * Convert Native value to ASCII\n   */\n  private native2Ascii(value: string, ignoreLatin: boolean = false): string {\n    let character = value.split(\"\");\n    let asciiStr = \"\";\n    for (let i = 0; i < character.length; i++) {\n      const code = Number(character[i].charCodeAt(0));\n      if (!ignoreLatin || code > 127) {\n        let charAscii = code.toString(16);\n        charAscii = new String(\"0000\").substring(charAscii.length, 4) + charAscii;\n        asciiStr += \"\\\\u\" + charAscii;\n      } else {\n        asciiStr += character[i];\n      }\n    }\n    return asciiStr;\n  }\n\n  /**\n   * Convert items from the server to Translation\n   */\n  convertResourceToObject(items: any[]): any {\n    let translation = {};\n    for (const item of items) {\n      this.dotizeStringToJSON(item['messageKey'], item['text'], translation);\n    }\n    return translation;\n  }\n\n  /**\n   * Convert Java .properties files data to Translation\n   */\n  convertPropertiesToObject(str: string): any {\n    let translation = {};\n    const json = this.propertiesToJSON(str);\n    for (const key in json) {\n      this.dotizeStringToJSON(key, json[key], translation);\n    }\n    return translation;\n  }\n}\n","import {ModuleWithProviders, NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TranslateLoader, TranslateModule, TranslateService} from \"@ngx-translate/core\";\nimport {CalistaTransLoader} from \"./calista-trans-loader\";\nimport {HttpClientService} from \"inet-core\";\nimport {CloudTranslateService} from \"../services/cloud-translate.service\";\n\n@NgModule({\n  imports: [\n    CommonModule,\n    TranslateModule.forRoot({\n      loader: { provide: TranslateLoader, useClass: CalistaTransLoader }\n    })\n  ],\n  declarations: [],\n  exports: [TranslateModule],\n  providers: [TranslateService, HttpClientService]\n})\nexport class CloudTranslateModule {\n\n  static forRoot(): ModuleWithProviders<TranslateModule> {\n    return TranslateModule.forRoot({\n      loader: {\n        provide: TranslateLoader,\n        useClass: CalistaTransLoader,\n        deps: [HttpClientService, CloudTranslateService]\n      }\n    });\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PluginSubComponent } from './plugin-sub/plugin-sub.component';\nimport { PluginViewComponent } from './plugin-view/plugin-view.component';\nimport { WebSocketClientService } from 'inet-core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { PluginDocumentViewerComponent } from './document-viewer/document-viewer.component';\n@NgModule({\n  declarations: [\n    PluginSubComponent, PluginViewComponent, PluginDocumentViewerComponent\n  ],\n  imports: [\n    CommonModule,\n    TranslateModule\n  ],\n  exports: [PluginSubComponent, PluginDocumentViewerComponent],\n  providers: [WebSocketClientService]\n})\nexport class PluginModule { }\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {TranslateModule} from \"@ngx-translate/core\";\nimport { CalistaCoreModule } from '../../../core/calista-core.module';\nimport { UserProfileComponent } from './user-profile/user-profile.component';\nimport { ImageCropperModule } from 'inet-ui';\n\n@NgModule({\n  declarations: [UserProfileComponent],\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    TranslateModule,\n    CalistaCoreModule,\n    ImageCropperModule\n  ],\n  exports: [UserProfileComponent]\n})\nexport class ProfileModule {\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CalistaNavbarComponent } from './navbar/calista-navbar.component';\nimport { CoreModule, HttpClientService, LoadingIndicatorService } from 'inet-core';\nimport { NavigationCancel, NavigationEnd, NavigationError, NavigationStart, Router } from '@angular/router';\nimport { AuthenticateGuard, InterceptorModule, NotifyMessageService, NotifyModule, SafePipeModule } from 'inet-ui';\nimport { CalistaLayoutRoutingModule } from './calista-layout-routing.module';\nimport { HttpClientModule } from '@angular/common/http';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CalistaLayoutComponent } from './calista-layout.component';\nimport { CalistaCoreModule } from '../../core/calista-core.module';\nimport { CloudTranslateModule } from '../../core/translate/cloud-translate.module';\nimport { CloudConfig } from '../../core/model/cloud-config';\nimport { MenuDirective } from '../directive/menu.directive';\nimport { NavbarItemDirective } from '../directive/navbar-item.directive';\nimport { ToolbarDirective } from '../directive/toolbar.directive';\nimport { NavbarMenuDirective } from '../directive/navbar-menu.directive';\nimport { ProfileItemDirective } from '../directive/profile-item.directive';\nimport { NavbarSearchDirective } from '../directive/navbar-search.directive';\nimport { LogoDirective } from '../directive/logo.directive';\nimport { PluginModule } from './plugin/plugin.module';\nimport { AbstractCalistaSideNavComponent } from './abstract-calista-side-nav.component';\nimport { WorkspaceSideNavComponent } from './workspace-side-nav/workspace-side-nav.component';\nimport { ProfileModule } from './profile/profile.module';\nimport { CalistaMenuComponent } from './calista-menu/calista-menu.component';\nimport { ActionMenuDirective } from '../directive/action-menu.directive';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    CoreModule,\n    CalistaLayoutRoutingModule,\n    HttpClientModule,\n    NotifyModule,\n    SafePipeModule,\n    TranslateModule,\n    CalistaCoreModule,\n    CloudTranslateModule.forRoot(),\n    ProfileModule,\n    PluginModule\n  ],\n  declarations: [\n    CalistaNavbarComponent, CalistaLayoutComponent,\n    MenuDirective, ToolbarDirective, NavbarItemDirective, NavbarMenuDirective,\n    ProfileItemDirective, NavbarSearchDirective, LogoDirective, ActionMenuDirective,\n    AbstractCalistaSideNavComponent,\n    WorkspaceSideNavComponent,\n    CalistaMenuComponent\n  ],\n  providers: [AuthenticateGuard, HttpClientService, NotifyMessageService],\n  exports: [CalistaLayoutComponent,\n    MenuDirective, ToolbarDirective, NavbarItemDirective, NavbarMenuDirective,\n    ProfileItemDirective, NavbarSearchDirective, LogoDirective,\n    AbstractCalistaSideNavComponent, CalistaMenuComponent, ActionMenuDirective\n  ],\n  schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class CalistaLayoutModule {\n  constructor(\n    router: Router,\n    loadingService: LoadingIndicatorService\n  ) {\n    router.events.subscribe(event => {\n      if (event instanceof NavigationStart) {\n        loadingService.showLoading();\n      }\n      if ((event instanceof NavigationError || event instanceof NavigationEnd || event instanceof NavigationCancel)) {\n        loadingService.hideLoading();\n      }\n    });\n  }\n\n  static forRoot(config?: CloudConfig): ModuleWithProviders<CalistaLayoutModule> {\n    return {\n      ngModule: CalistaLayoutModule,\n      providers: [\n        { provide: CloudConfig, useValue: config }\n      ]\n    };\n  }\n}","//Bootstrap Layout\nexport * from './bootstrap/navbar/navbar.component';\nexport * from './bootstrap/layout.component';\nexport * from './bootstrap/vertical-layout/vertical-layout.component';\nexport * from './bootstrap/abstract-side-nav.component';\nexport * from './bootstrap/profile/bootstrap-user-profile.component'\nexport { BootstrapLayoutModule } from './bootstrap/bootstrap-layout.module';\n\nexport * from './directive/menu.directive';\nexport * from './directive/toolbar.directive';\nexport * from './directive/navbar-item.directive';\nexport * from './directive/navbar-menu.directive';\nexport * from './directive/profile-item.directive';\nexport * from './directive/navbar-search.directive';\nexport * from './directive/logo.directive';\nexport * from './directive/action-menu.directive';\nexport * from './calista-layout/navbar/calista-navbar.component';\nexport * from './calista-layout/calista-layout.component';\n//export * from './calista-layout/profile/user-profile/user-profile.component';\nexport * from './calista-layout/calista-menu/calista-menu.component';\nexport * from './calista-layout/plugin/app-plugin';\nexport * from './calista-layout/plugin/calista-plugin.service';\nexport * from './calista-layout/abstract-calista-side-nav.component';\nexport * from './calista-layout/calista.interface';\nexport * from './calista-layout/calista-menu.service';\nexport { CalistaLayoutModule } from './calista-layout/calista-layout.module';\n\n","/*\n * Public API Surface of inet-layout\n */\n\nexport * from './lib/layout/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["iNet","i2","i3.OrganizationService","i5","i6","i1.TimeAgoService","i1.UserlogService","i3.TimeAgoPipe","i1","i3","i4","i5.UserlogsComponent","i6.AdminNavbarComponent","i7.MessageSideNavComponent","i8.AppSideNavComponent","i9.SocialSideNavComponent","i10","MustMatch","Contact","i1.GlobalContactService","UserProfileComponent","i5.GlobalContactService","i6.UserProfileComponent","i7.UserProfileInfoComponent","i8.CommonToolbarComponent","routes","i1.CloudConfig","SettingsActions.changeLanguage","SettingsActions.updateVersion","SettingsActions.updateI18n","SettingsActions.updateProfile","SettingsActions.updateAvatar","i3.LocalStorageService","CloudTranslateModule","COLLABORATION_CONTEXT","map","i1.CalistaMenuService","i2.OrganizationService","i4.CalistaPluginService","i5.CloudConfig","i7","i8","EVENT_MESSAGE_HANDLER","EVENT_MESSSAGE","i2.CalistaPluginService","i4.PluginViewComponent","i5.PluginDocumentViewerComponent","i1.CalistaPluginService","i6.PluginSubComponent","i7.CalistaNavbarComponent","i8.WorkspaceSideNavComponent","i9.CalistaMenuComponent","i4.ProfileService","catchError"],"mappings":"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"}