{"version":3,"file":"mmhglobal-userprofile.mjs","sources":["../../../projects/mmhglobal-userprofile/src/lib/mmhglobal-userprofile.service.ts","../../../projects/mmhglobal-userprofile/src/lib/mmhglobal-userprofile.component.ts","../../../projects/mmhglobal-userprofile/src/lib/mmhglobal-userprofile.component.html","../../../projects/mmhglobal-userprofile/src/lib/mmhglobal-userprofile.module.ts","../../../projects/mmhglobal-userprofile/src/public-api.ts","../../../projects/mmhglobal-userprofile/src/mmhglobal-userprofile.ts"],"sourcesContent":["/********** Angular **********/\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Router } from \"@angular/router\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\n\r\n/********** Plugin **********/\r\nimport { Observable, of } from 'rxjs';\r\nimport { switchMap, tap } from 'rxjs/operators';\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n  ZGroup, AuthService, ToastService, ZComponentHelper, FieldService,\r\n  AttachmentService, ZCoreService, ResourceApiService,\r\n  WebApiService, ProjectThemeService, ThemeSettings\r\n} from \"mmhglobal-zcore\";\r\nimport { MainService } from \"mmhglobal-dynamicform\";\r\nimport { ModalResponse } from \"mmhglobal-zmodal\";\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class MmhglobalUserprofileService {\r\n  public readonly ctrlName = \"userV2\";\r\n  public readonly saveProfileURLCode = \"ionSaveUserProfileURL\";\r\n  private themeList;\r\n  private environment;\r\n  private readonly userProfilePhotoFieldName = \"userProfilePhoto\";\r\n\r\n  constructor(\r\n    private authService: AuthService,\r\n    private webApiService: WebApiService,\r\n    private resoureceApiService: ResourceApiService,\r\n    private toastService: ToastService,\r\n    private router: Router,\r\n    private fieldService: FieldService,\r\n    private attachmentService: AttachmentService,\r\n    private httpClient: HttpClient,\r\n    private mainService: MainService,\r\n    private projectThemeService: ProjectThemeService,\r\n    public zcoreService: ZCoreService,\r\n  ) {\r\n    this.environment = zcoreService.getEnvironment();\r\n  }\r\n\r\n  public beforePageInitialise(group: ZGroup): Observable<any> {\r\n    Object.assign(group, {\r\n      formHeader: 'User Profile',\r\n      backNavigationPage: 'home',\r\n      forgotPassword: this.resetPassword.bind(this),\r\n      resetPassword: this.resetPassword.bind(this),\r\n      selectTheme: this.userSelectTheme.bind(this, group),\r\n      changeProfilePicture: this.changeProfilePicture_onClick.bind(this, group),\r\n      updateModel: this.updateModel.bind(this, group),\r\n      changeTextSize: this.updateModel.bind(this, group),\r\n      changeLanguage: this.updateModel.bind(this, group),\r\n    });\r\n\r\n    return of([]);\r\n  }\r\n\r\n  public afterPageInitialise(group: ZGroup): Observable<any> {\r\n    return of([]);\r\n  }\r\n\r\n  private updateModel(group: any) {\r\n    const fg = group.form as FormGroup;\r\n    Object.assign(group.zModel, fg.value);\r\n    this.insertUserThemeSetting(group);\r\n    group.zModel.ThemeSettings = JSON.stringify(group[`AllUserThemeSettingsObject`]);\r\n\r\n    const updateApiObs = this.webApiService.httpPost$(this.resoureceApiService.getURL(this.saveProfileURLCode), group.zModel)\r\n      .pipe(\r\n        switchMap((res) => {\r\n          if (res && res.status && res.status === \"success\") {\r\n            return of(true);\r\n          }\r\n          else {\r\n            this.toastService.show(\"Failed to update (Please contact IT Admin)\", 'top', false, 1500, \"danger\");\r\n            return of(false);\r\n          }\r\n        }),\r\n        tap(isSuccess => {\r\n          if (isSuccess) {\r\n            this.projectThemeService.setTheme(group.zModel.ThemeSettings);\r\n            this.toastService.show(\"Your profile is updated successfully.\", \"top\", false, 1000);\r\n          }\r\n        })\r\n      );\r\n\r\n    this.mainService.updateModelObservable(null, group, null, updateApiObs, true).subscribe();\r\n  }\r\n\r\n  public getProfile(group: ZGroup): Observable<any> {\r\n    this.showUserProfilePicture(group, false);\r\n\r\n    return this.authService.getUserProfile(this.authService.e1Token.userName).pipe(\r\n      tap(data => {\r\n        group.zModel = data;\r\n        this.populateThemeSelectionList();\r\n        this.resetAllThemeSelection(group);\r\n\r\n        group['usernameInitial'] = this.authService.getUsernameInitial();\r\n        this.setupUserThemeInPage(group);\r\n      }),\r\n      switchMap(() => {\r\n        return this.authService.getUserProfileImage().pipe(\r\n          tap(img => {\r\n            this.showUserProfilePicture(group, true);\r\n            group[`ProfileImg_ApiSource`] = img;\r\n          }));\r\n      })\r\n    );\r\n  }\r\n\r\n  private getProfileImageURL(group: ZGroup) {\r\n    group[`ProfileImg_ApiSource`] = `${this.zcoreService.getOauthUrl()}api/ProfileImage?id=${group.zModel.UserName}&size=100x100&timestamp=${(new Date()).getTime()}`;\r\n  }\r\n\r\n  private showUserProfilePicture(group: ZGroup, isShow: boolean) {\r\n    group['isShowUserProfilePicture'] = isShow;\r\n    group['isShowUsernameInitial'] = !isShow;\r\n  }\r\n\r\n  public resetPassword(event: any) {\r\n    this.router.navigate(['resetPass']);\r\n  }\r\n\r\n  private async changeProfilePicture_onClick(group: ZGroup) {\r\n    this.mainService.showzModal(\r\n      {\r\n        fieldElementName: this.userProfilePhotoFieldName,\r\n        parentGroup: group,\r\n        zModel: {},\r\n        formHeader: \"Profile Picture\"\r\n      }\r\n    ).subscribe(async (modalData: ModalResponse) => {\r\n      if (modalData.responseType === \"cancel\") {\r\n        return;\r\n      }\r\n\r\n      if (modalData.data.FileUploadList.length > 0) {\r\n        // Get required detail\r\n        const imageUserName = group.zModel.UserName;\r\n        const uploadData = modalData.data.FileUploadList[0];\r\n        const filename = uploadData.name;\r\n        const uid = uploadData.uid;\r\n\r\n        // Get image Blob\r\n        const imageBlob = await this.attachmentService.getImageBlob(filename, uid);\r\n\r\n        // Append to formData\r\n        let formData = new FormData();\r\n        formData.append(\"id\", imageUserName);\r\n        formData.append(\"file\", imageBlob, filename);\r\n\r\n        group[`CloseRequestUploadMetaData`] = { Description: 'Profile Picture', BUSystemId: 0, DocumentType: 'Profile Picture', ReferenceDocumentId: group.zModel.UserName };\r\n\r\n        // Post image\r\n        this.httpClient.post<Blob>(group['ProfileImg_ApiSource'], formData, {\r\n          headers: this.authService.authorizationBearer,\r\n          responseType: 'blob' as 'json'\r\n        }).subscribe(() => {\r\n          const comp = ZComponentHelper.getComponent(group, \"zimg_UserPhoto\") as any;\r\n          if (comp) {\r\n            this.getProfileImageURL(group);\r\n            comp.setImageSource();\r\n          }\r\n        });\r\n      }\r\n\r\n    });\r\n  }\r\n\r\n  //#region Color Theme\r\n  private readonly DefaultThemeTextStyle = \"height:80px;width:80px;font-size:25px;border-radius: 100%;cursor: pointer;margin:auto;\";\r\n  private readonly DefaultThemeIconStyle = \"text-align:center;margin-top:20px;color:rgb(255 255 255 / 80%);font-size:30px;\";\r\n  private readonly DefaultTextSize = \"regular-text\";\r\n  private readonly DefaultColorName = \"blue-theme\";\r\n\r\n  private setupUserThemeInPage(group: ZGroup) {\r\n    const selectedThemeSetting = this.tryParseUserSelectedTheme(group);\r\n\r\n    group[`selectedThemeName`] = selectedThemeSetting.ColorName || this.DefaultColorName;\r\n    group.zModel.TextSize = selectedThemeSetting.TextSize || this.DefaultTextSize;\r\n\r\n    this.markSelectedThemeInUIPage(group, group[`selectedThemeName`]);\r\n  }\r\n\r\n  private tryParseUserSelectedTheme(group: ZGroup): ThemeSettings {\r\n    group[`AllUserThemeSettingsObject`] = group.zModel.ThemeSettings ? JSON.parse(group.zModel.ThemeSettings) : [];\r\n    group.zModel.ProjectThemeSettingsObject = group[`AllUserThemeSettingsObject`].find(f => f.ProjectCode === this.getThemeProjectCode()) || {} as ThemeSettings;\r\n    return group.zModel.ProjectThemeSettingsObject;\r\n  }\r\n\r\n  private userSelectTheme(group: ZGroup, data: any) {\r\n    this.resetAllThemeSelection(group);\r\n    group[`selectedThemeName`] = this.themeList[data.data.value.Value.replace(\"Theme\", \"\") - 1].key;\r\n\r\n    this.markSelectedThemeInUIPage(group, group[`selectedThemeName`]);\r\n    this.updateModel(group);\r\n  }\r\n\r\n  public markSelectedThemeInUIPage(group: ZGroup, themeName: string) {\r\n    let themeIndex = this.getThemeIndexByName(themeName);\r\n    const backgroundcolor = this.themeList.find(t => t.key === themeName).value;\r\n\r\n    group[`theme${themeIndex}Style`] = `${this.DefaultThemeTextStyle}background:${backgroundcolor};box-shadow:0px 0px 0px 4px ${backgroundcolor}66`;\r\n    group[`theme${themeIndex}Style1`] = `${this.DefaultThemeIconStyle}`;\r\n\r\n    const comp = ZComponentHelper.getComponent(group, `zlabel_Theme${themeIndex}`);\r\n    if (comp) {\r\n      comp.setStyle(group[`theme${themeIndex}Style`], '');\r\n      comp.setStyle(group[`theme${themeIndex}Style1`], '1');\r\n    }\r\n  }\r\n\r\n  public resetAllThemeSelection(group: ZGroup) {\r\n    for (const [i, v] of this.themeList.entries()) {\r\n      const themeIndex = i + 1;\r\n      group[`theme${themeIndex}Style`] = `${this.DefaultThemeTextStyle}background:${v.value};`;\r\n      group[`theme${themeIndex}Style1`] = `${this.DefaultThemeIconStyle}display:none;`;\r\n\r\n      const comp = ZComponentHelper.getComponent(group, `zlabel_Theme${themeIndex}`);\r\n      if (comp) {\r\n        comp.setStyle(group[`theme${themeIndex}Style`], '');\r\n        comp.setStyle(group[`theme${themeIndex}Style1`], '1');\r\n      }\r\n    }\r\n  }\r\n\r\n  public populateThemeSelectionList() {\r\n    this.themeList = this.projectThemeService.getThemeList();\r\n  }\r\n\r\n  private getThemeIndexByName(themeName: string): number {\r\n    let themeIndex = this.themeList.map(t => t.key).indexOf(themeName) + 1;\r\n    return themeIndex > 0 ? themeIndex : 1;\r\n  }\r\n\r\n  private insertUserThemeSetting(group: ZGroup) {\r\n    group[`AllUserThemeSettingsObject`] = group[`AllUserThemeSettingsObject`] ? group[`AllUserThemeSettingsObject`].filter(t => t.ProjectCode !== this.getThemeProjectCode()) : [];\r\n    group[`AllUserThemeSettingsObject`].push(\r\n      {\r\n        ProjectCode: this.getThemeProjectCode(),\r\n        ColorName: group[`selectedThemeName`],\r\n        TextSize: group.zModel.TextSize\r\n      } as ThemeSettings\r\n    );\r\n  }\r\n\r\n  private getThemeProjectCode(): string {\r\n    return this.environment.ThemeProjectCode || '*';\r\n  }\r\n  //#endregion\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { filter, tap, switchMap, first } from 'rxjs/operators';\r\n\r\n/********** Component & Service **********/\r\nimport { AuthService } from \"mmhglobal-zcore\";\r\nimport { MainService, UipageComponent } from \"mmhglobal-dynamicform\";\r\nimport { MmhglobalUserprofileService } from './mmhglobal-userprofile.service';\r\n\r\n@Component({\r\n  selector: 'app-mmhglobal-userprofile',\r\n  templateUrl: './mmhglobal-userprofile.component.html',\r\n  styleUrls: ['./mmhglobal-userprofile.component.scss'],\r\n})\r\nexport class MmhglobalUserprofileComponent extends UipageComponent\r\n  implements OnInit, OnDestroy {\r\n\r\n  constructor(\r\n    mainService: MainService,\r\n    activatedRoute: ActivatedRoute,\r\n    private userprofileService: MmhglobalUserprofileService,\r\n    private authService: AuthService,\r\n  ) {\r\n    super(mainService, activatedRoute);\r\n  }\r\n\r\n  ngOnInit() {\r\n    Object.assign(this.group, {\r\n      beforePageInitialise: this.userprofileService.beforePageInitialise.bind(this.userprofileService),\r\n      getModel: this.userprofileService.getProfile.bind(this.userprofileService, this.group),\r\n    });\r\n\r\n    this.authService.userIsAuthenticated.pipe(\r\n      filter(isAuth => (isAuth && !!this.authService && !!this.authService.e1Token)),\r\n      first(),\r\n      tap(() => {\r\n        this.setupPage();\r\n      }),\r\n    ).subscribe();\r\n  }\r\n\r\n  private setupPage() {\r\n    super.pageOnInit(this.userprofileService.ctrlName, 'user-one.page', false).pipe(\r\n      switchMap(() => {\r\n        return this.userprofileService.getProfile(this.group);\r\n      }),\r\n      tap(() => {\r\n        this.group.zModel.AuthenticationEmail = this.group.zModel.AuthenticationEmail || this.group.zModel.Email;\r\n        this.group.isLoading = false;\r\n      })\r\n    ).subscribe();\r\n  }\r\n\r\n  // @HostListener('window:beforeunload')\r\n  ngOnDestroy(): void {\r\n    super.pageDestroy();\r\n    console.log(\"userprofile onDestroy.\");\r\n  }\r\n}\r\n","<app-uiheader [group]=\"group\"></app-uiheader>\r\n\r\n<ion-content appScrollbarTheme class=\"app-contain\">\r\n  <app-uicontent [group]=\"group\"></app-uicontent>\r\n</ion-content>\r\n","/********** Angular **********/\r\nimport { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n/********** Ionic **********/\r\nimport { IonicModule } from '@ionic/angular';\r\n\r\n/********** Plugin **********/\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\n\r\n/********** Component & Service **********/\r\nimport { ZCoreModule } from 'mmhglobal-zcore';\r\nimport { MmhglobalUserprofileComponent } from './mmhglobal-userprofile.component';\r\nimport { MmhglobalDynamicformModule } from 'mmhglobal-dynamicform';\r\n\r\n\r\n@NgModule({\r\n  declarations: [\r\n    MmhglobalUserprofileComponent\r\n  ],\r\n  imports: [\r\n    RouterModule,\r\n    CommonModule,\r\n    IonicModule,\r\n    FormsModule,\r\n    FontAwesomeModule,\r\n    ZCoreModule,\r\n    MmhglobalDynamicformModule\r\n  ],\r\n  exports: [\r\n    MmhglobalUserprofileComponent\r\n  ],\r\n  schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class MmhglobalUserprofileModule {\r\n}\r\n","/*\r\n * Public API Surface of mmhglobal-userprofile\r\n */\r\n\r\nexport * from './lib/mmhglobal-userprofile.service';\r\nexport * from './lib/mmhglobal-userprofile.component';\r\nexport * from './lib/mmhglobal-userprofile.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4","i1","i3.MmhglobalUserprofileService"],"mappings":"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"}