{"version":3,"file":"main.js","mappings":"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","sources":["./src/app/add-engagement/add-engagement-memory-service/add-engagement-memory.service.ts","./src/app/add-engagement/add-engagement-routing.module.ts","./src/app/add-engagement/add-engagement.component.ts","./src/app/add-engagement/add-engagement.module.ts","./src/app/add-engagement/components/basic-details/basic-details.component.ts","./src/app/add-engagement/components/contacts/contacts.component.ts","./src/app/add-engagement/components/folder-structure/folder-structure.component.ts","./src/app/add-engagement/components/language/language.component.ts","./src/app/app.component.ts","./src/app/app.module.ts","./src/app/app.routing.module.ts","./src/app/core/authentication-guard.service.ts","./src/app/core/insert-auth-token-interceptor.service.ts","./src/app/core/session-manage-guard.ts","./src/app/edit-engagement/components/add-new-topic-card/add-new-topic-card.component.ts","./src/app/edit-engagement/components/basic-details-edit/basic-details-edit.component.ts","./src/app/edit-engagement/components/contacts-edit/contacts-edit.component.ts","./src/app/edit-engagement/components/edit-doc/edit-doc.component.ts","./src/app/edit-engagement/components/edit-language/edit-language.component.ts","./src/app/edit-engagement/components/edit-topic-card/edit-topic-card.component.ts","./src/app/edit-engagement/components/engagement-authorization/engagement-authorization.component.ts","./src/app/edit-engagement/components/folder-mgmt-edit/folder-mgmt-edit.component.ts","./src/app/edit-engagement/components/language-selection/language-selection.component.ts","./src/app/edit-engagement/components/manage-doc/manage-doc.component.ts","./src/app/edit-engagement/components/manage-folder/manage-folder.component.ts","./src/app/edit-engagement/components/topic-card/topic-card.component.ts","./src/app/edit-engagement/components/upload-new-doc/upload-new-doc.component.ts","./src/app/edit-engagement/edit-engagement-memory-service/edit-engagement-memory-service.service.ts","./src/app/edit-engagement/edit-engagement-routing.module.ts","./src/app/edit-engagement/edit-engagement.component.ts","./src/app/edit-engagement/edit-engagement.module.ts","./src/app/entities/topic-card.ts","./src/app/entities/user-management.ts","./src/app/enums/image-type.ts","./src/app/home/home-routing.module.ts","./src/app/home/home.component.ts","./src/app/home/home.module.ts","./src/app/login-internal/login-internal.component.ts","./src/app/msal-authentication/auth-config.ts","./src/app/msal-authentication/graph.service.ts","./src/app/nav-menu/nav-menu.component.ts","./src/app/public-user-signup/public-user-signup.component.ts","./src/app/shared/app-constants/category-constants.ts","./src/app/shared/modal-component/modal.component.ts","./src/app/user-management/user-management.component.ts","./src/environments/environment.ts","./src/framework/services/app-config.service.ts","./src/framework/services/application-configuration.service.ts","./src/framework/services/common.service.ts","./src/framework/services/custom-message.service.ts","./src/framework/services/docver-history.service.ts","./src/framework/services/engagement-mgmt.service.ts","./src/framework/services/folder-mgmt.service.ts","./src/framework/services/home.service.ts","./src/framework/services/jurisdiction.service.ts","./src/framework/services/labelcard-mgmt.service.ts","./src/framework/services/language.service.ts","./src/framework/services/link-master.service.ts","./src/framework/services/logo-icon-mgmt.service.ts","./src/framework/services/logo-mgmt.service.ts","./src/framework/services/manage-doc.service.ts","./src/framework/services/master-list.service.ts","./src/framework/services/publicuser.service.ts","./src/framework/services/services.module.ts","./src/framework/services/topic-card.service.ts","./src/framework/services/user-management.service.ts","./src/framework/services/user-memory.service.ts","./src/framework/services/userservice.ts","./src/main.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\nimport { EngagementManagementService } from '../../../framework/services/engagement-mgmt.service';\r\n\r\n@Injectable()\r\nexport class AddEngagementMemoryService {\r\n private engagementId: number;\r\n private selectedlanguages: any[];\r\n private engagementRoles = [];\r\n private languages = [];\r\n private internalContacts = [];\r\n private externalRoles = [];\r\n private externalContacts = [];\r\n private selectedFolderTemplate: string;\r\n private engagementDetails: EngagementDetails;\r\n private jurisdiction = [];\r\n private actualLangugageSelected = [];\r\n\r\n private applicationLanguageId: number;\r\n\r\n constructor(private engagementManagementService: EngagementManagementService) {\r\n this.engagementId = 0;\r\n }\r\n\r\n setSelectedLanguages(selectedLanguages) {\r\n this.selectedlanguages = selectedLanguages;\r\n }\r\n getSelectedLanguages() {\r\n return this.selectedlanguages;\r\n }\r\n setLanguages(languages: []) {\r\n this.languages = languages;\r\n }\r\n getLanguages(): any[] {\r\n return this.languages;\r\n }\r\n setEngagementRoles(engagementRoles: []) {\r\n this.engagementRoles = engagementRoles;\r\n }\r\n getLanguageBasedRoles(): any[] {\r\n return this.engagementRoles;\r\n }\r\n setEngagementDetails(initalDate: Date, isPrivate: boolean, shortUrl: string, isConfidential: boolean, languageBasedDetails: any, urlDomain: string, eyRole, juridiction) {\r\n this.engagementDetails = new EngagementDetails(initalDate, isPrivate, shortUrl, isConfidential, languageBasedDetails, urlDomain, eyRole, juridiction);\r\n }\r\n getEngagementDetails() {\r\n return this.engagementDetails;\r\n }\r\n setContactDetails(internalContacts: any[], externalRoles: any[], externalContacts: any[]) {\r\n this.internalContacts = internalContacts;\r\n this.externalRoles = externalRoles;\r\n this.externalContacts = externalContacts;\r\n }\r\n getInteralContact(): any[] {\r\n return this.internalContacts;\r\n }\r\n getExternalRole(): any[] {\r\n return this.externalRoles;\r\n }\r\n getExternalContacts(): any[] {\r\n return this.externalContacts;\r\n }\r\n\r\n setFolderTemplate(selectedFolder) {\r\n this.selectedFolderTemplate = selectedFolder;\r\n }\r\n\r\n getFolderTemplate(): any {\r\n return this.selectedFolderTemplate;\r\n }\r\n\r\n setEngagementId(engagementId: number) {\r\n this.engagementId = engagementId;\r\n }\r\n\r\n getEngagementId(): number {\r\n return this.engagementId;\r\n }\r\n\r\n resetEngagementMemory() {\r\n this.selectedlanguages = [];\r\n this.engagementDetails = null;\r\n this.internalContacts = [];\r\n this.externalContacts = [];\r\n this.externalRoles = [];\r\n this.selectedFolderTemplate = \"\";\r\n }\r\n\r\n setJurisdictionOption(jurisdictionOptions) {\r\n this.jurisdiction = jurisdictionOptions;\r\n }\r\n\r\n getJurisdictionOption(): any {\r\n return this.jurisdiction;\r\n }\r\n\r\n setApplicationLanguageId(languageId: number) {\r\n this.applicationLanguageId = languageId;\r\n }\r\n\r\n getApplicationLanguageId(): number{\r\n return this.applicationLanguageId;\r\n }\r\n\r\n setActualLanguageSelected(languages: any[]) {\r\n this.actualLangugageSelected = languages;\r\n }\r\n\r\n getActualLanguageSelected():any[] {\r\n return this.actualLangugageSelected;\r\n }\r\n}\r\n\r\nexport class EngagementDetails {\r\n initalDate: Date;\r\n isPrivate: boolean;\r\n shortUrl: string;\r\n isConfidential: boolean;\r\n languageBasedDetails: any;\r\n urlDomain: string;\r\n eyRole: any;\r\n jurisdiction: any;\r\n constructor(initalDate: Date, isPrivate: boolean, shortUrl: string, isConfidential: boolean, languageBasedDetails: any, urlDomain: string, eyRole, jurisdiction) {\r\n this.initalDate = initalDate;\r\n this.isPrivate = isPrivate;\r\n this.shortUrl = shortUrl;\r\n this.isConfidential = isConfidential;\r\n this.languageBasedDetails = languageBasedDetails;\r\n this.urlDomain = urlDomain;\r\n this.eyRole = eyRole;\r\n this.jurisdiction = jurisdiction;\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { AddEngagementComponent } from './add-engagement.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: AddEngagementComponent,\r\n data: { Title: 'Add Engagement' }// canActivate: [RouteGuard]\r\n }\r\n];\r\n\r\n@NgModule({\r\n\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\n\r\nexport class AddEngagementRoutingModule { }\r\n","import { Component, OnInit, Output, EventEmitter, ViewChild, OnChanges, DoCheck, OnDestroy } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { MatStepper } from '@angular/material/stepper';\r\nimport { BasicDetailsComponent } from './components/basic-details/basic-details.component';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { ContactsComponent } from './components/contacts/contacts.component';\r\nimport { FolderStructureComponent } from './components/folder-structure/folder-structure.component';\r\nimport { AddEngagement } from '../entities/add-engagement';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { EngagementManagementService } from '../../framework/services/engagement-mgmt.service';\r\nimport { LanguageService } from '../../framework/services/language.service';\r\nimport { AddEngagementMemoryService } from './add-engagement-memory-service/add-engagement-memory.service';\r\nimport { CommonService } from '../../framework/services/common.service';\r\nimport { JurisdictionService } from '../../framework/services/jurisdiction.service';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { CategoryConstant } from '../shared/app-constants/category-constants';\r\nimport { Console } from 'console';\r\n\r\n\r\n@Component({\r\n selector: 'app-add-engagement',\r\n templateUrl: './add-engagement.component.html',\r\n styleUrls: ['./add-engagement.component.css']\r\n})\r\nexport class AddEngagementComponent implements OnInit, DoCheck, OnDestroy {\r\n showLanguageSelection: boolean = true;\r\n selectedLanguageId: number = 0;\r\n defaultEnglishJson: any =\"\"; //assigned empty\r\n islabelLoaded: boolean = false;\r\n alreadySelectedLanguageId = 0;\r\n selectedAppLanguageJson: any=\"\";//assigned empty\r\n engagementSteps: { [key: string]: number } = {\r\n languageSelectionStep: 0,\r\n basicDetailsStep: 1,\r\n contactsStep: 2,\r\n folderStep: 3,\r\n };\r\n @ViewChild('stepper') stepper: MatStepper;\r\n showEngagementSection: ShowEngagementSection;\r\n\r\n isApplicationLanguageIdSet: boolean = false;\r\n\r\n constructor(private engagementManagementService: EngagementManagementService,\r\n private commonService: CommonService,\r\n private jurisductionService: JurisdictionService,\r\n private router: Router,\r\n private confirmationService: ConfirmationService,\r\n private languageSerivce: LanguageService,\r\n private engagementMemoryService: AddEngagementMemoryService,\r\n private spinner: NgxSpinnerService) {\r\n this.engagementMemoryService.resetEngagementMemory();\r\n this.showEngagementSection = new ShowEngagementSection(false, false, false, false);\r\n this.getLanguages();\r\n }\r\n ngOnInit() {\r\n this.spinner.show();\r\n this.loadLanguageLabel();\r\n }\r\n getLanguages() {\r\n this.languageSerivce.getLanguages().subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n\r\n } else {\r\n if (response != null && response.data.length > 0) {\r\n this.engagementMemoryService.setLanguages(response.data);\r\n this.getJurisdiction(this.selectedLanguageId);\r\n }\r\n }\r\n })\r\n }\r\n getJurisdiction(languageId: number) {\r\n this.jurisductionService.getJurisdictionDropDown(languageId).subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n\r\n } else {\r\n if (response != null && response.data.length > 0) {\r\n this.engagementMemoryService.setJurisdictionOption(response.data);\r\n this.getEngagementRoles(this.selectedLanguageId);\r\n }\r\n }\r\n })\r\n }\r\n getEngagementRoles(languageId: number) {\r\n this.commonService.getEngagementRoles(languageId).subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n\r\n } else {\r\n if (response != null && response.data.length > 0) {\r\n this.engagementMemoryService.setEngagementRoles(response.data);\r\n this.showEngagementSection = new ShowEngagementSection(true, false, false, false);\r\n this.spinner.hide();\r\n }\r\n }\r\n })\r\n }\r\n\r\n\r\n\r\n\r\n loadLanguageLabel() {\r\n let englishLanguageMappings, selectedLanguageMappings: any;\r\n return new Promise((resolve, reject) => {\r\n this.spinner.show();\r\n if (sessionStorage.getItem('selectedLanguageId')) {\r\n this.selectedLanguageId = 1;//JSON.parse(sessionStorage.getItem('selectedLanguageId'));\r\n }\r\n this.languageSerivce.currentData.subscribe(data => {\r\n if (this.alreadySelectedLanguageId != 0) {\r\n if (this.alreadySelectedLanguageId != data.Id && this.router.url == \"/engagement-mgt\") {\r\n this.router.navigate([\"/home\"], { queryParams: { engagementType: 'active' } })\r\n }\r\n }\r\n this.selectedLanguageId = data.Id\r\n this.alreadySelectedLanguageId = data.Id;\r\n });\r\n this.languageSerivce.mySubject.subscribe((data) => {\r\n var languageMappings = data;\r\n this.islabelLoaded = false;\r\n if (languageMappings?.length > 0) {\r\n englishLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.AddEngagement.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n if (englishLanguageMappings?.isGlobal) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.AddEngagement.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n }\r\n else {\r\n if (Number(this.selectedLanguageId) === 2) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.AddEngagement.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n }\r\n else {\r\n selectedLanguageMappings = englishLanguageMappings;\r\n }\r\n }\r\n this.selectedAppLanguageJson = JSON.parse(selectedLanguageMappings.languageMappingJSON);\r\n this.defaultEnglishJson = JSON.parse(englishLanguageMappings.languageMappingJSON);\r\n this.getLanguages();\r\n this.islabelLoaded = true;\r\n resolve(1);\r\n }\r\n else {\r\n\r\n }\r\n });\r\n })\r\n .catch(err => {\r\n this.spinner.hide();\r\n console.log(err);\r\n });\r\n }\r\n\r\n\r\n labelReplacer(labelKey): string {\r\n return this.selectedAppLanguageJson[labelKey]?.trim() ? this.selectedAppLanguageJson[labelKey] ?? 'text not found' : this.defaultEnglishJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n\r\n\r\n showNextControl(event) {\r\n if (event == \"language\")\r\n this.showEngagementSection = new ShowEngagementSection(true, false, false, false)\r\n if (event == \"basicDetails\")\r\n this.showEngagementSection = new ShowEngagementSection(false, true, false, false);\r\n if (event == \"contacts\")\r\n this.showEngagementSection = new ShowEngagementSection(false, false, true, false);\r\n if (event == \"folderSelection\")\r\n this.showEngagementSection = new ShowEngagementSection(false, false, false, true);\r\n this.stepper.next();\r\n }\r\n\r\n showPreviousControl(event) {\r\n if (event == \"language\")\r\n this.showEngagementSection = new ShowEngagementSection(true, false, false, false)\r\n if (event == \"basicDetails\")\r\n this.showEngagementSection = new ShowEngagementSection(false, true, false, false);\r\n if (event == \"contacts\")\r\n this.showEngagementSection = new ShowEngagementSection(false, false, true, false);\r\n this.stepper.previous();\r\n }\r\n\r\n ngDoCheck() {\r\n // if (this.selectedLanguageId != this.engagementMemoryService.getApplicationLanguageId() && this.isApplicationLanguageIdSet) {\r\n\r\n // this.router.navigate([\"/home\"], { queryParams: { engagementType: 'active' } });\r\n // }\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n}\r\n\r\nexport class ShowEngagementSection {\r\n showLanguageSelection: boolean;\r\n showEngagementDetails: boolean;\r\n showContact: boolean;\r\n showFolderManagement: boolean;\r\n constructor(showLanguageSelection, showEngagementDetails, showContact, showFolderManagement) {\r\n this.showLanguageSelection = showLanguageSelection;\r\n this.showEngagementDetails = showEngagementDetails;\r\n this.showContact = showContact;\r\n this.showFolderManagement = showFolderManagement;\r\n }\r\n}\r\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgMultiSelectDropDownModule } from 'ng-multiselect-dropdown';\r\nimport { AddEngagementComponent } from './add-engagement.component';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { TreeTableModule } from 'primeng/treetable';\r\nimport { PaginatorModule } from 'primeng/paginator';\r\nimport { AddEngagementRoutingModule } from './add-engagement-routing.module';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatStepperModule } from '@angular/material/stepper';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { BasicDetailsComponent } from './components/basic-details/basic-details.component';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { PanelModule } from 'primeng/panel';\r\nimport { CardModule } from 'primeng/card';\r\nimport { ContactsComponent } from './components/contacts/contacts.component';\r\n// import {AddRowDirective} from '../directives/add-row.directive';\r\nimport { TableModule } from 'primeng/table';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { ToggleButtonModule } from 'primeng/togglebutton';\r\nimport { from } from 'rxjs';\r\nimport { FolderStructureComponent } from './components/folder-structure/folder-structure.component';\r\nimport { TreeModule } from 'primeng/tree';\r\nimport { TreeDragDropService } from 'primeng/api';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { ConfirmationService, MessageService } from 'primeng/api';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { CalendarModule } from 'primeng/calendar';\r\nimport { InputSwitchModule } from 'primeng/inputswitch';\r\nimport { InputMaskModule } from 'primeng/inputmask'\r\nimport { NgxSpinnerModule } from 'ngx-spinner';\r\nimport { ToastModule } from 'primeng/toast';\r\nimport { LanguageComponent } from './components/language/language.component';\r\nimport { EditorModule,TINYMCE_SCRIPT_SRC } from '@tinymce/tinymce-angular';\r\nimport { AddEngagementMemoryService } from './add-engagement-memory-service/add-engagement-memory.service';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n NgMultiSelectDropDownModule,\r\n FormsModule,\r\n TreeTableModule,\r\n PaginatorModule,\r\n ReactiveFormsModule,\r\n AddEngagementRoutingModule,\r\n MatRadioModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatCardModule,\r\n MatIconModule,\r\n MatStepperModule,\r\n MatExpansionModule,\r\n MatCheckboxModule,\r\n MatSnackBarModule,\r\n EditorModule,\r\n MatDatepickerModule,\r\n MatNativeDateModule,\r\n MultiSelectModule,\r\n PanelModule,\r\n CardModule,\r\n TableModule,\r\n DropdownModule,\r\n ButtonModule,\r\n DialogModule,\r\n ToggleButtonModule,\r\n TreeModule,\r\n ConfirmDialogModule,\r\n TooltipModule,\r\n CalendarModule,\r\n InputSwitchModule,\r\n InputMaskModule,\r\n NgxSpinnerModule,\r\n ToastModule\r\n ],\r\n declarations: [AddEngagementComponent,\r\n BasicDetailsComponent,\r\n ContactsComponent,\r\n FolderStructureComponent,\r\n LanguageComponent,\r\n // , AddRowDirective\r\n ],\r\n providers: [\r\n MatDatepickerModule,\r\n TreeDragDropService,\r\n ConfirmationService,\r\n CalendarModule,\r\n AddEngagementMemoryService,\r\n MessageService,\r\n { provide: TINYMCE_SCRIPT_SRC, useValue: 'tinymce/tinymce.min.js' }\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n exports: [],\r\n})\r\n\r\nexport class AddEngagementModule { }\r\n","import { Component, OnInit, Output, EventEmitter, AfterViewInit } from '@angular/core';\r\nimport { FormGroup, FormBuilder, FormArray, Validators, FormControl, ValidatorFn, AbstractControl, AsyncValidatorFn } from '@angular/forms';\r\nimport { MatDatepickerInputEvent } from '@angular/material/datepicker';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { EngagementManagementService } from '../../../../framework/services/engagement-mgmt.service';\r\nimport { IfStmt } from '@angular/compiler';\r\nimport { AddEngagementMemoryService } from '../../add-engagement-memory-service/add-engagement-memory.service'\r\nimport { element } from 'protractor';\r\nimport { Observable, of } from 'rxjs';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { CategoryConstant } from 'src/app/shared/app-constants/category-constants';\r\nimport { LanguageService } from 'src/framework/services/language.service';\r\nimport { DocumentManagementService } from 'src/framework/services/manage-doc.service';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'app-basic-details',\r\n templateUrl: './basic-details.component.html',\r\n styleUrls: ['./basic-details.component.css']\r\n})\r\nexport class BasicDetailsComponent implements OnInit {\r\n\r\n languageBasedRoles = [];\r\n jurisdictionOption = [];\r\n engagementLabelModel: EngagementLabelModel;\r\n engagementDynamicDetails: DynamicDetailsModel[];\r\n detailsLanguageMapping = [];\r\n value: Date;\r\n maxDateValue: Date = new Date();\r\n selectedLanguageId: number;\r\n defaultEnglishJson: any;\r\n islabelLoaded: boolean = false;\r\n selectedAppLanguageJson: any;\r\n\r\n engagementDetailsForms: EngagementDetailsForm;\r\n basicDetailsForm: FormGroup;\r\n\r\n selectedRoleLabelJson: any;\r\n defaultEngRoleLabelJson: any;\r\n selectedLangDateJson: any;\r\n showEditor = false;\r\n tinyMceConfig: any;\r\n defaultEngDateJson: any;\r\n localeSetting: any;\r\n urlDomain: string = \"https://ey.com/ca/\";\r\n yearRange: string;\r\n @Output() showNextControl = new EventEmitter()\r\n @Output() showPreviousControl = new EventEmitter();\r\n\r\n\r\n constructor(\r\n private engagementManagementService: EngagementManagementService,\r\n private addEngagementMemoryService: AddEngagementMemoryService,\r\n private fb: FormBuilder,\r\n private manageDocService:DocumentManagementService,\r\n private languageSerivce: LanguageService,\r\n private spinner: NgxSpinnerService) {\r\n this.yearRange = (new Date().getFullYear()) - 20 + ':' + (new Date().getFullYear());\r\n this.spinner.show();\r\n this.engagementLabelModel = new EngagementLabelModel(\"Engagement Name\", \"EY Role\", 'Description');\r\n this.engagementDetailsForms = new EngagementDetailsForm(new Date(), true, '', false, '', '');\r\n this.engagementDynamicDetails = new Array();\r\n let engagementLanguageDetailsForm = [];\r\n this.languageBasedRoles = this.addEngagementMemoryService.getLanguageBasedRoles();\r\n this.jurisdictionOption = this.addEngagementMemoryService.getJurisdictionOption();\r\n let selectedLanguages = this.addEngagementMemoryService.getSelectedLanguages();\r\n if (selectedLanguages.length > 0) {\r\n for (let i = 0; i < selectedLanguages.length; i++) {\r\n let dynamicModel = new DynamicDetailsModel(\"\", \"\", selectedLanguages[i].name, '', selectedLanguages[i].languageId);\r\n this.engagementDynamicDetails.push(dynamicModel);\r\n engagementLanguageDetailsForm.push(this.getEngagementDetailsFormGroup(this.engagementDynamicDetails[i]));\r\n }\r\n }\r\n this.basicDetailsForm = this.fb.group({\r\n initialDateControl: [this.engagementDetailsForms.IntialDate],\r\n isConfidentialControl: [false],\r\n shortURLControl: [this.engagementDetailsForms.ShortUrl, [Validators.maxLength(25), this.validateShortURl()], [this.shortUrlDuplicateValidator()]],\r\n isFormalControl: [true],\r\n eyRole: [this.engagementDetailsForms.EYRole, [this.engagementRoleValidation()]],\r\n jurisdiction: [this.engagementDetailsForms.Jurisdiction, [this.jurisdictionValidation()]],\r\n engagementLanguageBasedDetails: this.fb.array(engagementLanguageDetailsForm)\r\n })\r\n this.spinner.hide();\r\n }\r\n\r\n ngOnInit() {\r\n this.configureTinyMce();\r\n this.loadLanguageLabel();\r\n \r\n if (this.addEngagementMemoryService.getEngagementDetails() != null) {\r\n this.spinner.show();\r\n this.setEngagementDetails(this.addEngagementMemoryService.getEngagementDetails());\r\n this.spinner.hide();\r\n }\r\n }\r\n\r\n // ngAfterViewInit() {\r\n\r\n // }\r\n\r\n\r\n loadLanguageLabel() {\r\n let englishLanguageMappings, selectedLanguageMappings: any;\r\n let englishLangRoleMappings, selectedLangRoleMappings: any;\r\n let englishDateMappings, selectedLangDateMappings: any;\r\n\r\n return new Promise((resolve, reject) => {\r\n this.spinner.show();\r\n if (sessionStorage.getItem('selectedLanguageId')) {\r\n this.selectedLanguageId = 1;//JSON.parse(sessionStorage.getItem('selectedLanguageId'));\r\n }\r\n\r\n this.languageSerivce.currentData.subscribe(data => {\r\n this.selectedLanguageId = data.Id\r\n });\r\n\r\n\r\n this.languageSerivce.mySubject.subscribe((data) => {\r\n var languageMappings = data;\r\n if (languageMappings?.length > 0) {\r\n\r\n englishLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.AddEngagement.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishLangRoleMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.UserRole.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n if (englishLanguageMappings?.isGlobal) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.AddEngagement.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangRoleMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.UserRole.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n }\r\n else {\r\n if (Number(this.selectedLanguageId) === 2) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.AddEngagement.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangRoleMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.UserRole.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n }\r\n else {\r\n selectedLanguageMappings = englishLanguageMappings;\r\n selectedLangRoleMappings = englishLangRoleMappings;\r\n selectedLangDateMappings = englishDateMappings;\r\n\r\n }\r\n }\r\n\r\n this.selectedAppLanguageJson = JSON.parse(selectedLanguageMappings.languageMappingJSON);\r\n this.defaultEnglishJson = JSON.parse(englishLanguageMappings.languageMappingJSON);\r\n\r\n this.selectedRoleLabelJson = JSON.parse(selectedLangRoleMappings?.languageMappingJSON ?? englishLangRoleMappings.languageMappingJSON);\r\n this.defaultEngRoleLabelJson = JSON.parse(englishLangRoleMappings.languageMappingJSON);\r\n\r\n this.selectedLangDateJson = JSON.parse(selectedLangDateMappings?.languageMappingJSON ?? englishDateMappings.languageMappingJSON);\r\n this.defaultEngDateJson = JSON.parse(englishDateMappings.languageMappingJSON);\r\n\r\n this.setCalendarLocale();\r\n this.islabelLoaded = true;\r\n this.spinner.hide();\r\n\r\n \r\n resolve(1);\r\n }\r\n else {\r\n this.spinner.hide();\r\n }\r\n });\r\n })\r\n .catch(err => {\r\n this.spinner.hide();\r\n\r\n console.log(err);\r\n });\r\n }\r\n\r\n\r\n RoleReplacer(labelKey): string {\r\n return this.selectedRoleLabelJson[labelKey]?.trim() ? this.selectedRoleLabelJson[labelKey] ?? 'text not found' : this.defaultEngRoleLabelJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n \r\n configureTinyMce() {\r\n const that = this;\r\n this.tinyMceConfig = {\r\n branding: false,\r\n toolbar_mode: 'sliding',\r\n toolbar_sticky: false,\r\n inline: false,\r\n statusbar: false,\r\n theme: \"silver\",\r\n resize: false,\r\n skin: \"oxide\",\r\n skin_url: 'assets/skins/ui/oxide',\r\n base_url: '/tinymce', \r\n suffix: '.min',\r\n plugins: [\r\n \"print preview importcss autoresize searchreplace autolink autosave save directionality visualblocks visualchars fullscreen image link media template codesample table charmap hr pagebreak nonbreaking anchor toc insertdatetime advlist lists wordcount imagetools textpattern noneditable help code charmap emoticons paste table\"],\r\n menubar: 'edit insert view format table tools help',\r\n force_br_newlines: false,\r\n //force_p_newlines: false,\r\n //forced_root_block: '',\r\n // content_css: [\r\n // '//fonts.googleapis.com/css?family=EYFontRegular',\r\n // ],\r\n paste_as_text: true,\r\n paste_text_sticky: true,\r\n font_formats: 'EYFontRegular=EYFontRegular;',\r\n theme_advanced_fonts: \"EYFontRegular=EYFontRegular\",\r\n extended_valid_elements: \"@[id|class|title|style|onmouseover|onclick],\" +\r\n \"a[name|href=javascript:void(0);|target|title|alt],\" +\r\n \"#div,blockquote,-ol,-ul,-li,br,img[src|height|width],-sub,-sup,-b,-i,-u,\" +\r\n \"-span[data-mce-type],hr,\",\r\n toolbar: 'bold italic backcolor | ' +\r\n 'bullist numlist outdent indent | alignright alignjustify |' +\r\n ' alignleft aligncenter | removeformat |' +\r\n ' help '\r\n };\r\n }\r\n\r\n\r\n labelReplacer(labelKey): string {\r\n return this.selectedAppLanguageJson[labelKey]?.trim() ? this.selectedAppLanguageJson[labelKey] ?? 'text not found' : this.defaultEnglishJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n calendarReplacer(labelKey): string {\r\n return this.selectedLangDateJson[labelKey]?.trim() ? this.selectedLangDateJson[labelKey] ?? 'text not found' : this.defaultEngDateJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n dayOrMonthNameShort(name, length): string {\r\n let shortName = '';\r\n if (name?.trim()?.length == 0)\r\n shortName = 'Text not found';\r\n else if (name?.trim()?.length > 0 && name?.trim()?.length < length)\r\n shortName = name;\r\n else\r\n shortName = name.substr(0, length);\r\n return shortName;\r\n }\r\n\r\n setCalendarLocale() {\r\n this.localeSetting = {\r\n firstDayOfWeek: 0,\r\n dayNames: [\r\n this.calendarReplacer(\"SUN\"),\r\n this.calendarReplacer(\"MON\"), this.calendarReplacer(\"TUE\"), this.calendarReplacer(\"WED\"),\r\n this.calendarReplacer(\"THU\"), this.calendarReplacer(\"FRI\"), this.calendarReplacer(\"SAT\")\r\n ],\r\n dayNamesShort: [\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"SUN\"), 3),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"MON\"), 3), this.dayOrMonthNameShort(this.calendarReplacer(\"TUE\"), 3),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"WED\"), 3), this.dayOrMonthNameShort(this.calendarReplacer(\"THU\"), 3),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"FRI\"), 3), this.dayOrMonthNameShort(this.calendarReplacer(\"SAT\"), 3)\r\n ],\r\n dayNamesMin: [\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"SUN\"), 1),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"MON\"), 1), this.dayOrMonthNameShort(this.calendarReplacer(\"TUE\"), 1),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"WED\"), 1), this.dayOrMonthNameShort(this.calendarReplacer(\"THU\"), 1),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"FRI\"), 1), this.dayOrMonthNameShort(this.calendarReplacer(\"SAT\"), 1)\r\n ],\r\n monthNames: [\r\n this.calendarReplacer(\"JAN\"), this.calendarReplacer(\"FEB\"), this.calendarReplacer(\"MAR\"),\r\n this.calendarReplacer(\"APR\"), this.calendarReplacer(\"MAY\"), this.calendarReplacer(\"JUN\"),\r\n this.calendarReplacer(\"JUL\"), this.calendarReplacer(\"AUG\"), this.calendarReplacer(\"SEP\"),\r\n this.calendarReplacer(\"OCT\"), this.calendarReplacer(\"NOV\"), this.calendarReplacer(\"DEC\")\r\n ],\r\n monthNamesShort: [\r\n this.calendarReplacer(\"JAN\"), this.calendarReplacer(\"FEB\"), this.calendarReplacer(\"MAR\"),\r\n this.calendarReplacer(\"APR\"), this.calendarReplacer(\"MAY\"), this.calendarReplacer(\"JUN\"),\r\n this.calendarReplacer(\"JUL\"), this.calendarReplacer(\"AUG\"), this.calendarReplacer(\"SEP\"),\r\n this.calendarReplacer(\"OCT\"), this.calendarReplacer(\"NOV\"), this.calendarReplacer(\"DEC\")\r\n ],\r\n today: this.calendarReplacer('TODAY'),\r\n clear: this.calendarReplacer('CLEAR')\r\n }\r\n }\r\n\r\n getEngagementDetailsFormGroup(model: DynamicDetailsModel): FormGroup {\r\n return this.fb.group({\r\n engagementName: [model.engagementName, [Validators.required], [this.engagementNameDuplicateValidator()]],\r\n engagementDescription: [model.descritpion]\r\n });\r\n }\r\n\r\n onNextButtonClicked(event, value) {\r\n if (!this.basicDetailsForm.invalid) {\r\n this.addEngagementMemoryService.setEngagementDetails(this.engagementDetailsForms.IntialDate, this.engagementDetailsForms.IsFormal,\r\n this.engagementDetailsForms.ShortUrl, this.engagementDetailsForms.IsConfidential, this.engagementDynamicDetails, this.urlDomain, this.engagementDetailsForms.EYRole, this.engagementDetailsForms.Jurisdiction);\r\n this.showNextControl.emit(value);\r\n } else {\r\n this.basicDetailsForm.markAllAsTouched();\r\n }\r\n }\r\n\r\n onPreviousButtonClick(event, value) {\r\n this.addEngagementMemoryService.setEngagementDetails(this.engagementDetailsForms.IntialDate, this.engagementDetailsForms.IsFormal, this.engagementDetailsForms.ShortUrl, this.engagementDetailsForms.IsConfidential, this.engagementDynamicDetails, this.urlDomain, this.engagementDetailsForms.EYRole, this.engagementDetailsForms.Jurisdiction);\r\n this.showPreviousControl.emit(value);\r\n }\r\n\r\n setEngagementDetails(model: any) {\r\n this.engagementDetailsForms.IntialDate = model.initalDate;\r\n this.engagementDetailsForms.IsConfidential = model.isConfidential\r\n this.engagementDetailsForms.IsFormal = model.isPrivate;\r\n this.engagementDetailsForms.ShortUrl = model.shortUrl;\r\n this.engagementDetailsForms.EYRole = model.eyRole\r\n this.engagementDetailsForms.Jurisdiction = model.jurisdiction\r\n if (model.languageBasedDetails && model.languageBasedDetails.length > 0) {\r\n this.engagementDynamicDetails.forEach(element => {\r\n let savedEngagementDetails = model.languageBasedDetails.find(t => t.languageId == element.languageId);\r\n if (savedEngagementDetails) {\r\n element.engagementName = savedEngagementDetails.engagementName ? savedEngagementDetails.engagementName : \"\";\r\n element.descritpion = savedEngagementDetails.descritpion ? savedEngagementDetails.descritpion : \"\";\r\n }\r\n })\r\n }\r\n }\r\n\r\n engagementRoleValidation(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n if (control.touched && control.value && control.value?.engagementRoleId > 0) {\r\n return null;\r\n } else if (!control.touched && control.value && control.value?.engagementRoleId > 0) {\r\n return null;\r\n }\r\n return { 'roleRequired': 'Language is required' };\r\n }\r\n }\r\n\r\n\r\n jurisdictionValidation(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n if (control.touched && control.value && control.value?.jurisdictionOfFilingId > 0) {\r\n return null;\r\n } else if (!control.touched && control.value && control.value?.jurisdictionOfFilingId > 0) {\r\n return null;\r\n }\r\n return { 'jurisdictionRequired': 'Jurisdiction is required' };\r\n }\r\n }\r\n\r\n validateShortURl(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n const url = this.urlDomain.trim() + control.value;\r\n const URL_REGEXP = /^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/gm\r\n if (control.value != \"\" && control.valid && !url.match(URL_REGEXP)) {\r\n return { 'invalidUrl': 'invalid url' }\r\n }\r\n return null;\r\n }\r\n }\r\n\r\n shortUrlDuplicateValidator(): AsyncValidatorFn {\r\n return (control: AbstractControl): Observable<{ [key: string]: any | null }> => {\r\n if ((control.dirty) && control?.value.length > 0) {\r\n return this.engagementManagementService.findShortUrl(this.urlDomain + control.value);\r\n }\r\n return of(null);\r\n }\r\n }\r\n\r\n engagementNameDuplicateValidator(): AsyncValidatorFn {\r\n return (control: AbstractControl): Observable<{ [key: string]: any | null }> => {\r\n if ((control.dirty) && control?.value.length > 0) {\r\n return this.engagementManagementService.validateEngagementName(control.value, 0);\r\n }\r\n return of(null);\r\n }\r\n }\r\n}\r\n\r\nexport class EngagementLabelModel {\r\n EngagementName: string;\r\n EYRole: string;\r\n Description: string;\r\n constructor(engagementName: string, eyRole: string, description: string) {\r\n this.EngagementName = engagementName;\r\n this.EYRole = eyRole;\r\n this.Description = description;\r\n }\r\n}\r\n\r\nexport class DynamicDetailsModel {\r\n engagementName: string;\r\n descritpion: string;\r\n language: string;\r\n eyRole: any;\r\n languageId: number;\r\n constructor(engagementName: string, descritpion: string, language: string, eyRole: any, languageId: number) {\r\n this.engagementName = engagementName;\r\n this.descritpion = descritpion;\r\n this.language = language;\r\n this.eyRole = eyRole;\r\n this.languageId = languageId;\r\n }\r\n}\r\n\r\nexport class EngagementDetailsForm {\r\n IntialDate: Date;\r\n IsFormal: boolean;\r\n ShortUrl: string;\r\n IsConfidential: boolean;\r\n EYRole: any;\r\n Jurisdiction: any;\r\n constructor(intialDate: Date, isFormal: boolean, shortUrl: string, isConfidential: boolean, eyRole: any, jurisdiction: any) {\r\n this.IntialDate = intialDate;\r\n this.IsFormal = isFormal;\r\n this.ShortUrl = shortUrl;\r\n this.IsConfidential = isConfidential;\r\n this.EYRole = eyRole;\r\n this.Jurisdiction = jurisdiction;\r\n }\r\n}\r\n","import { Component, OnInit, NgModule, Output, EventEmitter, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup, FormControl, FormArray, Validators, ValidatorFn, AbstractControl, AsyncValidatorFn } from '@angular/forms';\r\nimport { InternalUser } from '../../../entities/internal-user';\r\nimport { UserService } from '../../../../framework/services/userservice';\r\nimport { SidebarModule } from 'primeng/sidebar';\r\nimport { LogoManagementService } from '../../../../framework/services/logo-mgmt.service';\r\nimport { ConfirmationService, MessageService, SelectItem } from 'primeng/api';\r\nimport { AppConfigService } from '../../../../framework/services/app-config.service';\r\nimport { CommonService } from '../../../../framework/services/common.service';\r\nimport { NgxSpinnerService } from 'ngx-spinner'\r\nimport { CustomMessageService } from '../../../../framework/services/custom-message.service';\r\nimport { AddEngagementMemoryService } from '../../add-engagement-memory-service/add-engagement-memory.service';\r\nimport { element } from 'protractor';\r\nimport { Observable, of } from 'rxjs';\r\nimport { CategoryConstant } from 'src/app/shared/app-constants/category-constants';\r\nimport { LanguageService } from 'src/framework/services/language.service';\r\nimport { ImageType } from 'src/app/enums/image-type';\r\nimport { LogoIconMgmtService } from 'src/framework/services/logo-icon-mgmt.service';\r\n\r\n@Component({\r\n\r\n selector: 'app-contacts',\r\n templateUrl: './contacts.component.html',\r\n styleUrls: ['./contacts.component.css']\r\n})\r\n\r\n@NgModule({\r\n imports: [\r\n SidebarModule,\r\n ],\r\n declarations: [],\r\n providers: []\r\n})\r\n\r\nexport class ContactsComponent implements OnInit {\r\n editing = true;\r\n emailList: any = [];\r\n selectedLanguages: any[] = [];\r\n\r\n displayInternalUserDropDown = true;\r\n isSaveButtonEnable: boolean = true;\r\n //internal Contacts\r\n internalContactColumns: any[];\r\n internalContactsTableData: any[] = [];\r\n internalContactModel: InternalUserModel;\r\n userDropDownData: any = [];\r\n userRoles = [];\r\n internalContactRowIndex: number = 0;\r\n\r\n //externalContactsRoles\r\n externalRoleColumns: any = [];\r\n externalRolesTableData = [];\r\n externalContactRoleRowIndex: number = 0;\r\n\r\n\r\n //externalContacts\r\n externalContactColumns: any[];\r\n externalContacts: any[] = [];\r\n externalContactModel: ExternalContactModel;\r\n externalContactRoleModel = [];\r\n logoList: SelectItem[];\r\n externalContactRowIndex: number = 0;\r\n\r\n displayInternalContactDialog: boolean;\r\n displayRoleDialog: boolean;\r\n displayExternalDialog: boolean;\r\n externalRoleDropDown: any = [];\r\n isEnglishLanguageSelected: boolean = false;\r\n isFrenchLanguageSelected: boolean = false;\r\n\r\n addInternalUserForm: FormGroup;\r\n externalContactSectionRole: FormGroup;\r\n externalContactForm: FormGroup;\r\n\r\n duplicateIntenalUsers: any = \"\";\r\n clonedRolesTableData = [];\r\n clonedExternalTableData = [];\r\n\r\n selectedLanguageId: number;\r\n defaultEnglishJson: any;\r\n islabelLoaded: boolean = false;\r\n selectedAppLanguageJson: any;\r\n selectedLangStatusJson: any;\r\n defaultEngStatusJson: any;\r\n selectedLangLabelJson: any;\r\n defaultEngLangLabelJson: any;\r\n loggedInUserModel: any;\r\n\r\n @Output() showNextControl = new EventEmitter()\r\n @Output() showPreviousControl = new EventEmitter();\r\n editInternalContactRowIdex: number = -1;\r\n\r\n constructor(private userService: UserService,\r\n private logoManagementService: LogoManagementService,\r\n private confirmationService: ConfirmationService,\r\n private appConfigService: AppConfigService,\r\n private commonService: CommonService,\r\n private languageSerivce: LanguageService,\r\n private engagementMemoryService: AddEngagementMemoryService,\r\n private fb: FormBuilder,\r\n public messageService: MessageService,\r\n private customMessageService: CustomMessageService,\r\n private ngxSpinner: NgxSpinnerService,\r\n private logoIconMgmtService: LogoIconMgmtService) {\r\n this.externalContacts = new Array();\r\n this.internalContactModel = new InternalUserModel();\r\n this.internalContactsTableData = new Array();\r\n this.externalContactModel = new ExternalContactModel(0, \"\", \"\", \"\", \"\", true, '', '', '')\r\n this.selectedLanguages = this.engagementMemoryService.getSelectedLanguages();\r\n\r\n this.externalContactSectionRole = this.fb.group({\r\n \"externalRoleControls\": this.fb.array([])\r\n });\r\n this.addInternalUserForm = new FormGroup({\r\n 'internalRoleCtrl': new FormControl('', [this.internalRoleValidation()]),\r\n 'internalUserCtrl': new FormControl('', [this.internalUserSelectValidation(), this.userDuplicateValidator(), this.reviewerValidator()]),\r\n 'internalEmailCtrl': new FormControl('', [Validators.email]),\r\n 'internalIsDisplayCtrl': new FormControl(false),\r\n 'internalContactCtrl': new FormControl(this.internalContactModel.contactNumber),\r\n 'internalFaxNo': new FormControl(this.internalContactModel.faxNumber)\r\n });\r\n this.externalContactForm = new FormGroup({\r\n 'externalRoleCtrl': new FormControl(this.externalContactModel.selectedRole, [Validators.required]),\r\n 'externalContactNameCtrl': new FormControl(this.externalContactModel.contactName, [Validators.required]),\r\n 'externalEmailCtrl': new FormControl(this.externalContactModel.email, [Validators.email]),\r\n 'externalContactPhoneCtrl': new FormControl(this.externalContactModel.phoneNumber),\r\n 'externalContactLanguageCtrl': new FormControl(this.externalContactModel.selectedLangages, [Validators.required]),\r\n 'externalContactLogoCtrl': new FormControl(this.externalContactModel.selectedLogo, [Validators.required]),\r\n 'externalIsDisplayCtrl': new FormControl(true),\r\n 'externalContactFaxNoCtrl': new FormControl(this.externalContactModel.faxNo)\r\n })\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadLanguageLabel();\r\n this.getExternalContactLogoList();\r\n if (this.selectedLanguages.length > 0) {\r\n let actualLanguageSelected = this.engagementMemoryService.getActualLanguageSelected();\r\n this.selectedLanguages.forEach(element => {\r\n if (element.languageId == 1)\r\n this.isEnglishLanguageSelected = true;\r\n\r\n for (let i = 0; i < actualLanguageSelected.length; i++) {\r\n if (actualLanguageSelected[i].languageId == element.languageId) {\r\n this.externalRoleColumns.push({ field: actualLanguageSelected[i].name, header: element.name, });\r\n this.externalContactRoleModel.push({ language: actualLanguageSelected[i].name, value: '', });\r\n (this.externalContactSectionRole.get('externalRoleControls')).controls.push(this.fb.group({\r\n 'externalRoleControl': ['', [Validators.required]]\r\n }));\r\n break;\r\n }\r\n }\r\n })\r\n if (!this.isEnglishLanguageSelected)\r\n this.isFrenchLanguageSelected = true;\r\n }\r\n this.loadContactDetails();\r\n this.loggedInUserModel = JSON.parse(localStorage.getItem('userModel'));\r\n }\r\n\r\n\r\n getUserList(roleId) {\r\n this.ngxSpinner.show();\r\n this.userService.getUserListByRoleId(roleId).subscribe((response: any) => {\r\n if (response.responseStatus == 1) {\r\n\r\n } else {\r\n if (response.data && response.data.length > 0)\r\n this.userDropDownData = response.data.map(t => ({\r\n userName: t.firstName + \" \" + t.lastName,\r\n userId: t.userId,\r\n emailId: t.emailId\r\n }))\r\n else {\r\n this.userDropDownData = [];\r\n }\r\n }\r\n this.ngxSpinner.hide();\r\n });\r\n }\r\n\r\n getExternalContactLogoList() {\r\n this.ngxSpinner.show();\r\n this.logoManagementService.GetExternalContactLogoList().subscribe((response: any) => {\r\n if (response.data) {\r\n this.logoList = response.data.map(x => ({\r\n label: x.logoName,\r\n value: x.logoIconImageDataId,\r\n result: 'data:image/png;base64,' + x.result\r\n }));\r\n }\r\n this.getUserRoles();\r\n this.loadContactDetails();\r\n this.ngxSpinner.hide();\r\n });\r\n }\r\n\r\n showInternalContactDialogToAdd() {\r\n this.resetAddInternalContact();\r\n this.displayInternalContactDialog = true;\r\n }\r\n\r\n getUserByRole(event) {\r\n if (event && event.value) {\r\n this.internalContactModel.roleId = event.value.userRoleId;\r\n this.internalContactModel.roleName = event.value.role;\r\n this.internalContactModel.selectedUser = {};\r\n this.internalContactModel.email = \"\";\r\n this.getUserList(event.value.userRoleId)\r\n }\r\n }\r\n\r\n AddInternalContact() {\r\n if (!this.addInternalUserForm.invalid) {\r\n this.internalContactModel.rowIndex = this.internalContactRowIndex;\r\n this.internalContactRowIndex++;\r\n let model = { ...this.internalContactModel }\r\n this.internalContactsTableData.push(model);\r\n this.internalContactsTableData.sort((a, b) => {\r\n if (a.userName > b.userName)\r\n return 1;\r\n if (b.userName > a.userName)\r\n return -1\r\n return 0;\r\n })\r\n this.displayInternalContactDialog = false;\r\n } else {\r\n this.addInternalUserForm.markAllAsTouched();\r\n }\r\n }\r\n\r\n resetAddInternalContact() {\r\n this.addInternalUserForm.reset();\r\n this.userDropDownData = [];\r\n this.internalContactModel.rowIndex = 0;\r\n this.internalContactModel.roleId = 0;\r\n this.internalContactModel.roleName = \"\";\r\n this.internalContactModel.userId = 0;\r\n this.internalContactModel.userName = \"\";\r\n this.internalContactModel.email = \"\";\r\n this.internalContactModel.isDisplay = false;\r\n this.internalContactModel.selectedRole = {};\r\n this.internalContactModel.selectedUser = {};\r\n this.duplicateIntenalUsers = \"\";\r\n this.internalContactModel.contactNumber = \"\";\r\n this.isSaveButtonEnable = true;\r\n //this.externalContactRoleRowIndex = -1;\r\n this.internalContactModel.faxNumber = \"\";\r\n }\r\n\r\n onInternalContactEditInit(rowData) {\r\n this.ngxSpinner.show();\r\n this.resetAddInternalContact();\r\n this.getUserList(rowData.roleId);\r\n this.displayInternalContactDialog = true;\r\n setTimeout(() => {\r\n this.ngxSpinner.show();\r\n this.internalContactModel = { ...rowData }\r\n this.duplicateIntenalUsers = { ...rowData };\r\n this.editInternalContactRowIdex = rowData.rowIndex;\r\n this.ngxSpinner.hide();\r\n }, 1000)\r\n this.isSaveButtonEnable = false;\r\n }\r\n\r\n showDialogToAddRole() {\r\n this.resetRolesSection();\r\n this.displayRoleDialog = true;\r\n }\r\n\r\n saveRole() {\r\n let isValid = true;\r\n (this.externalContactSectionRole.get('externalRoleControls')).controls.forEach(element => {\r\n if (element.invalid) {\r\n isValid = false\r\n return;\r\n }\r\n })\r\n if (isValid) {\r\n let obj = {};\r\n obj[\"rowIndex\"] = this.externalContactRoleRowIndex;\r\n (this.externalContactSectionRole.get('externalRoleControls')).controls.forEach((element, index) => {\r\n obj[this.externalContactRoleModel[index].language] = element.value.externalRoleControl;\r\n });\r\n this.externalRolesTableData.push(obj);\r\n this.externalContactRoleRowIndex++;\r\n this.displayRoleDialog = false;\r\n } else {\r\n this.externalContactSectionRole.get('externalRoleControls').markAllAsTouched();\r\n }\r\n }\r\n\r\n resetRolesSection() {\r\n this.externalContactSectionRole.get('externalRoleControls').reset();\r\n (this.externalContactSectionRole.get('externalRoleControls')).controls.forEach((element, index) => {\r\n element.setValue({ 'externalRoleControl': '' });\r\n });\r\n }\r\n\r\n showDialogToAddExternal() {\r\n if (this.externalRolesTableData.length > 0) {\r\n this.resetExternalContactUser();\r\n this.loadExternalRoles();\r\n this.displayExternalDialog = true;\r\n }\r\n }\r\n\r\n\r\n loadLanguageLabel() {\r\n let englishLanguageMappings, selectedLanguageMappings: any;\r\n let englishStatusMappings, selectedLangStatusMappings: any;\r\n let englishLangLabelMappings, selectedLangLabelMappings: any;\r\n\r\n return new Promise((resolve, reject) => {\r\n if (sessionStorage.getItem('selectedLanguageId')) {\r\n this.selectedLanguageId = 1;//JSON.parse(sessionStorage.getItem('selectedLanguageId'));\r\n }\r\n this.languageSerivce.currentData.subscribe(data => {\r\n this.selectedLanguageId = data.Id\r\n });\r\n\r\n\r\n this.languageSerivce.mySubject.subscribe((data) => {\r\n var languageMappings = data;\r\n if (languageMappings?.length > 0) {\r\n\r\n englishLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.AddEngagement.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishStatusMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Status.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n if (englishLanguageMappings?.isGlobal) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.AddEngagement.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangStatusMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Status.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n }\r\n else {\r\n if (Number(this.selectedLanguageId) === 2) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.AddEngagement.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n\r\n selectedLangStatusMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Status.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n }\r\n else {\r\n selectedLanguageMappings = englishLanguageMappings;\r\n selectedLangStatusMappings = englishStatusMappings;\r\n selectedLangLabelMappings = englishLangLabelMappings;\r\n }\r\n }\r\n\r\n this.selectedAppLanguageJson = JSON.parse(selectedLanguageMappings.languageMappingJSON);\r\n\r\n this.defaultEnglishJson = JSON.parse(englishLanguageMappings.languageMappingJSON);\r\n\r\n this.selectedLangLabelJson = JSON.parse(selectedLangLabelMappings?.languageMappingJSON ?? englishLangLabelMappings.languageMappingJSON);\r\n this.defaultEngLangLabelJson = JSON.parse(englishLangLabelMappings.languageMappingJSON);\r\n\r\n this.selectedLangStatusJson = JSON.parse(selectedLangStatusMappings?.languageMappingJSON ?? englishStatusMappings.languageMappingJSON);\r\n this.defaultEngStatusJson = JSON.parse(englishStatusMappings.languageMappingJSON);\r\n this.internalContactColumns = [\r\n { field: 'roleName', header: this.labelReplacer('Role') },\r\n { field: 'userName', header: this.labelReplacer('Name') },\r\n { field: 'email', header: this.labelReplacer('EmailId') },\r\n { field: 'contactNumber', header: this.labelReplacer('PhoneNo') },\r\n { field: 'faxNumber', header: this.labelReplacer('FaxNo') },\r\n { field: 'isDisplay', header: this.labelReplacer('Display') }\r\n ];\r\n this.externalContactColumns = [\r\n { field: 'selectedRole', header: this.labelReplacer('Role') },\r\n { field: 'contactName', header: this.labelReplacer('Name') },\r\n { field: 'email', header: this.labelReplacer('EmailId') },\r\n { field: 'phoneNumber', header: this.labelReplacer('PhoneNo') },\r\n { field: 'faxNo', header: this.labelReplacer('FaxNo') },\r\n { field: 'language', header: this.labelReplacer('Language') },\r\n { field: 'logo', header: this.labelReplacer('Logo') },\r\n { field: 'display', header: this.labelReplacer('Display') }\r\n ];\r\n\r\n this.islabelLoaded = true;\r\n resolve(1);\r\n }\r\n else {\r\n }\r\n });\r\n })\r\n .catch(err => {\r\n\r\n console.log(err);\r\n });\r\n }\r\n\r\n\r\n labelReplacer(labelKey): string {\r\n return this.selectedAppLanguageJson[labelKey]?.trim() ? this.selectedAppLanguageJson[labelKey] ?? 'text not found' : this.defaultEnglishJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n languageReplacer(labelKey): string {\r\n return this.selectedLangLabelJson[labelKey]?.trim() ? this.selectedLangLabelJson[labelKey] ?? 'text not found' : this.defaultEngLangLabelJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n\r\n statusReplacer(labelKey): string {\r\n return this.selectedLangStatusJson[labelKey]?.trim() ? this.selectedLangStatusJson[labelKey] ?? 'text not found' : this.defaultEngStatusJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n\r\n\r\n loadExternalRoles() {\r\n let roles = [];\r\n if (this.isEnglishLanguageSelected) {\r\n roles = this.externalRolesTableData.map(t => ({ value: t.rowIndex, name: t.English }))\r\n } else if (this.isFrenchLanguageSelected) {\r\n roles = this.externalRolesTableData.map(t => ({ value: t.rowIndex, name: t.French }))\r\n }\r\n this.externalRoleDropDown = roles;\r\n }\r\n\r\n onNameSelection(event) {\r\n if (event.value) {\r\n this.internalContactModel.userId = event.value.userId;\r\n this.internalContactModel.userName = event.value.userName;\r\n this.internalContactModel.email = event.value.emailId;\r\n }\r\n }\r\n\r\n getUserRoles() {\r\n this.ngxSpinner.show();\r\n this.commonService.getUserRoles().subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n\r\n } else {\r\n if (response && response.data.length > 0) {\r\n this.userRoles = response.data;\r\n this.userRoles.forEach(item => {\r\n item.role = this.labelReplacer(item.role);\r\n })\r\n }\r\n }\r\n this.ngxSpinner.hide();\r\n });\r\n }\r\n\r\n saveExternalUser() {\r\n if (!this.externalContactForm.invalid) {\r\n this.externalContactModel.rowIndex = this.externalContactRowIndex;\r\n this.externalContactModel.externalRole = this.externalContactModel.selectedRole.name\r\n this.externalContactModel.externalRoleId = this.externalContactModel.selectedRole.value;\r\n this.externalContactModel.selectedLangages.forEach(element => {\r\n this.externalContactModel.language += element.name + \" \"\r\n });\r\n this.externalContactModel.language = this.externalContactModel.language.trim();\r\n // this.externalContactModel.logo = this.externalContactModel.selectedLogo;\r\n this.externalContactModel.logo = this.logoList.find((t) => t.value == this.externalContactModel.selectedLogo)?.label\r\n this.externalContacts.push({ ...this.externalContactModel });\r\n this.externalContactRowIndex++;\r\n this.displayExternalDialog = false;\r\n\r\n } else {\r\n this.externalContactForm.markAllAsTouched();\r\n }\r\n }\r\n\r\n resetExternalContactUser() {\r\n this.externalContactForm.reset();\r\n this.externalContactModel = new ExternalContactModel(0, \"\", \"\", \"\", \"\", true, '', '', '');\r\n this.externalContactForm.get('externalIsDisplayCtrl').setValue(true);\r\n }\r\n\r\n onNextButtonClicked(event) {\r\n let validationModel = this.validateOnNext();\r\n if (validationModel.isValid) {\r\n this.engagementMemoryService.setContactDetails(this.internalContactsTableData, this.externalRolesTableData, this.externalContacts);\r\n this.showNextControl.emit(\"folderSelection\");\r\n } else {\r\n this.messageService.add({\r\n summary: 'Error : ' + this.labelReplacer('Submittingcontacts'),\r\n detail: validationModel.exceptionMessages[0],\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n\r\n }\r\n }\r\n\r\n onPreviousButtonClick(event) {\r\n this.engagementMemoryService.setContactDetails(this.internalContactsTableData, this.externalRolesTableData, this.externalContacts);\r\n this.showPreviousControl.emit(\"basicDetails\");\r\n }\r\n\r\n removeInternalUser(rowIndex) {\r\n this.internalContactsTableData = this.internalContactsTableData.filter(t => t.rowIndex != rowIndex);\r\n }\r\n\r\n internalRoleValidation(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n if (control.touched && control.value) {\r\n if (control.value?.userRoleId > 0)\r\n return null;\r\n return { 'internalUserRoleRequired': 'Select role for internal user' };\r\n } else if (control.value) {\r\n return null;\r\n }\r\n return { 'internalUserRoleRequired': 'Select internal user' };\r\n }\r\n }\r\n\r\n internalUserSelectValidation(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n if (control.value?.userId > 0)\r\n return null;\r\n if (control.touched && control.value) {\r\n if (control.value?.userId > 0)\r\n return null;\r\n return { 'internalUserRequired': 'Select internal user' };\r\n }\r\n return { 'internalUserRequired': 'Select internal user' };\r\n }\r\n }\r\n\r\n updateInternalContact() {\r\n if (!this.addInternalUserForm.invalid) {\r\n let index = this.internalContactsTableData.findIndex(t => t.rowIndex == this.internalContactModel.rowIndex)\r\n this.internalContactsTableData[index] = { ...this.internalContactModel };\r\n this.displayInternalContactDialog = false;\r\n } else {\r\n this.addInternalUserForm.markAllAsTouched();\r\n }\r\n }\r\n\r\n changesUserSelected(event, rowData: InternalUserModel) {\r\n this.displayInternalUserDropDown = false\r\n this.getUserByRole(event);\r\n let data = this.internalContactsTableData.find(t => t.rowIndex == rowData.rowIndex);\r\n rowData.email = \"\";\r\n rowData.selectedUser = { userName: null, userId: null };\r\n rowData.userName = \"\";\r\n rowData.userId = 0;\r\n this.displayInternalUserDropDown = true;\r\n }\r\n\r\n validateInternalUserEdit(rowData: InternalUserModel): { isValid: boolean, exceptionMessages: string[] } {\r\n let exceptionModel = { isValid: true, exceptionMessages: [] };\r\n if (!rowData.email) {\r\n exceptionModel.isValid = false;\r\n exceptionModel.exceptionMessages.push('Enter internal contact Email')\r\n }\r\n if (rowData.email && !rowData.email.match('^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$')) {\r\n exceptionModel.isValid = false;\r\n exceptionModel.exceptionMessages.push('Enter valid email for internal contact');\r\n }\r\n if (rowData.userId || rowData.userId == 0) {\r\n exceptionModel.isValid = false\r\n exceptionModel.exceptionMessages.push('Please select internal user');\r\n }\r\n return exceptionModel;\r\n }\r\n\r\n loadContactDetails() {\r\n if (this.engagementMemoryService.getInteralContact().length > 0)\r\n this.internalContactsTableData = [...this.engagementMemoryService.getInteralContact()];\r\n if (this.engagementMemoryService.getExternalRole().length > 0) {\r\n this.externalRolesTableData = this.engagementMemoryService.getExternalRole();\r\n this.loadExternalRoles();\r\n }\r\n if (this.engagementMemoryService.getExternalContacts().length > 0) {\r\n this.externalContacts = this.engagementMemoryService.getExternalContacts();\r\n }\r\n }\r\n\r\n validateOnNext(): { isValid: boolean, exceptionMessages: string } {\r\n let exceptionModel = { isValid: true, exceptionMessages: '' };\r\n if (this.internalContactsTableData.findIndex(t => t.roleId == 1) == -1) {\r\n exceptionModel.isValid = false;\r\n exceptionModel.exceptionMessages += this.labelReplacer('Addatleast1owner\\n');\r\n }\r\n if (this.internalContactsTableData.findIndex(t => t.roleId == 2) == -1) {\r\n exceptionModel.isValid = false;\r\n exceptionModel.exceptionMessages += this.labelReplacer('Addatleast1reviewer\\n');\r\n }\r\n this.externalContacts.forEach((model, index) => {\r\n let x = this.validateExternalContactEdit(model)\r\n if (!x.isValid) {\r\n exceptionModel.isValid = false;\r\n exceptionModel.exceptionMessages += 'External Contact Row ' + (index + 1) + ':\\n' + x.exceptionMessages;\r\n }\r\n })\r\n return exceptionModel;\r\n }\r\n\r\n onRowRoleEditInit(rowData) {\r\n this.clonedRolesTableData.push({ ...rowData });\r\n }\r\n\r\n onRowRoleEditSave(rowData, index) {\r\n let validationModel = this.validateExternalRoles(rowData, index)\r\n if (validationModel.isValid) {\r\n let index = this.clonedRolesTableData.findIndex(t => t.rowIndex == rowData.rowIndex);\r\n delete this.clonedRolesTableData[index];\r\n }\r\n else {\r\n this.messageService.add({\r\n summary: 'Error :' + this.labelReplacer('Updatingroles'),\r\n detail: validationModel.exceptionMessages,\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n }\r\n\r\n validateExternalRoles(rowData, index): { isValid: boolean, exceptionMessages: string } {\r\n index++;\r\n let exceptionModel = { isValid: true, exceptionMessages: \"\" }\r\n this.selectedLanguages.forEach(element => {\r\n if (!rowData[element.name]) {\r\n exceptionModel.isValid = false;\r\n exceptionModel.exceptionMessages += \"Row \" + index + \":\" + this.labelReplacer('PleaseEnterRolefor') + element.name + '\\n';\r\n }\r\n })\r\n return exceptionModel;\r\n }\r\n\r\n onRowRoleEditCancel(rowData) {\r\n let index = this.clonedRolesTableData.findIndex(t => t.rowIndex == rowData.rowIndex);\r\n let intialIndex = this.externalRolesTableData.findIndex(t => t.rowIndex == rowData.rowIndex);\r\n this.externalRolesTableData[intialIndex] = this.clonedRolesTableData[index]\r\n delete this.clonedRolesTableData[index];\r\n }\r\n\r\n onDeleteRole(rowIndex) {\r\n if (this.isvalidateExternalRoleDelete(rowIndex)) {\r\n this.externalRolesTableData = this.externalRolesTableData.filter(t => t.rowIndex != rowIndex);\r\n } else {\r\n this.messageService.add({\r\n summary: this.labelReplacer('DeleteRelatedExternalContacts'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n }\r\n\r\n onRowEditInitExternal(rowData: ExternalContactModel) {\r\n this.clonedExternalTableData.push({ ...rowData });\r\n }\r\n\r\n onRowEditSaveExternal(rowData: ExternalContactModel) {\r\n let validationModel = this.validateExternalContactEdit(rowData);\r\n if (validationModel.isValid) {\r\n rowData.externalRole = rowData.selectedRole.name;\r\n rowData.externalRoleId = rowData.selectedRole.value;\r\n rowData.language = \"\";\r\n rowData.selectedLangages.forEach(element => {\r\n rowData.language += element.name + \" \"\r\n });\r\n rowData.logo = this.logoList.find((t) => t.value == rowData.selectedLogo)?.label\r\n rowData.language = rowData.language.trim();\r\n this.clonedExternalTableData = this.clonedExternalTableData.filter(t => t.rowIndex != rowData.rowIndex);\r\n }\r\n else {\r\n this.messageService.add({\r\n summary: 'Error :' + this.labelReplacer('Updatingexternalcontact'),\r\n detail: validationModel.exceptionMessages,\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n\r\n }\r\n validateExternalContactEdit(rowData: ExternalContactModel): { isValid: boolean, exceptionMessages: string } {\r\n let exceptionModel = { isValid: true, exceptionMessages: \"\" };\r\n if (rowData.contactName == \"\") {\r\n exceptionModel.isValid = false;\r\n exceptionModel.exceptionMessages += this.labelReplacer('Entercontactname\\n') + \"\\n\";\r\n } if (rowData.email != '' && !rowData.email.match(/^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})+$/gm)) {\r\n exceptionModel.isValid = false;\r\n exceptionModel.exceptionMessages += this.labelReplacer('Entervalidemail\\n') + \"\\n\";\r\n }\r\n // if (rowData.phoneNumber != \"\" && !rowData.phoneNumber.match(/^[0-9-+]*$/im)) {\r\n // exceptionModel.isValid = false;\r\n // exceptionModel.exceptionMessages += this.labelReplacer('Entervalidphonenumber\\n') + \"\\n\";\r\n // }\r\n // if (rowData.faxNo != \"\" && !rowData.faxNo.match(/^[0-9-+]*$/im)) {\r\n // exceptionModel.isValid = false;\r\n // exceptionModel.exceptionMessages += this.labelReplacer('Entervalidfaxnumber\\n') + \"\\n\";\r\n // }\r\n if (!rowData.selectedLangages || rowData.selectedLangages.length == 0) {\r\n exceptionModel.isValid = false;\r\n exceptionModel.exceptionMessages += this.labelReplacer('Choosethelanguages');\r\n }\r\n return exceptionModel;\r\n }\r\n\r\n onRowEditCancelExternal(rowData: ExternalContactModel, ri) {\r\n let tempIndex = this.clonedExternalTableData.findIndex(t => t.rowIndex == rowData.rowIndex);\r\n for (let i = 0; i < this.externalContacts.length; i++) {\r\n if (this.externalContacts[i].rowIndex == rowData.rowIndex) {\r\n this.externalContacts[i] = this.clonedExternalTableData[tempIndex];\r\n break;\r\n }\r\n }\r\n delete this.clonedExternalTableData[tempIndex];\r\n }\r\n\r\n onDeleteExternalUser(rowData: ExternalContactModel) {\r\n this.externalContacts = this.externalContacts.filter(t => t.rowIndex != rowData.rowIndex)\r\n }\r\n\r\n ResetInternalContact() {\r\n this.ngxSpinner.show();\r\n if (this.duplicateIntenalUsers != \"\") {\r\n this.getUserList(this.duplicateIntenalUsers.roleId)\r\n setTimeout(() => {\r\n this.internalContactModel = { ...this.duplicateIntenalUsers };\r\n this.ngxSpinner.hide();\r\n }, 2000);\r\n } else {\r\n this.resetAddInternalContact();\r\n this.ngxSpinner.hide();\r\n }\r\n }\r\n\r\n ResetRole() {\r\n this.resetRolesSection()\r\n }\r\n\r\n ResetExternalUser() {\r\n this.resetExternalContactUser();\r\n }\r\n\r\n userDuplicateValidator(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n if (control.touched || control.dirty)\r\n if (control.value.userId && control.value?.userId > 0) {\r\n let isUserExists = this.internalContactsTableData.findIndex(t => t.userId == control.value.userId && t.rowIndex != this.editInternalContactRowIdex)\r\n if (isUserExists > -1)\r\n return { 'userExits': +this.labelReplacer('Jurisdictionisrequired') };\r\n }\r\n return null\r\n }\r\n }\r\n\r\n reviewerValidator(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n if (control.touched || control.dirty)\r\n if (control.value.userId && control.value?.userId > 0) {\r\n if (this.internalContactModel.selectedRole.userRoleId == 2 && this.loggedInUserModel.rankCode > 21 && !this.loggedInUserModel.isAdmin && this.loggedInUserModel.userId == control.value.userId) {\r\n return { 'unauthorizedSelection': true }\r\n }\r\n }\r\n return null\r\n }\r\n }\r\n\r\n isvalidateExternalRoleDelete(rowIndex): boolean {\r\n let index = this.externalContacts.findIndex(t => t.externalRoleId == rowIndex)\r\n if (index > -1)\r\n return true;\r\n else\r\n return false;\r\n }\r\n}\r\nexport class Role {\r\n roleName: string;\r\n roleId: number;\r\n}\r\n\r\nexport class InternalUserModel {\r\n rowIndex: number;\r\n roleId: number;\r\n roleName: string;\r\n userId: number;\r\n email: string;\r\n userName: string;\r\n isDisplay: boolean\r\n selectedRole: any;\r\n selectedUser: any;\r\n contactNumber: any;\r\n faxNumber: string\r\n constructor() {\r\n this.roleId = 0;\r\n this.userId = 0;\r\n this.email = \"\";\r\n this.userName = \"\";\r\n this.isDisplay = false;\r\n this.roleName = \"\";\r\n this.selectedRole = \"\";\r\n this.selectedUser = \"\";\r\n this.rowIndex = 0;\r\n this.contactNumber = \"\";\r\n this.faxNumber = '';\r\n }\r\n}\r\n\r\nexport class LogoValue {\r\n\r\n value: number;\r\n label: string;\r\n //logoLink: string;\r\n //logoBase4 : any;\r\n\r\n constructor(logoId: number, logoName: string) {\r\n this.value = logoId;\r\n this.label = logoName;\r\n //this.logoLink = logoLink;\r\n //this.logoBase4 = this.logoBase4;\r\n }\r\n\r\n}\r\nexport class ExternalContactModel {\r\n rowIndex: number;\r\n externalRole: string;\r\n contactName: string;\r\n email: string;\r\n language: string;\r\n phoneNumber: string;\r\n isDisplay: boolean;\r\n logo: string;\r\n selectedRole: any;\r\n selectedLangages: any;\r\n selectedLogo: any;\r\n faxNo: string;\r\n externalRoleId: number;\r\n constructor(rowIndex: number, externalRole: string, contactName: string, email: string, phoneNumber: string, isDisplay: boolean, language: string, logo: string, faxNo: string) {\r\n this.rowIndex = rowIndex;\r\n this.externalRole = externalRole;\r\n this.contactName = contactName;\r\n this.email = email;\r\n this.phoneNumber = phoneNumber;\r\n this.isDisplay = isDisplay;\r\n this.selectedRole = '';\r\n this.selectedLangages = '';\r\n this.selectedLogo = ''\r\n this.language = language;\r\n this.logo = logo;\r\n this.faxNo = faxNo;\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { TreeNode, MessageService } from 'primeng/api';\r\nimport { FolderManagementService } from '../../../../framework/services/folder-mgmt.service';\r\nimport * as _ from 'lodash';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { INPUTMASK_VALUE_ACCESSOR } from 'primeng';\r\nimport { AddEngagementMemoryService } from '../../add-engagement-memory-service/add-engagement-memory.service';\r\nimport { EngagementManagementService } from 'src/framework/services/engagement-mgmt.service';\r\nimport { Router } from '@angular/router';\r\nimport { element } from 'protractor';\r\nimport { NgxSpinnerService } from 'ngx-spinner'\r\nimport { CategoryConstant } from 'src/app/shared/app-constants/category-constants';\r\nimport { LanguageService } from 'src/framework/services/language.service';\r\n\r\n@Component({\r\n selector: 'app-folder-structure',\r\n templateUrl: './folder-structure.component.html',\r\n styleUrls: ['./folder-structure.component.css']\r\n})\r\nexport class FolderStructureComponent implements OnInit {\r\n\r\n foldersList = [];\r\n selectedFolder: any;\r\n\r\n @Input() treeData: string;\r\n @Input() big: boolean;\r\n\r\n targetTreeData: any[] = [];\r\n\r\n maxSeed: number = 0;\r\n languageList: any[];\r\n languageLabels: any[] = [];\r\n folderPath: \"\";\r\n selectedTargetFile: TreeNode;\r\n selectedSourceFile: TreeNode;\r\n globalIdentitySeed: number = 0;\r\n templateNode: TreeNode[];\r\n deleteNodeObj: TreeNode;\r\n isVisible: boolean = false;\r\n\r\n\r\n selectedLanguageId: number;\r\n defaultEnglishJson: any;\r\n islabelLoaded: boolean = false;\r\n selectedAppLanguageJson: any;\r\n\r\n selectedLangLabelJson: any;\r\n defaultEngLangLabelJson: any;\r\n\r\n @Output() showPreviousControl = new EventEmitter();\r\n public constructor(private folderService: FolderManagementService,\r\n private http: HttpClient,\r\n private addEngagementMemoryService: AddEngagementMemoryService,\r\n private engagementService: EngagementManagementService,\r\n private languageSerivce: LanguageService,\r\n private router: Router,\r\n private ngxSpinner: NgxSpinnerService,\r\n private messageService: MessageService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.loadLanguageLabel();\r\n this.ngxSpinner.show();\r\n this.folderService.getFolderTemplate(0).then((value) => {\r\n if (value && value.length > 0) {\r\n for (let i = 0; i < value.length; i++) {\r\n this.foldersList.push(value[i]);\r\n }\r\n if (this.addEngagementMemoryService.getFolderTemplate()) {\r\n this.selectedFolder = JSON.parse(this.addEngagementMemoryService.getFolderTemplate());\r\n this.targetTreeData = this.selectedFolder.children;\r\n }\r\n }\r\n this.ngxSpinner.hide();\r\n })\r\n }\r\n\r\n onFolderSelection(event) {\r\n let model = this.resetData(event.value)\r\n this.targetTreeData = model.children.length > 0 ? model.children : [];\r\n\r\n }\r\n\r\n\r\n loadLanguageLabel() {\r\n let englishLanguageMappings, selectedLanguageMappings: any;\r\n let englishLangLabelMappings, selectedLangLabelMappings: any;\r\n\r\n return new Promise((resolve, reject) => {\r\n if (sessionStorage.getItem('selectedLanguageId')) {\r\n this.selectedLanguageId = 1;//JSON.parse(sessionStorage.getItem('selectedLanguageId'));\r\n }\r\n\r\n this.languageSerivce.currentData.subscribe(data => {\r\n this.selectedLanguageId = data.Id\r\n });\r\n\r\n\r\n this.languageSerivce.mySubject.subscribe((data) => {\r\n var languageMappings = data;\r\n if (languageMappings?.length > 0) {\r\n\r\n englishLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.AddEngagement.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n if (englishLanguageMappings?.isGlobal) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.AddEngagement.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n }\r\n else {\r\n if (Number(this.selectedLanguageId) === 2) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.AddEngagement.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n }\r\n else {\r\n selectedLanguageMappings = englishLanguageMappings;\r\n selectedLangLabelMappings = englishLangLabelMappings;\r\n\r\n }\r\n }\r\n\r\n this.selectedAppLanguageJson = JSON.parse(selectedLanguageMappings.languageMappingJSON);\r\n\r\n this.defaultEnglishJson = JSON.parse(englishLanguageMappings.languageMappingJSON);\r\n\r\n this.selectedLangLabelJson = JSON.parse(selectedLangLabelMappings?.languageMappingJSON ?? englishLangLabelMappings.languageMappingJSON);\r\n this.defaultEngLangLabelJson = JSON.parse(englishLangLabelMappings.languageMappingJSON);\r\n\r\n this.islabelLoaded = true;\r\n resolve(1);\r\n }\r\n else {\r\n }\r\n });\r\n })\r\n .catch(err => {\r\n\r\n console.log(err);\r\n });\r\n }\r\n\r\n\r\n languageReplacer(labelKey): string {\r\n return this.selectedLangLabelJson[labelKey]?.trim() ? this.selectedLangLabelJson[labelKey] ?? 'text not found' : this.defaultEngLangLabelJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n labelReplacer(labelKey): string {\r\n return this.selectedAppLanguageJson[labelKey]?.trim() ? this.selectedAppLanguageJson[labelKey] ?? 'text not found' : this.defaultEnglishJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n resetData(model) {\r\n if (model) {\r\n let selectedLanguages = this.addEngagementMemoryService.getSelectedLanguages();\r\n if (model.children && model.children.length > 0) {\r\n for (let i = 0; i < model.children.length; i++) {\r\n this.resetData(model.children[i])\r\n }\r\n }\r\n if (model.data && model.data.length == 1) {\r\n model.data[0].createdDTTM = new Date().toUTCString();\r\n let languages = [];\r\n selectedLanguages.forEach(element => {\r\n languages.push(model.data[0].language.find(t => t.languageId == element.languageId));\r\n })\r\n model.data[0].language = languages;\r\n }\r\n return model;\r\n }\r\n }\r\n\r\n onPreviousButtonClick(ele) {\r\n let templateToSave: any[] = [];\r\n templateToSave.push(this.selectedFolder as TreeNode);\r\n this.addEngagementMemoryService.setFolderTemplate(JSON.stringify(templateToSave[0], this.getCircularReplacer()));\r\n this.showPreviousControl.emit('contacts');\r\n }\r\n saveEngagement() {\r\n if (!this.selectedFolder) {\r\n this.messageService.add({\r\n summary: this.labelReplacer('Pleaseselectfoldertemplate'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n } else {\r\n this.ngxSpinner.show();\r\n let templateToSave: any[] = [];\r\n templateToSave.push(this.selectedFolder as TreeNode);\r\n let externalContacts = this.addEngagementMemoryService.getExternalContacts();\r\n if (externalContacts.length > 0) {\r\n externalContacts.forEach((t) => {\r\n t.selectedLogo = {\r\n value: t.selectedLogo\r\n }\r\n })\r\n }\r\n let requestObject = {\r\n 'engagementDetails': this.addEngagementMemoryService.getEngagementDetails(),\r\n 'internalContact': this.addEngagementMemoryService.getInteralContact(),\r\n 'externalRoles': this.addEngagementMemoryService.getExternalRole(),\r\n 'externalContacts': this.addEngagementMemoryService.getExternalContacts(),\r\n 'folderTemplate': JSON.stringify(templateToSave, this.getCircularReplacer())\r\n };\r\n\r\n this.engagementService.addEngagement(requestObject).subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n this.messageService.add({\r\n summary: this.labelReplacer('ErroroccuredwhileaddingEngagement'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n this.ngxSpinner.hide();\r\n } else {\r\n this.addEngagementMemoryService.resetEngagementMemory();\r\n\r\n this.messageService.add({\r\n summary: this.labelReplacer('Engagementaddedsuccessfully'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'success'\r\n });\r\n setTimeout(() => {\r\n this.ngxSpinner.hide();\r\n this.router.navigate([\"/home\"], { queryParams: { engagementType: 'active' } })\r\n }, 3000)\r\n }\r\n });\r\n }\r\n }\r\n\r\n getCircularReplacer = () => {\r\n const seen = new WeakSet();\r\n return (key, value) => {\r\n if (typeof value === \"object\" && value !== null) {\r\n if (seen.has(value)) {\r\n return;\r\n }\r\n seen.add(value);\r\n }\r\n return value;\r\n };\r\n };\r\n}\r\n","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\r\nimport { FormControl, ValidatorFn, AbstractControl } from '@angular/forms';\r\nimport { LanguageService } from '../../../../framework/services/language.service';\r\nimport { AddEngagementMemoryService } from '../../add-engagement-memory-service/add-engagement-memory.service';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { element } from 'protractor';\r\n//import { ThrowStmt } from '@angular/compiler';\r\nimport { CategoryConstant } from 'src/app/shared/app-constants/category-constants';\r\n\r\n\r\n@Component({\r\n selector: 'app-language',\r\n templateUrl: './language.component.html',\r\n styleUrls: ['./language.component.css']\r\n})\r\nexport class LanguageComponent implements OnInit {\r\n\r\n languageList = [];\r\n selectedLanguages: any[] = [];\r\n selectedLanguageId: number;\r\n defaultEnglishJson: any;\r\n islabelLoaded: boolean = false;\r\n selectedAppLanguageJson: any;\r\n selectedLangLabelJson: any;\r\n defaultEngLangLabelJson: any;\r\n languageControl: FormControl;\r\n @Output() showNextControl = new EventEmitter()\r\n\r\n constructor(private languageService: LanguageService,\r\n private addEngagementMemoryService: AddEngagementMemoryService,\r\n private ngxSpinner: NgxSpinnerService) {\r\n this.languageControl = new FormControl(this.selectedLanguages, this.languageRequired())\r\n }\r\n ngOnInit(): void {\r\n this.ngxSpinner.show();\r\n this.loadLanguageLabel();\r\n this.selectedLanguages = this.languageList;\r\n if (this.addEngagementMemoryService.getSelectedLanguages()?.length > 0) { \r\n this.selectedLanguages = this.addEngagementMemoryService.getSelectedLanguages();\r\n this.ngxSpinner.hide();\r\n }\r\n if (this.selectedLanguages.length == 0 && this.addEngagementMemoryService.getEngagementId() > 0) {\r\n this.languageService.getEngagementSelectedLanguages(this.addEngagementMemoryService.getEngagementId()).subscribe((response) => {\r\n this.selectedLanguages = response.data;\r\n if (this.selectedLanguages.findIndex(t => t.name == \"English\") > -1)\r\n this.resetLanguageRoles(true);\r\n else\r\n this.resetLanguageRoles(false);\r\n this.ngxSpinner.hide();\r\n })\r\n }\r\n \r\n }\r\n\r\n resetLanguageRoles(isEnglishSelected: boolean) {\r\n let eyRoles = this.addEngagementMemoryService.getLanguageBasedRoles();\r\n if (eyRoles && eyRoles.length > 0) {\r\n let roles = isEnglishSelected ? eyRoles.find(t => t.languageName == \"English\")?.engagementRoleModels : eyRoles.find(t => t.languageName == \"French\")?.engagementRoleModels;\r\n eyRoles.forEach(element => {\r\n if (element.engagementRoleModels == null || element.engagementRoleModels.length == 0) {\r\n element.engagementRoleModels = roles\r\n }\r\n })\r\n }\r\n }\r\n\r\n languageReplacer(labelKey) {\r\n var labels = this.selectedLangLabelJson[labelKey]?.trim() ? this.selectedLangLabelJson[labelKey] ?? 'text not found' : this.defaultEngLangLabelJson[labelKey] ?? 'text not found';\r\n return labels;\r\n }\r\n\r\n getLanguages() {\r\n this.languageList = new Array();\r\n var languages = this.addEngagementMemoryService.getLanguages();\r\n languages.forEach(item => {\r\n item.name = this.languageReplacer(item.name);\r\n })\r\n this.languageList = languages;\r\n this.islabelLoaded = true;\r\n }\r\n\r\n\r\n\r\n onNextButtonClicked() {\r\n if (!this.languageControl.invalid) {\r\n\r\n this.ngxSpinner.show();\r\n this.languageService.getAllLanguages().subscribe((response:any) => {\r\n if (response && response.length > 0) {\r\n let actualLanguages=[];\r\n this.selectedLanguages.forEach(ele => {\r\n actualLanguages.push(response.find(t => t.languageId == ele.languageId));\r\n });\r\n this.addEngagementMemoryService.setSelectedLanguages(this.selectedLanguages);\r\n this.addEngagementMemoryService.setActualLanguageSelected(actualLanguages);\r\n this.ngxSpinner.hide();\r\n this.showNextControl.emit(\"basicDetails\");\r\n \r\n }\r\n })\r\n } else {\r\n this.languageControl.markAsTouched();\r\n }\r\n }\r\n\r\n\r\n\r\n loadLanguageLabel() {\r\n let englishLanguageMappings, selectedLanguageMappings: any;\r\n let englishLangLabelMappings, selectedLangLabelMappings: any;\r\n\r\n return new Promise((resolve, reject) => {\r\n if (sessionStorage.getItem('selectedLanguageId')) {\r\n this.selectedLanguageId = 1;//JSON.parse(sessionStorage.getItem('selectedLanguageId'));\r\n }\r\n\r\n this.languageService.currentData.subscribe(data => {\r\n this.selectedLanguageId = data.Id\r\n });\r\n\r\n\r\n this.languageService.mySubject.subscribe((data) => {\r\n var languageMappings = data;\r\n this.islabelLoaded = false;\r\n if (languageMappings?.length > 0) {\r\n\r\n englishLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.AddEngagement.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n if (englishLanguageMappings?.isGlobal) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.AddEngagement.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n }\r\n else {\r\n if (Number(this.selectedLanguageId) === 2) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.AddEngagement.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n }\r\n else {\r\n selectedLanguageMappings = englishLanguageMappings;\r\n selectedLangLabelMappings = englishLangLabelMappings;\r\n }\r\n }\r\n\r\n this.selectedAppLanguageJson = JSON.parse(selectedLanguageMappings.languageMappingJSON);\r\n\r\n this.defaultEnglishJson = JSON.parse(englishLanguageMappings.languageMappingJSON);\r\n\r\n this.selectedLangLabelJson = JSON.parse(selectedLangLabelMappings?.languageMappingJSON ?? englishLangLabelMappings.languageMappingJSON);\r\n this.defaultEngLangLabelJson = JSON.parse(englishLangLabelMappings.languageMappingJSON);\r\n this.getLanguages()\r\n\r\n resolve(1);\r\n }\r\n else {\r\n }\r\n });\r\n })\r\n .catch(err => {\r\n\r\n console.log(err);\r\n });\r\n }\r\n\r\n\r\n labelReplacer(labelKey): string {\r\n return this.selectedAppLanguageJson[labelKey]?.trim() ? this.selectedAppLanguageJson[labelKey] ?? 'text not found' : this.defaultEnglishJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n\r\n languageRequired(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n if (control.touched && control.value) {\r\n if (control.value.length > 0) {\r\n return null;\r\n }\r\n } else if (control.value && control.value.length > 0) {\r\n return null;\r\n }\r\n return { 'languageRequired': 'Language is required' };\r\n }\r\n }\r\n\r\n\r\n}\r\n","import { Component, OnInit, OnDestroy, HostListener, Inject } from '@angular/core';\r\nimport { Router, ActivatedRoute, NavigationEnd } from '@angular/router';\r\n//import { MsAdalAngular6Service } from 'microsoft-adal-angular6';\r\n//import {MsalModule, MsalService,MsalGuard} from '@azure/msal-angular';\r\nimport { MsalBroadcastService, MsalGuardConfiguration, MsalService, MSAL_GUARD_CONFIG } from '@azure/msal-angular';\r\nimport { Location, LocationStrategy, PathLocationStrategy } from '@angular/common';\r\nimport { LabelcardMgmtService } from 'src/framework/services/labelcard-mgmt.service';\r\nimport { LanguageService } from 'src/framework/services/language.service';\r\nimport { CategoryConstant } from './shared/app-constants/category-constants';\r\nimport { GraphService, ProviderOptions } from './msal-authentication/graph.service';\r\nimport { Subject } from 'rxjs-compat';\r\nimport { loginRequest, protectedResources } from './msal-authentication/auth-config';\r\nimport { AuthenticationResult, EventMessage, EventType, InteractionType} from '@azure/msal-browser';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\nimport { UserService } from 'src/framework/services/userservice';\r\nimport { CommonService } from 'src/framework/services/common.service';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.css'],\r\n})\r\nexport class AppComponent implements OnInit, OnDestroy {\r\n title = 'app';\r\n serviceList: any[] = [];\r\n config: any;\r\n authenticationContext = null;\r\n public userName;\r\n private userType: string;\r\n mappedlabels: any[];\r\n aboutrestructuringlink: string;\r\n languagearray: any[];\r\n labelValues: any;\r\n lablesCodes: string[];\r\n selectedLanguageId: number;\r\n defaultEnglishJson: any;\r\n islabelLoaded: boolean = false;\r\n selectedAppLanguageJson: any;\r\n defaultLabelEnglishJson: any;\r\n selectedAppLabelLanguageJson: any;\r\n isInternalLoginRoute: boolean = false;\r\n private readonly _destroying$ = new Subject();\r\n isTokenRenewed: boolean = false;\r\n MappedLanguage = [];\r\n MappedEnglishLanguage = [];\r\n selectedLanguage: { name: string; };\r\n userActivity: any;\r\n userActivityAfterNotified: any;\r\n userInactive: Subject = new Subject();\r\n public showConfirmation: boolean = false;\r\n public isUserTriggredLogout: boolean = false;\r\n notifiedInactiveUser: Subject = new Subject();\r\n modalShow = false;\r\n public sessionReq = {\r\n userEmail : null,\r\n sessionId : null\r\n }\r\n\r\n\r\n constructor(\r\n @Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration, private msalBroadcastService: MsalBroadcastService,private commonService:CommonService,\r\n private router: Router, \r\n private graphService: GraphService, private _userservice : UserService,\r\n private service: LabelcardMgmtService, private route: ActivatedRoute, private location: Location, private msalService: MsalService, private languageService: LanguageService) {\r\n // this.router.events.filter(event => event instanceof NavigationEnd).subscribe((event: any) => {\r\n // if (event.url == \"/internallogin\") {\r\n \r\n // }\r\n // })\r\n // if (!this.adalSvc.) {\r\n // }\r\n // this.authenticateuser();\r\n if (this.msalService.instance.getActiveAccount() != null) {\r\n //this.resetTimer();\r\n this.authenticateuser();\r\n }\r\n}\r\n ngOnInit(): void {\r\n this.msalBroadcastService.msalSubject$\r\n .pipe(\r\n filter(\r\n (msg: EventMessage) => msg.eventType === EventType.LOGIN_SUCCESS ),\r\n takeUntil(this._destroying$)\r\n )\r\n .subscribe((result : EventMessage)=> {\r\n if(result.eventType === EventType.LOGIN_SUCCESS){\r\n const payload = result.payload as AuthenticationResult;\r\n this.msalService.instance.setActiveAccount(payload.account);\r\n sessionStorage.setItem('msal.idtoken', payload.accessToken);\r\n this.commonService.setLoggedInUserObs(true);\r\n this.authenticateuser();\r\n }\r\n });\r\n this.languageService.currentData.subscribe(data => this.selectedLanguage = data);\r\n this.languageService.mySubject.subscribe((data) => {\r\n //call my function\r\n var languageMappings = data;\r\n if (languageMappings?.length > 0) {\r\n var selectedLanguageMappings = languageMappings.filter(item =>\r\n item.categoryName == CategoryConstant.Global && item.languageId == this.selectedLanguage['Id']);\r\n this.MappedLanguage = JSON.parse(selectedLanguageMappings[0].languageMappingJSON);\r\n var englishLanguageMappings = languageMappings.filter(item =>\r\n item.categoryName == CategoryConstant.Global && item.languageId == 1);\r\n this.MappedEnglishLanguage = JSON.parse(englishLanguageMappings[0].languageMappingJSON);\r\n }\r\n });\r\n this.GetAllLabels();\r\n this.loadLanguageLabel();\r\n }\r\n\r\n //Authenticates current logged in user\r\n authenticateuser(){\r\n if(this.msalService.instance.getActiveAccount() != null)\r\n {\r\n var currentAccount = this.msalService.instance.getActiveAccount();\r\n sessionStorage.setItem('userName', currentAccount.name);\r\n sessionStorage.setItem('userEmail', currentAccount.username);\r\n this.userName = currentAccount.name;\r\n if(sessionStorage.getItem('CurrentSession') == null || sessionStorage.getItem('CurrentSession') == undefined)\r\n {\r\n this.manageUserSession(currentAccount.username);\r\n }\r\n else{\r\n this.sessionReq = JSON.parse(sessionStorage.getItem('CurrentSession'));\r\n if(this.sessionReq){\r\n this._userservice.updateSessionInfo(this.sessionReq).subscribe();\r\n this.isTokenRenewed = true;\r\n }\r\n\r\n }\r\n }\r\n }\r\n\r\n private manageUserSession(userName)\r\n {\r\n console.log(userName);\r\n this._userservice.addSessionInfo({\r\n userEmail: userName,\r\n })\r\n .subscribe((response : any)=> {\r\n if(response && response.status == 1){\r\n this.sessionReq.userEmail = userName;\r\n this.sessionReq.sessionId= response.message;\r\n sessionStorage.setItem('CurrentSession', JSON.stringify(this.sessionReq));\r\n\r\n if(!response.data){\r\n this.modalShow= true;\r\n }\r\n }\r\n });\r\n }\r\n\r\n hideModal(response: any) {\r\n\r\n if (response == \"Yes\") {\r\n this.modalShow = false;\r\n this.refreshUserState();\r\n this._userservice.endOtherActiveSession(this.sessionReq).subscribe();\r\n } else {\r\n\r\n this.modalShow = false;\r\n this._userservice.endSessionInfo(this.sessionReq).subscribe((response: any) => {\r\n if (!response.data) {\r\n this.logout();\r\n }\r\n\r\n });\r\n }\r\n }\r\n\r\n @HostListener('window:mousemove')\r\n refreshUserState() {\r\n clearTimeout(this.userActivity);\r\n clearTimeout(this.userActivityAfterNotified);\r\n this.setTimeout();\r\n if (this.showConfirmation == true) {\r\n this.setTimeoutForAutoLogout();\r\n }\r\n }\r\n\r\n setTimeoutForAutoLogout() {\r\n this.userActivityAfterNotified = setTimeout(() => this.notifiedInactiveUser.next(undefined), 5 * 60 * 1000);\r\n }\r\n\r\n\r\n setTimeout() {\r\n this.userActivity = setTimeout(() => this.userInactive.next(undefined), 59 * 60 * 1000);\r\n }\r\n logout() {\r\n clearTimeout(this.userActivity);\r\n clearTimeout(this.userActivityAfterNotified);\r\n this._userservice.endSessionInfo(this.sessionReq).subscribe((response: any) => {\r\n if (!response.data) {\r\n } \r\n this.showConfirmation = false;\r\n sessionStorage.clear();\r\n localStorage.clear()\r\n this.msalService.logout();\r\n this.isUserTriggredLogout = true;\r\n this.router.navigate[\"/home\"];\r\n });\r\n }\r\n\r\n GetAllLabels() {\r\n this.mappedlabels = [];\r\n var languageId = 1;\r\n this.service.getAllMappedLabels(languageId)\r\n .subscribe\r\n (\r\n (resp) => {\r\n this.mappedlabels = [];\r\n this.languagearray = [];\r\n this.mappedlabels = resp;\r\n this.languageService.mySubject.next(this.mappedlabels);\r\n });\r\n }\r\n\r\n goToPreview() {\r\n this.aboutrestructuringlink = this.selectedAppLanguageJson['PrivacyLinkURL'] ? this.selectedAppLanguageJson['PrivacyLinkURL'] : this.defaultEnglishJson['PrivacyLinkURL'];\r\n window.open(this.aboutrestructuringlink);\r\n }\r\n\r\n loadLanguageLabel() {\r\n let englishLanguageMappings, selectedLanguageMappings: any;\r\n let englishLanguageLabelMappings, selectedLanguageLabelMappings: any;\r\n\r\n return new Promise((resolve, reject) => {\r\n if (sessionStorage.getItem('selectedLanguageId')) {\r\n this.selectedLanguageId = 1;//JSON.parse(sessionStorage.getItem('selectedLanguageId'));\r\n }\r\n\r\n this.languageService.currentData.subscribe(data => {\r\n this.selectedLanguageId = data.Id\r\n });\r\n\r\n\r\n this.languageService.mySubject.subscribe((data) => {\r\n var languageMappings = data;\r\n if (languageMappings?.length > 0) {\r\n\r\n englishLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Links.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishLanguageLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Global.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n if (englishLanguageMappings?.isGlobal) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Links.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLanguageLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Global.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n }\r\n else {\r\n if (Number(this.selectedLanguageId) === 2) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Links.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLanguageLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Global.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n }\r\n else {\r\n selectedLanguageMappings = englishLanguageMappings;\r\n selectedLanguageLabelMappings = englishLanguageLabelMappings;\r\n\r\n }\r\n }\r\n\r\n this.selectedAppLanguageJson = JSON.parse(selectedLanguageMappings.languageMappingJSON);\r\n\r\n this.defaultEnglishJson = JSON.parse(englishLanguageMappings.languageMappingJSON);\r\n\r\n this.selectedAppLabelLanguageJson = JSON.parse(selectedLanguageLabelMappings.languageMappingJSON);\r\n\r\n this.defaultLabelEnglishJson = JSON.parse(englishLanguageLabelMappings.languageMappingJSON);\r\n this.islabelLoaded = true;\r\n resolve();\r\n }\r\n else {\r\n\r\n }\r\n });\r\n })\r\n .catch(err => {\r\n });\r\n }\r\n\r\n labelReplacer(labelKey): string {\r\n return this.selectedAppLanguageJson[labelKey]?.trim() ? this.selectedAppLanguageJson[labelKey] ?? 'text not found' : this.defaultEnglishJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n onActivate(event) {\r\n window.scroll(0, 0);\r\n }\r\n\r\n titleReplacer(labelKey): string {\r\n return this.selectedAppLabelLanguageJson[labelKey]?.trim() ? this.selectedAppLabelLanguageJson[labelKey] ?? 'text not found' : this.defaultLabelEnglishJson[labelKey] ?? 'text not found';\r\n }\r\n ngOnDestroy(): void {\r\n\r\n }\r\n\r\n @HostListener('window:scroll', ['$event']) // for window scroll events\r\n onScroll(event) {\r\n if (document.body.scrollTop > 10 || document.documentElement.scrollTop > 10) {\r\n document.getElementById(\"eyLogo\").style.height = \"30px\";\r\n document.getElementById(\"sticky-navbar\").style.height = \"53px\";\r\n document.getElementById(\"eyLogo\").style.marginTop = \"10px\";\r\n } else {\r\n document.getElementById(\"eyLogo\").style.height = \"70px\";\r\n document.getElementById(\"sticky-navbar\").style.height = \"83px\";\r\n }\r\n }\r\n}\r\n\r\n","import { BrowserModule,Title } from '@angular/platform-browser';\r\nimport { LocationStrategy, Location, PathLocationStrategy, HashLocationStrategy } from '@angular/common'\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\r\nimport { FormsModule,ReactiveFormsModule } from '@angular/forms';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { AppRoutingModule, routes } from './app.routing.module';\r\nimport { AppComponent } from './app.component';\r\nimport { NavMenuComponent } from './nav-menu/nav-menu.component';\r\nimport {ToastModule} from 'primeng/toast';\r\nimport { RDCServiceModule } from '../framework/services/services.module';\r\nimport { appSettings } from './app.settings';\r\nimport { InsertAuthTokenInterceptor } from './core/insert-auth-token-interceptor.service';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { AppConfigService } from '../framework/services/app-config.service';\r\nimport { NgxSpinnerModule } from 'ngx-spinner';\r\nimport { ModalModule } from 'ngx-bootstrap/modal'\r\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\r\nimport { PublicUserSignupComponent } from './public-user-signup/public-user-signup.component'\r\nimport {DialogModule} from 'primeng/dialog';\r\nimport {ButtonModule} from 'primeng/button';\r\nimport {InputSwitchModule} from 'primeng/inputswitch';\r\nimport { FileUploadModule } from 'primeng';\r\nimport { LoginInternalComponent } from './login-internal/login-internal.component';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n\r\nimport {\r\n IPublicClientApplication,\r\n PublicClientApplication,\r\n InteractionType,\r\n LogLevel,\r\n BrowserCacheLocation,\r\n} from '@azure/msal-browser';\r\nimport {\r\n MsalGuard,\r\n MsalInterceptor,\r\n MsalBroadcastService,\r\n MsalInterceptorConfiguration,\r\n MsalModule,\r\n MsalService,\r\n MSAL_GUARD_CONFIG,\r\n MSAL_INSTANCE,\r\n MSAL_INTERCEPTOR_CONFIG,\r\n MsalGuardConfiguration,\r\n MsalRedirectComponent\r\n} from '@azure/msal-angular';\r\n\r\nimport {\r\n msalConfig,\r\n loginRequest,\r\n protectedResources,\r\n} from './msal-authentication/auth-config';\r\nimport { environment } from 'src/environments/environment';\r\nimport { HomeModule } from './home/home.module';\r\nimport { ModalContentComponent } from './shared/modal-component/modal.component';\r\nimport { AddEngagementModule } from './add-engagement/add-engagement.module';\r\nimport { EditEngagementModule } from './edit-engagement/edit-engagement.module';\r\n\r\n\r\n/**\r\n * Here we pass the configuration parameters to create an MSAL instance.\r\n * For more info, visit: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/configuration.md\r\n */\r\n\r\nexport function MSALInstanceFactory(): IPublicClientApplication {\r\n return new PublicClientApplication(msalConfig);\r\n}\r\n\r\n/**\r\n * MSAL Angular will automatically retrieve tokens for resources\r\n * added to protectedResourceMap. For more info, visit:\r\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/initialization.md#get-tokens-for-web-api-calls\r\n */\r\nexport function MSALInterceptorConfigFactory(): MsalInterceptorConfiguration {\r\n const protectedResourceMap = new Map>();\r\n\r\n /* const protectedResourceMap = [\r\n [environment.MsalConfig.T2_Api_url, [environment.MsalConfig.T2_API_Access]],\r\n [environment.MsalConfig.GraphUri + 'v1.0/me', ['user.read']],\r\n [environment.MsalConfig.GraphUri + 'v1.0/groups', ['user.read']],\r\n ]; */\r\n protectedResourceMap.set(\r\n protectedResources.armTenants.endpoint,\r\n protectedResources.armTenants.scopes\r\n );\r\n protectedResourceMap.set(\r\n protectedResources.graphMe.endpoint,\r\n protectedResources.graphMe.scopes\r\n );\r\n protectedResourceMap.set(\r\n protectedResources.groups.endpoint,\r\n protectedResources.groups.scopes\r\n );\r\n return {\r\n interactionType: InteractionType.Redirect,\r\n protectedResourceMap,\r\n };\r\n}\r\n\r\n/**\r\n * Set your default interaction type for MSALGuard here. If you have any\r\n * additional scopes you want the user to consent upon login, add them here as well.\r\n */\r\nexport function MSALGuardConfigFactory(): MsalGuardConfiguration {\r\n return {\r\n interactionType: InteractionType.Redirect,\r\n authRequest: loginRequest,\r\n };\r\n}\r\n\r\n@NgModule({\r\n declarations: [AppComponent, NavMenuComponent, PublicUserSignupComponent, LoginInternalComponent, ModalContentComponent],\r\n imports: [\r\n BrowserModule.withServerTransition({ appId: \"ng-cli-universal\" }),\r\n BrowserAnimationsModule,\r\n HttpClientModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n AppRoutingModule,\r\n DropdownModule,\r\n ToastModule,\r\n RDCServiceModule.forRoot(),\r\n NgxSpinnerModule,\r\n ModalModule.forRoot(),\r\n TooltipModule.forRoot(),\r\n DialogModule,\r\n ButtonModule,\r\n FileUploadModule,\r\n InputSwitchModule,\r\n HomeModule,\r\n AddEngagementModule,\r\n EditEngagementModule,\r\n MsalModule.forRoot(new PublicClientApplication(msalConfig), null, null),\r\n //RouterModule.forRoot(routes, {useHash:false})\r\n ],\r\n providers: [\r\n //Location,\r\n // { provide: LocationStrategy, useClass: PathLocationStrategy },\r\n /* {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: MsalInterceptor,\r\n multi: true,\r\n }, */\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: InsertAuthTokenInterceptor,\r\n multi: true\r\n },\r\n /*\r\n {\r\n provide: MSAL_INSTANCE,\r\n useFactory: MSALInstanceFactory,\r\n },\r\n {\r\n provide: MSAL_GUARD_CONFIG,\r\n useFactory: MSALGuardConfigFactory,\r\n },\r\n {\r\n provide: MSAL_INTERCEPTOR_CONFIG,\r\n useFactory: MSALInterceptorConfigFactory,\r\n }, */\r\n MsalService,\r\n /* MsalGuard, */\r\n MsalBroadcastService,\r\n AppConfigService,\r\n Title\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n bootstrap: [AppComponent, MsalRedirectComponent]\r\n})\r\nexport class AppModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule, NoPreloading } from '@angular/router';\r\nimport { AuthenticationGuard } from './core/authentication-guard.service'\r\nimport { PublicUserSignupComponent } from './public-user-signup/public-user-signup.component';\r\nimport { SessionManagementGuard } from './core/session-manage-guard';\r\nimport { MsalGuard } from '@azure/msal-angular';\r\nimport { LoginInternalComponent } from './login-internal/login-internal.component'\r\nimport { NavMenuComponent } from './nav-menu/nav-menu.component';\r\nimport { HomeComponent } from './home/home.component';\r\nimport { AppComponent } from './app.component';\r\n\r\n\r\nexport const routes: Routes = [\r\n {\r\n //Neededforhashrouting\r\n path:'error',\r\n component:HomeComponent,\r\n \r\n },\r\n {\r\n //Neededforhashrouting\r\n path:'state',\r\n component:HomeComponent ,\r\n \r\n },\r\n {\r\n //Neededforhashrouting\r\n path:'code',\r\n component:HomeComponent,\r\n },\r\n { path: '', redirectTo: '/home', pathMatch: 'full' },\r\n { path: 'signup', component: PublicUserSignupComponent },\r\n { path: 'internallogin', component: LoginInternalComponent, pathMatch: 'full' },\r\n {\r\n path:'',\r\n children:[\r\n { path:'home', loadChildren:()=> import('./home/home.module').then((m)=>m.HomeModule),},\r\n { path: 'folder-mgmt', loadChildren:()=> import('./folder-mgmt/folder-mgmt.module').then((m)=> m.FolderManagementModule), canActivate:[ AuthenticationGuard, SessionManagementGuard]},\r\n { path: 'app-config', loadChildren:()=> import('./app-config/app-config.module').then((m)=> m.AppConfigModule),canActivate:[ AuthenticationGuard, SessionManagementGuard]},\r\n { path: 'labelcard-mgmt', loadChildren:()=> import('./labelcard-mgmt/labelcard-mgmt.module').then((m)=> m.LabelcardMgmtModule), canActivate:[ AuthenticationGuard, SessionManagementGuard]},\r\n { path: 'engagement-mgt', loadChildren:()=> import('./add-engagement/add-engagement.module').then((m)=> (m).AddEngagementModule),canActivate:[ AuthenticationGuard, SessionManagementGuard] },\r\n // { path: 'engagement-mgt', loadChildren:()=> import('./add-engagement/add-engagement.module').then((m)=> m.AddEngagementModule), canActivate:[ AuthenticationGuard, SessionManagementGuard]},\r\n { path: 'approval-mgt', loadChildren:()=> import('./approval-mgmt/approval-mgmt.module').then((m)=> m.ApprovalManagementModule),canActivate:[ AuthenticationGuard, SessionManagementGuard] },\r\n { path: 'approval-mgt/:navigateTo', loadChildren:()=> import('./approval-mgmt/approval-mgmt.module').then((m)=> m.ApprovalManagementModule), canActivate:[ AuthenticationGuard, SessionManagementGuard]},\r\n { path: 'edit-engmt', loadChildren:()=> import('./edit-engagement/edit-engagement.module').then((m)=> m.EditEngagementModule), canActivate:[ AuthenticationGuard, SessionManagementGuard]},\r\n { path: 'detail-engmt', loadChildren:()=> import('./detail-engagement/detail-engagement.module').then((m)=> m.DetailEngagementModule), canActivate:[SessionManagementGuard]},\r\n { path: 'about', loadChildren:()=> import('./about-restructuring/about-restructuring.module').then((m)=> m.AboutRestructuringModule), canActivate:[SessionManagementGuard]},\r\n { path: 'contact-us', loadChildren:()=> import('./contact-us/contact-us.module').then((m)=> m.ContactUsModule), canActivate:[SessionManagementGuard]},\r\n { path: 'link-master', loadChildren:()=> import('./link-master/link-master.module').then((m)=> m.LinkMasterModule), canActivate:[ AuthenticationGuard, SessionManagementGuard]},\r\n { path: 'logo-icon-mgmt', loadChildren:()=> import('./logo-icon-mgmt/logo-icon-mgmt.module').then((m)=> m.LogoIconMgmtModule),canActivate:[ AuthenticationGuard, SessionManagementGuard] },\r\n { path: 'eyrole-master-list', loadChildren:()=> import('./eyrole-master-list/eyrole-master-list.module').then((m)=> m.EyRoleMasterListModule),canActivate:[ AuthenticationGuard, SessionManagementGuard] },\r\n { path: 'jurisdiction-filings', loadChildren:()=> import('./jurisdiction-filing/jurisdiction-filing.module').then((m)=> m.JurisdictionFilingModule),canActivate:[ AuthenticationGuard, SessionManagementGuard] },\r\n { path: 'user-management', loadChildren:()=> import('./user-management/user-management.module').then((m)=> m.UserManagementModule),canActivate:[ AuthenticationGuard, SessionManagementGuard] },\r\n { path: 'access-denied', loadChildren:()=> import('./access-denied/access-denied.module').then((m)=> m.AccessDeniedModule), },\r\n { path: 'email-template', loadChildren:()=> import('./email-template/email-template.module').then((m)=> m.EmailTemplateModule),canActivate:[ AuthenticationGuard, SessionManagementGuard] },\r\n { path: 'public-users', loadChildren:()=> import('./public-user-list/public-user-list.module').then((m)=> m.PublicUserListModule), canActivate:[ AuthenticationGuard, SessionManagementGuard]},\r\n { path: 'icon-categories', loadChildren:()=> import('./icon-cateory-list/icon-cateory-list.module').then((m)=> m.IconCateoryListModule),canActivate:[ AuthenticationGuard, SessionManagementGuard] },\r\n \r\n\r\n ],\r\n },\r\n \r\n \r\n /*{\r\n path: '', data: { title: 'Home' },\r\n children: [ \r\n { path: 'home', loadChildren: './home/home.module#HomeModule' },\r\n { path: 'folder-mgmt', loadChildren: './folder-mgmt/folder-mgmt.module#FolderManagementModule', canActivate: [ AuthenticationGuard, SessionManagementGuard] },\r\n { path: 'app-config', loadChildren: './app-config/app-config.module#AppConfigModule', canActivate: [ AuthenticationGuard, SessionManagementGuard] },\r\n { path: 'labelcard-mgmt', loadChildren: './labelcard-mgmt/labelcard-mgmt.module#LabelcardMgmtModule', canActivate: [ AuthenticationGuard, SessionManagementGuard] },\r\n { path: 'engagement-mgt', loadChildren: './add-engagement/add-engagement.module#AddEngagementModule', canActivate: [ AuthenticationGuard, SessionManagementGuard] },\r\n { path: 'engagement-mgt', loadChildren: './add-engagement/add-engagement.module#AddEngagementModule', canActivate: [ AuthenticationGuard, SessionManagementGuard] },\r\n { path: 'approval-mgt', loadChildren: './approval-mgmt/approval-mgmt.module#ApprovalManagementModule', canActivate: [ AuthenticationGuard, SessionManagementGuard] },\r\n { path: 'approval-mgt/:navigateTo', loadChildren: './approval-mgmt/approval-mgmt.module#ApprovalManagementModule', canActivate: [ AuthenticationGuard, SessionManagementGuard] },\r\n { path: 'edit-engmt', loadChildren: './edit-engagement/edit-engagement.module#EditEngagementModule', canActivate: [ AuthenticationGuard, SessionManagementGuard] },\r\n { path: 'detail-engmt', loadChildren: './detail-engagement/detail-engagement.module#DetailEngagementModule', canActivate: [SessionManagementGuard] },\r\n { path: 'about', loadChildren: './about-restructuring/about-restructuring.module#AboutRestructuringModule', canActivate: [SessionManagementGuard] },\r\n { path: 'contact-us', loadChildren: './contact-us/contact-us.module#ContactUsModule', canActivate: [SessionManagementGuard] },\r\n { path: 'link-master', loadChildren: './link-master/link-master.module#LinkMasterModule', canActivate: [ AuthenticationGuard, SessionManagementGuard] },\r\n //{ path: 'contact-us', loadChildren: './contact-us/contact-us.module#ContactUsModule' },\r\n { path: 'logo-icon-mgmt', loadChildren: './logo-icon-mgmt/logo-icon-mgmt.module#LogoIconMgmtModule', canActivate: [ AuthenticationGuard, SessionManagementGuard] },\r\n { path: 'eyrole-master-list', loadChildren: './eyrole-master-list/eyrole-master-list.module#EyRoleMasterListModule', canActivate: [ AuthenticationGuard, SessionManagementGuard] },\r\n { path: 'jurisdiction-filings', loadChildren: './jurisdiction-filing/jurisdiction-filing.module#JurisdictionFilingModule', canActivate: [ AuthenticationGuard, SessionManagementGuard] },\r\n { path: 'user-management', loadChildren: './user-management/user-management.module#UserManagementModule', canActivate: [ AuthenticationGuard, SessionManagementGuard] },\r\n { path: 'access-denied', loadChildren: './access-denied/access-denied.module#AccessDeniedModule', },\r\n { path: 'email-template', loadChildren: './email-template/email-template.module#EmailTemplateModule', canActivate: [ AuthenticationGuard, SessionManagementGuard] },\r\n { path: 'public-users', loadChildren: './public-user-list/public-user-list.module#PublicUserListModule', canActivate: [ AuthenticationGuard, SessionManagementGuard] },\r\n { path: 'icon-categories', loadChildren: './icon-cateory-list/icon-cateory-list.module#IconCateoryListModule', canActivate: [ AuthenticationGuard, SessionManagementGuard] },\r\n ]\r\n }, */\r\n \r\n];\r\n\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes, { useHash: true, preloadingStrategy: NoPreloading, relativeLinkResolution: 'legacy' })],\r\n exports: [RouterModule]\r\n})\r\n\r\n\r\nexport class AppRoutingModule { }\r\n","//import { NullTemplateVisitor } from '@angular/compiler';\r\nimport { Injectable } from '@angular/core';\r\nimport { Router, CanActivate, ActivatedRoute, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { MsalService } from '@azure/msal-angular'\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthenticationGuard implements CanActivate {\r\n constructor(\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private msalSrv: MsalService,\r\n ) { }\r\n\r\n async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n let ret = false;\r\n const returnUrl = this.route.snapshot.queryParams['returnUrl'] || '/';\r\n if (this.msalSrv.instance.getActiveAccount() == null) {\r\n ret = false;\r\n this.router.navigate[\"/access-denied\"];\r\n } \r\n else\r\n {\r\n const isAdmin = localStorage.getItem(\"IsAdmin\") ? localStorage.getItem(\"IsAdmin\") : false;\r\n if (isAdmin)\r\n ret = true;\r\n else {\r\n ret = true;\r\n }\r\n }\r\n return ret;\r\n }\r\n\r\n\r\n getIsRouteAuthorized(role): boolean {\r\n \r\n return false;\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpInterceptor, HttpHandler, HttpRequest, HttpHeaders, HttpEvent, HttpErrorResponse } from '@angular/common/http';\r\nimport { mergeMap } from 'rxjs/operators';\r\nimport {MsalService} from '@azure/msal-angular';\r\nimport { Observable } from 'rxjs/Observable';\r\nimport { AuthenticationResult, SilentRequest } from '@azure/msal-browser';\r\n//import { MsAdalAngular6Service } from 'microsoft-adal-angular6';\r\n\r\n@Injectable()\r\nexport class InsertAuthTokenInterceptor implements HttpInterceptor {\r\n\r\n constructor(private msal: MsalService) { }\r\n /* intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n\r\n return Observable.fromPromise(this.handleAccess(request, next));\r\n \r\n }\r\n private async handleAccess(request: HttpRequest, next: HttpHandler):\r\n\r\n Promise> {\r\n var req = request.clone({\r\n headers: request.headers.set(\r\n 'UserEmail', this.msal.instance.getActiveAccount().username,\r\n )\r\n });\r\n return next.handle(req).toPromise();\r\n }*/\r\n\r\n // intercept(req: HttpRequest, next: HttpHandler) {\r\n // // get api url from adal config\r\n // const resource = this.adal.GetResourceForEndpoint(req.url);\r\n // if (!resource || !this.adal.isAuthenticated) {\r\n // return next.handle(req);\r\n // }\r\n // const idtoken = sessionStorage.getItem('adal.idtoken');\r\n // // merge the bearer token into the existing headers\r\n // return this.adal.acquireToken(resource).pipe(\r\n // mergeMap((token: string) => {\r\n // let headers = new HttpHeaders().set('Authorization', `Bearer ${idtoken}`); // create header object\r\n // headers = headers.append('Cache-Control', 'no-cache'); // add a new header, creating a new object\r\n // headers = headers.append('X-XSS-Protection', '1; mode=block'); // add another header\r\n // headers = headers.append('Content-Security-Policy', \"default-src 'self'\");\r\n // headers = headers.append('Access-Control-Allow-Origin', \"*\");\r\n // if((!req.url.includes('ManageDoc'))||(!req.url.includes('TopicCard'))||(!req.url.includes('LogoIconMgmt'))||(!req.url.includes('User'))){\r\n // headers = headers.append('Content-Type', \"application/json;charset=utf-8\");\r\n // }\r\n\r\n // const authorizedRequest = req.clone({\r\n // headers: headers \r\n // });\r\n // return next.handle(authorizedRequest);\r\n // }));\r\n // }\r\n\r\n intercept(req: HttpRequest, next: HttpHandler) {\r\n console.log(req);\r\n if (this.msal.instance.getActiveAccount() == null) {\r\n return next.handle(req);\r\n }\r\n \r\n var silentRequest: SilentRequest ={\r\n account: this.msal.instance.getActiveAccount(),\r\n scopes: [\"user.read\"]\r\n };\r\n return this.msal.acquireTokenSilent(silentRequest).pipe(\r\n mergeMap((tokenResponse: AuthenticationResult) => {\r\n req = req.clone({\r\n headers: req.headers.set('Authorization', `Bearer ${tokenResponse.idToken}`)\r\n });\r\n req = req.clone({\r\n headers: req.headers.set(\r\n 'UserEmail', tokenResponse.account.username,\r\n )\r\n });\r\n \r\n req = req.clone({\r\n headers: req.headers.append('Cache-Control', 'no-cache') // add a new header, creating a new object\r\n });\r\n req = req.clone({\r\n headers :req.headers.append('X-XSS-Protection', '1; mode=block') // add another header\r\n });\r\n req = req.clone({\r\n headers :req.headers.append('Content-Security-Policy', \"font-src *;img-src * data:;\")\r\n //headers :req.headers.append('Content-Security-Policy', \"default-src 'self'\")\r\n });\r\n req = req.clone({\r\n headers :req.headers.append('Access-Control-Allow-Origin', \"*\")\r\n });\r\n req = req.clone({\r\n headers :req.headers.append('X-Content-Type-Options', \"nosniff\")\r\n });\r\n req = req.clone({\r\n headers :req.headers.append('Strict-Transport-Security', \"max-age=31536000; includeSubDomains\")\r\n });\r\n \r\n return next.handle(req).do((event: HttpEvent)=> {\r\n \r\n },\r\n (error: any)=> {\r\n if (error instanceof HttpErrorResponse) {\r\n if (error.status === 401) {\r\n //this.renewToken();\r\n }\r\n }\r\n }\r\n );\r\n }));\r\n \r\n }\r\n // get api url from adal config\r\n /* const resource = this.msal.instance.GetResourceForEndpoint(req.url);\r\n if (!resource || !this.msal.isAuthenticated) {\r\n return next.handle(req);\r\n }\r\n \r\n // merge the bearer token into the existing headers\r\n return this.msal.acquireToken(resource).pipe(\r\n mergeMap((token: string) => {\r\n req = req.clone({\r\n headers: req.headers.set('Authorization', `Bearer ${token}`)\r\n });\r\n req = req.clone({\r\n headers: req.headers.set(\r\n 'UserEmail', this.msal.userInfo.profile.upn,\r\n )\r\n });\r\n \r\n req = req.clone({\r\n headers: req.headers.append('Cache-Control', 'no-cache') // add a new header, creating a new object\r\n });\r\n req = req.clone({\r\n headers :req.headers.append('X-XSS-Protection', '1; mode=block') // add another header\r\n });\r\n req = req.clone({\r\n headers :req.headers.append('Content-Security-Policy', \"font-src *;img-src * data:;\")\r\n //headers :req.headers.append('Content-Security-Policy', \"default-src 'self'\")\r\n });\r\n req = req.clone({\r\n headers :req.headers.append('Access-Control-Allow-Origin', \"*\")\r\n });\r\n req = req.clone({\r\n headers :req.headers.append('X-Content-Type-Options', \"nosniff\")\r\n });\r\n req = req.clone({\r\n headers :req.headers.append('Strict-Transport-Security', \"max-age=31536000; includeSubDomains\")\r\n });\r\n \r\n return next.handle(req).do((event: HttpEvent)=> {\r\n\r\n },\r\n (error: any)=> {\r\n if (error instanceof HttpErrorResponse) {\r\n if (error.status === 401) {\r\n //this.renewToken();\r\n }\r\n }\r\n }\r\n );\r\n })); */\r\n }\r\n\r\n /* renewToken() {\r\n this.msal.RenewToken('https://graph.microsoft.com');\r\n this.msal.acquireToken('https://graph.microsoft.com').subscribe((token: string) => { \r\n },\r\n (error) => {\r\n \r\n this.logout(); \r\n });\r\n } */\r\n\r\n /*logout() { \r\n sessionStorage.clear();\r\n localStorage.clear()\r\n this.msal.logout(); \r\n }*/\r\n \r\n\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { Router, CanActivate, ActivatedRoute, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport {MsalService} from '@azure/msal-angular';\r\nimport { UserService } from 'src/framework/services/userservice';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SessionManagementGuard implements CanActivate {\r\n\r\n public sessionReq = {\r\n userEmail : null,\r\n sessionId : null\r\n }\r\n\r\n constructor(\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private msalSvc: MsalService,\r\n private userService: UserService,\r\n ) { }\r\n\r\n async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n let ret = true;\r\n if (this.msalSvc.instance.getActiveAccount() != null) {\r\n \r\n this.sessionReq = JSON.parse(sessionStorage.getItem('CurrentSession'));\r\n if(this.sessionReq != null) {\r\n this.userService.getSessionInfo(this.sessionReq.sessionId).subscribe((response: any) =>{\r\n\r\n if(!response.isActive){\r\n\r\n ret = false;\r\n localStorage.clear();\r\n sessionStorage.clear();\r\n this.msalSvc.logout();\r\n this.router.navigate[\"/home\"];\r\n }\r\n\r\n } );\r\n }\r\n } \r\n return ret;\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter, ViewChild, ElementRef, SimpleChanges, OnChanges } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators, ɵInternalFormsSharedModule } from '@angular/forms';\r\nimport { DocumentManagementService } from 'src/framework/services/manage-doc.service';\r\nimport { SelectItemGroup, SelectItem, TreeNode } from 'primeng/api';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { ManageDocComponent } from '../manage-doc/manage-doc.component';\r\nimport { LabelcardMgmtService } from 'src/framework/services/labelcard-mgmt.service';\r\nimport { error } from 'protractor';\r\nimport { TopicCardService } from 'src/framework/services/topic-card.service';\r\nimport { LogoIconMgmtService } from 'src/framework/services/logo-icon-mgmt.service';\r\nimport { ImageType } from '../../../enums/image-type';\r\nimport { environment } from '../../../../environments/environment';\r\nimport { CategoryConstant } from 'src/app/shared/app-constants/category-constants';\r\nimport { LanguageService } from 'src/framework/services/language.service';\r\nimport { FolderManagementService } from 'src/framework/services/folder-mgmt.service';\r\n\r\n@Component({\r\n selector: 'app-add-new-topic-card',\r\n templateUrl: './add-new-topic-card.component.html',\r\n styleUrls: ['./add-new-topic-card.component.css']\r\n})\r\nexport class AddNewTopicCardComponent implements OnInit {\r\n processedDocIdLists: any[];\r\n\r\n\r\n @Input() set docLanguageId(newLimit: number) {\r\n this.docLanguageIds(newLimit);\r\n }\r\n @Input() docFolderId: string;\r\n @Output() emitDocument = new EventEmitter();\r\n @ViewChild(\"ctrlFileUpload\") ctrlFileUpload: ElementRef;\r\n\r\n\r\n allowedFileTypes: string;\r\n dataArray=[];\r\n environments=environment.ApplicationUrl+\"/api/Document/download?docId=\";\r\n calendarYearRange: string;\r\n pUpload: any;\r\n secondaryTopicCards = [];\r\n tempArray = [];\r\n menuindex=0;\r\n submenuIndex=0;\r\n menuItems = [];\r\n docTypeList: any[] = [];\r\n docCategoryList: any[] = [];\r\n languageName=\"EN\"\r\n environmentsNew=\"Hello\";\r\n docInfo = '';\r\n imageType = ImageType;\r\n showEditor = false;\r\n engagementDocList = [];\r\n docuDescription = \"\"\r\n selectedDoc: any;\r\n selectedCategory={'topicCardCategoryDescription':'Primary','topicCardCategoryId':1};\r\n selectedTypes ={'topicCardTypeDescription':'TopicCard','topicCardTypeId':1}; \r\n selctedDocLanguageId = 1;\r\n selectedTopic: any;\r\n selectedType: TopicCardTypes;\r\n docDateDesc = 'Document Date';\r\n authorizerList: SelectItemGroup[] = [\r\n {\r\n label: 'Owners',\r\n items: [\r\n { label: 'Sharon Hamilton (sharon.s.hamilton@ca.ey.com)', value: 'CA010K54094' }\r\n ]\r\n },\r\n {\r\n label: 'Reviewers',\r\n items: [\r\n { label: 'Andrew Tuck (andrew.s.tuck@ca.ey.com)', value: 'CA010K54094' },\r\n ]\r\n },\r\n {\r\n label: 'PPAP',\r\n items: [\r\n { label: 'Mark Anthony (mark.anthony@ca.ey.com)', value: 'CA010K54094' },\r\n\r\n ]\r\n },\r\n {\r\n label: 'Sr. Managers',\r\n items: [\r\n { label: 'Ella Chuck (ella.chuck@ca.ey.com)', value: 'CA010K54094' },\r\n\r\n ]\r\n },\r\n {\r\n label: 'Admin',\r\n items: [\r\n { label: 'Nathan Fry (nathan.s.fry@ca.ey.com)', value: 'CA010K54094' },\r\n\r\n ]\r\n }\r\n\r\n\r\n ];\r\n\r\n engagementDetail = {\r\n appLanguage: 1,\r\n engagementId: 1,\r\n engagementName: '',\r\n engStatusId: 1,\r\n engStatusName: '',\r\n engInitialDate: null,\r\n engLanguage: [{\r\n \"languageId\": 1,\r\n \"languageName\": \"English\",\r\n \"languageFlagPath\": \"../../assets/flags/English.png\"\r\n }],\r\n engLanguageFrench: [{\r\n \"languageId\": 1,\r\n \"languageName\": \"Anglaise\",\r\n \"languageFlagPath\": \"../../assets/flags/English.png\"\r\n }]\r\n }\r\n\r\n documentForm: FormGroup;\r\n formSubmitted = false;\r\n showDateMandatory: boolean = false;\r\n appLangList: any[] = [];\r\n icons: any[] = [];\r\n iconsselected: SelectItem[];\r\n approvedEngagementDocList: any[] = [];\r\n selectedicons: any;\r\n isSortApplay = false;\r\n tinyMceConfig: any;\r\n selectedAppLanguage: any;\r\n selectedAppLanguageJson: any;\r\n defaultEnglishJson: any;\r\n selectedLangDocTypeJson: any;\r\n defaultEngDocTypeJson: any;\r\n selectedGlobalLanguageJson: any;\r\n defaultGlobalEnglishJson:any\r\n islabelLoaded: boolean = false;\r\n selectedLangDateJson: any;\r\n defaultEngDateJson: any;\r\n targetTreeData=[];\r\n localeSetting: any;\r\n filter = [{\r\n templateVariableName: 'foo'\r\n },\r\n {\r\n templateVariableName: 'noo'\r\n }\r\n ];\r\n\r\n constructor(private formBuilder: FormBuilder,private folderService: FolderManagementService,\r\n private manageTopicCardService: TopicCardService, private spinner: NgxSpinnerService, private manageDocService: DocumentManagementService,\r\n private labelCardService: LabelcardMgmtService, private logoIconMgmtService: LogoIconMgmtService, private languageService: LanguageService) {\r\n this.selectedType = new TopicCardTypes(1, '', '', new Date(), '', '');\r\n this.allowedFileTypes = \".doc,.docx,.dot,.jpg,.jpeg,.png,.tif,.pdf,.xls,.xlsx,.xlsb,.txt,.csv\";\r\n this.calendarYearRange = (new Date().getUTCFullYear() - 10) + ':' + (new Date().getUTCFullYear() + 1);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadLanguageLabel();\r\n\r\n // let sessionEngObj = JSON.parse(sessionStorage.getItem('engagementData'));\r\n // this.engagementDetail.engagementId = sessionEngObj['engagementId'];\r\n this.initializeEngagementData();\r\n this.buildForm();\r\n this.getEngagementApprovedDocument();\r\n this.setDocDateValidators();\r\n this.getTopicCardType();\r\n this.getTopicCardCategory();\r\n this.getEngagementDoc();\r\n this.getEngagementTopicCard();\r\n this.getLogoList();\r\n \r\n }\r\n\r\n\r\n \r\n sortNode(node: TreeNode) {\r\n\r\n if (!('sortTypeId' in node?.data[0])) {\r\n node.data[0]['sortTypeId'] = '2';\r\n }\r\n\r\n if (node?.data[0]?.sortTypeId.toString() === '1') {\r\n // node.draggable = false;\r\n // node.droppable = false;\r\n\r\n if (node.children) {\r\n //node?.children?.sort((a, b) => a.label?.localeCompare(b.label));\r\n node?.children?.sort((a, b) => this.displayFolderLabel(a).localeCompare(this.displayFolderLabel(b)));\r\n\r\n\r\n }\r\n }\r\n else if (node?.data[0]?.sortTypeId.toString() === '2') {\r\n // node.draggable = false;\r\n // node.droppable = false;\r\n\r\n if (node.children) {\r\n //node?.children?.sort((a, b) => a.label?.localeCompare(b.label));\r\n node?.children?.sort((a, b) => this.displayFolderLabel(a).localeCompare(this.displayFolderLabel(b)));\r\n node?.children?.sort(this.folder_date_sort_desc);\r\n\r\n }\r\n }\r\n else if (node?.data[0]?.sortTypeId.toString() === '3') {\r\n\r\n }\r\n else if (node?.data[0]?.sortTypeId.toString() === '4') {\r\n\r\n //node?.children?.sort((a, b) => b.label?.localeCompare(a.label));\r\n node?.children?.sort((a, b) => this.displayFolderLabel(b).localeCompare(this.displayFolderLabel(a)));\r\n node?.children?.sort((a, b) => this.folder_date_sort_desc(a, b));\r\n\r\n }\r\n }\r\n\r\n \r\n folder_date_sort_desc = function (a, b) {\r\n // This is a comparison function that will result in dates being sorted in\r\n // DESCENDING order.\r\n let res;\r\n if (a?.type?.toLowerCase() === 'file') {\r\n a = new Date(a?.data[0]?.documentDate).getTime() ?? new Date(a?.data[0]?.createdDTTM).getTime();\r\n }\r\n else {\r\n a = new Date(a?.data[0]?.createdDTTM).getTime();\r\n }\r\n\r\n if (b?.type?.toLowerCase() === 'file') {\r\n b = new Date(b?.data[0]?.documentDate).getTime() ?? new Date(b?.data[0]?.createdDTTM).getTime();\r\n }\r\n else {\r\n b = new Date(b?.data[0]?.createdDTTM).getTime();\r\n }\r\n\r\n res = a > b ? -1 : a < b ? 1 : 0;\r\n\r\n return res;\r\n\r\n }\r\n\r\n displayFolderLabel(node: TreeNode): string {\r\n let primaryLangId, otherPrimaryLangId = 0;\r\n let nodeLangList: any[] = [];\r\n let langIndex = -1;\r\n let folderLabel = '';\r\n if (node != null && node != undefined) {\r\n\r\n if (this.engagementDetail.appLanguage == 2) {\r\n primaryLangId = 2;\r\n otherPrimaryLangId = 1;\r\n }\r\n else //default is english\r\n {\r\n primaryLangId = 1;\r\n otherPrimaryLangId = 2;\r\n }\r\n\r\n folderLabel = node.label;\r\n nodeLangList = node?.data[0]?.language;\r\n\r\n if (nodeLangList?.length > 0) {\r\n if ((langIndex = nodeLangList.findIndex(x => Number(x.languageId) === Number(primaryLangId))) > -1) {\r\n if (nodeLangList[langIndex]?.folderName?.trim() !== ''\r\n && nodeLangList[langIndex]?.folderName !== null\r\n && nodeLangList[langIndex]?.folderName !== undefined) {\r\n folderLabel = nodeLangList[langIndex]?.folderName;\r\n }\r\n else {\r\n if ((langIndex = nodeLangList.findIndex(x => Number(x.languageId) === Number(otherPrimaryLangId))) > -1) {\r\n if (nodeLangList[langIndex]?.folderName?.trim() !== ''\r\n && nodeLangList[langIndex]?.folderName !== null\r\n && nodeLangList[langIndex]?.folderName !== undefined) {\r\n folderLabel = nodeLangList[langIndex]?.folderName;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return folderLabel;\r\n\r\n }\r\n\r\n\r\n getFolderStructure() {\r\n this.spinner.show();\r\n this.folderService.getFolderTemplate(this.engagementDetail.engagementId).then(files => {\r\n if (files && files.length > 0) {\r\n\r\n var count: Array=[];\r\n if (files.length > 0 && files[0].children) {\r\n let i =0;\r\n files[0].children.forEach(childNode => {\r\n if(childNode.label==undefined)\r\n {\r\n count.push(i);\r\n }\r\n i = i+1;\r\n });\r\n }\r\n \r\n count.forEach( val =>{\r\n files[0].children.pop(files[0].children[val]);\r\n });\r\n \r\n let x = this.removeEmptyFolder(files[0])\r\n x['label'] = \"Public Documents\"\r\n this.targetTreeData = x ? x.children.filter(t => t.styleClass != 'detailhideFileClass') : []\r\n if(!this.isSortApplay)\r\n {\r\n this.targetTreeData.forEach(x => {\r\n if (x.type.toLowerCase() === 'folder') {\r\n this.sortNode(x);\r\n }\r\n });\r\n }\r\n // this.targetTreeData = files.length > 0 ? files : []\r\n // this.preProcessTree();\r\n }\r\n this.configureTinyMce();\r\n this.showEditor = true;\r\n this.spinner.hide();\r\n });\r\n }\r\n\r\n preProcessTree(editor,environments,lanName) {\r\n\r\n\r\n this.tempArray=[];\r\n this.menuItems=[];\r\n this.targetTreeData.forEach(x => {\r\n this.preProcessTreeRecursive(x,editor,environments,lanName)\r\n });\r\n var newArray=[];\r\n\r\n var indexArray=Object.keys(this.menuItems);\r\n indexArray.forEach((item,index)=>{\r\n newArray[index]=this.menuItems[item];\r\n });\r\n return newArray;\r\n\r\n }\r\n\r\n \r\n\r\n preProcessTreeRecursive(node: any,editor,environments,lanName) {\r\n if (node != null && node != undefined) {\r\n if (node.type.toLowerCase() === 'file') {\r\n if(node.data[0]['parentId']==0){\r\n var docId = node.data[0].docId;\r\n this.menuItems.push(\r\n {\r\n type:'menuitem',\r\n text:node.label,\r\n id:node.key,\r\n \r\n onAction: function () {\r\n editor.insertContent(\"\" + node.label + \"\"); // editor.dom.add(editor.getBody(), 'div', {class: 'row'}, this.getColMd12(f));\r\n }\r\n }\r\n );\r\n }\r\n else{\r\n var nodes =this.findNode(node.data[0]['parentId']);\r\n var menuNodes = this.findMenuNode(node.data[0]['parentId']);\r\n var oldArrays=[];\r\n if(this.menuItems[node.data[0]['parentId']]){\r\n var docId = node.data[0].docId;\r\n oldArrays= this.menuItems[node.data[0]['parentId']].fetches;\r\n\r\n oldArrays.push({\r\n \r\n type:'menuitem',\r\n text:node.label,\r\n id:node.key,\r\n onAction: function () {\r\n editor.insertContent(\"\" + node.label + \"\"); \r\n }\r\n });\r\n\r\n this.menuItems[node.data[0]['parentId']].fetches=oldArrays;\r\n \r\n this.menuItems[node.data[0]['parentId']].getSubmenuItems=function(){return oldArrays;\r\n }\r\n }\r\n else{\r\n oldArrays= menuNodes.fetches;\r\n // var prevArrays = this.menuItems[nodes['folderId']].fetches;\r\n // var arrays = prevArrays.filter(item=>item.text===nodes.label);\r\n // oldArrays = arrays[0].fetches;\r\n // var parentIndex = prevArrays.indexOf(arrays[0]);\r\n var docId = node.data[0].docId;\r\n\r\n oldArrays.push({\r\n \r\n type:'menuitem',\r\n text:node.label,\r\n id:node.key,\r\n onAction: function () {\r\n editor.insertContent(\"\" + node.label + \"\"); \r\n }\r\n });\r\n\r\n menuNodes.fetches=oldArrays;\r\n menuNodes.getSubmenuItems=function(){return oldArrays;}\r\n \r\n }\r\n \r\n \r\n\r\n\r\n \r\n }\r\n }\r\n else if (node.type.toLowerCase() === 'folder') {\r\n if(node.children.length>0){\r\n\r\n if(node.hasOwnProperty('folderId')){\r\n var menuNodes = this.findMenuNode(node['folderId']);\r\n var menuArrays=[];\r\n var indexArrays=Object.keys(this.menuItems);\r\n indexArrays.forEach((item,index)=>{\r\n menuArrays[index]={...this.menuItems[item]};\r\n });\r\n //var trees= this.filterData(menuArrays,node['folderId']);\r\n var oldfolderArrays= menuNodes.fetches;\r\n\r\n oldfolderArrays.push({\r\n \r\n type:'nestedmenuitem',\r\n text:node.label,\r\n id:node.key,\r\n fetches:[],\r\n getSubmenuItems: function () {\r\n }\r\n });\r\n\r\n menuNodes.getSubmenuItems=function(){return oldfolderArrays;}\r\n\r\n // if(this.menuItems[node['folderId']]){\r\n \r\n // this.menuItems[node['folderId']].fetches=oldfolderArrays;\r\n \r\n // this.menuItems[node['folderId']].getSubmenuItems=function(){return oldfolderArrays;\r\n // }\r\n // }\r\n // else if(this.menuItems[trees[0].id]){\r\n // var newItems= this.menuItems[trees[0].id].fetches.filter(item=>item.id===node['folderId'])\r\n // if(newItems.length>0){\r\n // newItems[0].fetches = oldfolderArrays;\r\n // newItems[0].getSubmenuItems=function(){return oldfolderArrays;}\r\n // }\r\n // else if(this.menuItems[trees[0].id])\r\n // }\r\n\r\n }\r\n else{\r\n this.menuItems[node.key]={\r\n type:'nestedmenuitem',\r\n text: node.label,\r\n id:node.key,\r\n fetches:[],\r\n folderfetches:[],\r\n getSubmenuItems: function(){\r\n\r\n }\r\n };\r\n }\r\n }\r\n\r\n }\r\n if (node.children) {\r\n node.children.forEach(childNode => {\r\n this.preProcessTreeRecursive(childNode,editor,environments,lanName);\r\n });\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n findNode(nodeKey): TreeNode {\r\n var found = false;\r\n let foundNode: TreeNode = {};\r\n\r\n function recurseFindParent(searchTree) {\r\n\r\n for (var i = 0; i < searchTree.length; i++) {\r\n\r\n // Found the category!\r\n if (Number(searchTree[i].key) === Number(nodeKey)) {\r\n foundNode = searchTree[i];\r\n found = true;\r\n break;\r\n\r\n // Did not match...\r\n } else {\r\n // Are there children / sub-categories? YES\r\n // if(searchTree[i].children !== ''){\r\n if (searchTree[i].children.length > 0) {\r\n recurseFindParent(searchTree[i].children);\r\n if (found) {\r\n break;\r\n }\r\n }\r\n //}\r\n }\r\n }\r\n }\r\n\r\n recurseFindParent(this.targetTreeData);\r\n\r\n return foundNode;\r\n }\r\n\r\n\r\n filterData(data:any, id) {\r\n var that=this;\r\n var r = data.filter(function(o) {\r\n if (o.fetches.length>0) \r\n {\r\n o.fetches = that.filterData(o.fetches, id);\r\n }\r\n return o.id != id\r\n })\r\n return r;\r\n }\r\n\r\n\r\n \r\n findMenuNode(nodeKey): any {\r\n var found = false;\r\n let foundNode: any = {};\r\n\r\n function recurseFindParent(searchTree) {\r\n \r\n\r\n for (var i = 0; i < searchTree.length; i++) {\r\n if(searchTree[i]){\r\n\r\n // Found the category!\r\n if (Number(searchTree[i].id) === Number(nodeKey)) {\r\n foundNode = searchTree[i];\r\n found = true;\r\n break;\r\n\r\n // Did not match...\r\n } else {\r\n // Are there children / sub-categories? YES\r\n // if(searchTree[i].children !== ''){\r\n if (searchTree[i].fetches&&searchTree[i].fetches.length > 0) {\r\n recurseFindParent(searchTree[i].fetches);\r\n if (found) {\r\n break;\r\n }\r\n }\r\n //}\r\n }\r\n }\r\n }\r\n }\r\n\r\n recurseFindParent(this.menuItems);\r\n\r\n return foundNode;\r\n }\r\n \r\n\r\n removeEmptyFolder(node: any) {\r\n\r\n let primaryLangId, otherPrimaryLangId, secondPrimaryLangId, thirdPrimaryLangId, fourthPrimaryLangId, fifthPrimaryLangId = 0;\r\n\r\n if (this.engagementDetail.appLanguage == 2) {\r\n primaryLangId = 2;\r\n otherPrimaryLangId = 1;\r\n }\r\n else if (this.engagementDetail.appLanguage == 1) {\r\n primaryLangId = 1;\r\n otherPrimaryLangId = 2;\r\n }\r\n else if (this.engagementDetail.appLanguage == 3) {\r\n primaryLangId = 3;\r\n otherPrimaryLangId = 1;\r\n secondPrimaryLangId = 2;\r\n }\r\n\r\n else //default is english\r\n {\r\n primaryLangId = 1;\r\n otherPrimaryLangId = 2;\r\n }\r\n let isValidFolder = false;\r\n for (let i = 0; i < node.children.length; i++) {\r\n if (node.children[i].type == 'folder') {\r\n this.sortNode(node);\r\n if(node.type=='folder'){\r\n node.children[i]['folderId']=node.key;\r\n }\r\n if (this.removeEmptyFolder(node.children[i]).styleClass != 'detailhideFileClass') {\r\n isValidFolder = true;\r\n }\r\n } else if (node.children[i].type == 'file') {\r\n if (this.approvedEngagementDocList && this.approvedEngagementDocList.length > 0) {\r\n let res = this.approvedEngagementDocList.find(x => x.docId == node.children[i].data[0].docId && x.docVersionId == node.children[i].data[0].docVersionId && primaryLangId == node.children[i].data[0].languageId)\r\n if (res == null || res == undefined)\r\n res = this.approvedEngagementDocList.find(x => x.docId == node.children[i].data[0].docId && x.docVersionId == node.children[i].data[0].docVersionId && otherPrimaryLangId == node.children[i].data[0].languageId)\r\n if (res == null || res == undefined)\r\n res = this.approvedEngagementDocList.find(x => x.docId == node.children[i].data[0].docId && x.docVersionId == node.children[i].data[0].docVersionId && secondPrimaryLangId == node.children[i].data[0].languageId)\r\n if (res) {\r\n node.children[i].styleClass = 'fileClass';\r\n node.children[i]['description'] = res.documentDescription;\r\n node.children[i]['docId'] = res.docId\r\n node.children[i]['documentDate'] = res.documentDate\r\n isValidFolder = true;\r\n } else {\r\n node.children[i].styleClass = 'detailhideFileClass';\r\n\r\n }\r\n }\r\n }\r\n }\r\n if (node.type == \"folder\" && !isValidFolder) {\r\n node.styleClass = 'detailhideFileClass';\r\n }\r\n return node;\r\n }\r\n \r\n \r\n\r\n\r\n\r\n\r\n docLanguageIds(limit: number) {\r\n this.selctedDocLanguageId = limit;\r\n if(this.selctedDocLanguageId==1){\r\n this.languageName=\"EN\";\r\n }\r\n else{\r\n this.languageName=\"FR\";\r\n }\r\n }\r\n\r\n\r\n getEngagementApprovedDocument() {\r\n this.engagementDetail['statusName']=this.engagementDetail.engStatusName;\r\n this.manageDocService.getEngagementApprovedDocument(this.engagementDetail).subscribe(res => {\r\n if (res) {\r\n //success\r\n this.approvedEngagementDocList = res.data;\r\n this.getFolderStructure();\r\n } else {\r\n //display error\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n loadLanguageLabel() {\r\n let englishLanguageMappings, selectedLanguageMappings: any;\r\n let englishglobalLanguageMappings, selectedglobalLanguageMappings: any;\r\n\r\n let englishDateMappings, selectedLangDateMappings: any;\r\n\r\n return new Promise((resolve, reject) => {\r\n this.spinner.show();\r\n if (sessionStorage.getItem('selectedLanguageId')) {\r\n this.selectedAppLanguage = 1;//JSON.parse(sessionStorage.getItem('selectedLanguageId'));\r\n }\r\n\r\n this.languageService.currentData.subscribe(data => {\r\n this.selectedAppLanguage = data.Id\r\n });\r\n\r\n\r\n this.languageService.mySubject.subscribe((data) => {\r\n var languageMappings = data;\r\n if (languageMappings?.length > 0) {\r\n\r\n englishLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.TopicCards.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishglobalLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Global.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n englishDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n\r\n if (englishLanguageMappings?.isGlobal) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.TopicCards.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n\r\n selectedglobalLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Global.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0]; \r\n\r\n selectedLangDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n }\r\n else {\r\n if (Number(this.selectedAppLanguage) === 2) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.TopicCards.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n\r\n selectedglobalLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Global.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n }\r\n else {\r\n selectedLanguageMappings = englishLanguageMappings;\r\n selectedglobalLanguageMappings = englishglobalLanguageMappings;\r\n\r\n selectedLangDateMappings = englishDateMappings;\r\n\r\n }\r\n }\r\n\r\n this.selectedAppLanguageJson = JSON.parse(selectedLanguageMappings?.languageMappingJSON ?? englishLanguageMappings.languageMappingJSON);\r\n this.defaultEnglishJson = JSON.parse(englishLanguageMappings.languageMappingJSON);\r\n\r\n this.selectedLangDateJson = JSON.parse(selectedLangDateMappings?.languageMappingJSON ?? englishDateMappings.languageMappingJSON);\r\n this.defaultEngDateJson = JSON.parse(englishDateMappings.languageMappingJSON);\r\n\r\n this.selectedGlobalLanguageJson = JSON.parse(selectedglobalLanguageMappings.languageMappingJSON);\r\n this.defaultGlobalEnglishJson = JSON.parse(englishglobalLanguageMappings.languageMappingJSON);\r\n\r\n\r\n this.setCalendarLocale();\r\n this.docDateDesc = this.labelReplacer('txtDocDate');\r\n this.islabelLoaded = true;\r\n this.spinner.hide();\r\n resolve(1);\r\n }\r\n else {\r\n this.spinner.hide();\r\n }\r\n });\r\n })\r\n .catch(err => {\r\n this.spinner.hide();\r\n\r\n console.log(err);\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n labelReplacer(labelKey): string {\r\n let value;\r\n value = this.selectedAppLanguageJson[labelKey]?.trim() ? this.selectedAppLanguageJson[labelKey] ?? 'text not found' : this.defaultEnglishJson[labelKey] ?? 'text not found';\r\n return value;\r\n }\r\n\r\n calendarReplacer(labelKey): string {\r\n return this.selectedLangDateJson[labelKey]?.trim() ? this.selectedLangDateJson[labelKey] ?? 'text not found' : this.defaultEngDateJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n dayOrMonthNameShort(name, length): string {\r\n let shortName = '';\r\n if (name?.trim()?.length == 0)\r\n shortName = 'Text not found';\r\n else if (name?.trim()?.length > 0 && name?.trim()?.length < length)\r\n shortName = name;\r\n else\r\n shortName = name.substr(0, length);\r\n return shortName;\r\n }\r\n\r\n setCalendarLocale() {\r\n this.localeSetting = {\r\n firstDayOfWeek: 0,\r\n dayNames: [\r\n this.calendarReplacer(\"SUN\"),\r\n this.calendarReplacer(\"MON\"), this.calendarReplacer(\"TUE\"), this.calendarReplacer(\"WED\"),\r\n this.calendarReplacer(\"THU\"), this.calendarReplacer(\"FRI\"), this.calendarReplacer(\"SAT\")\r\n ],\r\n dayNamesShort: [\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"SUN\"), 3),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"MON\"), 3), this.dayOrMonthNameShort(this.calendarReplacer(\"TUE\"), 3),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"WED\"), 3), this.dayOrMonthNameShort(this.calendarReplacer(\"THU\"), 3),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"FRI\"), 3), this.dayOrMonthNameShort(this.calendarReplacer(\"SAT\"), 3)\r\n ],\r\n dayNamesMin: [\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"SUN\"), 1),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"MON\"), 1), this.dayOrMonthNameShort(this.calendarReplacer(\"TUE\"), 1),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"WED\"), 1), this.dayOrMonthNameShort(this.calendarReplacer(\"THU\"), 1),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"FRI\"), 1), this.dayOrMonthNameShort(this.calendarReplacer(\"SAT\"), 1)\r\n ],\r\n monthNames: [\r\n this.calendarReplacer(\"JAN\"), this.calendarReplacer(\"FEB\"), this.calendarReplacer(\"MAR\"),\r\n this.calendarReplacer(\"APR\"), this.calendarReplacer(\"MAY\"), this.calendarReplacer(\"JUN\"),\r\n this.calendarReplacer(\"JUL\"), this.calendarReplacer(\"AUG\"), this.calendarReplacer(\"SEP\"),\r\n this.calendarReplacer(\"OCT\"), this.calendarReplacer(\"NOV\"), this.calendarReplacer(\"DEC\")\r\n ],\r\n monthNamesShort: [\r\n this.calendarReplacer(\"JAN\"), this.calendarReplacer(\"FEB\"), this.calendarReplacer(\"MAR\"),\r\n this.calendarReplacer(\"APR\"), this.calendarReplacer(\"MAY\"), this.calendarReplacer(\"JUN\"),\r\n this.calendarReplacer(\"JUL\"), this.calendarReplacer(\"AUG\"), this.calendarReplacer(\"SEP\"),\r\n this.calendarReplacer(\"OCT\"), this.calendarReplacer(\"NOV\"), this.calendarReplacer(\"DEC\")\r\n ],\r\n today: this.calendarReplacer('TODAY'),\r\n clear: this.calendarReplacer('CLEAR')\r\n }\r\n }\r\n\r\n\r\n\r\n typesReplacer(labelKey): string {\r\n return this.selectedGlobalLanguageJson[labelKey]?.trim() ? this.selectedGlobalLanguageJson[labelKey] ?? 'text not found' : this.defaultGlobalEnglishJson[labelKey] ?? 'text not found';\r\n }\r\n \r\n initializeEngagementData() {\r\n\r\n return new Promise((resolve, reject) => {\r\n if (sessionStorage.getItem('appLanguageList')) {\r\n this.appLangList = JSON.parse(sessionStorage.getItem('appLanguageList'));\r\n }\r\n else {\r\n this.getLanguageList();\r\n }\r\n\r\n if (sessionStorage.getItem('engagementDetail')) {\r\n this.engagementDetail = JSON.parse(sessionStorage.getItem('engagementDetail'));\r\n const minYear =\r\n Number(new Date().getUTCFullYear() - 10) <\r\n Number(new Date(this.engagementDetail?.engInitialDate).getUTCFullYear()) ?\r\n Number(new Date().getUTCFullYear() - 10) :\r\n Number(new Date(this.engagementDetail?.engInitialDate).getUTCFullYear());\r\n\r\n this.calendarYearRange = minYear + ':' + (new Date().getUTCFullYear() + 1);\r\n }\r\n resolve(1);\r\n });\r\n }\r\n\r\n\r\n buildForm() {\r\n\r\n this.documentForm = this.formBuilder.group({\r\n docTitle: ['', Validators.required],\r\n docDescription: ['',Validators.required],\r\n docType: ['', Validators.required],\r\n docCategory: ['',],\r\n docDate: ['', Validators.required],\r\n authorizer: [''],\r\n docIcon: ['']\r\n });\r\n\r\n }\r\n\r\n configureTinyMce() {\r\n const that = this;\r\n this.tinyMceConfig = {\r\n branding: false,\r\n toolbar_mode: 'sliding',\r\n toolbar_sticky: false,\r\n inline: false,\r\n statusbar: false,\r\n theme: \"silver\",\r\n resize: false,\r\n skin: \"oxide\",\r\n skin_url: 'assets/skins/ui/oxide',\r\n base_url: '/tinymce', \r\n suffix: '.min' ,\r\n plugins: [\r\n \"print preview importcss autoresize contextmenu searchreplace autolink autosave save directionality visualblocks visualchars fullscreen image link media template codesample table charmap hr pagebreak nonbreaking anchor insertdatetime advlist lists wordcount textpattern noneditable help code charmap emoticons paste \"],\r\n menubar: 'edit insert view format table tools help',\r\n force_br_newlines: false,\r\n \r\n allow_script_urls: true,\r\n relative_urls : false,\r\n remove_script_host : false,\r\n entity_encoding : \"raw\",\r\n \r\n // content_css: [\r\n // '//fonts.googleapis.com/css?family=EYFontRegular',\r\n // ],\r\n paste_as_text: true,\r\n paste_text_sticky: true,\r\n font_formats: 'EYFontRegular=EYFontRegular;',\r\n theme_advanced_fonts: \"EYFontRegular=EYFontRegular\",\r\n extended_valid_elements: \"@[id|class|title|style|onmouseover|onclick],\" +\r\n \"a[name|href|target|title|alt],\" +\r\n \"#div,blockquote,-ol,-ul,-li,br,img[src|height|width],-sub,-sup,-b,-i,-u,\" +\r\n \"-span[data-mce-type],hr,\",\r\n toolbar: 'document topicCard | bold italic backcolor | ' +\r\n 'bullist numlist outdent indent | alignright alignjustify |' +\r\n ' alignleft aligncenter | removeformat |' +\r\n ' help ',\r\n setup: function (editor) {\r\n\r\n const topictest = that.secondaryTopicCards.map(f => {\r\n return {\r\n type: 'menuitem',\r\n text: f.label,\r\n onAction: function () {\r\n editor.insertContent(\"\" + f.label + \"\"); // editor.dom.add(editor.getBody(), 'div', {class: 'row'}, this.getColMd12(f));\r\n //editor.setContent('

'+f.label+'

');\r\n }\r\n };\r\n });\r\n\r\n\r\n editor.ui.registry.addMenuButton('document', {\r\n text: 'Document',\r\n fetch: function (callback) { \r\n callback(that.preProcessTree(editor,that.environments,that.languageName));\r\n }\r\n });\r\n\r\n\r\n\r\n editor.ui.registry.addMenuButton('topicCard', {\r\n text: 'Topic Cards',\r\n fetch: function (callback) {\r\n callback(topictest);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n\r\n\r\n \r\n\r\n\r\n\r\n //get inner element 'col-md-6'\r\n getColMd6(values) {\r\n var html = \"\";\r\n html += '

' + values.label + '

';\r\n return html;\r\n }\r\n\r\n //get inner element 'col-md-12'\r\n // getColMd12(number){\r\n // var html = \"\";\r\n // for(var i = 0; i < number; i++){\r\n // html += '
';\r\n // }\r\n // return html;\r\n // }\r\n\r\n //Last parameter lets you specify extra inner html\r\n\r\n\r\n\r\n\r\n getLogoList() {\r\n this.spinner.show();\r\n this.iconsselected = [];\r\n this.logoIconMgmtService.getLogoIconList().subscribe((response) => {\r\n if (response && response.data?.length > 0) {\r\n\r\n\r\n var iconList = response.data.filter(item => item.imageTypeId === this.imageType.Icon);\r\n if (iconList.length > 0) {\r\n iconList.forEach(item => {\r\n item.url = 'data:image/png;base64,' + item.result;\r\n })\r\n }\r\n }\r\n\r\n iconList.forEach(item => {\r\n this.iconsselected.push(\r\n {\r\n 'label': item.imageLink,\r\n 'value': item.logoIconImageDataId,\r\n 'icon': item.url\r\n }\r\n )\r\n });\r\n this.icons = iconList\r\n this.spinner.hide();\r\n });\r\n }\r\n\r\n linkDoc(event) {\r\n this.docuDescription = this.docuDescription + '

' + event.value.documentTitle + '

';\r\n }\r\n\r\n linkTopic(event) {\r\n this.docuDescription = this.docuDescription + '

' + event.value.tctitle + '

';\r\n }\r\n\r\n getTopicCardType() {\r\n this.manageTopicCardService.getTopicCardType().subscribe(res => {\r\n if (res) {\r\n //success\r\n this.docTypeList = res.data;\r\n this.docTypeList.forEach(item=>{\r\n item.topicCardTypeDescription=this.typesReplacer(item.topicCardTypeDescription);\r\n })\r\n } else {\r\n //display error\r\n }\r\n\r\n });\r\n }\r\n\r\n getEngagementDoc() {\r\n return new Promise((resolve, reject) => {\r\n this.manageDocService.getEngagementDocument(this.engagementDetail).subscribe(res => {\r\n if (res) {\r\n //success\r\n if (res.data && res.data.length > 0 && this.engagementDocList.length == 0) {\r\n res.data.forEach(item => {\r\n item.documentVersionList.forEach(element => {\r\n if (element.languageId == this.selctedDocLanguageId&& element.currentAuthorized==true) {\r\n this.engagementDocList.push({ 'label': element.documentTitle, 'value': element.docId });\r\n }\r\n });\r\n });\r\n }\r\n else {\r\n this.engagementDocList = [];\r\n }\r\n } else {\r\n //display error\r\n }\r\n resolve(1);\r\n });\r\n });\r\n }\r\n\r\n\r\n getEngagementTopicCard() {\r\n return new Promise((resolve, reject) => {\r\n this.manageTopicCardService.getEngagementTopicCard(this.engagementDetail).subscribe(res => {\r\n if (res) {\r\n this.secondaryTopicCards = [];\r\n //success\r\n var topicCards = res.data;\r\n topicCards.forEach(item => {\r\n if (item.topicCardTypeId == 1) {\r\n if (item.topicCardCategoryId == 2) {\r\n item.topicCardVersionList.forEach(element => {\r\n if (element.languageId == this.selctedDocLanguageId && element.currentAuthorized==true) {\r\n this.secondaryTopicCards.push({ 'label': element.tctitle, 'value': element.topicCardId });\r\n }\r\n });\r\n\r\n }\r\n }\r\n });\r\n \r\n \r\n } else {\r\n //display error\r\n }\r\n resolve(1);\r\n });\r\n });\r\n }\r\n\r\n getTopicCardCategory() {\r\n this.manageTopicCardService.getTopicCardCategory().subscribe(res => {\r\n if (res) {\r\n //success\r\n this.docCategoryList = res.data;\r\n this.docCategoryList.forEach(item=>{\r\n item.topicCardCategoryDescription=this.typesReplacer(item.topicCardCategoryDescription);\r\n })\r\n } else {\r\n //display error\r\n }\r\n\r\n });\r\n }\r\n\r\n\r\n getLanguageList() {\r\n return new Promise((resolve, reject) => {\r\n this.labelCardService.getLanguageList().subscribe(res => {\r\n if (res) {\r\n //success\r\n // this.appLangList = res;\r\n res.forEach(element => {\r\n if (element.isAppLanguage) {\r\n this.appLangList.push({\r\n languageId: element.languageId,\r\n languageName: element.name,\r\n languageFlagPath: element.languagePath\r\n });\r\n }\r\n\r\n });\r\n } else {\r\n //display error\r\n }\r\n resolve(1);\r\n });\r\n });\r\n }\r\n\r\n setDocDateValidators() {\r\n const docDateControl = this.documentForm.get('docDate');\r\n\r\n this.documentForm.get('docType').valueChanges\r\n .subscribe(docTypeValue => {\r\n\r\n if (docTypeValue) {\r\n if (docTypeValue.documentTypeId === 1) {\r\n docDateControl.setValidators([Validators.required]);\r\n this.showDateMandatory = true;\r\n }\r\n else if (docTypeValue.documentTypeId === 2) {\r\n docDateControl.setValidators(null);\r\n this.showDateMandatory = false;\r\n }\r\n\r\n this.docDateDesc = docTypeValue.descriptionOfDate;\r\n if (docTypeValue.preferredNamingConvention && docTypeValue.preferredNamingConvention != '')\r\n this.docInfo += ' ,File Naming Convention: ' + docTypeValue.preferredNamingConvention;\r\n\r\n }\r\n\r\n\r\n docDateControl.updateValueAndValidity();\r\n\r\n });\r\n\r\n }\r\n\r\n saveDocument() {\r\n return new Promise((resolve, reject) => {\r\n\r\n this.spinner.show();\r\n this.formSubmitted = true;\r\n\r\n // stop here if form is invalid\r\n if (this.documentForm.invalid) {\r\n this.spinner.hide();\r\n return;\r\n }\r\n else {\r\n if (this.documentForm.value[\"docCategory\"] == \"\") {\r\n this.documentForm.value[\"docCategory\"] = { \"topicCardCategoryId\": null }\r\n }\r\n let documentData = {\r\n ...this.documentForm.value,\r\n 'engagementId': this.engagementDetail.engagementId,\r\n 'languageId': this.selctedDocLanguageId,\r\n 'topicCardId': 0,\r\n 'topicCardVersionId': 0,\r\n 'statusId': 1,\r\n 'documentDate': (this.documentForm.controls['docDate']?.value == null || \r\n this.documentForm.controls['docDate']?.value == undefined || \r\n this.documentForm.controls['docDate']?.value == '') ? null : new Date(this.documentForm.controls['docDate'].value).toDateString(),\r\n\r\n }\r\n\r\n const formData = new FormData();\r\n\r\n formData.append('fileJson', JSON.stringify(documentData));\r\n\r\n this.manageTopicCardService.uploadNewTopicCard(formData).subscribe(res => {\r\n if (res.status === 0) {\r\n //success\r\n this.resetForm();\r\n if (res.data) {\r\n this.emitDocument.emit(res?.data);\r\n }\r\n resolve(1);\r\n\r\n } else {\r\n //display error\r\n this.resetForm();\r\n reject();\r\n }\r\n this.spinner.hide();\r\n\r\n });\r\n\r\n }\r\n })\r\n .catch(error => {\r\n console.log(error);\r\n this.spinner.hide();\r\n })\r\n\r\n }\r\n\r\n onUpload(event) {\r\n for (let file of event.files) {\r\n this.pUpload = file;\r\n }\r\n }\r\n\r\n resetForm() {\r\n this.formSubmitted = false;\r\n this.documentForm.controls['docTitle'].setValue('');\r\n this.documentForm.controls['docDescription'].setValue('');\r\n this.documentForm.controls['docType'].setValue('');\r\n this.documentForm.controls['docCategory'].setValue('');\r\n this.documentForm.controls['docDate'].setValue('');\r\n this.documentForm.controls['authorizer'].setValue('');\r\n this.documentForm.controls['docIcon'].setValue('');\r\n this.selectedTopic = \"\";\r\n this.selectedDoc = \"\";\r\n this.pUpload = null;\r\n this.docInfo = '';\r\n this.docDateDesc = 'Document Date';\r\n }\r\n\r\n onFileRemove(event) {\r\n this.pUpload = null;\r\n }\r\n\r\n\r\n}\r\n\r\nexport class TopicCardTypes {\r\n topicCardTypeId: number;\r\n topicCardTypeDescription: string;\r\n CreatedBy: string;\r\n CreatedDate: Date;\r\n ModifiedBy: string;\r\n ModifiedDate: any;\r\n constructor(topicCardCategoryId: number, topicCardCategoryDescription: string, createdBy: string, createdDate: Date, modifiedBy: any, modifiedDate: any) {\r\n this.topicCardTypeId = topicCardCategoryId;\r\n this.topicCardTypeDescription = topicCardCategoryDescription;\r\n this.CreatedBy = createdBy;\r\n this.CreatedDate = createdDate;\r\n this.ModifiedBy = modifiedBy;\r\n this.ModifiedDate = modifiedDate;\r\n }\r\n}\r\n","\r\nimport { Component, OnInit, EventEmitter, Output, AfterViewInit } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators, ValidatorFn, AbstractControl, AsyncValidatorFn, FormArray } from '@angular/forms';\r\nimport { Observable, of } from 'rxjs';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { EditEngagementMemoryServiceService } from '../../edit-engagement-memory-service/edit-engagement-memory-service.service';\r\nimport { EngagementManagementService } from '../../../../framework/services/engagement-mgmt.service';\r\nimport { max } from 'rxjs-compat/operator/max';\r\nimport { url } from 'inspector';\r\nimport { CommonService } from 'src/framework/services/common.service';\r\nimport { ɵINTERNAL_BROWSER_DYNAMIC_PLATFORM_PROVIDERS } from '@angular/platform-browser-dynamic';\r\nimport { element } from 'protractor';\r\n//import { THIS_EXPR } from '@angular/compiler/src/output/output_ast';\r\nimport { SelectItem, SelectItemGroup, MessageService } from 'primeng/api';\r\nimport { DocumentManagementService } from 'src/framework/services/manage-doc.service';\r\nimport { stat } from 'fs';\r\nimport { LanguageService } from 'src/framework/services/language.service';\r\nimport { CategoryConstant } from 'src/app/shared/app-constants/category-constants';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'app-basic-details-edit',\r\n templateUrl: './basic-details-edit.component.html',\r\n styleUrls: ['./basic-details-edit.component.css']\r\n})\r\nexport class BasicDetailsEditComponent implements OnInit{\r\n basicDetailsEdit = false;\r\n languageBasedRoles = [];\r\n jurisdictionOption = [];\r\n engagementDynamicDetails: DynamicDetailsModel[];\r\n detailsLanguageMapping = [];\r\n value: Date;\r\n maxDateValue: Date = new Date();\r\n engagementDetailsForms: EngagementDetailsForm;\r\n basicDetailsForm: FormGroup;\r\n urlDomain: string = \"https://ey.com/ca/\";\r\n isEnglishSelected = false;\r\n @Output() showNextControl = new EventEmitter()\r\n @Output() showPreviousControl = new EventEmitter();\r\n shortUrl: { url, isSaved }[] = new Array<{ url, isSaved }>();\r\n clonedShortUrls: { url, isSaved }[] = new Array<{ url, isSaved }>();\r\n clonedEngagementDetailsForm: EngagementDetailsForm;\r\n clonedFormDetails: FormGroup;\r\n clonedLanguageBasedDetails: DynamicDetailsModel;\r\n editLanguageName: string = \"\";\r\n selectedLangStatusJson: any;\r\n defaultEngStatusJson: any;\r\n selectedLangLabelJson: any;\r\n defaultEngLangLabelJson: any;\r\n showLanguageBasedDetails = false;\r\n clonedLanguageBasedDetailsForm: FormGroup;\r\n isConfidentialReadonly = true;\r\n yearRange: string;\r\n users: any[] = [];\r\n status: any[] = [];\r\n engagementStatus: string = \"\";\r\n engagementDetailsHistoryId: number = 0;\r\n showAddEnagementBasedDetails: boolean = false;\r\n addEnagementDetailsForm: FormGroup;\r\n addEnagementDetailsModel: DynamicDetailsModel;\r\n addDeltailsSelectedLanguage: any = {};\r\n languageDropDown: any[] = [];\r\n selectedLanguageId: number;\r\n defaultEnglishJson: any;\r\n selectedLangDateJson: any;\r\n defaultEngDateJson: any;\r\n localeSetting: any;\r\n islabelLoaded: boolean = false;\r\n selectedAppLanguageJson: any;\r\n tinyMceConfig: any;\r\n showEditor=false;\r\n rawApproverList: any[] = [];\r\n approver: any;\r\n authorizerList: SelectItemGroup[] = [\r\n { label: 'Owners', items: [] },\r\n { label: 'Reviewers', items: [] },\r\n { label: 'PPAP', items: [] },\r\n { label: 'Sr. Managers', items: [] },\r\n { label: 'Admin', items: [] }\r\n ];\r\n isSameApproverSelected: boolean = false;\r\n\r\n loggedInUserModel: any = {};\r\n showLog = false;\r\n engagementDetailsLog = [];\r\n\r\n constructor(private engagementMemoryService: EditEngagementMemoryServiceService,\r\n private engagementManagementService: EngagementManagementService,\r\n private fb: FormBuilder,\r\n private spinner: NgxSpinnerService,\r\n private languageService: LanguageService,\r\n private commonService: CommonService, private manageDocService: DocumentManagementService,\r\n private messageService: MessageService) {\r\n this.yearRange = (new Date().getFullYear()) - 20 + ':' + (new Date().getFullYear());\r\n let selectedLanguages = this.engagementMemoryService.getSelectedLanguages();\r\n this.languageBasedRoles = this.engagementMemoryService.getLanguageBasedRoles();\r\n this.jurisdictionOption = this.engagementMemoryService.getJurisdictionOption();\r\n this.engagementDetailsForms = new EngagementDetailsForm(new Date(), false, '', false, '', '');\r\n this.clonedEngagementDetailsForm = new EngagementDetailsForm(new Date(), false, '', false, '', '');\r\n this.addEnagementDetailsModel = new DynamicDetailsModel(\"\", \"\", \"\", \"\", 0, 0, false, false, 0, \"\", false)\r\n this.getApproverList(this.engagementMemoryService.getEngagementId())\r\n this.engagementDynamicDetails = new Array();\r\n let engagementLanguageDetailsForm = [];\r\n\r\n this.clonedLanguageBasedDetails = new DynamicDetailsModel(\"\", \"\", \"\", \"\", 0, 0, false, false, 0, \"\", false);\r\n if (selectedLanguages.length > 0) {\r\n for (let i = 0; i < selectedLanguages.length; i++) {\r\n let dynamicModel = new DynamicDetailsModel(\"\", \"\", selectedLanguages[i].name, '', selectedLanguages[i].languageId, 0, false, false, 1, \"Draft\", false);\r\n this.engagementDynamicDetails.push(dynamicModel);\r\n engagementLanguageDetailsForm.push(this.getEngagementDetailsFormGroup(this.engagementDynamicDetails[i]));\r\n if (selectedLanguages[i].name == \"English\")\r\n this.isEnglishSelected = true;\r\n }\r\n if (sessionStorage.getItem('engagementData')) {\r\n let sessionEngObj = JSON.parse(sessionStorage.getItem('engagementData'));\r\n if (sessionEngObj['statusId'] == 2) {\r\n this.isConfidentialReadonly = false;\r\n }\r\n }\r\n }\r\n\r\n this.basicDetailsForm = this.fb.group({\r\n initialDateControl: [this.engagementDetailsForms.IntialDate],\r\n isConfidentialControl: [false],\r\n isFormalControl: [false],\r\n pastDateControl: [this.engagementDetailsForms.PastDate],\r\n eyRole: [this.engagementDetailsForms.EYRole],\r\n jurisdiction: [this.engagementDetailsForms.Jurisdiction],\r\n engagementLanguageBasedDetails: this.fb.array(engagementLanguageDetailsForm)\r\n });\r\n\r\n this.clonedFormDetails = this.fb.group({\r\n clonedInitialCtrl: [this.clonedEngagementDetailsForm.IntialDate,],\r\n clonedPastCtrl: [this.clonedEngagementDetailsForm.PastDate],\r\n clonedShortUrlGroup: this.fb.array([]),\r\n clonedIsFormalCtrl: [this.clonedEngagementDetailsForm.IsFormal],\r\n clonedIsConfidentialCtrl: [this.clonedEngagementDetailsForm.IsConfidential],\r\n clonedEyRole: [this.clonedEngagementDetailsForm.EYRole, [this.engagementRoleValidation()]],\r\n clonedJurisdiction: [this.clonedEngagementDetailsForm.Jurisdiction, [this.jurisdictionValidation()]],\r\n });\r\n\r\n this.clonedLanguageBasedDetailsForm = this.fb.group({\r\n 'clonedEngagementName': [this.clonedLanguageBasedDetails.engagementName, [Validators.required]],\r\n 'clonedEngagementDescription': [this.clonedLanguageBasedDetails.descritpion]\r\n })\r\n\r\n this.getUnselectedLanguages();\r\n\r\n this.addEnagementDetailsForm = this.fb.group({\r\n 'addLanguageCtrl': [this.addDeltailsSelectedLanguage, [this.addLanguageValidator()]],\r\n 'addEngagementName': [this.addEnagementDetailsModel.engagementName, [Validators.required], [this.engagementNameDuplicateValidator()]],\r\n 'addEngagementDescription': [this.addEnagementDetailsModel.descritpion]\r\n })\r\n\r\n if (sessionStorage.getItem('engagementData')) {\r\n let sessionEngObj = JSON.parse(sessionStorage.getItem('engagementData'));\r\n this.engagementStatus = sessionEngObj['statusName'];\r\n }\r\n\r\n if (localStorage.getItem(\"userModel\")) {\r\n this.loggedInUserModel = JSON.parse(localStorage.getItem(\"userModel\"));\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.spinner.show();\r\n this.configureTinyMce();\r\n this.loadLanguageLabel();\r\n this.commonService.getStatus().subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n\r\n } else {\r\n if (response.data && response.data.length > 0) {\r\n this.status = response.data;\r\n this.loadEngagement();\r\n }\r\n }\r\n })\r\n }\r\n // ngAfterViewInit() {\r\n\r\n // }\r\n\r\n \r\n configureTinyMce() {\r\n const that = this;\r\n this.tinyMceConfig = {\r\n branding: false,\r\n toolbar_mode: 'sliding',\r\n toolbar_sticky: false,\r\n inline: false,\r\n statusbar: false,\r\n theme: \"silver\",\r\n resize: false,\r\n skin: \"oxide\",\r\n skin_url: 'assets/skins/ui/oxide',\r\n base_url: '/tinymce', \r\n suffix: '.min',\r\n plugins: [\r\n \"print preview importcss autoresize searchreplace autolink autosave save directionality visualblocks visualchars fullscreen image link media template codesample table charmap hr pagebreak nonbreaking anchor toc insertdatetime advlist lists wordcount imagetools textpattern noneditable help code charmap emoticons paste table\"],\r\n menubar: 'edit insert view format table tools help',\r\n force_br_newlines: false,\r\n //force_p_newlines: false,\r\n //forced_root_block: '',\r\n // content_css: [\r\n // '//fonts.googleapis.com/css?family=EYFontRegular',\r\n // ],\r\n paste_as_text: true,\r\n paste_text_sticky: true,\r\n font_formats: 'EYFontRegular=EYFontRegular;',\r\n theme_advanced_fonts: \"EYFontRegular=EYFontRegular\",\r\n extended_valid_elements: \"@[id|class|title|style|onmouseover|onclick],\" +\r\n \"a[name|href=javascript:void(0);|target|title|alt],\" +\r\n \"#div,blockquote,-ol,-ul,-li,br,img[src|height|width],-sub,-sup,-b,-i,-u,\" +\r\n \"-span[data-mce-type],hr,\",\r\n toolbar: 'bold italic backcolor | ' +\r\n 'bullist numlist outdent indent | alignright alignjustify |' +\r\n ' alignleft aligncenter | removeformat |' +\r\n ' help '\r\n };\r\n }\r\n\r\n loadLanguageLabel() {\r\n let englishLanguageMappings, selectedLanguageMappings: any;\r\n let englishStatusMappings, selectedLangStatusMappings: any;\r\n let englishLangLabelMappings, selectedLangLabelMappings: any;\r\n let englishDateMappings, selectedLangDateMappings: any;\r\n\r\n return new Promise((resolve, reject) => {\r\n if (sessionStorage.getItem('selectedLanguageId')) {\r\n this.selectedLanguageId = 1;//JSON.parse(sessionStorage.getItem('selectedLanguageId'));\r\n }\r\n\r\n this.languageService.currentData.subscribe(data => {\r\n this.selectedLanguageId = data.Id\r\n });\r\n\r\n\r\n this.languageService.mySubject.subscribe((data) => {\r\n var languageMappings = data;\r\n if (languageMappings?.length > 0) {\r\n\r\n englishLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.EditEngagement.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishStatusMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Status.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n if (englishLanguageMappings?.isGlobal) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.EditEngagement.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangStatusMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Status.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n }\r\n else {\r\n if (Number(this.selectedLanguageId) === 2) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.EditEngagement.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangStatusMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Status.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n }\r\n else {\r\n selectedLanguageMappings = englishLanguageMappings;\r\n selectedLangStatusMappings = englishStatusMappings;\r\n selectedLangLabelMappings = englishLangLabelMappings;\r\n selectedLangDateMappings = englishDateMappings;\r\n\r\n }\r\n }\r\n this.selectedAppLanguageJson = JSON.parse(selectedLanguageMappings.languageMappingJSON);\r\n\r\n this.defaultEnglishJson = JSON.parse(englishLanguageMappings.languageMappingJSON);\r\n\r\n\r\n this.selectedLangLabelJson = JSON.parse(selectedLangLabelMappings?.languageMappingJSON ?? englishLangLabelMappings.languageMappingJSON);\r\n this.defaultEngLangLabelJson = JSON.parse(englishLangLabelMappings.languageMappingJSON);\r\n\r\n this.selectedLangStatusJson = JSON.parse(selectedLangStatusMappings?.languageMappingJSON ?? englishStatusMappings.languageMappingJSON);\r\n this.defaultEngStatusJson = JSON.parse(englishStatusMappings.languageMappingJSON);\r\n\r\n this.selectedLangDateJson = JSON.parse(selectedLangDateMappings?.languageMappingJSON ?? englishDateMappings.languageMappingJSON);\r\n this.defaultEngDateJson = JSON.parse(englishDateMappings.languageMappingJSON);\r\n\r\n this.setCalendarLocale();\r\n\r\n this.languageDropDown.forEach(item => {\r\n item.name = this.languageReplacer(item.name);\r\n });\r\n this.islabelLoaded = true;\r\n resolve(1);\r\n }\r\n else {\r\n\r\n }\r\n });\r\n })\r\n .catch(err => {\r\n\r\n\r\n console.log(err);\r\n });\r\n }\r\n\r\n labelReplacer(labelKey): string {\r\n return this.selectedAppLanguageJson[labelKey]?.trim() ? this.selectedAppLanguageJson[labelKey] ?? 'text not found' : this.defaultEnglishJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n\r\n languageReplacer(labelKey): string {\r\n return this.selectedLangLabelJson[labelKey]?.trim() ? this.selectedLangLabelJson[labelKey] ?? 'text not found' : this.defaultEngLangLabelJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n\r\n statusReplacer(labelKey): string {\r\n return this.selectedLangStatusJson[labelKey]?.trim() ? this.selectedLangStatusJson[labelKey] ?? 'text not found' : this.defaultEngStatusJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n calendarReplacer(labelKey): string {\r\n return this.selectedLangDateJson[labelKey]?.trim() ? this.selectedLangDateJson[labelKey] ?? 'text not found' : this.defaultEngDateJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n dayOrMonthNameShort(name, length): string {\r\n let shortName = '';\r\n if (name?.trim()?.length == 0)\r\n shortName = 'Text not found';\r\n else if (name?.trim()?.length > 0 && name?.trim()?.length < length)\r\n shortName = name;\r\n else\r\n shortName = name.substr(0, length);\r\n return shortName;\r\n }\r\n\r\n setCalendarLocale() {\r\n this.localeSetting = {\r\n firstDayOfWeek: 0,\r\n dayNames: [\r\n this.calendarReplacer(\"SUN\"),\r\n this.calendarReplacer(\"MON\"), this.calendarReplacer(\"TUE\"), this.calendarReplacer(\"WED\"),\r\n this.calendarReplacer(\"THU\"), this.calendarReplacer(\"FRI\"), this.calendarReplacer(\"SAT\")\r\n ],\r\n dayNamesShort: [\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"SUN\"), 3),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"MON\"), 3), this.dayOrMonthNameShort(this.calendarReplacer(\"TUE\"), 3),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"WED\"), 3), this.dayOrMonthNameShort(this.calendarReplacer(\"THU\"), 3),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"FRI\"), 3), this.dayOrMonthNameShort(this.calendarReplacer(\"SAT\"), 3)\r\n ],\r\n dayNamesMin: [\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"SUN\"), 1),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"MON\"), 1), this.dayOrMonthNameShort(this.calendarReplacer(\"TUE\"), 1),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"WED\"), 1), this.dayOrMonthNameShort(this.calendarReplacer(\"THU\"), 1),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"FRI\"), 1), this.dayOrMonthNameShort(this.calendarReplacer(\"SAT\"), 1)\r\n ],\r\n monthNames: [\r\n this.calendarReplacer(\"JAN\"), this.calendarReplacer(\"FEB\"), this.calendarReplacer(\"MAR\"),\r\n this.calendarReplacer(\"APR\"), this.calendarReplacer(\"MAY\"), this.calendarReplacer(\"JUN\"),\r\n this.calendarReplacer(\"JUL\"), this.calendarReplacer(\"AUG\"), this.calendarReplacer(\"SEP\"),\r\n this.calendarReplacer(\"OCT\"), this.calendarReplacer(\"NOV\"), this.calendarReplacer(\"DEC\")\r\n ],\r\n monthNamesShort: [\r\n this.calendarReplacer(\"JAN\"), this.calendarReplacer(\"FEB\"), this.calendarReplacer(\"MAR\"),\r\n this.calendarReplacer(\"APR\"), this.calendarReplacer(\"MAY\"), this.calendarReplacer(\"JUN\"),\r\n this.calendarReplacer(\"JUL\"), this.calendarReplacer(\"AUG\"), this.calendarReplacer(\"SEP\"),\r\n this.calendarReplacer(\"OCT\"), this.calendarReplacer(\"NOV\"), this.calendarReplacer(\"DEC\")\r\n ],\r\n today: this.calendarReplacer('TODAY'),\r\n clear: this.calendarReplacer('CLEAR')\r\n }\r\n }\r\n\r\n\r\n loadEngagement() {\r\n this.spinner.show();\r\n this.engagementManagementService.getEngagementBasicDetails(this.engagementMemoryService.getEngagementId()).subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n\r\n } else {\r\n this.engagementDetailsForms.IntialDate = response.data.intialDate ? new Date(response.data.intialDate) : undefined;\r\n let shortUrls = response.data.shortUrl.split('^');\r\n for (let i = 0; i < shortUrls.length; i++) {\r\n this.shortUrl.push({ url: shortUrls[i].substring(18), isSaved: true })\r\n }\r\n this.engagementDetailsForms.IsConfidential = response.data.isConfidential;\r\n this.engagementDetailsForms.IsFormal = response.data.isFormal;\r\n this.engagementDetailsForms.PastDate = response.data.pastDate ? new Date(response.data.pastDate) : undefined;\r\n this.engagementDetailsForms.EYRole = this.languageBasedRoles.find(t => t.roleLanguageMappingId == response.data.engagementRoleLanguageMappingId);\r\n this.engagementDetailsForms.Jurisdiction = this.jurisdictionOption.find(t => t.jurisdictionLanguageMappingId == response.data.jurisdictionLanguageMappingId)\r\n if (response.data.engagementDetails && response.data.engagementDetails.length > 0) {\r\n response.data.engagementDetails.forEach(element => {\r\n let dynamicModel = this.engagementDynamicDetails.find(t => t.languageId == element.languageId)\r\n if (dynamicModel) {\r\n dynamicModel.engagementDetailsId = element.engagementDetailsId;\r\n dynamicModel.engagementName = element.engagementName;\r\n dynamicModel.descritpion = element.engagementDescription\r\n dynamicModel.isEditEnabled = true;\r\n dynamicModel.statusId = element.statusId\r\n dynamicModel.status = this.status.find(t => t.statusId == element.statusId)?.name;\r\n dynamicModel.isDraftExists = element.isStatusExist\r\n }\r\n });\r\n\r\n }\r\n }\r\n this.spinner.hide();\r\n })\r\n }\r\n\r\n getEngagementDetailsFormGroup(model: DynamicDetailsModel): FormGroup {\r\n return this.fb.group({\r\n engagementName: [model.engagementName, [Validators.required], [this.engagementNameDuplicateValidator()]],\r\n engagementDescription: [model.descritpion]\r\n });\r\n }\r\n\r\n getShortUrlFormGroup(): FormGroup {\r\n return this.fb.group({\r\n clonedshortURLControl: ['', [Validators.required, Validators.maxLength(25), this.validateShortURl()], [this.shortUrlDuplicateValidator()]],\r\n })\r\n }\r\n\r\n engagementRoleValidation(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n if (control.touched && control.value && control.value?.engagementRoleId > 0) {\r\n return null;\r\n } else if (!control.touched && control.value && control.value?.engagementRoleId > 0) {\r\n return null;\r\n }\r\n return { 'roleRequired': 'Language is required' };\r\n }\r\n }\r\n\r\n validateShortURl(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n const url = this.urlDomain.trim() + control.value;\r\n const URL_REGEXP = /^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/gm\r\n if (control.valid && !url.match(URL_REGEXP)) {\r\n return { 'invalidUrl': 'invalid url' }\r\n }\r\n return null;\r\n }\r\n }\r\n shortUrlDuplicateValidator(): AsyncValidatorFn {\r\n return (control: AbstractControl): Observable<{ [key: string]: any | null }> => {\r\n if (control.dirty && control.value.length > 0) {\r\n return this.engagementManagementService.findShortUrl(this.urlDomain + control.value);\r\n }\r\n return of(null);\r\n }\r\n }\r\n\r\n addShortUrlControl() {\r\n this.clonedShortUrls.push({ url: '', isSaved: false });\r\n (this.clonedFormDetails.get('clonedShortUrlGroup')).push(this.getShortUrlFormGroup());\r\n }\r\n\r\n removeShortUrl(event, i) {\r\n let control = (this.clonedFormDetails.get('clonedShortUrlGroup'))\r\n control.removeAt(i);\r\n this.clonedShortUrls.splice(i, 1);\r\n }\r\n\r\n cloneEngagementDetails() {\r\n this.resetShortUrl();\r\n this.clonedEngagementDetailsForm = {\r\n ...this.engagementDetailsForms,\r\n IntialDate: this.engagementDetailsForms.IntialDate ? this.engagementDetailsForms.IntialDate : new Date()\r\n };\r\n for (let i = 0; i < this.shortUrl.length; i++) {\r\n if (i == 0 && this.shortUrl[i].url == '')\r\n break;\r\n let control = this.getShortUrlFormGroup();\r\n control.get('clonedshortURLControl').setValue(this.shortUrl[i].url);\r\n control.disable({ onlySelf: true });\r\n this.clonedShortUrls.push({ ...this.shortUrl[i] });\r\n (this.clonedFormDetails.get('clonedShortUrlGroup')).push(control);\r\n }\r\n this.basicDetailsEdit = true;\r\n }\r\n\r\n resetShortUrl() {\r\n this.clonedShortUrls = new Array<{ url, isSaved }>();\r\n (this.clonedFormDetails.get('clonedShortUrlGroup')).clear();\r\n }\r\n\r\n editLanguageBasedDetails(event, index) {\r\n this.spinner.show();\r\n this.approver = '';\r\n this.engagementDetailsHistoryId = 0;\r\n let engagementDynamicDetails = { ... this.engagementDynamicDetails[index] };\r\n this.engagementManagementService.getSaveEngagementDraft(engagementDynamicDetails.engagementDetailsId).subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n\r\n } else {\r\n this.clonedLanguageBasedDetails = { ... this.engagementDynamicDetails[index] };\r\n if (response.data) {\r\n this.engagementDetailsHistoryId = response.data.engagementDetailsHistoryId;\r\n this.clonedLanguageBasedDetails.engagementDetailsId = response.data.engagementDetailsId;\r\n this.clonedLanguageBasedDetails.engagementName = response.data.engagementName;\r\n this.clonedLanguageBasedDetails.descritpion = response.data.engagementDescription;\r\n this.approver = response.data.authorizedBy ? response.data.authorizedBy : ''\r\n this.clonedLanguageBasedDetails.status = \"Draft\";\r\n this.cloneEngagementDetails\r\n } else {\r\n this.engagementDetailsHistoryId = 0\r\n }\r\n this.showLanguageBasedDetails = true;\r\n }\r\n this.spinner.hide();\r\n });\r\n }\r\n\r\n jurisdictionValidation(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n if (control.touched && control.value && control.value?.jurisdictionOfFilingId > 0) {\r\n return null;\r\n } else if (!control.touched && control.value && control.value?.jurisdictionOfFilingId > 0) {\r\n return null;\r\n }\r\n return { 'jurisdictionRequired': 'Jurisdiction is required' };\r\n }\r\n }\r\n\r\n engagementNameDuplicateValidator(): AsyncValidatorFn {\r\n return (control: AbstractControl): Observable<{ [key: string]: any | null }> => {\r\n if ((control.dirty) && control?.value.length > 0) {\r\n return this.engagementManagementService.validateEngagementName(control.value, this.engagementMemoryService.getEngagementId());\r\n }\r\n return of(null);\r\n }\r\n }\r\n\r\n updateEngagementBasicInfo() {\r\n if (this.clonedFormDetails.valid) {\r\n this.spinner.show();\r\n let shortUrlString = '';\r\n (this.clonedFormDetails.get('clonedShortUrlGroup')).controls.forEach((ctrl, index) => {\r\n if (ctrl.value.clonedshortURLControl && ctrl.value.clonedshortURLControl != '') {\r\n if (index != 0)\r\n shortUrlString += '^'\r\n shortUrlString += this.urlDomain + ctrl.value.clonedshortURLControl\r\n }\r\n });\r\n let model = {\r\n EngagementId: this.engagementMemoryService.getEngagementId(),\r\n InitialDate: this.clonedEngagementDetailsForm.IntialDate,\r\n PastDate: this.clonedEngagementDetailsForm.PastDate?.toLocaleDateString(),\r\n ShortUrl: shortUrlString,\r\n EYRole: this.clonedEngagementDetailsForm.EYRole,\r\n Jurisdiction: this.clonedEngagementDetailsForm.Jurisdiction,\r\n IsFormal: this.clonedEngagementDetailsForm.IsFormal,\r\n IsConfidential: this.clonedEngagementDetailsForm.IsConfidential\r\n }\r\n this.engagementManagementService.updateEngagementBasicInfo(model).subscribe((response) => {\r\n this.engagementDetailsForms = { ...this.clonedEngagementDetailsForm };\r\n this.shortUrl = [];\r\n (this.clonedFormDetails.get('clonedShortUrlGroup')).controls.forEach((ctrl, index) => {\r\n this.shortUrl.push({ url: ctrl.value.clonedshortURLControl, isSaved: true })\r\n });\r\n this.basicDetailsEdit = false;\r\n this.messageService.add({\r\n key: \"toast_editbasicdetails\",\r\n summary: this.labelReplacer('Engagementbasicinfoupdatesuccessfully'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'success'\r\n });\r\n this.spinner.hide();\r\n })\r\n } else {\r\n this.basicDetailsForm.markAllAsTouched();\r\n }\r\n }\r\n addEngagementDetails(index) {\r\n let detailGroup = (this.basicDetailsForm.get('engagementLanguageBasedDetails')).at(index);\r\n if (detailGroup.valid) {\r\n this.spinner.show();\r\n let dynamicDetailsModel = this.engagementDynamicDetails[index];\r\n const engagementDetailsModel = {\r\n EngagementId: this.engagementMemoryService.getEngagementId(),\r\n EngagementName: dynamicDetailsModel.engagementName,\r\n EngagementDescription: dynamicDetailsModel.descritpion,\r\n LanguageId: dynamicDetailsModel.languageId\r\n };\r\n this.engagementManagementService.addEngagementDetails(engagementDetailsModel).subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n\r\n this.messageService.add({\r\n key: \"toast_editbasicdetails\",\r\n summary: this.labelReplacer('Erroroccuredwhileaddingengagementdetails'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n } else {\r\n this.messageService.add({\r\n key: \"toast_editbasicdetails\",\r\n summary: this.labelReplacer('Engagementdetailsaddedsuccessfully'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'success'\r\n });\r\n dynamicDetailsModel.isEditEnabled = true;\r\n dynamicDetailsModel.isDraftExists = true;\r\n }\r\n this.spinner.hide();\r\n })\r\n\r\n } else\r\n detailGroup.markAllAsTouched();\r\n }\r\n\r\n saveEngagementDetailsHistory(event) {\r\n if (this.clonedLanguageBasedDetailsForm.valid && this.clonedLanguageBasedDetails) {\r\n let engagementDetailsHistoryModel = {\r\n EngagementDetailsHistoryId: this.engagementDetailsHistoryId,\r\n EngagementDetailsId: this.clonedLanguageBasedDetails.engagementDetailsId,\r\n EngagementName: this.clonedLanguageBasedDetails.engagementName,\r\n EngagementDescription: this.clonedLanguageBasedDetails.descritpion,\r\n LanguageId: this.clonedLanguageBasedDetails.languageId\r\n }\r\n this.spinner.show()\r\n this.engagementManagementService.addorupdateEngagementDetails(engagementDetailsHistoryModel).subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n //alert(\"Error occured while updating engagement details\");\r\n this.messageService.add({\r\n key: \"toast_editbasicdetails\",\r\n summary: this.labelReplacer('Erroroccuredwhileupdatingengagementdetails'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n } else {\r\n // alert(\"Engagement details updated successfully\");\r\n this.messageService.add({\r\n key: \"toast_editbasicdetails\",\r\n summary: this.labelReplacer('Engagementdetailsupdatedsuccessfully'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'success'\r\n });\r\n let dynamicDetails = this.engagementDynamicDetails.find(t => t.engagementDetailsId == this.clonedLanguageBasedDetails.engagementDetailsId);\r\n if (dynamicDetails.status == \"Draft\") {\r\n dynamicDetails.descritpion = this.clonedLanguageBasedDetails.descritpion;\r\n dynamicDetails.engagementName = this.clonedLanguageBasedDetails.engagementName;\r\n }\r\n dynamicDetails.isDraftExists = true;\r\n this.engagementDetailsHistoryId = response.data;\r\n this.clonedLanguageBasedDetails.status = \"Draft\";\r\n }\r\n this.spinner.hide();\r\n })\r\n } else {\r\n this.clonedLanguageBasedDetailsForm.markAllAsTouched();\r\n }\r\n }\r\n\r\n approveEngagementDetails(event) {\r\n this.spinner.show();\r\n this.engagementManagementService.approveEngagementDetails(this.engagementMemoryService.getEngagementId(), this.clonedLanguageBasedDetails.engagementDetailsId).subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n this.messageService.add({\r\n key: \"toast_editbasicdetails\",\r\n summary: this.labelReplacer('Erroroccuredwhileupdatingengagementstatus'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n } else {\r\n if (response.data) {\r\n\r\n this.messageService.add({\r\n key: \"toast_editbasicdetails\",\r\n summary: this.labelReplacer('Engagementstatusupdatedsuccessfully'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'success'\r\n });\r\n let dynamicDetails = this.engagementDynamicDetails.find(t => t.engagementDetailsId == response.data.engagementDetailsId)\r\n dynamicDetails.descritpion = response.data.engagementDescription;\r\n dynamicDetails.engagementName = response.data.engagementName;\r\n dynamicDetails.status = this.status.find(t => t.statusId == response.data.statusId).name;\r\n dynamicDetails.statusId = response.data.statusId;\r\n dynamicDetails.isDraftExists = false;\r\n this.showLanguageBasedDetails = false;\r\n }\r\n }\r\n this.spinner.hide();\r\n })\r\n }\r\n\r\n getUnselectedLanguages() {\r\n let languageList = this.engagementMemoryService.getLanguages();\r\n let selectedLanguage = this.engagementMemoryService.getSelectedLanguages();\r\n languageList.forEach(element => {\r\n let languageModel = this.engagementMemoryService.getSelectedLanguages().find(t => t.languageId == element.languageId);\r\n if (!languageModel)\r\n\r\n this.languageDropDown.push(element);\r\n })\r\n }\r\n\r\n showAddEngagementDetails(event) {\r\n this.addEnagementDetailsForm.reset();\r\n this.addEnagementDetailsModel = new DynamicDetailsModel(\"\", \"\", \"\", \"\", 0, 0, false, false, 0, \"\", false);\r\n this.addDeltailsSelectedLanguage = \"\";\r\n this.showAddEnagementBasedDetails = true;\r\n }\r\n\r\n addEngagementDetailsHistory(event) {\r\n if (this.addEnagementDetailsForm.valid) {\r\n const engagementDetailsModel = {\r\n EngagementId: this.engagementMemoryService.getEngagementId(),\r\n EngagementName: this.addEnagementDetailsModel.engagementName,\r\n EngagementDescription: this.addEnagementDetailsModel.descritpion,\r\n LanguageId: this.addDeltailsSelectedLanguage.languageId\r\n };\r\n this.spinner.show();\r\n this.engagementManagementService.addEngagementDetails(engagementDetailsModel).subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n //alert(\"Error occured while updating engagement details\");\r\n this.messageService.add({\r\n summary: this.labelReplacer('Erroroccuredwhileupdatingengagementdetails'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n } else {\r\n //alert(\"Engagement details added successfully\");\r\n this.messageService.add({\r\n key: \"toast_editbasicdetails\",\r\n summary: this.labelReplacer('Engagementdetailsaddedsuccessfully'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'success'\r\n });\r\n this.addEnagementDetailsModel.engagementDetailsId = response.data.engagementDetailsId\r\n this.addEnagementDetailsModel.languageId = this.addDeltailsSelectedLanguage.languageId;\r\n this.addEnagementDetailsModel.language = this.addDeltailsSelectedLanguage.name;\r\n this.addEnagementDetailsModel.isEditEnabled = true;\r\n this.addEnagementDetailsModel.statusId = 1;\r\n this.addEnagementDetailsModel.status = \"Draft\"\r\n let dynamicModel: DynamicDetailsModel = { ... this.addEnagementDetailsModel };\r\n dynamicModel.isDraftExists = true;\r\n this.engagementDynamicDetails.push(dynamicModel);\r\n (this.basicDetailsForm.get('engagementLanguageBasedDetails')).push(this.getEngagementDetailsFormGroup(dynamicModel));\r\n this.engagementMemoryService.addSelectedLanguage({ ...this.addDeltailsSelectedLanguage });\r\n this.languageDropDown = [];\r\n this.getUnselectedLanguages();\r\n this.showAddEnagementBasedDetails = false;\r\n }\r\n this.spinner.hide();\r\n })\r\n } else {\r\n this.addEnagementDetailsForm.markAllAsTouched();\r\n }\r\n }\r\n\r\n addLanguageValidator(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n if (control.touched && control.value && control.value?.languageId > 0) {\r\n return null;\r\n } else if (!control.touched && control.value && control.value?.languageId > 0) {\r\n return null;\r\n }\r\n return { 'addLanguageRequired': 'Jurisdiction is required' };\r\n }\r\n }\r\n\r\n getApproverList(engagementId) {\r\n this.manageDocService.getApproverList(engagementId).subscribe(res => {\r\n if (res.status === 0) {\r\n //success\r\n this.rawApproverList = res.data;\r\n this.formatApproverList()\r\n .then(res => { })\r\n .catch(error => console.log(error));\r\n } else {\r\n\r\n }\r\n });\r\n }\r\n formatApproverList() {\r\n return new Promise((resolve, reject) => {\r\n let ownerList, reviewerList, partnerList, srMangerList, adminList: any[] = [];\r\n\r\n this.authorizerList = [];\r\n\r\n this.authorizerList.push({\r\n label: this.labelReplacer('lblOwner'),\r\n items: []\r\n });\r\n this.authorizerList.push({\r\n label: this.labelReplacer('lblReviewer'),\r\n items: []\r\n });\r\n this.authorizerList.push({\r\n label: this.labelReplacer('lblPPAP'),\r\n items: []\r\n });\r\n this.authorizerList.push({\r\n label: this.labelReplacer('lblSrManager'),\r\n items: []\r\n });\r\n this.authorizerList.push({\r\n label: this.labelReplacer('lblAdmin'),\r\n items: []\r\n });\r\n\r\n if (this.rawApproverList.length > 0) {\r\n ownerList = this.rawApproverList[0];\r\n reviewerList = this.rawApproverList[1];\r\n partnerList = this.rawApproverList[2];\r\n srMangerList = this.rawApproverList[3];\r\n adminList = this.rawApproverList[4];\r\n this.setDesignationList(ownerList, 0);\r\n this.setDesignationList(reviewerList, 1);\r\n this.setDesignationList(partnerList, 2);\r\n this.setDesignationList(srMangerList, 3);\r\n this.setDesignationList(adminList, 4);\r\n }\r\n resolve(1);\r\n }).catch(error => {\r\n console.log(error);\r\n })\r\n }\r\n setDesignationList(userList, index) {\r\n if (userList.length > 0) {\r\n this.authorizerList[index].items = userList.map(x => ({\r\n label: x.emailId,\r\n value: x.userId\r\n }));\r\n }\r\n }\r\n approverChange(event) {\r\n if (event.value == this.loggedInUserModel.userId) {\r\n this.isSameApproverSelected = true;\r\n } else {\r\n this.isSameApproverSelected = false;\r\n }\r\n }\r\n\r\n sendForApproval(event) {\r\n if (this.engagementDetailsHistoryId > 0 && this.approver && this.approver > 0) {\r\n this.spinner.show()\r\n this.engagementManagementService.sendForApproval(this.engagementDetailsHistoryId, this.approver).subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n this.messageService.add({\r\n key: \"toast_editbasicdetails\",\r\n summary: this.labelReplacer('Erroroccuredwhilesendingforapproval'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n } else {\r\n this.messageService.add({\r\n key: \"toast_editbasicdetails\",\r\n summary: this.labelReplacer('Engagementdetailssentforapproval'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'success'\r\n });\r\n this.showLanguageBasedDetails = false;\r\n }\r\n this.spinner.hide();\r\n })\r\n }\r\n }\r\n\r\n getStatusSpillClass(status: string) {\r\n if (status) {\r\n status = status.toLowerCase();\r\n if (status == \"live\" || status == \"approved\")\r\n return 'pill pill--approved';\r\n else if (status == \"taken down\" || status == \"suspended\")\r\n return 'pill pill--failed';\r\n return 'pill pill--closed'\r\n }\r\n }\r\n showEngagementDetailsLog(event, index) {\r\n this.spinner.show();\r\n this.showLog = true;\r\n let engagementDynamicDetails = { ... this.engagementDynamicDetails[index] };\r\n this.engagementManagementService.getEngagementDetailsHistory(engagementDynamicDetails.engagementDetailsId).subscribe((response: any) => {\r\n if (response.responseStatus == 1) {\r\n this.messageService.add({\r\n key: \"toast_editbasicdetails\",\r\n summary: this.labelReplacer('Erroroccuredwhilesendingforapproval'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n } else {\r\n if (response.data && response.data.length > 0)\r\n this.engagementDetailsLog = response.data\r\n }\r\n this.spinner.hide();\r\n })\r\n\r\n }\r\n}\r\n\r\nexport class EngagementDetailsForm {\r\n IntialDate: Date;\r\n IsFormal: boolean;\r\n ShortUrl: string;\r\n IsConfidential: boolean;\r\n PastDate: Date;\r\n EYRole: any;\r\n Jurisdiction: any;\r\n constructor(intialDate: Date, isFormal: boolean, shortUrl: string, isConfidential: boolean, eyRole: any, jurisdiction: any) {\r\n this.IntialDate = intialDate;\r\n this.IsFormal = isFormal;\r\n this.ShortUrl = shortUrl;\r\n this.IsConfidential = isConfidential;\r\n this.EYRole = eyRole;\r\n this.Jurisdiction = jurisdiction;\r\n }\r\n}\r\n\r\nexport class DynamicDetailsModel {\r\n engagementName: string;\r\n descritpion: string;\r\n language: string;\r\n eyRole: any;\r\n languageId: number;\r\n engagementDetailsId: number;\r\n isEditEnabled: boolean;\r\n statusId: number;\r\n status: string;\r\n aprrover: any;\r\n isDraftExists: boolean;\r\n constructor(engagementName: string, descritpion: string, language: string, eyRole: any, languageId: number, engagementDetailsId: number, isEdit: boolean, isEditEnabled: boolean, statusId: number, status: string, isDraftExists: boolean) {\r\n this.engagementName = engagementName;\r\n this.descritpion = descritpion;\r\n this.language = language;\r\n this.eyRole = eyRole;\r\n this.languageId = languageId;\r\n this.engagementDetailsId = engagementDetailsId;\r\n this.isEditEnabled = isEditEnabled;\r\n this.statusId = statusId;\r\n this.status = status;\r\n this.isDraftExists = false;\r\n }\r\n}\r\n\r\nexport class engagementDetailsHistory {\r\n engagementName: string;\r\n engagementDescription: string;\r\n engagementApprovedEmail\r\n\r\n}\r\n","import { Component, OnInit, NgModule, Output, EventEmitter } from '@angular/core';\r\nimport { FormBuilder, FormGroup, FormControl, FormArray, Validators, ValidatorFn, AbstractControl } from '@angular/forms';\r\nimport { SelectItem, MessageService } from 'primeng/api';\r\nimport { SidebarModule } from 'primeng/sidebar';\r\nimport { NgxSpinnerService } from 'ngx-spinner'\r\nimport { UserService } from '../../../../framework/services/userservice';\r\nimport { CommonService } from '../../../../framework/services/common.service';\r\nimport { LogoManagementService } from '../../../../framework/services/logo-mgmt.service';\r\nimport { EditEngagementMemoryServiceService } from '../../edit-engagement-memory-service/edit-engagement-memory-service.service';\r\nimport { of } from 'rxjs';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { LanguageService } from 'src/framework/services/language.service';\r\nimport { CategoryConstant } from 'src/app/shared/app-constants/category-constants';\r\nimport { filter } from 'lodash';\r\n\r\n\r\n@Component({\r\n selector: 'app-contacts-edit',\r\n templateUrl: './contacts-edit.component.html',\r\n styleUrls: ['./contacts-edit.component.css']\r\n})\r\n\r\n@NgModule({\r\n imports: [\r\n SidebarModule,\r\n ],\r\n declarations: [],\r\n providers: []\r\n})\r\nexport class ContactsEditComponent implements OnInit {\r\n editing = true;\r\n emailList: any = [];\r\n selectedLanguages: any[] = [];\r\n\r\n displayInternalUserDropDown = true;\r\n isSaveButtonEnable: boolean = true;\r\n\r\n //internal Contacts\r\n internalContactColumns: any[];\r\n internalContactsTableData: any[] = [];\r\n internalContactModel: InternalUserModel;\r\n clonedInternalContact: InternalUserModel;\r\n userDropDownData: any = [];\r\n userRoles = [];\r\n internalContactRowIndex: number = 0;\r\n editInternalContactRowIdex: number = -1;\r\n\r\n //externalContactsRoles\r\n externalRoleColumns: any = [];\r\n externalRolesTableData = [];\r\n externalContactRoleRowIndex: number = 0;\r\n\r\n //externalContacts\r\n externalContactColumns: any[];\r\n externalContacts: any[] = [];\r\n externalContactModel: ExternalContactModel;\r\n externalContactRoleModel = [];\r\n logoList: SelectItem[];\r\n externalContactRowIndex: number = 0;\r\n\r\n displayInternalContactDialog: boolean;\r\n displayRoleDialog: boolean;\r\n displayExternalDialog: boolean;\r\n externalRoleDropDown: any = [];\r\n isEnglishLanguageSelected: boolean = false;\r\n isFrenchLanguageSelected: boolean = false;\r\n\r\n addInternalUserForm: FormGroup;\r\n externalContactSectionRole: FormGroup;\r\n externalContactForm: FormGroup;\r\n\r\n duplicateIntenalUsers: InternalUserModel\r\n clonedRolesTableData = [];\r\n clonedExternalTableData = [];\r\n isExternalContactPanelCollapsed = false;\r\n selectedLanguageId: number;\r\n defaultEnglishJson: any;\r\n islabelLoaded: boolean = false;\r\n selectedAppLanguageJson: any;\r\n selectedLangStatusJson: any;\r\n defaultEngStatusJson: any;\r\n selectedLangLabelJson: any;\r\n defaultEngLangLabelJson: any;\r\n loggedInUserModel: any;\r\n showLogs: boolean = false;\r\n inernalContactLog = [];\r\n\r\n @Output() showNextControl = new EventEmitter()\r\n @Output() showPreviousControl = new EventEmitter();\r\n constructor(\r\n private logoManagementService: LogoManagementService,\r\n private userService: UserService,\r\n private commonService: CommonService,\r\n private engagementMemoryService: EditEngagementMemoryServiceService,\r\n private fb: FormBuilder,\r\n private spinner: NgxSpinnerService,\r\n private messageService: MessageService,\r\n private languageService: LanguageService,\r\n private confirmationService: ConfirmationService\r\n ) {\r\n\r\n this.externalContacts = new Array();\r\n this.internalContactModel = new InternalUserModel();\r\n this.internalContactsTableData = new Array();\r\n this.externalContactModel = new ExternalContactModel(0, \"\", \"\", \"\", \"\", true, '', '', 0, '')\r\n this.selectedLanguages = this.engagementMemoryService.getSelectedLanguages();\r\n\r\n this.externalContactSectionRole = this.fb.group({\r\n \"externalRoleControls\": this.fb.array([])\r\n });\r\n this.addInternalUserForm = new FormGroup({\r\n 'internalRoleCtrl': new FormControl('', [this.internalRoleValidation()]),\r\n 'internalUserCtrl': new FormControl('', [this.internalUserSelectValidation(), this.userDuplicateValidator(), this.reviewerValidator()]),\r\n 'internalEmailCtrl': new FormControl('', [Validators.email]),\r\n 'internalIsDisplayCtrl': new FormControl(false),\r\n 'internalContactCtrl': new FormControl(this.internalContactModel.contactNumber),\r\n 'internalFaxNo': new FormControl(this.internalContactModel.faxNumber)\r\n });\r\n this.externalContactForm = new FormGroup({\r\n 'externalRoleCtrl': new FormControl(this.externalContactModel.selectedRole, [Validators.required]),\r\n 'externalContactNameCtrl': new FormControl(this.externalContactModel.contactName, [Validators.required]),\r\n 'externalEmailCtrl': new FormControl(this.externalContactModel.email, [Validators.email]),\r\n 'externalContactPhoneCtrl': new FormControl(this.externalContactModel.phoneNumber),\r\n 'externalContactLanguageCtrl': new FormControl(this.externalContactModel.selectedLangages, [Validators.required]),\r\n 'externalContactLogoCtrl': new FormControl(this.externalContactModel.selectedLogo, [Validators.required]),\r\n 'externalIsDisplayCtrl': new FormControl(true),\r\n 'externalContactFaxNoCtrl': new FormControl(this.externalContactModel.faxNo)\r\n })\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadLanguageLabel();\r\n this.getExternalContactLogoList();\r\n this.getUserRoles();\r\n if (this.selectedLanguages.length > 0) {\r\n this.selectedLanguages.forEach(element => {\r\n if (element.name == \"English\")\r\n this.isEnglishLanguageSelected = true;\r\n this.externalRoleColumns.push({ field: element.name, header: element.name });\r\n this.externalContactRoleModel.push({ language: element.name, value: '' });\r\n (this.externalContactSectionRole.get('externalRoleControls')).controls.push(this.fb.group({\r\n 'externalRoleControl': ['', [Validators.required]]\r\n }))\r\n })\r\n if (!this.isEnglishLanguageSelected)\r\n this.isFrenchLanguageSelected = false;\r\n }\r\n this.loggedInUserModel = JSON.parse(localStorage.getItem('userModel'));\r\n }\r\n\r\n internalRoleValidation(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n if (control.touched && control.value) {\r\n if (control.value?.userRoleId > 0)\r\n return null;\r\n return { 'internalUserRoleRequired': 'Select role for internal user' };\r\n } else if (control.value) {\r\n return null;\r\n }\r\n return { 'internalUserRoleRequired': 'Select internal user' };\r\n }\r\n }\r\n\r\n\r\n\r\n loadLanguageLabel() {\r\n let englishLanguageMappings, selectedLanguageMappings: any;\r\n let englishStatusMappings, selectedLangStatusMappings: any;\r\n let englishLangLabelMappings, selectedLangLabelMappings: any;\r\n\r\n return new Promise((resolve, reject) => {\r\n if (sessionStorage.getItem('selectedLanguageId')) {\r\n this.selectedLanguageId = 1;//JSON.parse(sessionStorage.getItem('selectedLanguageId'));\r\n }\r\n\r\n this.languageService.currentData.subscribe(data => {\r\n this.selectedLanguageId = data.Id\r\n });\r\n\r\n\r\n this.languageService.mySubject.subscribe((data) => {\r\n var languageMappings = data;\r\n if (languageMappings?.length > 0) {\r\n\r\n englishLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.EditEngagement.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishStatusMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Status.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n if (englishLanguageMappings?.isGlobal) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.EditEngagement.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n\r\n\r\n selectedLangStatusMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Status.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n }\r\n else {\r\n if (Number(this.selectedLanguageId) === 2) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.EditEngagement.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangStatusMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Status.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n }\r\n else {\r\n selectedLanguageMappings = englishLanguageMappings;\r\n selectedLangStatusMappings = englishStatusMappings;\r\n selectedLangLabelMappings = englishLangLabelMappings;\r\n }\r\n }\r\n\r\n this.selectedAppLanguageJson = JSON.parse(selectedLanguageMappings.languageMappingJSON);\r\n\r\n this.defaultEnglishJson = JSON.parse(englishLanguageMappings.languageMappingJSON);\r\n\r\n this.selectedLangLabelJson = JSON.parse(selectedLangLabelMappings?.languageMappingJSON ?? englishLangLabelMappings.languageMappingJSON);\r\n this.defaultEngLangLabelJson = JSON.parse(englishLangLabelMappings.languageMappingJSON);\r\n\r\n this.selectedLangStatusJson = JSON.parse(selectedLangStatusMappings?.languageMappingJSON ?? englishStatusMappings.languageMappingJSON);\r\n this.defaultEngStatusJson = JSON.parse(englishStatusMappings.languageMappingJSON);\r\n\r\n this.internalContactColumns = [\r\n { field: 'roleName', header: this.labelReplacer('Role') },\r\n { field: 'userName', header: this.labelReplacer('Name') },\r\n { field: 'email', header: this.labelReplacer('EmailId') },\r\n { field: 'contactNumber', header: this.labelReplacer('PhoneNo') },\r\n { field: 'faxNumber', header: this.labelReplacer('FaxNo') },\r\n { field: 'isDisplay', header: this.labelReplacer('Display') }\r\n ];\r\n this.externalContactColumns = [\r\n { field: 'selectedRole', header: this.labelReplacer('Role') },\r\n { field: 'contactName', header: this.labelReplacer('Name') },\r\n { field: 'email', header: this.labelReplacer('EmailId') },\r\n { field: 'phoneNumber', header: this.labelReplacer('PhoneNo') },\r\n { field: 'faxNo', header: this.labelReplacer('FaxNo') },\r\n { field: 'language', header: this.labelReplacer('Language') },\r\n { field: 'logo', header: this.labelReplacer('Logo') },\r\n { field: 'display', header: this.labelReplacer('Display') }\r\n ];\r\n this.islabelLoaded = true;\r\n resolve(1);\r\n }\r\n else {\r\n\r\n }\r\n });\r\n })\r\n .catch(err => {\r\n\r\n\r\n console.log(err);\r\n });\r\n }\r\n\r\n labelReplacer(labelKey): string {\r\n return this.selectedAppLanguageJson[labelKey]?.trim() ? this.selectedAppLanguageJson[labelKey] ?? 'text not found' : this.defaultEnglishJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n\r\n\r\n\r\n languageReplacer(labelKey): string {\r\n return this.selectedLangLabelJson[labelKey]?.trim() ? this.selectedLangLabelJson[labelKey] ?? 'text not found' : this.defaultEngLangLabelJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n\r\n statusReplacer(labelKey): string {\r\n return this.selectedLangStatusJson[labelKey]?.trim() ? this.selectedLangStatusJson[labelKey] ?? 'text not found' : this.defaultEngStatusJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n\r\n\r\n internalUserSelectValidation(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n if (control.value?.userId > 0)\r\n return null;\r\n if (control.touched && control.value) {\r\n if (control.value?.userId > 0)\r\n return null;\r\n return { 'internalUserRequired': 'Select internal user' };\r\n }\r\n return { 'internalUserRequired': 'Select internal user' };\r\n }\r\n }\r\n\r\n getExternalContactLogoList() {\r\n this.spinner.show();\r\n this.logoManagementService.GetExternalContactLogoList().subscribe((response: any) => {\r\n if (response.data) {\r\n this.logoList = response.data.map(x => ({\r\n label: x.logoName,\r\n value: x.logoIconImageDataId,\r\n result: 'data:image/png;base64,' + x.result\r\n }));\r\n // this.logoList = response\r\n }\r\n this.loadSavedContactDetails(this.engagementMemoryService.getEngagementId());\r\n });\r\n }\r\n\r\n getUserRoles() {\r\n this.commonService.getUserRoles().subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n } else {\r\n if (response && response.data.length > 0) {\r\n this.userRoles = response.data.filter(t => t.isDisplay)\r\n this.userRoles.forEach(element => {\r\n element.role = this.labelReplacer(\"RoleDropDown_\" + element.userRoleId)\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n loadSavedContactDetails(engagementId: number) {\r\n this.commonService.getEngagementContactDetails(engagementId).subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n this.messageService.add({\r\n summary: this.labelReplacer('Erroroccuredwhileloadingcontactdetails'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n } else {\r\n let isEnglishSelected = false;\r\n if (response.data.engagementInternalContacts && response.data.engagementInternalContacts.length > 0) {\r\n let internalContacts = response.data.engagementInternalContacts\r\n for (let i = 0; i < internalContacts.length; i++) {\r\n internalContacts[i].userRole = { ...internalContacts[i].userRole, role: this.labelReplacer(\"RoleDropDown_\" + internalContacts[i].userRole.userRoleId) }\r\n let model: InternalUserModel = {\r\n rowIndex: this.internalContactRowIndex,\r\n engagementInternalContactId: internalContacts[i].engagementInternalContactId,\r\n roleId: internalContacts[i].userRoleId,\r\n roleName: internalContacts[i].userRole.role,\r\n isDisplay: internalContacts[i].isDisplay,\r\n email: internalContacts[i].email,\r\n selectedRole: internalContacts[i].userRole,\r\n selectedUser: internalContacts[i].user,\r\n userName: internalContacts[i].user.firstName + \" \" + internalContacts[i].user.lastName,\r\n userId: internalContacts[i].userId,\r\n contactNumber: internalContacts[i].contactNumber,\r\n faxNumber: internalContacts[i].faxNumber,\r\n\r\n\r\n }\r\n this.internalContactsTableData.push(model);\r\n this.internalContactRowIndex++;\r\n }\r\n }\r\n if (response.data.externalRoles && response.data.externalRoles.length > 0) {\r\n this.isExternalContactPanelCollapsed = true;\r\n let externalRolesData = response.data.externalRoles;\r\n for (let i = 0; i < externalRolesData.length; i++) {\r\n externalRolesData[i].rowIndex = this.externalContactRoleRowIndex;\r\n this.externalRolesTableData.push({ ...externalRolesData[i] });\r\n this.externalContactRoleRowIndex++;\r\n if (externalRolesData[i].English) {\r\n isEnglishSelected = true;\r\n }\r\n }\r\n this.loadExternalRoles();\r\n }\r\n if (response.data.externalContactModels && response.data.externalContactModels.length > 0) {\r\n let externalContactResponse = response.data.externalContactModels;\r\n for (let i = 0; i < externalContactResponse.length; i++) {\r\n let roleModel = this.externalRolesTableData.find(t => t.ExternalRoleId == externalContactResponse[i].externalContactRoleId);\r\n let model = {\r\n rowIndex: this.externalContactRowIndex,\r\n externalContactId: externalContactResponse[i].externalContactId,\r\n externalRole: isEnglishSelected ? roleModel.English : roleModel.French,\r\n contactName: externalContactResponse[i].contactName,\r\n email: externalContactResponse[i].contactEmailId,\r\n phoneNumber: externalContactResponse[i].contactNumber,\r\n isDisplay: externalContactResponse[i].isDisplay,\r\n logo: externalContactResponse[i].externalContactLogo.logoName,\r\n faxNo: externalContactResponse[i].faxNo,\r\n externalRoleId: externalContactResponse[i].externalContactRoleId\r\n };\r\n model[\"selectedRole\"] = { name: model.externalRole, };\r\n\r\n // model[\"selectedLogo\"] = new LogoValue(externalContactResponse[i].externalContactLogo.logoIconImageDataId,\r\n // model[\"selectedLogo\"] = {\r\n // label: externalContactResponse[i].externalContactLogo.logoName,\r\n // value: externalContactResponse[i].externalContactLogo.logoIconImageDataId\r\n // }\r\n model[\"selectedLogo\"] = externalContactResponse[i].externalContactLogo.logoIconImageDataId;\r\n model[\"language\"] = \"\";\r\n model[\"selectedLangages\"] = [];\r\n externalContactResponse[i].languageId.split(',').forEach(element => {\r\n let lan = this.selectedLanguages.find(t => t.languageId == element);\r\n if(lan != undefined){\r\n model[\"language\"] += lan.name + \" \";\r\n model[\"selectedLangages\"].push({ ...lan });\r\n }\r\n })\r\n model[\"language\"] = model[\"language\"].trim();\r\n this.externalContacts.push(model);\r\n this.externalContactRowIndex++;\r\n }\r\n }\r\n }\r\n this.spinner.hide();\r\n })\r\n }\r\n\r\n loadContactDetails() {\r\n if (this.engagementMemoryService.getInteralContact().length > 0)\r\n this.internalContactsTableData = [...this.engagementMemoryService.getInteralContact()];\r\n if (this.engagementMemoryService.getExternalRole().length > 0) {\r\n this.externalRolesTableData = this.engagementMemoryService.getExternalRole();\r\n }\r\n if (this.engagementMemoryService.getExternalContacts().length > 0) {\r\n this.externalContacts = this.engagementMemoryService.getExternalContacts();\r\n }\r\n }\r\n\r\n getUserByRole(event) {\r\n if (event && event.value) {\r\n this.internalContactModel.roleId = event.value.userRoleId;\r\n this.internalContactModel.roleName = event.value.role;\r\n this.internalContactModel.selectedUser = {};\r\n this.internalContactModel.email = \"\";\r\n this.getUserList(event.value.userRoleId)\r\n }\r\n }\r\n\r\n getUserList(roleId) {\r\n this.spinner.show();\r\n this.userService.getUserListByRoleId(roleId).subscribe((response: any) => {\r\n if (response.responseStatus == 1) {\r\n\r\n } else {\r\n if (response.data && response.data.length > 0) {\r\n this.userDropDownData = response.data.map(t => ({\r\n userName: t.firstName + \" \" + t.lastName,\r\n userId: t.userId,\r\n emailId: t.emailId\r\n }));\r\n //this.userDropDownData = this.userDropDownData.filter(t => t.userId)\r\n }\r\n else {\r\n this.userDropDownData = [];\r\n }\r\n }\r\n this.spinner.hide();\r\n });\r\n }\r\n\r\n onNameSelection(event) {\r\n if (event.value) {\r\n this.internalContactModel.userId = event.value.userId;\r\n this.internalContactModel.userName = event.value.userName;\r\n this.internalContactModel.email = event.value.emailId;\r\n }\r\n }\r\n\r\n resetAddInternalContact() {\r\n this.addInternalUserForm.reset();\r\n this.userDropDownData = [];\r\n this.internalContactModel.rowIndex = 0;\r\n this.internalContactModel.roleId = 0;\r\n this.internalContactModel.roleName = \"\";\r\n this.internalContactModel.userId = 0;\r\n this.internalContactModel.userName = \"\";\r\n this.internalContactModel.email = \"\";\r\n this.internalContactModel.isDisplay = false;\r\n this.internalContactModel.selectedRole = {};\r\n this.internalContactModel.selectedUser = {};\r\n this.internalContactModel.engagementInternalContactId = 0;\r\n this.isSaveButtonEnable = true;\r\n this.internalContactModel.contactNumber = \"\";\r\n this.editInternalContactRowIdex = -1;\r\n }\r\n\r\n showInternalContactDialogToAdd() {\r\n this.resetAddInternalContact();\r\n this.displayInternalContactDialog = true;\r\n }\r\n\r\n AddInternalContact() {\r\n if (!this.addInternalUserForm.invalid) {\r\n this.spinner.show();\r\n let internalContactModel = {\r\n 'EngagementInternalContactId': 0,\r\n 'EngagementId': this.engagementMemoryService.getEngagementId(),\r\n 'UserId': this.internalContactModel.userId,\r\n 'UserRoleId': this.internalContactModel.roleId,\r\n 'IsDisplay': this.internalContactModel.isDisplay,\r\n 'Email': this.internalContactModel.email,\r\n 'ContactNumber': this.internalContactModel.contactNumber,\r\n 'FaxNumber': this.internalContactModel.faxNumber\r\n };\r\n this.commonService.saveOrUpdateInternalUser(internalContactModel).subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n this.messageService.add({\r\n summary: this.labelReplacer('Internalcontactaddedsuccessfully'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'success'\r\n });\r\n } else {\r\n if (response.data) {\r\n this.internalContactModel.rowIndex = this.internalContactRowIndex;\r\n this.internalContactRowIndex++;\r\n let model = { ...this.internalContactModel }\r\n model.engagementInternalContactId = response.data.engagementInternalContactId;\r\n this.internalContactsTableData.push(model);\r\n this.displayInternalContactDialog = false;\r\n this.internalContactsTableData.sort((a, b) => {\r\n if (a.userName > b.userName)\r\n return 1;\r\n if (b.userName > a.userName)\r\n return -1\r\n return 0;\r\n })\r\n }\r\n }\r\n this.spinner.hide();\r\n })\r\n\r\n } else {\r\n this.addInternalUserForm.markAllAsTouched();\r\n }\r\n }\r\n\r\n onInternalContactEditInit(rowData) {\r\n this.spinner.show();\r\n this.resetAddInternalContact();\r\n this.getUserList(rowData.roleId);\r\n this.displayInternalContactDialog = true;\r\n setTimeout(() => {\r\n this.internalContactModel = { ...rowData };\r\n this.clonedInternalContact = { ...rowData };\r\n this.editInternalContactRowIdex = rowData.rowIndex;\r\n this.spinner.hide();\r\n }, 1000)\r\n\r\n this.isSaveButtonEnable = false;\r\n }\r\n\r\n\r\n removeInternalUser(rowData: InternalUserModel) {\r\n\r\n let exceptionModel = this.validateInternalUserEdit(rowData)\r\n if (exceptionModel.isValid) {\r\n this.confirmationService.confirm({\r\n message: this.labelReplacer('DeleteContactConfirmationMessage'),\r\n accept: () => {\r\n this.spinner.show();\r\n this.commonService.deleteInternalUser(rowData.engagementInternalContactId).subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n // alert(\"Error occured while deleteing internal contact\");\r\n this.messageService.add({\r\n summary: this.labelReplacer('Erroroccuredwhiledeleteinginternalcontact'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n } else {\r\n this.internalContactsTableData = this.internalContactsTableData.filter(t => t.rowIndex != rowData.rowIndex);\r\n this.messageService.add({\r\n summary: this.labelReplacer('Internalcontactdeletedsuccessfully'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'success'\r\n });\r\n }\r\n this.spinner.hide();\r\n });\r\n }\r\n });\r\n\r\n } else {\r\n this.messageService.add({\r\n summary: 'Validation failed',\r\n detail: exceptionModel.exceptionMessages,\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n }\r\n\r\n changesUserSelected(event, rowData: InternalUserModel) {\r\n this.displayInternalUserDropDown = false\r\n this.getUserByRole(event);\r\n let data = this.internalContactsTableData.find(t => t.rowIndex == rowData.rowIndex);\r\n rowData.email = \"\";\r\n rowData.selectedUser = { userName: null, userId: null };\r\n rowData.userName = \"\";\r\n rowData.userId = 0;\r\n this.displayInternalUserDropDown = true;\r\n }\r\n\r\n validateInternalUserEdit(rowData: InternalUserModel): { isValid: boolean, exceptionMessages: string } {\r\n let exceptionModel = { isValid: true, exceptionMessages: '' };\r\n if (rowData.roleId == 1) {\r\n let contact = this.internalContactsTableData.find(t => t.rowIndex != rowData.rowIndex && t.roleId == 1);\r\n if (!contact) {\r\n exceptionModel.isValid = false;\r\n exceptionModel.exceptionMessages += 'There should be alteast one owner\\n';\r\n }\r\n }\r\n if (rowData.roleId == 2) {\r\n let contact = this.internalContactsTableData.find(t => t.rowIndex != rowData.rowIndex && t.roleId == 2);\r\n if (!contact) {\r\n exceptionModel.isValid = false;\r\n exceptionModel.exceptionMessages += 'There should be alteast one reviewer\\n';\r\n }\r\n }\r\n\r\n return exceptionModel;\r\n }\r\n\r\n\r\n updateInternalContact() {\r\n if (!this.addInternalUserForm.invalid) {\r\n let exceptionModel: any = null;\r\n let x = this.clonedInternalContact\r\n if ((this.clonedInternalContact.roleName == \"Owner\" || this.clonedInternalContact.roleName == \"Reviewer\") && this.clonedInternalContact.roleName != this.internalContactModel.roleName)\r\n exceptionModel = this.validateInternalUserEdit(this.clonedInternalContact);\r\n if (!exceptionModel || exceptionModel?.isValid) {\r\n let internalContactModel = {\r\n 'EngagementInternalContactId': this.internalContactModel.engagementInternalContactId,\r\n 'EngagementId': this.engagementMemoryService.getEngagementId(),\r\n 'UserId': this.internalContactModel.userId,\r\n 'UserRoleId': this.internalContactModel.roleId,\r\n 'IsDisplay': this.internalContactModel.isDisplay,\r\n 'Email': this.internalContactModel.email,\r\n 'ContactNumber': this.internalContactModel.contactNumber,\r\n 'FaxNumber': this.internalContactModel.faxNumber\r\n };\r\n this.commonService.saveOrUpdateInternalUser(internalContactModel).subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n // alert(\"Error occured while updaing internal contact\");\r\n this.messageService.add({\r\n summary: this.labelReplacer('Erroroccuredwhileupdainginternalcontact'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n } else {\r\n if (response.data) {\r\n let index = this.internalContactsTableData.findIndex(t => t.rowIndex == this.internalContactModel.rowIndex)\r\n this.internalContactsTableData[index] = { ...this.internalContactModel };\r\n this.displayInternalContactDialog = false;\r\n }\r\n }\r\n })\r\n } else {\r\n this.messageService.add({\r\n summary: 'Validation failed',\r\n detail: exceptionModel.exceptionMessages,\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n } else {\r\n this.addInternalUserForm.markAllAsTouched();\r\n }\r\n }\r\n\r\n resetRolesSection() {\r\n this.externalContactSectionRole.get('externalRoleControls').reset();\r\n (this.externalContactSectionRole.get('externalRoleControls')).controls.forEach((element, index) => {\r\n element.setValue({ 'externalRoleControl': '' });\r\n });\r\n }\r\n\r\n showDialogToAddRole() {\r\n this.resetRolesSection();\r\n this.displayRoleDialog = true;\r\n }\r\n\r\n saveRole() {\r\n let isValid = true;\r\n (this.externalContactSectionRole.get('externalRoleControls')).controls.forEach(element => {\r\n if (element.invalid) {\r\n isValid = false\r\n return;\r\n }\r\n })\r\n if (isValid) {\r\n this.spinner.show();\r\n let obj: any = {};\r\n obj[\"rowIndex\"] = this.externalContactRoleRowIndex;\r\n (this.externalContactSectionRole.get('externalRoleControls')).controls.forEach((element, index) => {\r\n obj[this.externalContactRoleModel[index].language] = element.value.externalRoleControl;\r\n });\r\n obj['ExternalRoleId'] = 0;\r\n obj['EngagementId'] = this.engagementMemoryService.getEngagementId();\r\n this.commonService.saveExternalRoles(obj).subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n // alert(\"Error occured while deleting external role\");\r\n this.messageService.add({\r\n summary: this.labelReplacer('Erroroccuredwhiledeletingexternalrole'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n } else {\r\n obj.ExternalRoleId = response.data;\r\n this.externalRolesTableData.push(obj);\r\n this.externalContactRoleRowIndex++;\r\n this.loadExternalRoles();\r\n this.displayRoleDialog = false;\r\n }\r\n this.spinner.hide();\r\n })\r\n\r\n } else {\r\n this.externalContactSectionRole.get('externalRoleControls').markAllAsTouched();\r\n }\r\n }\r\n\r\n onRowRoleEditInit(rowData) {\r\n this.clonedRolesTableData.push({ ...rowData });\r\n }\r\n\r\n onRowRoleEditSave(rowData, index) {\r\n let validationModel = this.validateExternalRoles(rowData, index)\r\n if (validationModel.isValid) {\r\n this.spinner.show();\r\n this.commonService.updateExternalRoles(rowData).subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n //alert(\"Error occured while updating external role\");\r\n this.messageService.add({\r\n summary: this.labelReplacer('Erroroccuredwhileupdatingexternalrole'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n } else {\r\n let index = this.clonedRolesTableData.findIndex(t => t.rowIndex == rowData.rowIndex);\r\n this.loadExternalRoles();\r\n this.updateExternalContactRole(this.clonedRolesTableData[index], rowData);\r\n delete this.clonedRolesTableData[index];\r\n }\r\n this.spinner.hide();\r\n })\r\n }\r\n else {\r\n // alert(validationModel.exceptionMessages);\r\n this.messageService.add({\r\n summary: \"Validation failed.\",\r\n detail: validationModel.exceptionMessages,\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n }\r\n\r\n validateExternalRoles(rowData, index): { isValid: boolean, exceptionMessages: string } {\r\n index++;\r\n let exceptionModel = { isValid: true, exceptionMessages: \"\" }\r\n this.selectedLanguages.forEach(element => {\r\n if (!rowData[element.name]) {\r\n exceptionModel.isValid = false;\r\n exceptionModel.exceptionMessages += \"Row \" + index + \": Please Enter Role for \" + element.name + '\\n';\r\n }\r\n })\r\n return exceptionModel;\r\n }\r\n\r\n onRowRoleEditCancel(rowData) {\r\n let index = this.clonedRolesTableData.findIndex(t => t.rowIndex == rowData.rowIndex);\r\n let intialIndex = this.externalRolesTableData.findIndex(t => t.rowIndex == rowData.rowIndex);\r\n this.externalRolesTableData[intialIndex] = this.clonedRolesTableData[index]\r\n delete this.clonedRolesTableData[index];\r\n }\r\n\r\n\r\n onDeleteRole(rowData) {\r\n if (this.isValidExternalRoleDelete(rowData.ExternalRoleId)) {\r\n this.spinner.show();\r\n this.commonService.deleteExternalRole(rowData.ExternalRoleId).subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n //alert(\"Error occured while updating external role\");\r\n this.messageService.add({\r\n summary: this.labelReplacer('Erroroccuredwhileupdatingexternalrole'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n } else {\r\n this.externalRolesTableData = this.externalRolesTableData.filter(t => t.rowIndex != rowData.rowIndex);\r\n this.clonedRolesTableData = this.clonedRolesTableData.filter(t => t.rowIndex != rowData.rowIndex);\r\n }\r\n this.spinner.hide();\r\n })\r\n } else {\r\n this.messageService.add({\r\n summary: this.labelReplacer('DeleteRelatedExternalContacts'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n }\r\n\r\n resetExternalContactUser() {\r\n this.externalContactForm.reset();\r\n this.externalContactModel = new ExternalContactModel(0, \"\", \"\", \"\", \"\", true, '', '', 0, \"\");\r\n this.externalContactForm.get('externalIsDisplayCtrl').setValue(true);\r\n }\r\n\r\n saveExternalUser() {\r\n if (!this.externalContactForm.invalid) {\r\n this.externalContactModel.rowIndex = this.externalContactRowIndex;\r\n this.externalContactModel.externalRole = this.externalContactModel.selectedRole.name;\r\n this.externalContactModel.externalRoleId = this.externalContactModel.selectedRole.value;\r\n this.externalContactModel.selectedLangages.forEach(element => {\r\n this.externalContactModel.language += element.name + \" \"\r\n });\r\n this.externalContactModel.language = this.externalContactModel.language.trim();\r\n let logo = this.logoList.find((t) => t.value == this.externalContactModel.selectedLogo)\r\n this.externalContactModel.logo = logo.label;\r\n let requestModel = { ...this.externalContactModel };\r\n requestModel.selectedLogo = {\r\n value: requestModel.selectedLogo,\r\n }\r\n this.spinner.show();\r\n this.commonService.saveOrUpdateExternalContact({ ...requestModel, engagementId: this.engagementMemoryService.getEngagementId() }).subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n this.messageService.add({\r\n summary: this.labelReplacer(\"Erroroccuredwhileaddingexternalconatct\"),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n } else {\r\n this.messageService.add({\r\n summary: this.labelReplacer('Externalcontactaddedsuccessfully'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'success'\r\n });\r\n this.externalContactModel.externalContactId = response.data;\r\n this.externalContacts.push({ ...this.externalContactModel });\r\n this.externalContactRowIndex++;\r\n this.displayExternalDialog = false;\r\n }\r\n this.spinner.hide();\r\n })\r\n } else {\r\n this.externalContactForm.markAllAsTouched();\r\n }\r\n }\r\n\r\n showDialogToAddExternal() {\r\n if (this.externalRolesTableData.length > 0) {\r\n this.resetExternalContactUser();\r\n this.loadExternalRoles();\r\n this.displayExternalDialog = true;\r\n }\r\n }\r\n\r\n loadExternalRoles() {\r\n let roles = [];\r\n if (this.isEnglishLanguageSelected) {\r\n roles = this.externalRolesTableData.map(t => ({ name: t.English, value: t.ExternalRoleId }))\r\n } else if (this.isFrenchLanguageSelected) {\r\n roles = this.externalRolesTableData.map(t => ({ name: t.French, value: t.ExternalRoleId }))\r\n }\r\n this.externalRoleDropDown = roles;\r\n }\r\n\r\n\r\n onRowEditInitExternal(rowData: ExternalContactModel) {\r\n this.clonedExternalTableData.push({ ...rowData });\r\n }\r\n\r\n onRowEditSaveExternal(rowData: ExternalContactModel) {\r\n let validationModel = this.validateExternalContactEdit(rowData);\r\n if (validationModel.isValid) {\r\n rowData.externalRole = rowData.selectedRole.name;\r\n rowData.language = \"\";\r\n rowData.selectedLangages.forEach(element => {\r\n rowData.language += element.name + \" \"\r\n });\r\n // rowData.logo = rowData.selectedLogo;\r\n rowData.language = rowData.language.trim();\r\n let logo = this.logoList.find((t) => t.value == rowData.selectedLogo)\r\n rowData.logo = logo.label;\r\n let requestModel = { ...rowData };\r\n requestModel.selectedLogo = {\r\n value: rowData.selectedLogo,\r\n }\r\n this.spinner.show();\r\n this.commonService.saveOrUpdateExternalContact({ ...requestModel, engagementId: this.engagementMemoryService.getEngagementId() }).subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n //alert(\"Error occured while updating external contact\");\r\n this.messageService.add({\r\n summary: this.labelReplacer('Erroroccuredwhileupdatingexternalcontact'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n } else {\r\n if (this.clonedExternalTableData && this.clonedExternalTableData.length > 0 && rowData.rowIndex) {\r\n let tempIndex = this.clonedExternalTableData.findIndex((t) => {\r\n t.rowIndex == rowData.rowIndex\r\n });\r\n delete this.clonedExternalTableData[tempIndex];\r\n }\r\n this.messageService.add({\r\n summary: this.labelReplacer('Externalcontactupdatedsuccessfully'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'success'\r\n });\r\n }\r\n this.spinner.hide();\r\n })\r\n }\r\n else {\r\n // alert(validationModel.exceptionMessages);\r\n this.messageService.add({\r\n summary: \"Validation failed\",\r\n detail: validationModel.exceptionMessages,\r\n sticky: false,\r\n severity: 'error'\r\n })\r\n }\r\n }\r\n\r\n validateExternalContactEdit(rowData: ExternalContactModel): { isValid: boolean, exceptionMessages: string } {\r\n let exceptionModel = { isValid: true, exceptionMessages: \"\" };\r\n if (rowData.contactName == \"\") {\r\n exceptionModel.isValid = false;\r\n exceptionModel.exceptionMessages += this.labelReplacer('Entercontactname') + \"\\n\";\r\n }\r\n if (rowData.email != '' && !rowData.email.match(/^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})+$/gm)) {\r\n exceptionModel.isValid = false;\r\n exceptionModel.exceptionMessages += this.labelReplacer('Entervalidemail') + \"\\n\";\r\n }\r\n // if (rowData.phoneNumber != \"\" && !rowData.phoneNumber.match(/^[0-9-+]*$/im)) {\r\n // exceptionModel.isValid = false;\r\n // exceptionModel.exceptionMessages += this.labelReplacer('Entervalidphonenumber') + \"\\n\";\r\n // }\r\n // if (rowData.faxNo != \"\" && !rowData.faxNo.match(/^[0-9-+]*$/im)) {\r\n // exceptionModel.isValid = false;\r\n // exceptionModel.exceptionMessages += this.labelReplacer('Invalidfaxnumber') + \"\\n\";\r\n // }\r\n if (!rowData.selectedLangages || rowData.selectedLangages.length == 0) {\r\n exceptionModel.isValid = false;\r\n exceptionModel.exceptionMessages += this.labelReplacer('Pleasechoosethelanguages') + \"\\n\";\r\n }\r\n return exceptionModel;\r\n }\r\n\r\n onRowEditCancelExternal(rowData: ExternalContactModel, ri) {\r\n let tempIndex = this.clonedExternalTableData.findIndex(t => t.rowIndex == rowData.rowIndex);\r\n for (let i = 0; i < this.externalContacts.length; i++) {\r\n if (this.externalContacts[i].rowIndex == rowData.rowIndex) {\r\n this.externalContacts[i] = this.clonedExternalTableData[tempIndex];\r\n break;\r\n }\r\n }\r\n delete this.clonedExternalTableData[tempIndex];\r\n }\r\n\r\n onDeleteExternalUser(rowData: ExternalContactModel) {\r\n this.commonService.deleteExternalContact(rowData.externalContactId).subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n // alert(\"Error occured while updating external contact\");\r\n this.messageService.add({\r\n summary: this.labelReplacer('Erroroccuredwhileupdatingexternalcontact'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n } else {\r\n this.externalContacts = this.externalContacts.filter(t => t.rowIndex != rowData.rowIndex);\r\n }\r\n })\r\n\r\n }\r\n\r\n updateExternalContactRole(clonedData, rowData) {\r\n if (this.isEnglishLanguageSelected) {\r\n this.externalContacts.forEach(ele => {\r\n if (ele.externalRole == clonedData.English) {\r\n ele.externalRole = rowData.English;\r\n ele.selectedRole = { 'name': rowData.English };\r\n }\r\n })\r\n } else if (this.isFrenchLanguageSelected) {\r\n this.externalContacts.forEach(ele => {\r\n if (ele.externalRole == clonedData.French) {\r\n ele.externalRole = rowData.French;\r\n ele.selectedRole.name = { 'name': rowData.French };\r\n }\r\n })\r\n }\r\n }\r\n\r\n userDuplicateValidator(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n if (control.touched || control.dirty)\r\n if (control.value.userId && control.value?.userId > 0) {\r\n let isUserExists = this.internalContactsTableData.findIndex(t => t.userId == control.value.userId && t.rowIndex != this.editInternalContactRowIdex)\r\n if (isUserExists > -1)\r\n return { 'userExits': 'Jurisdiction is required' };\r\n }\r\n return null\r\n }\r\n }\r\n\r\n reviewerValidator(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n if (control.touched || control.dirty)\r\n if (control.value.userId && control.value?.userId > 0) {\r\n if (this.internalContactModel.selectedRole.userRoleId == 2 && this.loggedInUserModel.rankCode > 21 && !this.loggedInUserModel.isAdmin && this.loggedInUserModel.userId == control.value.userId) {\r\n return { 'unauthorizedSelection': true }\r\n }\r\n }\r\n return null\r\n }\r\n }\r\n\r\n showInternalContactLogs() {\r\n this.showLogs = true;\r\n this.spinner.show();\r\n this.commonService.getEngagementInternalContactHistory(this.engagementMemoryService.getEngagementId())\r\n .subscribe((res: any) => {\r\n if (res.responseStatus == 1) {\r\n\r\n } else {\r\n this.inernalContactLog = res.data;\r\n }\r\n this.spinner.hide();\r\n });\r\n }\r\n\r\n isValidExternalRoleDelete(externalRoleId): boolean {\r\n let index = this.externalContacts.findIndex(t => t.externalRoleId == externalRoleId)\r\n if (index > -1) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nexport class InternalUserModel {\r\n rowIndex: number;\r\n roleId: number;\r\n roleName: string;\r\n userId: number;\r\n email: string;\r\n userName: string;\r\n isDisplay: boolean\r\n selectedRole: any;\r\n selectedUser: any;\r\n engagementInternalContactId: number;\r\n contactNumber: any;\r\n faxNumber: string;\r\n constructor() {\r\n this.roleId = 0;\r\n this.userId = 0;\r\n this.email = \"\";\r\n this.userName = \"\";\r\n this.isDisplay = false;\r\n this.roleName = \"\";\r\n this.selectedRole = \"\";\r\n this.selectedUser = \"\";\r\n this.rowIndex = 0;\r\n this.engagementInternalContactId = 0;\r\n this.contactNumber = \"\";\r\n this.faxNumber = \"\";\r\n }\r\n}\r\n\r\nexport class ExternalContactModel {\r\n rowIndex: number;\r\n externalRole: string;\r\n contactName: string;\r\n email: string;\r\n language: string;\r\n phoneNumber: string;\r\n isDisplay: boolean;\r\n logo: string;\r\n selectedRole: any;\r\n selectedLangages: any;\r\n selectedLogo: any;\r\n externalContactId: number\r\n faxNo: string;\r\n externalRoleId: number;\r\n constructor(rowIndex: number, externalRole: string, contactName: string, email: string, phoneNumber: string, isDisplay: boolean, language: string, logo: string, externalContactId: number, faxNo: string) {\r\n this.rowIndex = rowIndex;\r\n this.externalRole = externalRole;\r\n this.contactName = contactName;\r\n this.email = email;\r\n this.phoneNumber = phoneNumber;\r\n this.isDisplay = isDisplay;\r\n this.selectedRole = '';\r\n this.selectedLangages = '';\r\n this.selectedLogo = ''\r\n this.language = language;\r\n this.logo = logo;\r\n this.externalContactId = externalContactId;\r\n this.faxNo = faxNo;\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter, ElementRef, ViewChild } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators, FormControl } from '@angular/forms';\r\nimport { DocumentManagementService } from 'src/framework/services/manage-doc.service';\r\nimport { SelectItemGroup, SelectItem, MessageService } from 'primeng';\r\nimport * as _ from 'lodash';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { CategoryConstant } from 'src/app/shared/app-constants/category-constants';\r\nimport { LanguageService } from 'src/framework/services/language.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-edit-doc',\r\n templateUrl: './edit-doc.component.html',\r\n styleUrls: ['./edit-doc.component.css'],\r\n providers: [MessageService]\r\n\r\n})\r\n\r\nexport class EditDocumentComponent implements OnInit {\r\n\r\n @Input() langDocList: any;\r\n @Input() canApproveOtherLang: boolean;\r\n @Input() isAllNonApproved: boolean;\r\n @Input() absoluteFilePath: string;\r\n @Output() outSaveVersion = new EventEmitter();\r\n @ViewChild(\"ctrlFileUpload\") ctrlFileUpload: ElementRef;\r\n\r\n isNewDraft = false;\r\n sourceDocToClone: any = {};\r\n emitVersionResponse: any = {\r\n isNewVersion: false,\r\n saveType: '',\r\n versionData: {}\r\n };\r\n docTypeList: any[];\r\n docTypeKeyValueList: SelectItem[];\r\n pUpload: File;\r\n showDraftButton: boolean = false;\r\n showDraftPanel: boolean = false;\r\n showLeftPanel: boolean = false;\r\n leftPanelDoc: any = {};\r\n allowedFileTypes: string;\r\n localeSetting: any;\r\n\r\n authorizerList: SelectItemGroup[] = [\r\n {\r\n label: 'Owners',\r\n items: []\r\n },\r\n {\r\n label: 'Reviewers',\r\n items: []\r\n },\r\n {\r\n label: 'PPAP',\r\n items: []\r\n },\r\n {\r\n label: 'Sr. Managers',\r\n items: []\r\n },\r\n {\r\n label: 'Admin',\r\n items: []\r\n }\r\n ];\r\n\r\n engagementDetail = {\r\n appLanguage: 1,\r\n engagementId: 1,\r\n engagementName: '',\r\n engStatusId: 1,\r\n engStatusName: '',\r\n engInitialDate: null,\r\n engLanguage: [{\r\n \"languageId\": 1,\r\n \"languageName\": \"English\",\r\n \"languageFlagPath\": \"../../assets/flags/English.png\"\r\n },\r\n {\r\n \"languageId\": 2,\r\n \"languageName\": \"French\",\r\n \"languageFlagPath\": \"../../assets/flags/french.png\"\r\n\r\n },\r\n {\r\n \"languageId\": 3,\r\n \"languageName\": \"Spanish\",\r\n \"languageFlagPath\": \"../../assets/flags/spanish.png\"\r\n\r\n }],\r\n\r\n }\r\n\r\n documentForm: FormGroup;\r\n formSubmitted: boolean;\r\n calendarYearRange: string;\r\n showDateMandatory: boolean;\r\n docDateDesc: any;\r\n docInfo: string;\r\n draftDocValue: any;\r\n userDetail: any = {};\r\n showApproveButton: boolean = false;\r\n isApproverSelected: boolean = false;\r\n appLangList: any;\r\n errorMsg: string = '';\r\n showEditor = false;\r\n tinyMceConfig: any;\r\n approverRemovedNote: string;\r\n rawApproverList: any[] = [];\r\n selectedAppLanguage: any;\r\n selectedAppLanguageJson: any;\r\n defaultEnglishJson: any;\r\n selectedLangDocTypeJson: any;\r\n defaultEngDocTypeJson: any;\r\n selectedLangStatusJson: any;\r\n defaultEngStatusJson: any;\r\n selectedLangDateJson: any;\r\n defaultEngDateJson: any;\r\n islabelLoaded: boolean = false;\r\n isDocTypeLoaded: boolean = false;\r\n isFontLoaded: boolean = false;\r\n apporveBtnState: boolean = false;\r\n\r\n constructor(private formBuilder: FormBuilder,\r\n private manageDocService: DocumentManagementService,\r\n private messageService: MessageService,\r\n private spinner: NgxSpinnerService, private languageService: LanguageService) {\r\n this.allowedFileTypes = \".doc,.docx,.dot,.jpg,.jpeg,.png,.tif,.pdf,.xls,.xlsx,.xlsb\";\r\n this.calendarYearRange = (new Date().getUTCFullYear() - 10) + ':' + (new Date().getUTCFullYear() + 1);\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n this.approverRemovedNote = null;\r\n if (sessionStorage.getItem('userDetail')) {\r\n this.userDetail = JSON.parse(sessionStorage.getItem('userDetail'));\r\n }\r\n this.configureTinyMce();\r\n this.loadLanguageLabel()\r\n .then(res => {\r\n this.initializeEngagementData()\r\n .then((res) => {\r\n this.buildForm();\r\n this.getDocType()\r\n .then(res => {\r\n this.setDocDateValidators();\r\n this.getApproverList(+this.engagementDetail.engagementId)\r\n .then(res => {\r\n this.formatApproverList()\r\n .then(res => {\r\n this.initializeFormControls()\r\n })\r\n .catch(err => {\r\n console.log(err);\r\n })\r\n })\r\n .catch(err => {\r\n console.log(err);\r\n })\r\n })\r\n .catch(err => {\r\n console.log(err);\r\n })\r\n })\r\n .catch(err => {\r\n console.log(err);\r\n })\r\n })\r\n .catch(err => {\r\n console.log(err);\r\n });\r\n }\r\n\r\n initializeEngagementData() {\r\n\r\n let minYear;\r\n\r\n return new Promise((resolve, reject) => {\r\n if (sessionStorage.getItem('appLanguageList')) {\r\n this.appLangList = JSON.parse(sessionStorage.getItem('appLanguageList'));\r\n }\r\n\r\n if (sessionStorage.getItem('engagementDetail')) {\r\n this.engagementDetail = JSON.parse(sessionStorage.getItem('engagementDetail'));\r\n minYear =\r\n Number(new Date().getUTCFullYear() - 10) <\r\n Number(new Date(this.engagementDetail?.engInitialDate).getUTCFullYear()) ?\r\n Number(new Date().getUTCFullYear() - 10) :\r\n Number(new Date(this.engagementDetail?.engInitialDate).getUTCFullYear());\r\n\r\n this.calendarYearRange = minYear + ':' + (new Date().getUTCFullYear() + 1);\r\n }\r\n resolve(1);\r\n });\r\n }\r\n\r\n loadLanguageLabel() {\r\n let englishLanguageMappings, selectedLanguageMappings: any;\r\n let englishDocTypeMappings, selectedLangDocTypeMappings: any;\r\n let englishStatusMappings, selectedLangStatusMappings: any;\r\n let englishDateMappings, selectedLangDateMappings: any;\r\n\r\n return new Promise((resolve, reject) => {\r\n this.spinner.show();\r\n if (sessionStorage.getItem('selectedLanguageId')) {\r\n this.selectedAppLanguage = 1;//JSON.parse(sessionStorage.getItem('selectedLanguageId'));\r\n }\r\n\r\n this.languageService.currentData.subscribe(data => {\r\n this.selectedAppLanguage = data.Id\r\n this.isFontLoaded = false;\r\n });\r\n\r\n\r\n this.languageService.mySubject.subscribe((data) => {\r\n var languageMappings = data;\r\n if (languageMappings?.length > 0) {\r\n\r\n englishLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.EditDocument.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishDocTypeMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.DocumentTypes.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishStatusMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Status.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n if (englishLanguageMappings?.isGlobal) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.EditDocument.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangDocTypeMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.DocumentTypes.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangStatusMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Status.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n }\r\n else {\r\n if (Number(this.selectedAppLanguage) === 2) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.EditDocument.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangDocTypeMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.DocumentTypes.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangStatusMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Status.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n }\r\n else {\r\n selectedLanguageMappings = englishLanguageMappings;\r\n selectedLangDocTypeMappings = englishDocTypeMappings;\r\n selectedLangStatusMappings = englishStatusMappings;\r\n selectedLangDateMappings = englishDateMappings;\r\n }\r\n }\r\n\r\n this.selectedAppLanguageJson = JSON.parse(selectedLanguageMappings?.languageMappingJSON ?? englishLanguageMappings.languageMappingJSON);\r\n this.defaultEnglishJson = JSON.parse(englishLanguageMappings.languageMappingJSON);\r\n\r\n this.selectedLangDocTypeJson = JSON.parse(selectedLangDocTypeMappings?.languageMappingJSON ?? englishDocTypeMappings.languageMappingJSON);\r\n this.defaultEngDocTypeJson = JSON.parse(englishDocTypeMappings.languageMappingJSON);\r\n\r\n this.selectedLangStatusJson = JSON.parse(selectedLangStatusMappings?.languageMappingJSON ?? englishStatusMappings.languageMappingJSON);\r\n this.defaultEngStatusJson = JSON.parse(englishStatusMappings.languageMappingJSON);\r\n\r\n this.selectedLangDateJson = JSON.parse(selectedLangDateMappings?.languageMappingJSON ?? englishDateMappings.languageMappingJSON);\r\n this.defaultEngDateJson = JSON.parse(englishDateMappings.languageMappingJSON);\r\n\r\n this.setCalendarLocale();\r\n this.isFontLoaded = true;\r\n this.islabelLoaded = true;\r\n this.spinner.hide();\r\n resolve(1);\r\n }\r\n else {\r\n this.spinner.hide();\r\n }\r\n });\r\n })\r\n .catch(err => {\r\n this.spinner.hide();\r\n\r\n console.log(err);\r\n });\r\n }\r\n\r\n labelReplacer(labelKey): string {\r\n return this.selectedAppLanguageJson[labelKey]?.trim() ? this.selectedAppLanguageJson[labelKey] ?? 'text not found' : this.defaultEnglishJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n docTypeReplacer(labelKey): string {\r\n return this.selectedLangDocTypeJson[labelKey]?.trim() ? this.selectedLangDocTypeJson[labelKey] ?? 'text not found' : this.defaultEngDocTypeJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n statusReplacer(labelKey): string {\r\n return this.selectedLangStatusJson[labelKey]?.trim() ? this.selectedLangStatusJson[labelKey] ?? 'text not found' : this.defaultEngStatusJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n calendarReplacer(labelKey): string {\r\n return this.selectedLangDateJson[labelKey]?.trim() ? this.selectedLangDateJson[labelKey] ?? 'text not found' : this.defaultEngDateJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n dayOrMonthNameShort(name, length): string {\r\n let shortName = '';\r\n if (name?.trim()?.length == 0)\r\n shortName = 'Text not found';\r\n else if (name?.trim()?.length > 0 && name?.trim()?.length < length)\r\n shortName = name;\r\n else\r\n shortName = name.substr(0, length);\r\n return shortName;\r\n }\r\n\r\n setCalendarLocale() {\r\n this.localeSetting = {\r\n firstDayOfWeek: 0,\r\n dayNames: [\r\n this.calendarReplacer(\"SUN\"),\r\n this.calendarReplacer(\"MON\"), this.calendarReplacer(\"TUE\"), this.calendarReplacer(\"WED\"),\r\n this.calendarReplacer(\"THU\"), this.calendarReplacer(\"FRI\"), this.calendarReplacer(\"SAT\")\r\n ],\r\n dayNamesShort: [\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"SUN\"), 3),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"MON\"), 3), this.dayOrMonthNameShort(this.calendarReplacer(\"TUE\"), 3),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"WED\"), 3), this.dayOrMonthNameShort(this.calendarReplacer(\"THU\"), 3),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"FRI\"), 3), this.dayOrMonthNameShort(this.calendarReplacer(\"SAT\"), 3)\r\n ],\r\n dayNamesMin: [\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"SUN\"), 1),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"MON\"), 1), this.dayOrMonthNameShort(this.calendarReplacer(\"TUE\"), 1),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"WED\"), 1), this.dayOrMonthNameShort(this.calendarReplacer(\"THU\"), 1),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"FRI\"), 1), this.dayOrMonthNameShort(this.calendarReplacer(\"SAT\"), 1)\r\n ],\r\n monthNames: [\r\n this.calendarReplacer(\"JAN\"), this.calendarReplacer(\"FEB\"), this.calendarReplacer(\"MAR\"),\r\n this.calendarReplacer(\"APR\"), this.calendarReplacer(\"MAY\"), this.calendarReplacer(\"JUN\"),\r\n this.calendarReplacer(\"JUL\"), this.calendarReplacer(\"AUG\"), this.calendarReplacer(\"SEP\"),\r\n this.calendarReplacer(\"OCT\"), this.calendarReplacer(\"NOV\"), this.calendarReplacer(\"DEC\")\r\n ],\r\n monthNamesShort: [\r\n this.calendarReplacer(\"JAN\"), this.calendarReplacer(\"FEB\"), this.calendarReplacer(\"MAR\"),\r\n this.calendarReplacer(\"APR\"), this.calendarReplacer(\"MAY\"), this.calendarReplacer(\"JUN\"),\r\n this.calendarReplacer(\"JUL\"), this.calendarReplacer(\"AUG\"), this.calendarReplacer(\"SEP\"),\r\n this.calendarReplacer(\"OCT\"), this.calendarReplacer(\"NOV\"), this.calendarReplacer(\"DEC\")\r\n ],\r\n today: this.calendarReplacer('TODAY'),\r\n clear: this.calendarReplacer('CLEAR')\r\n }\r\n }\r\n\r\n buildForm() {\r\n this.documentForm = this.formBuilder.group({\r\n docStatus: [''],\r\n documentLink: ['None'],\r\n documentHash: [''],\r\n docTitle: ['', Validators.required],\r\n docDescription: ['', Validators.required],\r\n docType: ['', Validators.required],\r\n docDate: [''],\r\n approvalRequestedFrom: ['']\r\n });\r\n\r\n }\r\n\r\n\r\n getDocType() {\r\n return new Promise((resolve, reject) => {\r\n\r\n this.manageDocService.getDocType().subscribe(res => {\r\n if (res) {\r\n //success\r\n this.docTypeKeyValueList = res.data.map(x => ({\r\n label: this.docTypeReplacer(x.documentTypeId),\r\n value: x.documentTypeId\r\n }));\r\n this.docTypeList = res.data;\r\n } else {\r\n //display error\r\n }\r\n resolve(1);\r\n });\r\n });\r\n }\r\n\r\n configureTinyMce() {\r\n const that = this;\r\n this.tinyMceConfig = {\r\n branding: false,\r\n toolbar_mode: 'sliding',\r\n toolbar_sticky: false,\r\n inline: false,\r\n statusbar: false,\r\n theme: \"silver\",\r\n resize: false,\r\n skin: \"oxide\",\r\n skin_url: 'assets/skins/ui/oxide',\r\n base_url: '/tinymce', \r\n suffix: '.min',\r\n plugins: [\r\n \"print preview importcss autoresize searchreplace autolink autosave save directionality visualblocks visualchars fullscreen image link media template codesample table charmap hr pagebreak nonbreaking anchor toc insertdatetime advlist lists wordcount imagetools textpattern noneditable help code charmap emoticons paste table\"],\r\n menubar: 'edit insert view format table tools help',\r\n force_br_newlines: false,\r\n //force_p_newlines: false,\r\n //forced_root_block: '',\r\n // content_css: [\r\n // '//fonts.googleapis.com/css?family=EYFontRegular',\r\n // ],\r\n paste_as_text: true,\r\n paste_text_sticky: true,\r\n font_formats: 'EYFontRegular=EYFontRegular;',\r\n theme_advanced_fonts: \"EYFontRegular=EYFontRegular\",\r\n extended_valid_elements: \"@[id|class|title|style|onmouseover|onclick],\" +\r\n \"a[name|href=javascript:void(0);|target|title|alt],\" +\r\n \"#div,blockquote,-ol,-ul,-li,br,img[src|height|width],-sub,-sup,-b,-i,-u,\" +\r\n \"-span[data-mce-type],hr,\",\r\n toolbar: 'bold italic backcolor | ' +\r\n 'bullist numlist outdent indent | alignright alignjustify |' +\r\n ' alignleft aligncenter | removeformat |' +\r\n ' help '\r\n };\r\n }\r\n\r\n getApproverList(engagementId) {\r\n return new Promise((resolve, reject) => {\r\n\r\n this.spinner.show();\r\n this.manageDocService.getApproverList(engagementId).subscribe(res => {\r\n if (res.status === 0) {\r\n //success\r\n this.rawApproverList = res.data;\r\n this.spinner.hide();\r\n } else {\r\n //display error\r\n this.spinner.hide();\r\n }\r\n resolve(1);\r\n });\r\n });\r\n }\r\n\r\n formatApproverList() {\r\n return new Promise((resolve, reject) => {\r\n let ownerList, reviewerList, partnerList, srMangerList, adminList: any[] = [];\r\n this.authorizerList = [];\r\n\r\n this.authorizerList.push({\r\n label: this.labelReplacer('lblOwner'),\r\n items: []\r\n });\r\n this.authorizerList.push({\r\n label: this.labelReplacer('lblReviewer'),\r\n items: []\r\n });\r\n this.authorizerList.push({\r\n label: this.labelReplacer('lblPPAP'),\r\n items: []\r\n });\r\n this.authorizerList.push({\r\n label: this.labelReplacer('lblSrManager'),\r\n items: []\r\n });\r\n this.authorizerList.push({\r\n label: this.labelReplacer('lblAdmin'),\r\n items: []\r\n });\r\n\r\n if (this.rawApproverList.length > 0) {\r\n ownerList = this.rawApproverList[0];\r\n reviewerList = this.rawApproverList[1];\r\n partnerList = this.rawApproverList[2];\r\n srMangerList = this.rawApproverList[3];\r\n adminList = this.rawApproverList[4];\r\n\r\n this.setDesignationList(ownerList, 0);\r\n this.setDesignationList(reviewerList, 1);\r\n this.setDesignationList(partnerList, 2);\r\n this.setDesignationList(srMangerList, 3);\r\n this.setDesignationList(adminList, 4);\r\n\r\n }\r\n\r\n resolve(1);\r\n })\r\n .catch(error => {\r\n console.log(error);\r\n })\r\n }\r\n\r\n\r\n \r\n\r\n setDesignationList(userList, index) {\r\n\r\n if (userList.length > 0) {\r\n this.authorizerList[index].items = userList.map(x => ({\r\n label: x.emailId,\r\n value: x.emailId\r\n }));\r\n }\r\n }\r\n\r\n getStatusPillClass(statusId) {\r\n\r\n let pillClass = '';\r\n if (statusId) {\r\n if (statusId === 2 || statusId === 4 || statusId === 7)\r\n pillClass = 'pill pill--approved m-0 ml-2';\r\n else if (statusId === 1)\r\n pillClass = 'pill pill--closed m-0 ml-2';\r\n else if (statusId === 3 || statusId === 6)\r\n pillClass = 'pill pill--failed m-0 ml-2';\r\n }\r\n\r\n return pillClass;\r\n }\r\n\r\n initializeFormControls() {\r\n\r\n this.draftDocValue = {};\r\n this.showLeftPanel = false;\r\n this.showDraftPanel = false;\r\n\r\n if (this.langDocList) {\r\n this.showDraftButton = this.langDocList['showDraftButton'];\r\n if (this.showDraftButton) {\r\n //keep right panel hidden\r\n this.isNewDraft = true;\r\n this.showLeftPanel = this.showDraftButton;\r\n this.showDraftPanel = !this.showDraftButton;\r\n //bind left panel with data\r\n this.leftPanelDoc = this.langDocList['languageDocList'][0];\r\n }\r\n else //if show draft button = false\r\n {\r\n //show draft panel\r\n this.draftDocValue['sourceVersionId'] = 0;\r\n this.showDraftPanel = !this.showDraftButton;\r\n\r\n //show both existing approved/unapproved and draft\r\n if (this.langDocList['languageDocList']?.length > 1) {\r\n this.showLeftPanel = true;\r\n this.isNewDraft = false;\r\n //show approved/unapproved document\r\n this.leftPanelDoc = this.langDocList['languageDocList'][0];\r\n //show draft document\r\n this.draftDocValue = this.langDocList['languageDocList'][1];\r\n this.setDraftDocValue();\r\n }\r\n else if (this.langDocList['languageDocList']?.length > 0) {\r\n //show existing/new draft document\r\n this.draftDocValue = this.langDocList['languageDocList'][0];\r\n this.isNewDraft = this.draftDocValue.docVersionId === 0 ? true : false;\r\n this.setDraftDocValue();\r\n }\r\n else {\r\n this.isNewDraft = true;\r\n }\r\n\r\n //prepopulate doc type based validation and details\r\n this.getDocTypeDetails(this.draftDocValue['documentTypeId']);\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n setDraftDocValue() {\r\n this.documentForm.patchValue({\r\n docStatus: this.draftDocValue['statusName'],\r\n documentLink: this.draftDocValue['documentLink'],\r\n documentHash: this.draftDocValue['documentHash'],\r\n docTitle: this.draftDocValue['documentTitle'],\r\n docDescription: this.draftDocValue['documentDescription'],\r\n docType: this.draftDocValue['documentTypeId'],\r\n docDate: this.draftDocValue['documentDate'] === null ? null : new Date(this.draftDocValue['documentDate']),\r\n approvalRequestedFrom: this.draftDocValue['approvalRequestedFromGpn']\r\n });\r\n\r\n this.approverCheck(this.draftDocValue['approvalRequestedFromGpn']);\r\n }\r\n\r\n setDocDateValidators() {\r\n this.docDateDesc = this.labelReplacer('txtDocDate');\r\n\r\n this.documentForm.get('docType').valueChanges\r\n .subscribe(selectedDocType => {\r\n this.getDocTypeDetails(selectedDocType);\r\n });\r\n\r\n }\r\n\r\n getDocTypeDetails(docTypeValue) {\r\n const docDateControl = this.documentForm.get('docDate');\r\n let docTypeData = this.docTypeList.filter(x => x.documentTypeId === docTypeValue)[0];\r\n if (docTypeValue) {\r\n if (docTypeValue === 1 ||\r\n docTypeValue === 2 ||\r\n docTypeValue === 3 ||\r\n docTypeValue === 5) {\r\n docDateControl.setValidators([Validators.required]);\r\n\r\n this.showDateMandatory = true;\r\n }\r\n else if (docTypeValue === 4 ||\r\n docTypeValue === 6) {\r\n docDateControl.setValidators(null);\r\n \r\n if (docDateControl?.value == null ||\r\n docDateControl?.value == undefined ||\r\n docDateControl?.value == '') {\r\n this.documentForm.patchValue({\r\n docDate: new Date()\r\n });\r\n }\r\n\r\n this.showDateMandatory = false;\r\n\r\n }\r\n\r\n this.docInfo = '';\r\n this.docDateDesc = this.docTypeReplacer('d' + docTypeValue.toString());//docTypeData?.descriptionOfDate;\r\n if (docTypeData?.preferredNamingConvention && docTypeData?.preferredNamingConvention != '')\r\n this.docInfo = this.labelReplacer('msgFileNameFyi') + ': ' + this.docTypeReplacer('f' + docTypeValue.toString()) + ', ';\r\n this.docInfo += this.labelReplacer('msgProtectPdf') + ' ' + (docTypeData?.protectPdf ? this.docTypeReplacer('ppdftrue') : this.docTypeReplacer('ppdffalse'));\r\n }\r\n\r\n docDateControl.updateValueAndValidity();\r\n }\r\n\r\n saveVersion() {\r\n this.apporveBtnState = true;\r\n this.saveDocumentVersion('save')\r\n .then(res => {\r\n this.apporveBtnState = false;\r\n this.outSaveVersion.emit(this.emitVersionResponse);\r\n })\r\n .catch(err => {\r\n this.manageDocService.deleteDocVersion(this.emitVersionResponse?.versionData).subscribe(res => {\r\n if (res.status === 0) {\r\n\r\n }\r\n else {\r\n }\r\n });\r\n this.apporveBtnState = false;\r\n })\r\n }\r\n\r\n saveDocumentVersion(saveType: string): Promise {\r\n this.spinner.show();\r\n return new Promise((resolve, reject) => {\r\n const formData = new FormData();\r\n let fileToUpload: any;\r\n let fileCopy = false;\r\n this.emitVersionResponse = {};\r\n\r\n this.formSubmitted = true;\r\n // stop here if form is invalid\r\n if (this.documentForm.invalid) {\r\n this.spinner.hide();\r\n return;\r\n }\r\n else {\r\n\r\n if (this.pUpload) {\r\n\r\n fileToUpload = this.pUpload;\r\n if (fileToUpload.name.includes('eicar.com')) {\r\n this.spinner.hide();\r\n return;\r\n }\r\n else {\r\n formData.append('file', fileToUpload, fileToUpload.name);\r\n fileCopy = false;\r\n }\r\n\r\n }\r\n else {\r\n if (this.draftDocValue?.sourceVersionId > 0)\r\n fileCopy = true;\r\n }\r\n\r\n\r\n let documentData = {\r\n ...this.documentForm.value,\r\n 'engagementId': this.engagementDetail.engagementId,\r\n 'languageId': this.draftDocValue?.languageId,\r\n 'docId': this.draftDocValue?.docId,\r\n 'documentDate': (this.documentForm.controls['docDate']?.value == null ||\r\n this.documentForm.controls['docDate']?.value == undefined ||\r\n this.documentForm.controls['docDate']?.value == '') ? null : new Date(this.documentForm.controls['docDate'].value).toDateString(),\r\n 'docVersionId': this.isNewDraft ? 0 : this.draftDocValue.docVersionId,\r\n 'statusId': 1,\r\n 'cloneFilePath': fileCopy ? this.draftDocValue.docId + '_' + this.draftDocValue.sourceVersionId : null,\r\n 'absoluteFilePath': this.absoluteFilePath\r\n }\r\n\r\n this.emitVersionResponse.isNewVersion = this.isNewDraft;\r\n\r\n formData.append('fileJson', JSON.stringify(documentData));\r\n\r\n this.manageDocService.saveDocumentVersion(formData).subscribe(res => {\r\n if (res?.status === 0) {\r\n //success\r\n this.emitVersionResponse.versionData = res.data;\r\n this.emitVersionResponse.saveType = saveType;\r\n\r\n resolve(true);\r\n\r\n\r\n } else {\r\n //display error\r\n if (res?.status === 2) {\r\n\r\n if (res?.data?.toLowerCase() === 'pendingdraftsaveerror') {\r\n this.errorMsg = 'Unable to save document as it is no longer a draft.';\r\n this.emitVersionResponse.saveType = 'draftApproved';\r\n }\r\n else if (res?.data?.toLowerCase() === 'versionnotfound') {\r\n this.emitVersionResponse.saveType = 'draftDeleted';\r\n this.errorMsg = 'Unable to save document as it no longer exists.';\r\n }\r\n else {\r\n this.errorMsg = res?.data ?? '';\r\n }\r\n\r\n this.messageService.add({\r\n summary: 'Error : Unable to save document version',\r\n detail: this.errorMsg,\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n this.outSaveVersion.emit(this.emitVersionResponse);\r\n\r\n }\r\n else {\r\n this.errorMsg = res?.message;\r\n\r\n this.messageService.add({\r\n summary: 'Error : Unable to save document version',\r\n detail: this.errorMsg,\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n this.spinner.hide();\r\n\r\n }\r\n reject(false);\r\n }\r\n });\r\n\r\n }\r\n });\r\n\r\n }\r\n\r\n onUpload(event) {\r\n for (let file of event.files) {\r\n this.pUpload = file;\r\n this.documentForm.patchValue({\r\n documentLink: this.pUpload.name\r\n });\r\n //this.draftDocValue.documentLink = this.pUpload.name;\r\n }\r\n }\r\n\r\n cloneDraft(cloneDoc) {\r\n this.showDraftButton = false;\r\n this.isNewDraft = true;\r\n this.draftDocValue = _.cloneDeep(cloneDoc);\r\n this.draftDocValue['sourceVersionId'] = cloneDoc.docVersionId;\r\n this.draftDocValue['docVersionId'] = 0;\r\n this.documentForm.patchValue({\r\n docStatus: cloneDoc['statusName'],\r\n documentLink: cloneDoc['documentLink'],\r\n documentHash: cloneDoc['documentHash'],\r\n docTitle: cloneDoc['documentTitle'],\r\n docDescription: cloneDoc['documentDescription'],\r\n docType: cloneDoc['documentTypeId'],\r\n docDate: cloneDoc['documentDate'] === null ? null : new Date(cloneDoc['documentDate'])\r\n //approvalRequestedFrom: cloneDoc['approvalRequestedFromGpn']\r\n });\r\n\r\n //prepopulate doc type based validation and details\r\n this.getDocTypeDetails(cloneDoc['documentTypeId']);\r\n this.showDraftPanel = true;\r\n }\r\n\r\n resetForm() {\r\n this.formSubmitted = false;\r\n this.documentForm.controls['docTitle'].setValue('');\r\n this.documentForm.controls['docDescription'].setValue('');\r\n this.documentForm.controls['documentHash'].setValue('');\r\n this.documentForm.controls['documentLink'].setValue('');\r\n this.documentForm.controls['docType'].setValue('');\r\n this.documentForm.controls['docDate'].setValue('');\r\n this.documentForm.controls['approvalRequestedFrom'].setValue('');\r\n this.pUpload = null;\r\n this.docInfo = '';\r\n this.docDateDesc = 'Document Date';\r\n this.ctrlFileUpload['files'] = [];\r\n this.isNewDraft = false;\r\n this.sourceDocToClone = {};\r\n }\r\n\r\n approverChange(event) {\r\n this.approverCheck(event?.value);\r\n }\r\n\r\n approverCheck(selectedApprover) {\r\n this.approverRemovedNote = null;\r\n if (selectedApprover) {\r\n //check if user exists in approver list\r\n if (this.findAuthorizer(selectedApprover)) {\r\n this.isApproverSelected = true;\r\n if (selectedApprover?.toString().toLowerCase() === this.userDetail?.emailId?.toLowerCase()) {\r\n this.showApproveButton = true;\r\n }\r\n else {\r\n this.showApproveButton = false;\r\n }\r\n }\r\n else {\r\n this.isApproverSelected = false;\r\n this.showApproveButton = false;\r\n this.approverRemovedNote = this.labelReplacer('msgApproverNotExists');\r\n }\r\n }\r\n else {\r\n this.isApproverSelected = false;\r\n }\r\n\r\n }\r\n\r\n\r\n findAuthorizer(selectedApprover): any {\r\n let authIndex = -1;\r\n let searchObj = null;\r\n this.authorizerList.forEach(x => {\r\n if ((authIndex = x.items.findIndex(y => y.label?.toLowerCase() ?? '' === selectedApprover.toLowerCase())) > -1) {\r\n searchObj = {} = x.items[authIndex];\r\n }\r\n });\r\n\r\n return searchObj;\r\n }\r\n\r\n approveDocumentVersion(approvalType: string) {\r\n this.apporveBtnState = true;\r\n this.spinner.show();\r\n this.formSubmitted = true;\r\n \r\n if (this.documentForm.invalid) {\r\n this.spinner.hide()\r\n this.apporveBtnState = false;\r\n return\r\n }\r\n \r\n if (this.canApprovalBeSent()) {\r\n //approval type = others ->save version / send email / mark version as pending approval\r\n this.emitVersionResponse.saveType = approvalType;\r\n if (approvalType.toLowerCase() === 'other') {\r\n this.saveDocumentVersion('approve')\r\n .then((res) =>\r\n this.sendApprovalMail()\r\n .then((res) => {\r\n this.apporveBtnState = false;\r\n this.emitVersionResponse.saveType = approvalType;\r\n this.outSaveVersion.emit(this.emitVersionResponse);\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n this.spinner.hide();\r\n }))\r\n .catch((error) => {\r\n console.log(error)\r\n this.spinner.hide();\r\n });\r\n }\r\n else if (approvalType.toLowerCase() === 'self') {\r\n //if approval type = self -> approve version\r\n this.saveDocumentVersion('approve')\r\n .then((res) =>\r\n this.approve()\r\n .then((res) => {\r\n this.apporveBtnState = false;\r\n this.emitVersionResponse.saveType = approvalType;\r\n this.outSaveVersion.emit(this.emitVersionResponse);\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n this.spinner.hide();\r\n }))\r\n .catch((error) => {\r\n console.log(error)\r\n this.spinner.hide();\r\n });\r\n\r\n }\r\n\r\n }\r\n else {\r\n if (this.draftDocValue?.languageId === 1 || this.draftDocValue?.languageId === 2) {\r\n this.messageService.add({\r\n summary: this.labelReplacer('msgErrorTypeApprovalReq'),\r\n detail: this.labelReplacer('msgErrorFileMissing'),\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n else {\r\n this.messageService.add({\r\n summary: this.labelReplacer('msgErrorTypeApprovalReq'),\r\n detail: this.labelReplacer('msgErrorEngOrFrApproved'),\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n this.spinner.hide();\r\n\r\n }\r\n\r\n\r\n }\r\n\r\n canApprovalBeSent(): boolean {\r\n let isAllowed = false;\r\n\r\n if (this.canApproveOtherLang) {\r\n isAllowed = true;\r\n }\r\n else {\r\n if (this.draftDocValue?.languageId === 1 || this.draftDocValue?.languageId === 2) {\r\n if (this.checkForAttachmentInDraft()) {\r\n isAllowed = true;\r\n }\r\n else {\r\n isAllowed = false;\r\n }\r\n }\r\n else {\r\n isAllowed = false;\r\n }\r\n\r\n }\r\n return isAllowed;\r\n\r\n }\r\n\r\n checkForAttachmentInDraft(): boolean {\r\n let isFileExists = false;\r\n if (this.isNewDraft) {\r\n if (this.documentForm.controls['documentLink']?.value !== null\r\n && this.documentForm.controls['documentLink']?.value !== undefined\r\n && this.documentForm.controls['documentLink']?.value !== '') {\r\n isFileExists = true;\r\n }\r\n else {\r\n isFileExists = false;\r\n }\r\n }\r\n else {\r\n if (this.draftDocValue.documentLink !== null\r\n && this.draftDocValue.documentLink !== undefined\r\n && this.draftDocValue.documentLink !== '') {\r\n isFileExists = true;\r\n }\r\n else if (this.documentForm.controls['documentLink']?.value !== null\r\n && this.documentForm.controls['documentLink']?.value !== undefined\r\n && this.documentForm.controls['documentLink']?.value !== '') {\r\n isFileExists = true;\r\n }\r\n else {\r\n isFileExists = false;\r\n }\r\n }\r\n\r\n return isFileExists;\r\n }\r\n\r\n approve() {\r\n let approveVersion = {};\r\n approveVersion = this.emitVersionResponse?.versionData;\r\n approveVersion['absoluteFilePath'] = this.absoluteFilePath;\r\n return new Promise((resolve, reject) => {\r\n this.manageDocService.approveDocumentVersion(approveVersion).subscribe(res => {\r\n if (res.status === 0) {\r\n //success\r\n resolve(true);\r\n }\r\n else {\r\n //display error\r\n\r\n reject(false);\r\n }\r\n\r\n });\r\n });\r\n }\r\n\r\n omit_special_char(event) { \r\n var k;\r\n k = event.charCode; //         k = event.keyCode;  (Both can be used) \r\n // return((k > 64 && k < 91) || (k > 96 && k < 123) || k == 8 || k == 32 || (k >= 48 && k <= 57));\r\n return(k != 47 && k != 92 && k != 58 && k != 42 && k != 63 && k!= 34 && k != 60 && k!= 62 && k != 124); }\r\n \r\n\r\n\r\n sendApprovalMail() {\r\n this.spinner.show();\r\n let approveVersion = {};\r\n approveVersion = this.emitVersionResponse?.versionData;\r\n //approveVersion['authorizerEmail'] = this.findAuthorizer(approveVersion['approvalRequestedFromGpn']);\r\n approveVersion['absoluteFilePath'] = this.absoluteFilePath;\r\n return new Promise((resolve, reject) => {\r\n this.manageDocService.sendDocumentApprovalMail(approveVersion).subscribe(res => {\r\n if (res?.data) {\r\n //success\r\n resolve(true);\r\n }\r\n else {\r\n reject(false);\r\n }\r\n });\r\n });\r\n }\r\n\r\n onFileRemove(event) {\r\n this.pUpload = null;\r\n this.documentForm.patchValue({\r\n documentLink: this.draftDocValue.documentLink\r\n });\r\n }\r\n\r\n\r\n}\r\n","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\r\nimport { FormControl, ValidatorFn, AbstractControl } from '@angular/forms';\r\nimport { LanguageService } from '../../../../framework/services/language.service'\r\nimport { EditEngagementMemoryServiceService } from '../../edit-engagement-memory-service/edit-engagement-memory-service.service';\r\n\r\n@Component({\r\n selector: 'app-edit-language',\r\n templateUrl: './edit-language.component.html',\r\n styleUrls: ['./edit-language.component.css']\r\n})\r\nexport class EditLanguageComponent implements OnInit {\r\n\r\n languageList = [];\r\n selectedLanguages: any[] = [];\r\n languageControl: FormControl;\r\n @Output() showNextControl = new EventEmitter()\r\n\r\n constructor(private languageService: LanguageService,\r\n private engagementMemoryService: EditEngagementMemoryServiceService) {\r\n this.languageControl = new FormControl(this.selectedLanguages, this.languageRequired());\r\n \r\n }\r\n\r\n ngOnInit() {\r\n this.languageList = this.engagementMemoryService.getLanguages(); \r\n // if (this.selectedLanguages.length == 0 && this.engagementMemoryService.getEngagementId() > 0) {\r\n // this.languageService.getEngagementSelectedLanguages(this.engagementMemoryService.getEngagementId()).subscribe((response) => {\r\n // if (response.data && response.data.length > 0) {\r\n // this.selectedLanguages = response.data.filter(t => t.isAppLanguage);\r\n // }\r\n // })\r\n // } else {\r\n this.selectedLanguages = this.engagementMemoryService.getSelectedLanguages();\r\n // }\r\n }\r\n\r\n\r\n resetLanguageRoles(isEnglishSelected: boolean) {\r\n let eyRoles = this.engagementMemoryService.getLanguageBasedRoles();\r\n if (eyRoles && eyRoles.length > 0) {\r\n let roles = isEnglishSelected ? eyRoles.find(t => t.languageName == \"English\")?.engagementRoleModels : eyRoles.find(t => t.languageName == \"French\")?.engagementRoleModels;\r\n eyRoles.forEach(element => {\r\n if (element.engagementRoleModels == null || element.engagementRoleModels.length == 0) {\r\n element.engagementRoleModels = roles\r\n }\r\n })\r\n }\r\n }\r\n\r\n onNextButtonClicked() {\r\n if (!this.languageControl.invalid) {\r\n this.engagementMemoryService.setSelectedLanguages(this.selectedLanguages);\r\n this.showNextControl.emit(\"basicDetails\");\r\n } else {\r\n this.languageControl.markAsTouched();\r\n }\r\n }\r\n\r\n languageRequired(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n if (control.touched && control.value) {\r\n if (control.value.length > 0) {\r\n return null;\r\n }\r\n } else if (control.value && control.value.length > 0) {\r\n return null;\r\n }\r\n return { 'languageRequired': 'Language is required' };\r\n }\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter, ElementRef, ViewChild } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators, FormControl } from '@angular/forms';\r\nimport { DocumentManagementService } from 'src/framework/services/manage-doc.service';\r\nimport { SelectItemGroup, SelectItem, MessageService } from 'primeng';\r\nimport { TreeNode } from 'primeng/api';\r\nimport * as _ from 'lodash';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { error } from 'protractor';\r\nimport { rejects } from 'assert';\r\nimport { TopicCardService } from 'src/framework/services/topic-card.service';\r\nimport { TopicCardTypes } from '../add-new-topic-card/add-new-topic-card.component';\r\nimport { LogoIconMgmtService } from 'src/framework/services/logo-icon-mgmt.service';\r\nimport { ImageType } from 'src/app/enums/image-type';\r\nimport { CategoryConstant } from 'src/app/shared/app-constants/category-constants';\r\nimport { LanguageService } from 'src/framework/services/language.service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { FolderManagementService } from 'src/framework/services/folder-mgmt.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-edit-topic-card',\r\n templateUrl: './edit-topic-card.component.html',\r\n styleUrls: ['./edit-topic-card.component.css']\r\n})\r\nexport class EditTopicCardComponent implements OnInit {\r\n\r\n @Input() set docLanguageId(newLimit: number) {\r\n this.docLanguageIds(newLimit);\r\n }\r\n @Input() langDocList: any;\r\n @Input() canApproveOtherLang: boolean;\r\n @Input() isAllNonApproved: boolean;\r\n @Input() absoluteFilePath: string;\r\n @Output() outSaveVersion = new EventEmitter();\r\n @ViewChild(\"ctrlFileUpload\") ctrlFileUpload: ElementRef;\r\n @ViewChild('editor1') myEditor1: any;\r\n @ViewChild('editor2') myEditor2: any;\r\n\r\n isNewDraft = false;\r\n sourceDocToClone: any = {};\r\n emitVersionResponse: any = {\r\n isNewVersion: false,\r\n saveType: '',\r\n versionData: {}\r\n };\r\n docTypeList: any[];\r\n tempArray = [];\r\n menuindex=0;\r\n submenuIndex=0;\r\n menuItems = [];\r\n docTypeKeyValueList: SelectItem[];\r\n docCategoryKeyValueList: SelectItem[];\r\n pUpload: File;\r\n showDraftButton: boolean = false;\r\n showDraftPanel: boolean = false;\r\n showLeftPanel: boolean = false;\r\n leftPanelDoc: any = {};\r\n allowedFileTypes: string;\r\n approvedEngagementDocList: any[] = [];\r\n targetTreeData=[];\r\n isSortApplay = false;\r\n engagementDocList = [];\r\n secondaryTopicCards = [];\r\n showCategory = false;\r\n showIcons = false;\r\n showDate = true;\r\n selctedDocLanguageId = 1;\r\n icons: any[] = [];\r\n iconsselected: SelectItem[] = [];\r\n imageType = ImageType;\r\n selectedicons: any;\r\n showEditor = false;\r\n selectedType: TopicCardTypes;\r\n\r\n authorizerList: SelectItemGroup[] = [\r\n {\r\n label: 'Owners',\r\n items: []\r\n },\r\n {\r\n label: 'Reviewers',\r\n items: []\r\n },\r\n {\r\n label: 'PPAP',\r\n items: []\r\n },\r\n {\r\n label: 'Sr. Managers',\r\n items: []\r\n },\r\n {\r\n label: 'Admin',\r\n items: []\r\n }\r\n ];\r\n\r\n engagementDetail = {\r\n appLanguage: 1,\r\n engagementId: 1,\r\n engagementName: '',\r\n engStatusId: 1,\r\n engStatusName: '',\r\n engInitialDate: null,\r\n engLanguage: [{\r\n \"languageId\": 1,\r\n \"languageName\": \"English\",\r\n \"languageFlagPath\": \"../../assets/flags/English.png\"\r\n },\r\n {\r\n \"languageId\": 2,\r\n \"languageName\": \"French\",\r\n \"languageFlagPath\": \"../../assets/flags/french.png\"\r\n\r\n },\r\n {\r\n \"languageId\": 3,\r\n \"languageName\": \"Spanish\",\r\n \"languageFlagPath\": \"../../assets/flags/spanish.png\"\r\n\r\n }],\r\n\r\n }\r\n\r\n documentForm: FormGroup;\r\n environments=environment.ApplicationUrl+\"/api/Document/download?docId=\";\r\n formSubmitted: boolean;\r\n calendarYearRange: string;\r\n showDateMandatory: boolean;\r\n docDateDesc: any;\r\n languageName=\"EN\";\r\n docInfo: string;\r\n draftDocValue: any;\r\n userDetail: any = {};\r\n showApproveButton: boolean = false;\r\n isApproverSelected: boolean = false;\r\n appLangList: any;\r\n errorMsg: string = '';\r\n tinyMceConfig: any;\r\n approverRemovedNote: string;\r\n rawApproverList: any[] = [];\r\n docCategoryList: any[] = [];\r\n selectedAppLanguage: any;\r\n selectedAppLanguageJson: any;\r\n defaultEnglishJson: any;\r\n\r\n selectedGlobalJson: any;\r\n defaultGlobalJson: any;\r\n\r\n\r\n selectedLangDocTypeJson: any;\r\n defaultEngDocTypeJson: any;\r\n islabelLoaded: boolean = false;\r\n selectedLangDateJson: any;\r\n defaultEngDateJson: any;\r\n localeSetting: any;\r\n\r\n constructor(private formBuilder: FormBuilder,\r\n private folderService: FolderManagementService,\r\n private manageTopicCardService: TopicCardService,\r\n private messageService: MessageService,\r\n private manageDocService: DocumentManagementService,\r\n private logoIconMgmtService: LogoIconMgmtService,\r\n private spinner: NgxSpinnerService,\r\n private languageService: LanguageService) {\r\n this.selectedType = new TopicCardTypes(1, '', '', new Date(), '', '');\r\n this.allowedFileTypes = \".doc,.docx,.dot,.jpg,.jpeg,.png,.tif,.pdf,.xls,.xlsx,.xlsb,.txt,.csv\";\r\n this.calendarYearRange = (new Date().getUTCFullYear() - 10) + ':' + (new Date().getUTCFullYear() + 1);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadLanguageLabel();\r\n this.approverRemovedNote = null;\r\n this.buildForm();\r\n if (sessionStorage.getItem('userDetail')) {\r\n this.userDetail = JSON.parse(sessionStorage.getItem('userDetail'));\r\n }\r\n this.initializeEngagementData().then((res) => {\r\n this.getEngagementApprovedDocument();\r\n this.setDocDateValidators();\r\n this.getTopicCardType();\r\n this.getTopicCardCategory();\r\n this.getEngagementDoc();\r\n this.getEngagementTopicCard();\r\n this.getLogoList();\r\n\r\n });\r\n\r\n }\r\n\r\n\r\n\r\n \r\n\r\n \r\n sortNode(node: TreeNode) {\r\n\r\n if (!('sortTypeId' in node?.data[0])) {\r\n node.data[0]['sortTypeId'] = '2';\r\n }\r\n\r\n if (node?.data[0]?.sortTypeId.toString() === '1') {\r\n // node.draggable = false;\r\n // node.droppable = false;\r\n\r\n if (node.children) {\r\n //node?.children?.sort((a, b) => a.label?.localeCompare(b.label));\r\n node?.children?.sort((a, b) => this.displayFolderLabel(a).localeCompare(this.displayFolderLabel(b)));\r\n\r\n\r\n }\r\n }\r\n else if (node?.data[0]?.sortTypeId.toString() === '2') {\r\n // node.draggable = false;\r\n // node.droppable = false;\r\n\r\n if (node.children) {\r\n //node?.children?.sort((a, b) => a.label?.localeCompare(b.label));\r\n node?.children?.sort((a, b) => this.displayFolderLabel(a).localeCompare(this.displayFolderLabel(b)));\r\n node?.children?.sort(this.folder_date_sort_desc);\r\n\r\n }\r\n }\r\n else if (node?.data[0]?.sortTypeId.toString() === '3') {\r\n\r\n }\r\n else if (node?.data[0]?.sortTypeId.toString() === '4') {\r\n\r\n //node?.children?.sort((a, b) => b.label?.localeCompare(a.label));\r\n node?.children?.sort((a, b) => this.displayFolderLabel(b).localeCompare(this.displayFolderLabel(a)));\r\n node?.children?.sort((a, b) => this.folder_date_sort_desc(a, b));\r\n\r\n }\r\n }\r\n\r\n \r\n folder_date_sort_desc = function (a, b) {\r\n // This is a comparison function that will result in dates being sorted in\r\n // DESCENDING order.\r\n let res;\r\n if (a?.type?.toLowerCase() === 'file') {\r\n a = new Date(a?.data[0]?.documentDate).getTime() ?? new Date(a?.data[0]?.createdDTTM).getTime();\r\n }\r\n else {\r\n a = new Date(a?.data[0]?.createdDTTM).getTime();\r\n }\r\n\r\n if (b?.type?.toLowerCase() === 'file') {\r\n b = new Date(b?.data[0]?.documentDate).getTime() ?? new Date(b?.data[0]?.createdDTTM).getTime();\r\n }\r\n else {\r\n b = new Date(b?.data[0]?.createdDTTM).getTime();\r\n }\r\n\r\n res = a > b ? -1 : a < b ? 1 : 0;\r\n\r\n return res;\r\n\r\n }\r\n\r\n displayFolderLabel(node: TreeNode): string {\r\n let primaryLangId, otherPrimaryLangId = 0;\r\n let nodeLangList: any[] = [];\r\n let langIndex = -1;\r\n let folderLabel = '';\r\n if (node != null && node != undefined) {\r\n\r\n if (this.engagementDetail.appLanguage == 2) {\r\n primaryLangId = 2;\r\n otherPrimaryLangId = 1;\r\n }\r\n else //default is english\r\n {\r\n primaryLangId = 1;\r\n otherPrimaryLangId = 2;\r\n }\r\n\r\n folderLabel = node.label;\r\n nodeLangList = node?.data[0]?.language;\r\n\r\n\r\n\r\n if (nodeLangList?.length > 0) {\r\n if ((langIndex = nodeLangList.findIndex(x => Number(x.languageId) === Number(primaryLangId))) > -1) {\r\n if (nodeLangList[langIndex]?.folderName?.trim() !== ''\r\n && nodeLangList[langIndex]?.folderName !== null\r\n && nodeLangList[langIndex]?.folderName !== undefined) {\r\n folderLabel = nodeLangList[langIndex]?.folderName;\r\n }\r\n else {\r\n if ((langIndex = nodeLangList.findIndex(x => Number(x.languageId) === Number(otherPrimaryLangId))) > -1) {\r\n if (nodeLangList[langIndex]?.folderName?.trim() !== ''\r\n && nodeLangList[langIndex]?.folderName !== null\r\n && nodeLangList[langIndex]?.folderName !== undefined) {\r\n folderLabel = nodeLangList[langIndex]?.folderName;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return folderLabel;\r\n\r\n }\r\n\r\n\r\n getFolderStructure() {\r\n this.spinner.show();\r\n this.folderService.getFolderTemplate(this.engagementDetail.engagementId).then(files => {\r\n if (files && files.length > 0) {\r\n \r\n var count: Array=[];\r\n if (files.length > 0 && files[0].children) {\r\n let i =0;\r\n files[0].children.forEach(childNode => {\r\n if(childNode.label==undefined)\r\n {\r\n count.push(i);\r\n }\r\n i = i+1;\r\n });\r\n }\r\n \r\n count.forEach( val =>{\r\n files[0].children.pop(files[0].children[val]);\r\n });\r\n\r\n let x = this.removeEmptyFolder(files[0])\r\n x['label'] = \"Public Documents\"\r\n this.targetTreeData = x ? x.children.filter(t => t.styleClass != 'detailhideFileClass') : []\r\n if(!this.isSortApplay)\r\n {\r\n this.targetTreeData.forEach(x => {\r\n if (x.type.toLowerCase() === 'folder') {\r\n this.sortNode(x);\r\n }\r\n });\r\n }\r\n // this.targetTreeData = files.length > 0 ? files : []\r\n // this.preProcessTree();\r\n }\r\n this.configureTinyMce();\r\n this.showEditor = true;\r\n this.spinner.hide();\r\n });\r\n }\r\n\r\n preProcessTree(editor,environments,lanName) {\r\n\r\n\r\n this.tempArray=[];\r\n this.menuItems=[];\r\n this.targetTreeData.forEach(x => {\r\n this.preProcessTreeRecursive(x,editor,environments,lanName)\r\n });\r\n var newArray=[];\r\n\r\n var indexArray=Object.keys(this.menuItems);\r\n indexArray.forEach((item,index)=>{\r\n newArray[index]=this.menuItems[item];\r\n });\r\n return newArray;\r\n\r\n}\r\n\r\n\r\n\r\npreProcessTreeRecursive(node: any,editor,environments,lanName) {\r\n if (node != null && node != undefined) {\r\n if (node.type.toLowerCase() === 'file') {\r\n if(node.data[0]['parentId']==0){\r\n var docId = node.data[0].docId;\r\n this.menuItems.push(\r\n {\r\n type:'menuitem',\r\n text:node.label,\r\n id:node.key,\r\n \r\n onAction: function () {\r\n editor.insertContent(\"\" + node.label + \"\"); // editor.dom.add(editor.getBody(), 'div', {class: 'row'}, this.getColMd12(f));\r\n }\r\n }\r\n );\r\n }\r\n else{\r\n var nodes =this.findNode(node.data[0]['parentId']);\r\n var menuNodes = this.findMenuNode(node.data[0]['parentId']);\r\n var oldArrays=[];\r\n if(this.menuItems[node.data[0]['parentId']]){\r\n var docId = node.data[0].docId;\r\n oldArrays= this.menuItems[node.data[0]['parentId']].fetches;\r\n\r\n oldArrays.push({\r\n \r\n type:'menuitem',\r\n text:node.label,\r\n id:node.key,\r\n onAction: function () {\r\n editor.insertContent(\"\" + node.label + \"\"); \r\n }\r\n });\r\n\r\n this.menuItems[node.data[0]['parentId']].fetches=oldArrays;\r\n \r\n this.menuItems[node.data[0]['parentId']].getSubmenuItems=function(){return oldArrays;\r\n }\r\n }\r\n else{\r\n oldArrays= menuNodes.fetches;\r\n // var prevArrays = this.menuItems[nodes['folderId']].fetches;\r\n // var arrays = prevArrays.filter(item=>item.text===nodes.label);\r\n // oldArrays = arrays[0].fetches;\r\n // var parentIndex = prevArrays.indexOf(arrays[0]);\r\n var docId = node.data[0].docId;\r\n\r\n oldArrays.push({\r\n \r\n type:'menuitem',\r\n text:node.label,\r\n id:node.key,\r\n onAction: function () {\r\n editor.insertContent(\"\" + node.label + \"\"); \r\n }\r\n });\r\n\r\n menuNodes.fetches=oldArrays;\r\n menuNodes.getSubmenuItems=function(){return oldArrays;}\r\n \r\n }\r\n \r\n \r\n\r\n\r\n \r\n }\r\n }\r\n else if (node.type.toLowerCase() === 'folder') {\r\n if(node.children.length>0){\r\n\r\n if(node.hasOwnProperty('folderId')){\r\n var menuNodes = this.findMenuNode(node['folderId']);\r\n var menuArrays=[];\r\n var indexArrays=Object.keys(this.menuItems);\r\n indexArrays.forEach((item,index)=>{\r\n menuArrays[index]={...this.menuItems[item]};\r\n });\r\n //var trees= this.filterData(menuArrays,node['folderId']);\r\n var oldfolderArrays= menuNodes.fetches;\r\n\r\n oldfolderArrays.push({\r\n \r\n type:'nestedmenuitem',\r\n text:node.label,\r\n id:node.key,\r\n fetches:[],\r\n getSubmenuItems: function () {\r\n }\r\n });\r\n\r\n menuNodes.getSubmenuItems=function(){return oldfolderArrays;}\r\n\r\n // if(this.menuItems[node['folderId']]){\r\n \r\n // this.menuItems[node['folderId']].fetches=oldfolderArrays;\r\n \r\n // this.menuItems[node['folderId']].getSubmenuItems=function(){return oldfolderArrays;\r\n // }\r\n // }\r\n // else if(this.menuItems[trees[0].id]){\r\n // var newItems= this.menuItems[trees[0].id].fetches.filter(item=>item.id===node['folderId'])\r\n // if(newItems.length>0){\r\n // newItems[0].fetches = oldfolderArrays;\r\n // newItems[0].getSubmenuItems=function(){return oldfolderArrays;}\r\n // }\r\n // else if(this.menuItems[trees[0].id])\r\n // }\r\n\r\n }\r\n else{\r\n this.menuItems[node.key]={\r\n type:'nestedmenuitem',\r\n text: node.label,\r\n id:node.key,\r\n fetches:[],\r\n folderfetches:[],\r\n getSubmenuItems: function(){\r\n\r\n }\r\n };\r\n }\r\n }\r\n\r\n }\r\n if (node.children) {\r\n node.children.forEach(childNode => {\r\n this.preProcessTreeRecursive(childNode,editor,environments,lanName);\r\n });\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\nfindNode(nodeKey): TreeNode {\r\n var found = false;\r\n let foundNode: TreeNode = {};\r\n\r\n function recurseFindParent(searchTree) {\r\n\r\n for (var i = 0; i < searchTree.length; i++) {\r\n\r\n // Found the category!\r\n if (Number(searchTree[i].key) === Number(nodeKey)) {\r\n foundNode = searchTree[i];\r\n found = true;\r\n break;\r\n\r\n // Did not match...\r\n } else {\r\n // Are there children / sub-categories? YES\r\n // if(searchTree[i].children !== ''){\r\n if (searchTree[i].children.length > 0) {\r\n recurseFindParent(searchTree[i].children);\r\n if (found) {\r\n break;\r\n }\r\n }\r\n //}\r\n }\r\n }\r\n }\r\n\r\n recurseFindParent(this.targetTreeData);\r\n\r\n return foundNode;\r\n}\r\n\r\n\r\nfilterData(data:any, id) {\r\n var that=this;\r\n var r = data.filter(function(o) {\r\n if (o.fetches.length>0) \r\n {\r\n o.fetches = that.filterData(o.fetches, id);\r\n }\r\n return o.id != id\r\n })\r\n return r;\r\n}\r\n\r\n\r\n\r\nfindMenuNode(nodeKey): any {\r\n var found = false;\r\n let foundNode: any = {};\r\n\r\n function recurseFindParent(searchTree) {\r\n \r\n\r\n for (var i = 0; i < searchTree.length; i++) {\r\n if(searchTree[i]){\r\n\r\n // Found the category!\r\n if (Number(searchTree[i].id) === Number(nodeKey)) {\r\n foundNode = searchTree[i];\r\n found = true;\r\n break;\r\n\r\n // Did not match...\r\n } else {\r\n // Are there children / sub-categories? YES\r\n // if(searchTree[i].children !== ''){\r\n if (searchTree[i].fetches&&searchTree[i].fetches.length > 0) {\r\n recurseFindParent(searchTree[i].fetches);\r\n if (found) {\r\n break;\r\n }\r\n }\r\n //}\r\n }\r\n }\r\n }\r\n }\r\n\r\n recurseFindParent(this.menuItems);\r\n\r\n return foundNode;\r\n}\r\n\r\n\r\n\r\n \r\n\r\n removeEmptyFolder(node: any) {\r\n\r\n let primaryLangId, otherPrimaryLangId, secondPrimaryLangId, thirdPrimaryLangId, fourthPrimaryLangId, fifthPrimaryLangId = 0;\r\n\r\n if (this.engagementDetail.appLanguage == 2) {\r\n primaryLangId = 2;\r\n otherPrimaryLangId = 1;\r\n }\r\n else if (this.engagementDetail.appLanguage == 1) {\r\n primaryLangId = 1;\r\n otherPrimaryLangId = 2;\r\n }\r\n else if (this.engagementDetail.appLanguage == 3) {\r\n primaryLangId = 3;\r\n otherPrimaryLangId = 1;\r\n secondPrimaryLangId = 2;\r\n }\r\n\r\n else //default is english\r\n {\r\n primaryLangId = 1;\r\n otherPrimaryLangId = 2;\r\n }\r\n let isValidFolder = false;\r\n for (let i = 0; i < node.children.length; i++) {\r\n if (node.children[i].type == 'folder') {\r\n if(node.type=='folder'){\r\n node.children[i]['folderId']=node.key;\r\n }\r\n this.sortNode(node);\r\n if (this.removeEmptyFolder(node.children[i]).styleClass != 'detailhideFileClass') {\r\n isValidFolder = true;\r\n }\r\n } else if (node.children[i].type == 'file') {\r\n if (this.approvedEngagementDocList && this.approvedEngagementDocList.length > 0) {\r\n let res = this.approvedEngagementDocList.find(x => x.docId == node.children[i].data[0].docId && x.docVersionId == node.children[i].data[0].docVersionId && primaryLangId == node.children[i].data[0].languageId)\r\n if (res == null || res == undefined)\r\n res = this.approvedEngagementDocList.find(x => x.docId == node.children[i].data[0].docId && x.docVersionId == node.children[i].data[0].docVersionId && otherPrimaryLangId == node.children[i].data[0].languageId)\r\n if (res == null || res == undefined)\r\n res = this.approvedEngagementDocList.find(x => x.docId == node.children[i].data[0].docId && x.docVersionId == node.children[i].data[0].docVersionId && secondPrimaryLangId == node.children[i].data[0].languageId)\r\n if (res) {\r\n node.children[i].styleClass = 'fileClass';\r\n node.children[i]['description'] = res.documentDescription;\r\n node.children[i]['docId'] = res.docId\r\n node.children[i]['documentDate'] = res.documentDate\r\n isValidFolder = true;\r\n } else {\r\n node.children[i].styleClass = 'detailhideFileClass';\r\n\r\n }\r\n }\r\n }\r\n }\r\n if (node.type == \"folder\" && !isValidFolder) {\r\n node.styleClass = 'detailhideFileClass';\r\n }\r\n return node;\r\n }\r\n \r\n \r\n\r\n\r\n\r\n docLanguageIds(limit: number) {\r\n this.selctedDocLanguageId = limit;\r\n if(this.selctedDocLanguageId==1){\r\n this.languageName=\"EN\";\r\n }\r\n else{\r\n this.languageName=\"FR\";\r\n }\r\n }\r\n\r\n\r\n configureTinyMce() {\r\n const that = this;\r\n this.tinyMceConfig = {\r\n branding: false,\r\n toolbar_mode: 'sliding',\r\n toolbar_sticky: false,\r\n inline: false,\r\n statusbar: false,\r\n theme: \"silver\",\r\n resize: false,\r\n skin: \"oxide\",\r\n skin_url: 'assets/skins/ui/oxide',\r\n base_url: '/tinymce', \r\n suffix: '.min',\r\n plugins: [\r\n \"print preview importcss autoresize searchreplace autolink autosave save directionality visualblocks visualchars fullscreen image link media template codesample table charmap hr pagebreak nonbreaking anchor toc insertdatetime advlist lists wordcount imagetools textpattern noneditable help code charmap emoticons \"],\r\n menubar: 'edit insert view format table tools help',\r\n // content_css: [\r\n // '//fonts.googleapis.com/css?family=Lato:300,300i,400,400i',\r\n // ],\r\n\r\n paste_as_text: true,\r\n paste_text_sticky: true,\r\n font_formats: 'EYFontRegular=EYFontRegular;',\r\n theme_advanced_fonts: \"EYFontRegular=EYFontRegular\",\r\n force_br_newlines: false,\r\n //force_p_newlines: false,\r\n allow_script_urls: true,\r\n relative_urls : false,\r\n remove_script_host : false,\r\n entity_encoding : \"raw\",\r\n document_base_url : that.environments,\r\n //forced_root_block: '',\r\n extended_valid_elements: \"@[id|class|title|style|onmouseover|onclick],\" +\r\n \"a[name|href=javascript:void(0);|target|title|alt],\" +\r\n \"#div,blockquote,-ol,-ul,-li,br,img[src|height|width],-sub,-sup,-b,-i,-u,\" +\r\n \"-span[data-mce-type],hr,\",\r\n toolbar: 'document topicCard | bold italic backcolor | ' +\r\n 'bullist numlist outdent indent | alignright alignjustify |' +\r\n ' alignleft aligncenter | removeformat |' +\r\n ' help ',\r\n setup: function (editor) {\r\n const test = that.engagementDocList.map(f => {\r\n return {\r\n type: 'menuitem',\r\n text: f.label,\r\n onAction: function () {\r\n editor.insertContent(\"\" + f.label + \"\"); // editor.dom.add(editor.getBody(), 'div', {class: 'row'}, this.getColMd12(f));\r\n }\r\n };\r\n });\r\n\r\n const topictest = that.secondaryTopicCards.map(f => {\r\n return {\r\n type: 'menuitem',\r\n text: f.label,\r\n onAction: function () {\r\n editor.insertContent(\"\" + f.label + \"\"); // editor.dom.add(editor.getBody(), 'div', {class: 'row'}, this.getColMd12(f));\r\n //editor.setContent('

'+f.label+'

');\r\n }\r\n };\r\n });\r\n /* example, adding a toolbar menu button */\r\n editor.ui.registry.addMenuButton('document', {\r\n text: 'Document',\r\n fetch: function (callback) { \r\n callback(that.preProcessTree(editor,that.environments,that.languageName));\r\n }\r\n });\r\n\r\n editor.ui.registry.addMenuButton('topicCard', {\r\n text: 'Topic Cards',\r\n fetch: function (callback) {\r\n callback(topictest);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n\r\n initializeEngagementData() {\r\n\r\n let minYear;\r\n\r\n return new Promise((resolve, reject) => {\r\n if (sessionStorage.getItem('appLanguageList')) {\r\n this.appLangList = JSON.parse(sessionStorage.getItem('appLanguageList'));\r\n }\r\n\r\n if (sessionStorage.getItem('engagementDetail')) {\r\n this.engagementDetail = JSON.parse(sessionStorage.getItem('engagementDetail'));\r\n minYear =\r\n Number(new Date().getUTCFullYear() - 10) <\r\n Number(new Date(this.engagementDetail?.engInitialDate).getUTCFullYear()) ?\r\n Number(new Date().getUTCFullYear() - 10) :\r\n Number(new Date(this.engagementDetail?.engInitialDate).getUTCFullYear());\r\n\r\n this.calendarYearRange = minYear + ':' + (new Date().getUTCFullYear() + 1);\r\n }\r\n resolve(1);\r\n });\r\n }\r\n\r\n\r\n\r\n loadLanguageLabel() {\r\n let englishLanguageMappings, selectedLanguageMappings: any;\r\n let englishGlobalMappings, selectedGlobalMappings: any;\r\n let englishDateMappings, selectedLangDateMappings: any;\r\n\r\n return new Promise((resolve, reject) => {\r\n if (sessionStorage.getItem('selectedLanguageId')) {\r\n this.selectedAppLanguage = 1;//JSON.parse(sessionStorage.getItem('selectedLanguageId'));\r\n }\r\n\r\n this.languageService.currentData.subscribe(data => {\r\n this.selectedAppLanguage = data.Id\r\n });\r\n\r\n\r\n this.languageService.mySubject.subscribe((data) => {\r\n var languageMappings = data;\r\n if (languageMappings?.length > 0) {\r\n\r\n englishLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.TopicCards.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishGlobalMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Global.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n if (englishLanguageMappings?.isGlobal) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.TopicCards.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedGlobalMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Global.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n }\r\n else {\r\n if (Number(this.selectedAppLanguage) === 2) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.TopicCards.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n\r\n selectedGlobalMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Global.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n }\r\n else {\r\n selectedLanguageMappings = englishLanguageMappings;\r\n selectedGlobalMappings = englishGlobalMappings;\r\n selectedLangDateMappings = englishDateMappings;\r\n\r\n }\r\n }\r\n\r\n this.selectedAppLanguageJson = JSON.parse(selectedLanguageMappings?.languageMappingJSON ?? englishLanguageMappings.languageMappingJSON);\r\n this.defaultEnglishJson = JSON.parse(englishLanguageMappings.languageMappingJSON);\r\n\r\n\r\n this.selectedGlobalJson = JSON.parse(selectedGlobalMappings?.languageMappingJSON ?? englishGlobalMappings.languageMappingJSON);\r\n this.defaultGlobalJson = JSON.parse(englishGlobalMappings.languageMappingJSON);\r\n\r\n this.selectedLangDateJson = JSON.parse(selectedLangDateMappings?.languageMappingJSON ?? englishDateMappings.languageMappingJSON);\r\n this.defaultEngDateJson = JSON.parse(englishDateMappings.languageMappingJSON);\r\n\r\n this.docDateDesc = this.labelReplacer('txtDocDate');\r\n this.setCalendarLocale();\r\n\r\n this.docDateDesc = this.labelReplacer('TopicCardDate');\r\n this.islabelLoaded = true;\r\n resolve(1);\r\n }\r\n else {\r\n }\r\n });\r\n })\r\n .catch(err => {\r\n\r\n console.log(err);\r\n });\r\n }\r\n\r\n\r\n labelReplacer(labelKey): string {\r\n let value;\r\n value = this.selectedAppLanguageJson[labelKey]?.trim() ? this.selectedAppLanguageJson[labelKey] ?? 'text not found' : this.defaultEnglishJson[labelKey] ?? 'text not found';\r\n return value;\r\n }\r\n\r\n CategoryReplacer(labelKey): string {\r\n let value;\r\n value = this.selectedGlobalJson[labelKey]?.trim() ? this.selectedGlobalJson[labelKey] ?? 'text not found' : this.defaultGlobalJson[labelKey] ?? 'text not found';\r\n return value;\r\n }\r\n\r\n monthReplacer(labelKey): string {\r\n let localeDt;\r\n if (labelKey) {\r\n let arr = labelKey.split(' ');\r\n if (arr?.length == 3)\r\n localeDt = arr[0] + ' ' + this.calendarReplacer(arr[1]?.toUpperCase()) + ' ' + arr[2];\r\n else\r\n localeDt = labelKey;\r\n }\r\n return localeDt;\r\n }\r\n\r\n calendarReplacer(labelKey): string {\r\n return this.selectedLangDateJson[labelKey]?.trim() ? this.selectedLangDateJson[labelKey] ?? 'text not found' : this.defaultEngDateJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n dayOrMonthNameShort(name, length): string {\r\n let shortName = '';\r\n if (name?.trim()?.length == 0)\r\n shortName = 'Text not found';\r\n else if (name?.trim()?.length > 0 && name?.trim()?.length < length)\r\n shortName = name;\r\n else\r\n shortName = name.substr(0, length);\r\n return shortName;\r\n }\r\n\r\n setCalendarLocale() {\r\n this.localeSetting = {\r\n firstDayOfWeek: 0,\r\n dayNames: [\r\n this.calendarReplacer(\"SUN\"),\r\n this.calendarReplacer(\"MON\"), this.calendarReplacer(\"TUE\"), this.calendarReplacer(\"WED\"),\r\n this.calendarReplacer(\"THU\"), this.calendarReplacer(\"FRI\"), this.calendarReplacer(\"SAT\")\r\n ],\r\n dayNamesShort: [\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"SUN\"), 3),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"MON\"), 3), this.dayOrMonthNameShort(this.calendarReplacer(\"TUE\"), 3),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"WED\"), 3), this.dayOrMonthNameShort(this.calendarReplacer(\"THU\"), 3),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"FRI\"), 3), this.dayOrMonthNameShort(this.calendarReplacer(\"SAT\"), 3)\r\n ],\r\n dayNamesMin: [\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"SUN\"), 1),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"MON\"), 1), this.dayOrMonthNameShort(this.calendarReplacer(\"TUE\"), 1),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"WED\"), 1), this.dayOrMonthNameShort(this.calendarReplacer(\"THU\"), 1),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"FRI\"), 1), this.dayOrMonthNameShort(this.calendarReplacer(\"SAT\"), 1)\r\n ],\r\n monthNames: [\r\n this.calendarReplacer(\"JAN\"), this.calendarReplacer(\"FEB\"), this.calendarReplacer(\"MAR\"),\r\n this.calendarReplacer(\"APR\"), this.calendarReplacer(\"MAY\"), this.calendarReplacer(\"JUN\"),\r\n this.calendarReplacer(\"JUL\"), this.calendarReplacer(\"AUG\"), this.calendarReplacer(\"SEP\"),\r\n this.calendarReplacer(\"OCT\"), this.calendarReplacer(\"NOV\"), this.calendarReplacer(\"DEC\")\r\n ],\r\n monthNamesShort: [\r\n this.calendarReplacer(\"JAN\"), this.calendarReplacer(\"FEB\"), this.calendarReplacer(\"MAR\"),\r\n this.calendarReplacer(\"APR\"), this.calendarReplacer(\"MAY\"), this.calendarReplacer(\"JUN\"),\r\n this.calendarReplacer(\"JUL\"), this.calendarReplacer(\"AUG\"), this.calendarReplacer(\"SEP\"),\r\n this.calendarReplacer(\"OCT\"), this.calendarReplacer(\"NOV\"), this.calendarReplacer(\"DEC\")\r\n ],\r\n today: this.calendarReplacer('TODAY'),\r\n clear: this.calendarReplacer('CLEAR')\r\n }\r\n }\r\n\r\n buildForm() {\r\n this.documentForm = this.formBuilder.group({\r\n docStatus: [''],\r\n docTitle: ['', Validators.required],\r\n docDescription: ['',Validators.required],\r\n docType: ['', Validators.required],\r\n docDate: [''],\r\n docCategory: [''],\r\n docIcon: [''],\r\n approvalRequestedFrom: ['']\r\n });\r\n\r\n }\r\n\r\n\r\n getLogoList() {\r\n console.log('secomdary', this.secondaryTopicCards);\r\n this.iconsselected = [];\r\n this.logoIconMgmtService.getLogoIconList().subscribe((response) => {\r\n if (response && response.data?.length > 0) {\r\n\r\n\r\n var iconList = response.data.filter(item => item.imageTypeId === this.imageType.Icon);\r\n if (iconList.length > 0) {\r\n iconList.forEach(item => {\r\n item.url = 'data:image/png;base64,' + item.result;\r\n })\r\n }\r\n iconList.forEach(item => {\r\n this.iconsselected.push(\r\n {\r\n 'label': item.imageLink,\r\n 'value': item.logoIconImageDataId,\r\n 'icon': item.url\r\n }\r\n )\r\n });\r\n var newIcons=this.documentForm.get('docIcon').value;\r\n if(newIcons!=\"\"){\r\n }\r\n }\r\n this.icons = iconList\r\n });\r\n }\r\n\r\n\r\n getTopicCardType() {\r\n this.manageTopicCardService.getTopicCardType().subscribe(res => {\r\n if (res) {\r\n this.docTypeKeyValueList = res.data.map(x => ({\r\n label: this.CategoryReplacer(x.topicCardTypeDescription),\r\n value: x.topicCardTypeId\r\n }));\r\n //success\r\n this.docTypeList = res.data;\r\n console.log(res);\r\n } else {\r\n //display error\r\n }\r\n this.getApproverList(+this.engagementDetail.engagementId);\r\n });\r\n }\r\n\r\n getApproverList(engagementId) {\r\n this.manageDocService.getApproverList(engagementId).subscribe(res => {\r\n if (res.status === 0) {\r\n //success\r\n this.rawApproverList = res.data;\r\n this.formatApproverList()\r\n .then(res => this.initializeFormControls())\r\n .catch(error => console.log(error));\r\n } else {\r\n //display error\r\n this.initializeFormControls();\r\n }\r\n });\r\n }\r\n\r\n formatApproverList() {\r\n return new Promise((resolve, reject) => {\r\n let ownerList, reviewerList, partnerList, srMangerList, adminList: any[] = [];\r\n this.authorizerList = [];\r\n\r\n this.authorizerList.push({\r\n label: this.labelReplacer('lblOwner'),\r\n items: []\r\n });\r\n this.authorizerList.push({\r\n label: this.labelReplacer('lblReviewer'),\r\n items: []\r\n });\r\n this.authorizerList.push({\r\n label: this.labelReplacer('lblPPAP'),\r\n items: []\r\n });\r\n this.authorizerList.push({\r\n label: this.labelReplacer('lblSrManager'),\r\n items: []\r\n });\r\n this.authorizerList.push({\r\n label: this.labelReplacer('lblAdmin'),\r\n items: []\r\n });\r\n\r\n if (this.rawApproverList.length > 0) {\r\n ownerList = this.rawApproverList[0];\r\n reviewerList = this.rawApproverList[1];\r\n partnerList = this.rawApproverList[2];\r\n srMangerList = this.rawApproverList[3];\r\n adminList = this.rawApproverList[4];\r\n\r\n this.setDesignationList(ownerList, 0);\r\n this.setDesignationList(reviewerList, 1);\r\n this.setDesignationList(partnerList, 2);\r\n this.setDesignationList(srMangerList, 3);\r\n this.setDesignationList(adminList, 4);\r\n\r\n }\r\n\r\n resolve(1);\r\n })\r\n .catch(error => {\r\n console.log(error);\r\n })\r\n }\r\n\r\n setDesignationList(userList, index) {\r\n if (userList.length > 0) {\r\n this.authorizerList[index].items = userList.map(x => ({\r\n label: x.emailId,\r\n value: x.emailId\r\n }));\r\n }\r\n }\r\n\r\n\r\n\r\n getStatusPillClass(statusId) {\r\n\r\n let pillClass = '';\r\n if (statusId) {\r\n if (statusId === 2 || statusId === 4 || statusId === 7)\r\n pillClass = 'pill pill--approved m-0';\r\n else if (statusId === 1)\r\n pillClass = 'pill pill--closed m-0';\r\n else if (statusId === 3 || statusId === 6)\r\n pillClass = 'pill pill--failed m-0';\r\n }\r\n\r\n return pillClass;\r\n }\r\n\r\n initializeFormControls() {\r\n\r\n this.draftDocValue = {};\r\n this.showLeftPanel = false;\r\n this.showDraftPanel = false;\r\n\r\n if (this.langDocList) {\r\n this.showDraftButton = this.langDocList['showDraftButton'];\r\n if (this.showDraftButton) {\r\n //keep right panel hidden\r\n this.isNewDraft = true;\r\n this.showLeftPanel = this.showDraftButton;\r\n this.showDraftPanel = !this.showDraftButton;\r\n //bind left panel with data\r\n this.leftPanelDoc = this.langDocList['languageDocList'][0];\r\n }\r\n else //if show draft button = false\r\n {\r\n //show draft panel\r\n this.draftDocValue['sourceVersionId'] = 0;\r\n this.showDraftPanel = !this.showDraftButton;\r\n\r\n //show both existing approved/unapproved and draft\r\n if (this.langDocList['languageDocList']?.length > 1) {\r\n this.showLeftPanel = true;\r\n this.isNewDraft = false;\r\n //show approved/unapproved document\r\n this.leftPanelDoc = this.langDocList['languageDocList'][0];\r\n //show draft document\r\n this.draftDocValue = this.langDocList['languageDocList'][1];\r\n this.setDraftDocValue();\r\n }\r\n else if (this.langDocList['languageDocList']?.length > 0) {\r\n //show existing/new draft document\r\n this.draftDocValue = this.langDocList['languageDocList'][0];\r\n this.isNewDraft = this.draftDocValue.docVersionId === 0 ? true : false;\r\n this.setDraftDocValue();\r\n }\r\n else {\r\n this.isNewDraft = true;\r\n }\r\n\r\n //prepopulate doc type based validation and details\r\n this.getDocTypeDetails(this.draftDocValue['documentTypeId']);\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n setDraftDocValue() {\r\n if (this.draftDocValue['topicCardTypeId'] == 1) {\r\n this.showCategory = true;\r\n this.showIcons = true;\r\n this.showDate = false;\r\n }\r\n\r\n this.selectedType.topicCardTypeId = this.draftDocValue['topicCardTypeId'];\r\n this.documentForm.patchValue({\r\n docStatus: this.draftDocValue['statusName'],\r\n docTitle: this.draftDocValue['tctitle'],\r\n docDescription: this.draftDocValue['description'],\r\n docType: this.draftDocValue['topicCardTypeId'],\r\n docCategory: this.draftDocValue['topicCardCategoryId'],\r\n docIcon: this.draftDocValue['iconRef'],\r\n docDate: this.draftDocValue['topicCardDate'] === null ? null : new Date(this.draftDocValue['topicCardDate']),\r\n approvalRequestedFrom: this.draftDocValue['approvalRequestedFromGpn']\r\n });\r\n\r\n this.approverCheck(this.draftDocValue['approvalRequestedFromGpn']);\r\n }\r\n\r\n setDocDateValidators() {\r\n\r\n this.documentForm.get('docType').valueChanges\r\n .subscribe(selectedDocType => {\r\n this.getDocTypeDetails(selectedDocType);\r\n });\r\n\r\n }\r\n\r\n getDocTypeDetails(docTypeValue) {\r\n let docTypeData = this.docTypeList.filter(x => x.topicCardTypeId === docTypeValue)[0];\r\n if (docTypeValue) {\r\n if (docTypeValue === 1) {\r\n this.showCategory = true;\r\n this.showIcons = true;\r\n this.showDate = false;\r\n }\r\n else if (docTypeValue === 2) {\r\n const docDateControl = this.documentForm.get('docDate');\r\n docDateControl.setValidators(null);\r\n this.showDateMandatory = false;\r\n this.docDateDesc = docTypeData?.descriptionOfDate;\r\n }\r\n\r\n\r\n\r\n\r\n }\r\n\r\n }\r\n\r\n saveDocumentVersion(saveType: string): Promise {\r\n this.spinner.show();\r\n return new Promise((resolve, reject) => {\r\n const formData = new FormData();\r\n let fileToUpload: any;\r\n let fileCopy = false;\r\n this.emitVersionResponse = {};\r\n\r\n this.formSubmitted = true;\r\n // stop here if form is invalid\r\n if (this.documentForm.invalid) {\r\n this.spinner.hide();\r\n return;\r\n }\r\n else {\r\n\r\n\r\n let documentData = {\r\n ...this.documentForm.value,\r\n 'engagementId': this.engagementDetail.engagementId,\r\n 'languageId': this.draftDocValue?.languageId,\r\n 'topicCardId': this.draftDocValue?.topicCardId,\r\n 'tcversionId': this.isNewDraft ? 0 : this.draftDocValue.tcversionId,\r\n 'statusId': 1,\r\n 'documentDate': (this.documentForm.controls['docDate']?.value == null || \r\n this.documentForm.controls['docDate']?.value == undefined || \r\n this.documentForm.controls['docDate']?.value == '') ? null : new Date(this.documentForm.controls['docDate'].value).toDateString(),\r\n }\r\n\r\n this.emitVersionResponse.isNewVersion = this.isNewDraft;\r\n\r\n formData.append('fileJson', JSON.stringify(documentData));\r\n\r\n this.manageTopicCardService.saveTopicCardVersion(formData).subscribe(res => {\r\n if (res?.status === 0) {\r\n //success\r\n this.emitVersionResponse.versionData = res.data;\r\n this.emitVersionResponse.saveType = saveType;\r\n\r\n if (saveType.toLowerCase() === 'save') {\r\n this.outSaveVersion.emit(this.emitVersionResponse);\r\n }\r\n this.spinner.hide();\r\n resolve(true);\r\n } else {\r\n //display error\r\n if (res?.status === 2) {\r\n\r\n if (res?.data?.toLowerCase() === 'pendingdraftsaveerror') {\r\n this.errorMsg = this.labelReplacer('UnabletosaveTopicCardasitisnolongeradraft');\r\n this.emitVersionResponse.saveType = 'draftApproved';\r\n }\r\n else if (res?.data?.toLowerCase() === 'versionnotfound') {\r\n this.emitVersionResponse.saveType = 'draftDeleted';\r\n this.errorMsg = this.labelReplacer('UnabletosaveTopicCardasitnolongerexists');\r\n }\r\n else {\r\n this.errorMsg = res?.data ?? '';\r\n }\r\n\r\n this.messageService.add({\r\n summary: this.labelReplacer('Error:Unabletosavedocumentversion'),\r\n detail: this.errorMsg,\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n this.spinner.hide();\r\n this.outSaveVersion.emit(this.emitVersionResponse);\r\n\r\n }\r\n else {\r\n this.errorMsg = res.data;\r\n\r\n this.messageService.add({\r\n summary: this.labelReplacer('Error:UnabletosaveTopicCardversion'),\r\n detail: this.errorMsg,\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n this.spinner.hide();\r\n\r\n }\r\n reject(false);\r\n }\r\n });\r\n\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n getEngagementDoc() {\r\n return new Promise((resolve, reject) => {\r\n this.manageDocService.getEngagementDocument(this.engagementDetail).subscribe(res => {\r\n if (res) {\r\n //success\r\n if (res.data && res.data.length > 0 && this.engagementDocList.length == 0) {\r\n res.data.forEach(item => {\r\n item.documentVersionList.forEach(element => {\r\n if (element.languageId == this.selctedDocLanguageId && element.currentAuthorized==true) {\r\n this.engagementDocList.push({ 'label': element.documentTitle, 'value': element.docId });\r\n }\r\n });\r\n });\r\n }\r\n else {\r\n this.engagementDocList = [];\r\n }\r\n } else {\r\n //display error\r\n }\r\n resolve(1);\r\n });\r\n });\r\n }\r\n\r\n\r\n getEngagementApprovedDocument() {\r\n this.engagementDetail['statusName']=this.engagementDetail.engStatusName;\r\n this.manageDocService.getEngagementApprovedDocument(this.engagementDetail).subscribe(res => {\r\n if (res) {\r\n //success\r\n this.approvedEngagementDocList = res.data;\r\n this.getFolderStructure();\r\n } else {\r\n //display error\r\n }\r\n });\r\n}\r\n\r\n\r\n getEngagementTopicCard() {\r\n return new Promise((resolve, reject) => {\r\n this.manageTopicCardService.getEngagementTopicCard(this.engagementDetail).subscribe(res => {\r\n if (res) {\r\n this.secondaryTopicCards = [];\r\n //success\r\n var topicCards = res.data;\r\n topicCards.forEach(item => {\r\n if (item.topicCardTypeId == 1) {\r\n if (item.topicCardCategoryId == 2) {\r\n\r\n item.topicCardVersionList.forEach(element => {\r\n if (element.languageId == this.selctedDocLanguageId&& element.currentAuthorized==true) {\r\n this.secondaryTopicCards.push({ 'label': element.tctitle, 'value': element.topicCardId });\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n }\r\n });\r\n } else {\r\n //display error\r\n }\r\n resolve(1);\r\n });\r\n });\r\n }\r\n\r\n onUpload(event) {\r\n for (let file of event.files) {\r\n this.pUpload = file;\r\n this.documentForm.patchValue({\r\n documentLink: this.pUpload.name\r\n });\r\n //this.draftDocValue.documentLink = this.pUpload.name;\r\n }\r\n }\r\n\r\n cloneDraft(cloneDoc) {\r\n this.showDraftButton = false;\r\n this.isNewDraft = true;\r\n this.draftDocValue = _.cloneDeep(cloneDoc);\r\n this.draftDocValue['sourceVersionId'] = cloneDoc.tcversionId;\r\n this.draftDocValue['tcversionId'] = 0;\r\n if (cloneDoc['topicCardTypeId'] == 1) {\r\n this.documentForm.patchValue({\r\n docStatus: cloneDoc['statusName'],\r\n docTitle: cloneDoc['tctitle'],\r\n docDescription: cloneDoc['description'],\r\n docType: cloneDoc['topicCardTypeId'],\r\n docCategory: cloneDoc['topicCardCategoryId'],\r\n docDate: new Date(cloneDoc['topicCardDate']),\r\n docIcon: cloneDoc['iconRef']\r\n //approvalRequestedFrom: cloneDoc['approvalRequestedFromGpn']\r\n });\r\n } else if (cloneDoc['topicCardTypeId'] == 2) {\r\n this.documentForm.patchValue({\r\n docStatus: cloneDoc['statusName'],\r\n docTitle: cloneDoc['tctitle'],\r\n docDescription: cloneDoc['description'],\r\n docType: cloneDoc['topicCardTypeId'],\r\n docDate: new Date(cloneDoc['topicCardDate']),\r\n docIcon: cloneDoc['iconRef']\r\n //approvalRequestedFrom: cloneDoc['approvalRequestedFromGpn']\r\n });\r\n }\r\n\r\n //prepopulate doc type based validation and details\r\n this.getDocTypeDetails(cloneDoc['topicCardTypeId']);\r\n this.showDraftPanel = true;\r\n }\r\n\r\n\r\n\r\n resetForm() {\r\n this.formSubmitted = false;\r\n this.documentForm.controls['docTitle'].setValue('');\r\n this.documentForm.controls['docDescription'].setValue('');\r\n this.documentForm.controls['documentHash'].setValue('');\r\n this.documentForm.controls['documentLink'].setValue('');\r\n this.documentForm.controls['docType'].setValue('');\r\n this.documentForm.controls['docCategory'].setValue('');\r\n this.documentForm.controls['docIcon'].setValue('');\r\n this.documentForm.controls['docDate'].setValue('');\r\n this.documentForm.controls['approvalRequestedFrom'].setValue('');\r\n this.pUpload = null;\r\n this.docInfo = '';\r\n this.docDateDesc = 'Document Date';\r\n this.ctrlFileUpload['files'] = [];\r\n this.isNewDraft = false;\r\n this.sourceDocToClone = {};\r\n }\r\n\r\n approverChange(event) {\r\n this.approverCheck(event?.value);\r\n }\r\n\r\n approverCheck(selectedApprover) {\r\n this.approverRemovedNote = null;\r\n if (selectedApprover) {\r\n //check if user exists in approver list\r\n if (this.findAuthorizer(selectedApprover)) {\r\n this.isApproverSelected = true;\r\n if (selectedApprover?.toString().toLowerCase() === this.userDetail?.emailId?.toLowerCase()) {\r\n this.showApproveButton = true;\r\n }\r\n else {\r\n this.showApproveButton = false;\r\n }\r\n }\r\n else {\r\n this.isApproverSelected = false;\r\n this.showApproveButton = false;\r\n this.approverRemovedNote = 'The previously selected approver no longer exists.Please select a new approver.'\r\n }\r\n }\r\n else {\r\n this.isApproverSelected = false;\r\n }\r\n\r\n }\r\n\r\n\r\n findAuthorizer(selectedApprover): any {\r\n let authIndex = -1;\r\n let searchObj = null;\r\n this.authorizerList.forEach(x => {\r\n if ((authIndex = x.items.findIndex(y => y.label?.toLowerCase() ?? '' === selectedApprover.toLowerCase())) > -1) {\r\n searchObj = {} = x.items[authIndex];\r\n }\r\n });\r\n\r\n return searchObj;\r\n }\r\n\r\n approveDocumentVersion(approvalType: string) {\r\n\r\n this.spinner.show();\r\n if (this.canApprovalBeSent()) {\r\n //approval type = others ->save version / send email / mark version as pending approval\r\n this.emitVersionResponse.saveType = approvalType;\r\n if (approvalType.toLowerCase() === 'other') {\r\n this.saveDocumentVersion('approve')\r\n .then((res) =>\r\n this.sendApprovalMail()\r\n .then((res) => {\r\n this.emitVersionResponse.saveType = approvalType;\r\n this.outSaveVersion.emit(this.emitVersionResponse);\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n this.spinner.hide();\r\n }))\r\n .catch((error) => {\r\n console.log(error)\r\n this.spinner.hide();\r\n });\r\n }\r\n else if (approvalType.toLowerCase() === 'self') {\r\n //if approval type = self -> approve version\r\n this.saveDocumentVersion('approve')\r\n .then((res) =>\r\n this.approve()\r\n .then((res) => {\r\n this.emitVersionResponse.saveType = approvalType;\r\n this.outSaveVersion.emit(this.emitVersionResponse);\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n this.spinner.hide();\r\n }))\r\n .catch((error) => {\r\n console.log(error)\r\n this.spinner.hide();\r\n });\r\n\r\n }\r\n\r\n }\r\n else {\r\n if (this.draftDocValue?.languageId === 1 || this.draftDocValue?.languageId === 2) {\r\n this.messageService.add({\r\n summary: this.labelReplacer('Error:Unabletorequestforapproval'),\r\n detail: this.labelReplacer('Pleaseattachafile'),\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n else {\r\n this.messageService.add({\r\n summary: this.labelReplacer('Error:Unabletorequestforapproval'),\r\n detail: this.labelReplacer('Pleaseensureeitherenglishorfrenchversionisapproved'),\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n\r\n this.spinner.hide();\r\n\r\n }\r\n\r\n\r\n }\r\n\r\n canApprovalBeSent(): boolean {\r\n let isAllowed = false;\r\n\r\n if (this.canApproveOtherLang) {\r\n isAllowed = true;\r\n }\r\n else {\r\n if (this.draftDocValue?.languageId === 1 || this.draftDocValue?.languageId === 2) {\r\n isAllowed = true;\r\n }\r\n else {\r\n isAllowed = false;\r\n }\r\n\r\n }\r\n return isAllowed;\r\n\r\n }\r\n\r\n checkForAttachmentInDraft(): boolean {\r\n let isFileExists = false;\r\n if (this.isNewDraft) {\r\n if (this.documentForm.controls['documentLink']?.value !== null\r\n && this.documentForm.controls['documentLink']?.value !== undefined) {\r\n isFileExists = true;\r\n }\r\n else {\r\n isFileExists = false;\r\n }\r\n }\r\n else {\r\n if (this.draftDocValue.documentLink !== null\r\n && this.draftDocValue.documentLink !== undefined) {\r\n isFileExists = true;\r\n }\r\n else {\r\n isFileExists = false;\r\n }\r\n }\r\n\r\n return isFileExists;\r\n }\r\n\r\n approve() {\r\n this.spinner.show();\r\n let approveVersion = {};\r\n approveVersion = this.emitVersionResponse?.versionData;\r\n return new Promise((resolve, reject) => {\r\n this.manageTopicCardService.approveDocumentVersion(approveVersion).subscribe(res => {\r\n if (res.status === 0) {\r\n //success\r\n resolve(true);\r\n }\r\n else {\r\n //display error\r\n reject(false);\r\n }\r\n\r\n });\r\n });\r\n }\r\n\r\n\r\n getTopicCardCategory() {\r\n this.manageTopicCardService.getTopicCardCategory().subscribe(res => {\r\n if (res) {\r\n //success\r\n this.docCategoryKeyValueList = res.data.map(x => ({\r\n label: this.CategoryReplacer(x.topicCardCategoryDescription),\r\n value: x.topicCardCategoryId\r\n }));\r\n this.docCategoryList = res.data;\r\n console.log(res);\r\n } else {\r\n //display error\r\n }\r\n\r\n });\r\n }\r\n\r\n sendApprovalMail() {\r\n this.spinner.show();\r\n let approveVersion = {};\r\n approveVersion = this.emitVersionResponse?.versionData;\r\n approveVersion['authorizerEmail'] = this.findAuthorizer(approveVersion['approvalRequestedFromGpn']);\r\n approveVersion['absoluteFilePath'] = this.absoluteFilePath;\r\n return new Promise((resolve, reject) => {\r\n this.manageTopicCardService.sendTopicCardApprovalMail(approveVersion).subscribe(res => {\r\n if (res?.data) {\r\n //success\r\n resolve(true);\r\n }\r\n else {\r\n //display error\r\n reject(false);\r\n }\r\n });\r\n });\r\n }\r\n\r\n onFileRemove(event) {\r\n this.pUpload = null;\r\n this.documentForm.patchValue({\r\n documentLink: this.draftDocValue.documentLink\r\n });\r\n }\r\n\r\n\r\n}\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { EditEngagementMemoryServiceService } from '../../edit-engagement-memory-service/edit-engagement-memory-service.service';\r\nimport { EngagementManagementService } from 'src/framework/services/engagement-mgmt.service';\r\nimport { Router } from '@angular/router';\r\nimport { MessageService } from 'primeng';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { LanguageService } from 'src/framework/services/language.service';\r\nimport { CategoryConstant } from 'src/app/shared/app-constants/category-constants';\r\n\r\n@Component({\r\n selector: 'app-engagement-authorization',\r\n templateUrl: './engagement-authorization.component.html',\r\n styleUrls: ['./engagement-authorization.component.css']\r\n})\r\nexport class EngagementAuthorizationComponent implements OnInit {\r\n status1: { label: string, id: number };\r\n status2: { label: string, id: number };;\r\n engagementStatus: boolean = false;\r\n engagementDetailsApprovalColumns = [];\r\n engagementDetailsTableData = [];\r\n loggedInUser: any;\r\n isEngagementApprover: boolean = false;\r\n selectedLanguageId: number;\r\n selectedAppLanguageJson: any = '';\r\n islabelLoaded: boolean = false;\r\n defaultEnglishJson: any;\r\n isDetailsApproved: boolean = false;\r\n isDetailsApprover = false;\r\n isShortUrlExists: boolean = false;\r\n isInitialDateExist: boolean = false;\r\n selectedLangStatusJson: any;\r\n defaultEngStatusJson: any;\r\n statusLog: any;\r\n\r\n constructor(\r\n private engagementMemoryService: EditEngagementMemoryServiceService,\r\n private engagementManagementService: EngagementManagementService,\r\n private router: Router,\r\n private messageService: MessageService,\r\n private spinner: NgxSpinnerService,\r\n private languageService: LanguageService\r\n ) {\r\n this.loadLanguageLabel();\r\n this.checkEngagementDetailsApproved();\r\n if (localStorage.getItem(\"userModel\")) {\r\n this.loggedInUser = JSON.parse(localStorage.getItem(\"userModel\"));\r\n if (sessionStorage.getItem('engagementData')) {\r\n let sessionEngObj = JSON.parse(sessionStorage.getItem('engagementData'));\r\n if (sessionEngObj['statusId'] == 1) {\r\n this.status1 = { label: this.statusReplacer(1), id: 1 };\r\n this.status2 = { label: this.statusReplacer(2), id: 2 };\r\n }\r\n else if (sessionEngObj['statusId'] == 2) {\r\n this.status1 = { label: this.statusReplacer(2), id: 2 };\r\n this.status2 = { label: this.statusReplacer(3), id: 3 };\r\n this.isEngagementApprover = true;\r\n } else {\r\n this.status1 = { label: this.statusReplacer(3), id: 3 };\r\n this.status2 = { label: this.statusReplacer(2), id: 2 };\r\n }\r\n }\r\n if (this.loggedInUser.isAdmin || this.loggedInUser.rankCode <= 21) {\r\n this.isEngagementApprover = true;\r\n this.isDetailsApprover = true;\r\n }\r\n }\r\n this.getEngagementAwaitingApprovals();\r\n this.getStatusLog();\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n updateStatus() {\r\n if (this.status2.id != 2 || (this.status2.id == 2 && this.isDetailsApproved && this.isShortUrlExists && this.isInitialDateExist)) {\r\n this.spinner.show();\r\n let engagement: { EngagementId, StatusName, StatusId } = { EngagementId: 0, StatusName: \"\", StatusId: 0 };\r\n engagement.EngagementId = this.engagementMemoryService.getEngagementId();\r\n if (this.engagementStatus) {\r\n engagement.StatusName = this.status2.label;\r\n engagement.StatusId = this.status2.id;\r\n }\r\n else {\r\n engagement.StatusName = this.status1.label;\r\n engagement.StatusId = this.status1.id;\r\n }\r\n this.engagementManagementService.updateEngagementStatus(engagement).subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n this.messageService.add({\r\n key: \"key1\",\r\n summary: this.labelReplacer('Erroroccurredwhileupdatingengagementstatus'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n this.spinner.hide();\r\n } else {\r\n\r\n this.engagementMemoryService.resetEngagementMemory();\r\n this.messageService.add({\r\n key: \"key1\",\r\n summary: this.labelReplacer('Engagementstatusupdatedsucessfully'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'success'\r\n });\r\n setTimeout(() => {\r\n this.spinner.hide();\r\n this.router.navigate([\"/home\"], { queryParams: { engagementType: 'active' } });\r\n }, 3000)\r\n }\r\n })\r\n } else {\r\n if (!this.isDetailsApproved) {\r\n this.messageService.add({\r\n key: \"key1\",\r\n summary: 'Warning',\r\n detail: this.labelReplacer('Pleaseapproveatleastoneengagementname'),\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n if (!this.isShortUrlExists) {\r\n this.messageService.add({\r\n key: \"key1\",\r\n summary: 'Warning',\r\n detail: this.labelReplacer('addshorturl'),\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n if (!this.isInitialDateExist) {\r\n this.messageService.add({\r\n key: \"key1\",\r\n summary: 'Warning',\r\n detail: this.labelReplacer('addInitialDate'),\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n }\r\n }\r\n\r\n getEngagementAwaitingApprovals() {\r\n this.spinner.show();\r\n this.engagementManagementService.getEngagementAwaitingApprovals(this.engagementMemoryService.getEngagementId()).subscribe((response) => {\r\n if (response.status == 1) {\r\n\r\n } else {\r\n if (response.data && response.data.length > 0) {\r\n if (!this.loggedInUser.isAdmin && this.loggedInUser.rankCode < 13) {\r\n response.data = response.data.filter(t => t.authorizedBy && t.authorizedBy == this.loggedInUser.userId);\r\n }\r\n this.engagementDetailsTableData = response.data.map(t => ({\r\n \"engagementDetailsHistoryId\": t.engagementDetailsHistoryId,\r\n \"engagementDetailsId\": t.engagementDetailsId,\r\n \"engagementName\": t.engagementName,\r\n \"engagementDescription\": t.engagementDescription,\r\n \"languageId\": t.languageId,\r\n \"languageName\": t.language.name\r\n }));\r\n }\r\n }\r\n })\r\n }\r\n\r\n approveEngagementDetails(rowData: any) {\r\n this.spinner.show();\r\n this.engagementManagementService.approveEngagementDetails(this.engagementMemoryService.getEngagementId(), rowData.engagementDetailsId).subscribe((response) => {\r\n if (response.status == 1) {\r\n this.messageService.add({\r\n key: \"key1\",\r\n summary: this.labelReplacer('Erroroccurredwhileapprovingstatus'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n\r\n } else {\r\n this.engagementDetailsTableData = this.engagementDetailsTableData.filter(t => t.engagementDetailsHistoryId != rowData.engagementDetailsHistoryId)\r\n this.isDetailsApproved = true;\r\n this.messageService.add({\r\n key: \"key1\",\r\n summary: this.labelReplacer('Engagementdetailsapprovedsucessfully'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'success'\r\n });\r\n\r\n }\r\n this.spinner.hide();\r\n })\r\n }\r\n\r\n loadLanguageLabel() {\r\n let englishLanguageMappings, selectedLanguageMappings: any;\r\n let englishStatusMappings, selectedLangStatusMappings: any;\r\n return new Promise((resolve, reject) => {\r\n if (sessionStorage.getItem('selectedLanguageId')) {\r\n this.selectedLanguageId = 1;//JSON.parse(sessionStorage.getItem('selectedLanguageId'));\r\n }\r\n this.languageService.currentData.subscribe(data => {\r\n this.selectedLanguageId = data.Id\r\n })\r\n this.languageService.mySubject.subscribe((data) => {\r\n var languageMappings = data;\r\n if (languageMappings?.length > 0) {\r\n\r\n englishLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.EditEngagement.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishStatusMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Status.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n if (englishLanguageMappings?.isGlobal) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.EditEngagement.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangStatusMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Status.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n }\r\n else {\r\n if (Number(this.selectedLanguageId) === 2) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.EditEngagement.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangStatusMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Status.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n }\r\n else {\r\n selectedLanguageMappings = englishLanguageMappings;\r\n selectedLangStatusMappings = englishStatusMappings;\r\n }\r\n }\r\n\r\n this.selectedAppLanguageJson = JSON.parse(selectedLanguageMappings.languageMappingJSON);\r\n\r\n this.defaultEnglishJson = JSON.parse(englishLanguageMappings.languageMappingJSON);\r\n\r\n this.selectedLangStatusJson = JSON.parse(selectedLangStatusMappings?.languageMappingJSON ?? englishStatusMappings.languageMappingJSON);\r\n this.defaultEngStatusJson = JSON.parse(englishStatusMappings.languageMappingJSON);\r\n\r\n this.engagementDetailsApprovalColumns = [\r\n { field: 'engagementName', header: this.labelReplacer('EngagementName') },\r\n { field: 'engagementDescription', header: this.labelReplacer('Description') },\r\n { field: 'languageName', header: this.labelReplacer('Language') }\r\n ]\r\n this.islabelLoaded = true;\r\n resolve(1);\r\n }\r\n else {\r\n\r\n }\r\n });\r\n }).catch(err => {\r\n console.log(err);\r\n });\r\n }\r\n\r\n labelReplacer(labelKey): string {\r\n return this.selectedAppLanguageJson[labelKey]?.trim() ? this.selectedAppLanguageJson[labelKey] ?? 'text not found' : this.defaultEnglishJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n checkEngagementDetailsApproved() {\r\n this.spinner.show()\r\n this.engagementManagementService.getIsEngagementDetailsApproved(this.engagementMemoryService.getEngagementId()).subscribe((res) => {\r\n if (res.responseStatus == 1) {\r\n this.messageService.add({\r\n key: \"key1\",\r\n summary: this.labelReplacer('Erroroccurredwhileupdatingengagementstatus'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n this.spinner.hide();\r\n } else {\r\n this.isDetailsApproved = res.isEngagementDetailsApproved;\r\n this.isShortUrlExists = res.isShortUrlExists;\r\n this.isInitialDateExist = res.isInitialDateExist;\r\n this.spinner.hide();\r\n }\r\n\r\n })\r\n }\r\n\r\n\r\n statusReplacer(labelKey): string {\r\n return this.selectedLangStatusJson[labelKey]?.trim() ? this.selectedLangStatusJson[labelKey] ?? 'text not found' : this.defaultEngStatusJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n getStatusLog() {\r\n this.languageService.currentData.subscribe((data) => {\r\n this.engagementManagementService.getEngagementStatusLog(this.engagementMemoryService.getEngagementId(), data.Id,).subscribe(res => {\r\n if (res.responseStatus == 1) {\r\n\r\n }\r\n else {\r\n this.statusLog = res.data;\r\n }\r\n this.spinner.hide()\r\n })\r\n })\r\n }\r\n\r\n\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Router } from '@angular/router';\r\nimport { MessageService, TreeNode } from 'primeng/api';\r\nimport * as _ from 'lodash';\r\nimport { FolderManagementService } from '../../../../framework/services/folder-mgmt.service'\r\nimport { EditEngagementMemoryServiceService } from '../../edit-engagement-memory-service/edit-engagement-memory-service.service'\r\nimport { EngagementManagementService } from '../../../../framework/services/engagement-mgmt.service';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { CategoryConstant } from 'src/app/shared/app-constants/category-constants';\r\nimport { LanguageService } from 'src/framework/services/language.service';\r\nimport { Console } from 'console';\r\nimport { IfStmt } from '@angular/compiler';\r\n\r\n\r\n@Component({\r\n selector: 'app-folder-mgmt-edit',\r\n templateUrl: './folder-mgmt-edit.component.html',\r\n styleUrls: ['./folder-mgmt-edit.component.css']\r\n})\r\nexport class FolderMgmtEditComponent implements OnInit {\r\n\r\n foldersList = [];\r\n selectedFolder: any;\r\n\r\n @Input() treeData: string;\r\n @Input() big: boolean;\r\n targetTreeData: any[] = [];\r\n maxSeed: number = 0;\r\n languageList: any[];\r\n languageLabels: any[] = [];\r\n folderPath: \"\";\r\n globalIdentitySeed: number = 0;\r\n templateNode: TreeNode[];\r\n deleteNodeObj: TreeNode;\r\n isVisible: boolean = false;\r\n updatedTreeStructure: any\r\n savedTreeStructure: any;\r\n\r\n selectedLanguageId: number;\r\n defaultEnglishJson: any;\r\n islabelLoaded: boolean = false;\r\n selectedAppLanguageJson: any;\r\n\r\n selectedLangLabelJson: any;\r\n defaultEngLangLabelJson: any;\r\n eventValue: any;\r\n\r\n @Output() showPreviousControl = new EventEmitter();\r\n constructor(\r\n private folderService: FolderManagementService,\r\n private http: HttpClient,\r\n private engagementMemoryService: EditEngagementMemoryServiceService,\r\n private engagementService: EngagementManagementService, private router: Router,\r\n private spinner: NgxSpinnerService,\r\n private languageSerivce: LanguageService,\r\n private messageService: MessageService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.spinner.show();\r\n this.loadLanguageLabel()\r\n this.folderService.getFolderTemplate(0).then((value) => {\r\n this.folderService.getFolderTemplate(this.engagementMemoryService.getEngagementId()).then((response) => {\r\n if (response && response.length > 0) {\r\n if (value && value.length > 0) {\r\n for (let i = 0; i < value.length; i++) {\r\n //if (value[i].label != response[0].label)\r\n this.foldersList.push(value[i]);\r\n }\r\n }\r\n\r\n var count: Array=[];\r\n if (response[0].children) {\r\n let i =0;\r\n response[0].children.forEach(childNode => {\r\n if(childNode.label==undefined)\r\n {\r\n count.push(i);\r\n }\r\n i = i+1;\r\n });\r\n }\r\n \r\n count.forEach( val =>{\r\n response[0].children.pop(response[0].children[val]);\r\n });\r\n\r\n this.savedTreeStructure = { ...response[0] };\r\n if (response.length > 0 && response[0].children.length > 0) {\r\n let x = this.getFolders(response[0]);\r\n this.targetTreeData = x.children.length > 0 ? x.children : [];\r\n }\r\n }\r\n this.spinner.hide()\r\n }).catch(() => {\r\n this.spinner.hide()\r\n }).catch(() => {\r\n this.spinner.hide()\r\n })\r\n })\r\n }\r\n\r\n onFolderSelection(event) {\r\n let clonedTreeStructure = { ...this.savedTreeStructure, children: [...this.savedTreeStructure.children] };\r\n if (event.value) {\r\n let index = clonedTreeStructure.children.findIndex(t => t.label.toLowerCase() == event.value.label.toLowerCase())\r\n if (index == -1) {\r\n this.updatedTreeStructure = { ...clonedTreeStructure };\r\n let folders = this.getFolders(this.updatedTreeStructure);\r\n this.eventValue = { ...event.value, styleClass: \"childFolder\", type: \"folder\", children: [...event.value.children] };\r\n folders.children.push(this.eventValue);\r\n this.targetTreeData = folders.children\r\n }\r\n }\r\n }\r\n\r\n update() {\r\n this.spinner.show();\r\n let treeSet = { ...this.savedTreeStructure };\r\n treeSet.children.push({ ...this.eventValue, styleClass: \"childFolder\", type: \"folder\" })\r\n this.folderService.saveFolderTemplate([treeSet], this.engagementMemoryService.getEngagementId()).subscribe((res) => {\r\n if (res.status == -1) {\r\n this.messageService.add({\r\n summary: this.labelReplacer('ErrorWhileUpdatingFolderTemplate'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n } else {\r\n this.messageService.add({\r\n summary: this.labelReplacer('SuccessfullyUpdatedFolderTemplate'),\r\n detail: \"\",\r\n sticky: false,\r\n severity: 'success'\r\n });\r\n this.selectedFolder = null;\r\n this.savedTreeStructure = treeSet;\r\n }\r\n this.spinner.hide();\r\n })\r\n }\r\n\r\n loadLanguageLabel() {\r\n let englishLanguageMappings, selectedLanguageMappings: any, englishLangLabelMappings, selectedLangLabelMappings: any;\r\n return new Promise((resolve, reject) => {\r\n this.languageSerivce.mySubject.subscribe((data) => {\r\n var languageMappings = data;\r\n if (languageMappings?.length > 0) {\r\n\r\n englishLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.AddEngagement.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n if (englishLanguageMappings?.isGlobal) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.AddEngagement.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n }\r\n else {\r\n if (Number(this.selectedLanguageId) === 2) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.AddEngagement.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n }\r\n else {\r\n selectedLanguageMappings = englishLanguageMappings;\r\n selectedLangLabelMappings = englishLangLabelMappings;\r\n\r\n }\r\n }\r\n this.selectedAppLanguageJson = JSON.parse(selectedLanguageMappings.languageMappingJSON);\r\n\r\n this.defaultEnglishJson = JSON.parse(englishLanguageMappings.languageMappingJSON);\r\n\r\n this.selectedLangLabelJson = JSON.parse(selectedLangLabelMappings?.languageMappingJSON ?? englishLangLabelMappings.languageMappingJSON);\r\n this.defaultEngLangLabelJson = JSON.parse(englishLangLabelMappings.languageMappingJSON);\r\n\r\n this.islabelLoaded = true;\r\n resolve(1);\r\n }\r\n else {\r\n }\r\n });\r\n })\r\n .catch(err => {\r\n\r\n console.log(err);\r\n });\r\n }\r\n\r\n labelReplacer(labelKey): string {\r\n return this.selectedAppLanguageJson[labelKey]?.trim() ? this.selectedAppLanguageJson[labelKey] ?? 'text not found' : this.defaultEnglishJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n resetFolderStructure(e) {\r\n this.selectedFolder = null;\r\n let savedTreeClone = this.getFolders(this.savedTreeStructure);\r\n this.targetTreeData = savedTreeClone.children;\r\n }\r\n\r\n\r\n\r\n getFolders(node) {\r\n let folderTreeData = { ...node };\r\n let childfolder = [];\r\n for (let i = 0; i < folderTreeData.children.length; i++) {\r\n if (folderTreeData.children[i].type == \"folder\") {\r\n let res = this.getFolders(folderTreeData.children[i])\r\n if (res.type == \"folder\")\r\n childfolder.push({ ...res });\r\n }\r\n }\r\n return { ...folderTreeData, children: childfolder };\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { AppConfigService } from '../../../../framework/services/app-config.service';\r\n\r\n@Component({\r\n selector: 'app-language-selection',\r\n templateUrl: './language-selection.component.html',\r\n styleUrls: ['./language-selection.component.css']\r\n})\r\nexport class LanguageSelectionComponent implements OnInit {\r\n languageList:SelectItem[];\r\n constructor(private appConfigService: AppConfigService) { }\r\n\r\n ngOnInit(): void {\r\n this.appConfigService.getLanguageList().subscribe((response: any) => {\r\n if (response) {\r\n this.languageList = response.map(x => ({\r\n label: x.name,\r\n value: x.languageId\r\n }));\r\n }\r\n });\r\n }\r\n}\r\n","import { Component, OnInit, ViewChildren, QueryList, ElementRef, Input } from '@angular/core';\r\nimport { TreeNode, MessageService } from 'primeng/api';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { UploadNewDocComponent } from '../upload-new-doc/upload-new-doc.component';\r\nimport { EditDocumentComponent } from '../edit-doc/edit-doc.component';\r\nimport { DocumentManagementService } from 'src/framework/services/manage-doc.service';\r\nimport { LabelcardMgmtService } from 'src/framework/services/labelcard-mgmt.service';\r\nimport { DatePipe } from '@angular/common';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { FolderManagementService } from 'src/framework/services/folder-mgmt.service';\r\nimport { DocverHistoryService } from 'src/framework/services/docver-history.service';\r\nimport { UserService } from 'src/framework/services/userservice';\r\nimport { ModalContentComponent } from 'src/app/shared/modal-component/modal.component';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal'\r\nimport * as _ from 'lodash';\r\nimport { CategoryConstant } from 'src/app/shared/app-constants/category-constants';\r\nimport { LanguageService } from 'src/framework/services/language.service';\r\nimport { AppConfigService } from 'src/framework/services/app-config.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-manage-doc',\r\n templateUrl: './manage-doc.component.html',\r\n styleUrls: ['./manage-doc.component.css'],\r\n providers: [MessageService]\r\n})\r\n\r\nexport class ManageDocComponent implements OnInit {\r\n @Input() approvalVersionId = 0;\r\n @ViewChildren('uploadNewDocComponent') uploadNewDoc: QueryList;\r\n @ViewChildren('editDocComponent') editDoc: QueryList;\r\n @ViewChildren('ctrlAddTab') ctrlAddTab: QueryList;\r\n @ViewChildren('ctrlEditTab') ctrlEditTab: QueryList;\r\n\r\n selectedNode: TreeNode;\r\n targetTreeData: any[];\r\n showSideBar = false;\r\n showFileVersionGrid = false;\r\n docVersionList: any[] = [];\r\n gridVersionList: any[] = [];\r\n engagementDocList: any[] = [];\r\n processedDocIdList: any[] = [];\r\n cols: any[];\r\n colmns: any[];\r\n editDocVersionList: any[] = [];\r\n addTabIndex = 0;\r\n editTabIndex = 0;\r\n appLangList: any[] = [];\r\n docStatusList: any[] = [];\r\n docTypeList: any[] = [];\r\n maxSeed: number = 0;\r\n documentVersionHistoryModel: any[]\r\n showHistory = false;\r\n isApproveDisabled = false;\r\n public columnOptions: any[];\r\n exportColumns: any[];\r\n bsModalRef: BsModalRef;\r\n fileName = \"\";\r\n\r\n engagementDetail = {\r\n appLanguage: 1,\r\n engagementId: 1,\r\n engagementName: '',\r\n engStatusId: 1,\r\n engStatusName: '',\r\n engInitialDate: null,\r\n engLanguage: [{\r\n \"languageId\": 1,\r\n \"languageName\": \"English\",\r\n \"languageFlagPath\": \"../../assets/flags/English.png\"\r\n }],\r\n engLanguageFrench: [{\r\n \"languageId\": 1,\r\n \"languageName\": \"Anglaise\",\r\n \"languageFlagPath\": \"../../assets/flags/English.png\"\r\n }]\r\n }\r\n showDocVersionTypeId: number;\r\n isUnapproved: boolean = true;\r\n showEditSideBar: boolean;\r\n documentss = [];\r\n languageList:any;\r\n saveMsg: string;\r\n userDetail: any = {};\r\n isAllNonApproved: boolean = false;\r\n canApproveOtherLang: boolean = false;\r\n selectedFilePath: string;\r\n userList: any[] = [];\r\n uploadFileKey: any = null;\r\n versionGridColList: any[];\r\n selectedAppLanguage: any;\r\n selectedAppLanguageJson: any;\r\n defaultEnglishJson: any;\r\n selectedLangDocTypeJson: any;\r\n defaultEngDocTypeJson: any;\r\n selectedLangStatusJson: any;\r\n defaultEngStatusJson: any;\r\n selectedLangLabelJson: any;\r\n defaultEngLangLabelJson: any;\r\n selectedLangDateJson: any;\r\n defaultEngDateJson: any;\r\n islabelLoaded: boolean = false;\r\n languageLists=[];\r\n selectedGlobalLanguageJson: any;\r\n defaultGlobalEnglishJson: any\r\n isValid: boolean = false;\r\n inValidFieldCounter: number = 0;\r\n compactHistoryList: any[];\r\n showCompactLog: boolean = false;\r\n viewLogList: any[];\r\n\r\n\r\n constructor(private http: HttpClient, private manageDocService: DocumentManagementService,\r\n private labelCardService: LabelcardMgmtService, private spinner: NgxSpinnerService,\r\n private datePipe: DatePipe, private folderService: FolderManagementService,\r\n private messageService: MessageService, private DocService: DocverHistoryService,\r\n private modalService: BsModalService, private userService: UserService,\r\n private appConfigService: AppConfigService,\r\n private languageService: LanguageService\r\n ) {\r\n\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.fileName = \"documentVersionHistoryLogs_export_\" + new Date().getTime();\r\n if (sessionStorage.getItem('userDetail')) {\r\n this.userDetail = JSON.parse(sessionStorage.getItem('userDetail'));\r\n }\r\n \r\n this.initializeEngagementData()\r\n .then(res => {\r\n this.loadLanguageLabel()\r\n .then(res => {\r\n this.loadMasterData()\r\n .then(res =>\r\n this.getEngagementDoc()\r\n .then(res => {\r\n //this.initializeGridColumns()\r\n this.getFolderStructure();\r\n this.getLanguages()\r\n // .then(res => this.pTree.filterGlobal('', 'contains'))\r\n // .catch(err => {\r\n // console.log(err);\r\n // })\r\n })\r\n .catch(err => {\r\n console.log(err);\r\n })\r\n )\r\n .catch(err => {\r\n console.log(err);\r\n });\r\n })\r\n .catch(err => {\r\n console.log(err);\r\n });\r\n })\r\n .catch(err => {\r\n console.log(err);\r\n });\r\n }\r\n\r\n\r\n initializeEngagementData() {\r\n return new Promise((resolve, reject) => {\r\n if (sessionStorage.getItem('appLanguageList')) {\r\n this.appLangList = JSON.parse(sessionStorage.getItem('appLanguageList'));\r\n }\r\n else {\r\n this.getLanguageList();\r\n }\r\n if (sessionStorage.getItem('engagementDetail')) {\r\n this.engagementDetail = JSON.parse(sessionStorage.getItem('engagementDetail'));\r\n\r\n }\r\n resolve(1);\r\n });\r\n }\r\n\r\n initializeGridColumns() {\r\n return new Promise((resolve, reject) => {\r\n this.cols = [\r\n { field: 'statusName', header: this.labelReplacer('colStatus') },\r\n { field: 'languageName', header: this.labelReplacer('colLanguage') },\r\n { field: 'documentLink', header: this.labelReplacer('colDocument') },\r\n { field: 'documentTitle', header: this.labelReplacer('colTitle') },\r\n { field: 'documentDescription', header: this.labelReplacer('colDescription') },\r\n { field: 'documentType', header: this.labelReplacer('colType') },\r\n { field: 'documentDateStr', header: this.labelReplacer('colDate') },\r\n { field: 'authorizedByEmail', header: this.labelReplacer('colApprover') }\r\n ];\r\n this.colmns = [\r\n { field: 'docId', header: this.labelReplacer('colLogDocumentID') },\r\n { field: 'docVersionId', header: this.labelReplacer('colLogDocumentVersionID') },\r\n { field: 'languageName', header: this.labelReplacer('colLogLanguage') },\r\n { field: 'statusName', header: this.labelReplacer('colLogStatus') },\r\n { field: 'currentAuthorized', header: this.labelReplacer('colLogCurrentApproved') },\r\n { field: 'currentDraft', header: this.labelReplacer('colLogCurrentDraft') },\r\n { field: 'documentTitle', header: this.labelReplacer('colLogDocTitle') },\r\n { field: 'documentDescription', header: this.labelReplacer('colLogDocumentDesc') },\r\n { field: 'documentDate', header: this.labelReplacer('colLogDocDate') },\r\n { field: 'documentLink', header: this.labelReplacer('colLogDocLink') },\r\n { field: 'documentHash', header: this.labelReplacer('colLogDocHash') },\r\n { field: 'createdBy', header: this.labelReplacer('colLogDocCreatedBy') },\r\n { field: 'createdDate', header: this.labelReplacer('colLogCreatedDate') },\r\n { field: 'approvalRequestedByGpn', header: this.labelReplacer('colLogApprovalReqBy') },\r\n { field: 'approvalRequestedFromGpn', header: this.labelReplacer('colLogApprovalReqFrom') },\r\n { field: 'approvalRequestedStringFormat', header: this.labelReplacer('colLogApprovalReqDttm') },\r\n { field: 'authorizedByGpn', header: this.labelReplacer('colLogApprovedBy') },\r\n { field: 'authorizedStringFormat', header: this.labelReplacer('colLogApprovedDttm') },\r\n { field: 'postedDateStringFormat', header: this.labelReplacer('colLogPostedDt') },\r\n { field: 'authorizationEndedByGpn', header: this.labelReplacer('colLogApprovalEndedBy') },\r\n { field: 'authorizationEndStringFormat', header: this.labelReplacer('colLogApprovalEndDttm') },\r\n { field: 'externalViews', header: this.labelReplacer('colLogExtViews') },\r\n { field: 'logCreatedDate', header: this.labelReplacer('colLogCreatedDttm') },\r\n { field: 'logCreatedBy', header: this.labelReplacer('colLogCreatedBy') }\r\n ];\r\n\r\n this.exportColumns = this.colmns.map(col => ({ title: col.header, dataKey: col.field }));\r\n\r\n //initialize colums\r\n this.versionGridColList = [];\r\n this.versionGridColList = this.cols.map(x => ({\r\n label: x?.header,\r\n value: x\r\n }));\r\n\r\n this.columnOptions = [];\r\n this.columnOptions = this.colmns.map(x => ({\r\n label: x?.header,\r\n value: x\r\n }));\r\n\r\n resolve(1);\r\n });\r\n }\r\n\r\n loadLanguageLabel() {\r\n let englishLanguageMappings, selectedLanguageMappings: any;\r\n let englishDocTypeMappings, selectedLangDocTypeMappings: any;\r\n let englishStatusMappings, selectedLangStatusMappings: any;\r\n let englishLangLabelMappings, selectedLangLabelMappings: any;\r\n let englishDateMappings, selectedLangDateMappings: any;\r\n let englishglobalLanguageMappings, selectedglobalLanguageMappings: any;\r\n\r\n return new Promise((resolve, reject) => {\r\n if (sessionStorage.getItem('selectedLanguageId')) {\r\n this.selectedAppLanguage = 1;//JSON.parse(sessionStorage.getItem('selectedLanguageId'));\r\n }\r\n\r\n this.languageService.currentData.subscribe(data => {\r\n this.spinner.show();\r\n this.selectedAppLanguage = data.Id\r\n this.engagementDetail.appLanguage = this.selectedAppLanguage;\r\n });\r\n\r\n\r\n this.languageService.mySubject.subscribe((data) => {\r\n var languageMappings = data;\r\n if (languageMappings?.length > 0) {\r\n\r\n englishLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.ManageDocument.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishDocTypeMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.DocumentTypes.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishStatusMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Status.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishglobalLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Global.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n if (englishLanguageMappings?.isGlobal) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.ManageDocument.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangDocTypeMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.DocumentTypes.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangStatusMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Status.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedglobalLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Global.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n }\r\n else {\r\n if (Number(this.selectedAppLanguage) === 2) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.ManageDocument.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangDocTypeMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.DocumentTypes.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangStatusMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Status.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n\r\n selectedglobalLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Global.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n }\r\n else {\r\n selectedLanguageMappings = englishLanguageMappings;\r\n selectedLangDocTypeMappings = englishDocTypeMappings;\r\n selectedLangStatusMappings = englishStatusMappings;\r\n selectedLangLabelMappings = englishLangLabelMappings;\r\n selectedLangDateMappings = englishDateMappings;\r\n selectedglobalLanguageMappings = englishglobalLanguageMappings;\r\n }\r\n }\r\n\r\n this.selectedAppLanguageJson = JSON.parse(selectedLanguageMappings?.languageMappingJSON ?? englishLanguageMappings.languageMappingJSON);\r\n this.defaultEnglishJson = JSON.parse(englishLanguageMappings.languageMappingJSON);\r\n\r\n this.selectedLangDocTypeJson = JSON.parse(selectedLangDocTypeMappings?.languageMappingJSON ?? englishDocTypeMappings.languageMappingJSON);\r\n this.defaultEngDocTypeJson = JSON.parse(englishDocTypeMappings.languageMappingJSON);\r\n\r\n this.selectedLangStatusJson = JSON.parse(selectedLangStatusMappings?.languageMappingJSON ?? englishStatusMappings.languageMappingJSON);\r\n this.defaultEngStatusJson = JSON.parse(englishStatusMappings.languageMappingJSON);\r\n\r\n this.selectedLangLabelJson = JSON.parse(selectedLangLabelMappings?.languageMappingJSON ?? englishLangLabelMappings.languageMappingJSON);\r\n this.defaultEngLangLabelJson = JSON.parse(englishLangLabelMappings.languageMappingJSON);\r\n\r\n this.selectedLangDateJson = JSON.parse(selectedLangDateMappings?.languageMappingJSON ?? englishDateMappings.languageMappingJSON);\r\n this.defaultEngDateJson = JSON.parse(englishDateMappings.languageMappingJSON);\r\n\r\n this.selectedGlobalLanguageJson = JSON.parse(selectedglobalLanguageMappings.languageMappingJSON);\r\n this.defaultGlobalEnglishJson = JSON.parse(englishglobalLanguageMappings.languageMappingJSON);\r\n\r\n this.reloadDocumentData()\r\n .then(res => {\r\n this.islabelLoaded = true;\r\n this.spinner.hide();\r\n })\r\n resolve(1);\r\n }\r\n else {\r\n this.spinner.hide();\r\n }\r\n });\r\n })\r\n .catch(err => {\r\n this.spinner.hide();\r\n\r\n console.log(err);\r\n });\r\n }\r\n\r\n\r\n\r\n getLanguages() {\r\n this.appConfigService.getLanguageList().subscribe((response: any) => {\r\n if (response) {\r\n this.languageLists = response;\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n preLoadData() {\r\n\r\n return new Promise((resolve, reject) => {\r\n this.labelCardService.getLanguageList().subscribe(res => {\r\n if (res) {\r\n //success\r\n res.forEach(element => {\r\n if (element.isAppLanguage) {\r\n this.languageList.push({\r\n languageId: element.languageId,\r\n languageName: element.name,\r\n languageFlagPath: element.languagePath\r\n });\r\n }\r\n });\r\n\r\n } else {\r\n //display error\r\n //reject();\r\n }\r\n resolve(1);\r\n\r\n });\r\n })\r\n .catch(err => {\r\n console.log(err);\r\n });\r\n\r\n }\r\n\r\n reloadDocumentData() {\r\n return new Promise((resolve, reject) => {\r\n this.spinner.show();\r\n this.initializeGridColumns();\r\n this.showFileVersionGrid = false;\r\n this.showHistory = false;\r\n if (this.islabelLoaded) {\r\n this.getFolderStructure();\r\n this.spinner.hide();\r\n }\r\n this.spinner.hide();\r\n resolve(1);\r\n });\r\n\r\n }\r\n\r\n labelReplacer(labelKey): string {\r\n return this.selectedAppLanguageJson[labelKey]?.trim() ? this.selectedAppLanguageJson[labelKey] ?? 'text not found' : this.defaultEnglishJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n docTypeReplacer(labelKey): string {\r\n return this.selectedLangDocTypeJson[labelKey]?.trim() ? this.selectedLangDocTypeJson[labelKey] ?? 'text not found' : this.defaultEngDocTypeJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n\r\n activeReplacer(labelKey): string {\r\n return this.selectedGlobalLanguageJson[labelKey]?.trim() ? this.selectedGlobalLanguageJson[labelKey] ?? 'text not found' : this.defaultGlobalEnglishJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n statusReplacer(labelKey): string {\r\n return this.selectedLangStatusJson[labelKey]?.trim() ? this.selectedLangStatusJson[labelKey] ?? 'text not found' : this.defaultEngStatusJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n languageReplacer(labelKey): string {\r\n return this.selectedLangLabelJson[labelKey]?.trim() ? this.selectedLangLabelJson[labelKey] ?? 'text not found' : this.defaultEngLangLabelJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n monthReplacer(labelKey): string {\r\n let localeDt;\r\n if (labelKey) {\r\n let arr = labelKey.split(' ');\r\n if (arr?.length == 3)\r\n localeDt = arr[0] + ' ' + this.calendarReplacer(arr[1]?.toUpperCase()) + ' ' + arr[2];\r\n else if (arr?.length == 4)\r\n localeDt = arr[0] + ' ' + this.calendarReplacer(arr[1]?.toUpperCase()) + ' ' + arr[2] + ' ' + arr[3];\r\n else\r\n localeDt = labelKey;\r\n }\r\n return localeDt;\r\n }\r\n\r\n calendarReplacer(labelKey): string {\r\n return this.selectedLangDateJson[labelKey]?.trim() ? this.selectedLangDateJson[labelKey] ?? 'text not found' : this.defaultEngDateJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n dayOrMonthNameShort(name, length): string {\r\n let shortName = '';\r\n if (name?.trim()?.length == 0)\r\n shortName = 'Text not found';\r\n else if (name?.trim()?.length > 0 && name?.trim()?.length < length)\r\n shortName = name;\r\n else\r\n shortName = name.substr(0, length);\r\n return shortName;\r\n }\r\n\r\n getFolderStructure() {\r\n return new Promise((resolve, reject) => {\r\n this.spinner.show();\r\n this.folderService.getFolderTemplate(this.engagementDetail.engagementId).then(files => {\r\n var count: Array=[];\r\n if (files.length > 0 && files[0].children) {\r\n let i =0;\r\n files[0].children.forEach(childNode => {\r\n if(childNode ==null || childNode.label==undefined)\r\n {\r\n count.push(i);\r\n }\r\n i = i+1;\r\n });\r\n }\r\n \r\n count.forEach( val =>{\r\n files[0].children.splice(val,1);\r\n });\r\n \r\n this.targetTreeData = files.length > 0 ? files : [];\r\n this.preProcessTree();\r\n this.collapseAll();\r\n this.checkForApprovalScreenRedirect();\r\n this.spinner.hide();\r\n });\r\n resolve(1);\r\n })\r\n .catch(err => {\r\n this.spinner.hide();\r\n console.log(err);\r\n });\r\n\r\n }\r\n\r\n checkForApprovalScreenRedirect() {\r\n if (this.approvalVersionId != 0 && this.approvalVersionId != undefined && this.approvalVersionId !== null) {\r\n let searchDoc = this.findDocument(this.approvalVersionId)\r\n\r\n if (searchDoc !== null && searchDoc !== undefined) {\r\n this.showFileVersionGrid = true;\r\n this.selectedNode = searchDoc;\r\n if (this.selectedNode.data != null && this.selectedNode.data != undefined) {\r\n let parentNode = this.findNode(this.selectedNode.data[0]?.parentId);\r\n parentNode.expanded = true;\r\n this.viewFileVersion(searchDoc);\r\n }\r\n }\r\n // if (this.documentss.length > 0) {\r\n // this.viewTopicFileVersion(this.documentss[0]);\r\n // }\r\n }\r\n }\r\n\r\n preProcessTree() {\r\n this.processedDocIdList = [];\r\n\r\n return new Promise((resolve, reject) => {\r\n this.targetTreeData.forEach(x => {\r\n this.preProcessTreeRecursive(x)\r\n });\r\n resolve(1);\r\n });\r\n\r\n }\r\n\r\n preProcessTreeRecursive(node: TreeNode) {\r\n if (node != null && node != undefined) {\r\n if (node.type.toLowerCase() === 'file') {\r\n node.draggable = true;\r\n node.droppable = false;\r\n this.toggleFileDisplay(node as TreeNode);\r\n }\r\n else if (node.type.toLowerCase() === 'folder' || node.type.toLowerCase() === 'structure') {\r\n node.draggable = false;\r\n node.droppable = true;\r\n this.sortNode(node);\r\n }\r\n if (node.children) {\r\n node.children.forEach(childNode => {\r\n this.preProcessTreeRecursive(childNode);\r\n });\r\n }\r\n }\r\n\r\n }\r\n\r\n displayFolderLabel(node: TreeNode): string {\r\n\r\n let primaryLangId, otherPrimaryLangId = 0;\r\n let nodeLangList: any[] = [];\r\n let langIndex = -1;\r\n let folderLabel = '';\r\n\r\n if (node != null && node != undefined) {\r\n if (this.engagementDetail.appLanguage == 2) {\r\n primaryLangId = 2;\r\n otherPrimaryLangId = 1;\r\n }\r\n else //default is english\r\n {\r\n primaryLangId = 1;\r\n otherPrimaryLangId = 2;\r\n }\r\n\r\n folderLabel = node?.label;\r\n nodeLangList = node?.data[0]?.language;\r\n\r\n if (nodeLangList?.length > 0) {\r\n if ((langIndex = nodeLangList.findIndex(x => Number(x.languageId) === Number(primaryLangId))) > -1) {\r\n if (nodeLangList[langIndex]?.folderName?.trim() !== ''\r\n && nodeLangList[langIndex]?.folderName !== null\r\n && nodeLangList[langIndex]?.folderName !== undefined) {\r\n folderLabel = nodeLangList[langIndex]?.folderName;\r\n }\r\n else {\r\n if ((langIndex = nodeLangList.findIndex(x => Number(x.languageId) === Number(otherPrimaryLangId))) > -1) {\r\n if (nodeLangList[langIndex]?.folderName?.trim() !== ''\r\n && nodeLangList[langIndex]?.folderName !== null\r\n && nodeLangList[langIndex]?.folderName !== undefined) {\r\n folderLabel = nodeLangList[langIndex]?.folderName;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return folderLabel;\r\n\r\n }\r\n\r\n // Start function\r\n findNode(nodeKey): TreeNode {\r\n\r\n var found = false;\r\n let foundNode: TreeNode = {};\r\n\r\n function recurseFindParent(searchTree) {\r\n\r\n for (var i = 0; i < searchTree.length; i++) {\r\n\r\n // Found the category!\r\n if (Number(searchTree[i].key) === Number(nodeKey)) {\r\n foundNode = searchTree[i];\r\n found = true;\r\n break;\r\n\r\n // Did not match...\r\n } else {\r\n // Are there children / sub-categories? YES\r\n if (searchTree[i].children.length > 0) {\r\n recurseFindParent(searchTree[i].children);\r\n if (found) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n recurseFindParent(this.targetTreeData);\r\n\r\n return foundNode;\r\n }\r\n\r\n\r\n toggleFileDisplay(node: TreeNode) {\r\n let primaryLangId, otherPrimaryLangId = 0;\r\n let currentDocId = 0;\r\n let treeVersionList: any[] = [];\r\n let detailVersionList: any[] = [];\r\n let matchFound = false;\r\n\r\n if (this.engagementDetail.appLanguage == 2) {\r\n primaryLangId = 2;\r\n otherPrimaryLangId = 1;\r\n }\r\n else //default is english\r\n {\r\n primaryLangId = 1;\r\n otherPrimaryLangId = 2;\r\n }\r\n\r\n if (!this.processedDocIdList?.includes(node?.data[0]?.docId)) {\r\n currentDocId = node?.data[0]?.docId;\r\n this.processedDocIdList.push(currentDocId);\r\n\r\n let parentNode = this.findNode(node.data[0]?.parentId);\r\n //fetch all versions for current docid from tree\r\n treeVersionList = parentNode?.children?.filter(x => Number(x.data[0]?.docId) === Number(currentDocId));\r\n detailVersionList = this.engagementDocList?.filter(x => Number(x.docId) === Number(currentDocId))[0]?.documentVersionList;\r\n\r\n if (treeVersionList && detailVersionList) {\r\n\r\n if (treeVersionList?.length === detailVersionList?.length) {\r\n\r\n matchFound = this.isDisplayVersionInSelectedLang(treeVersionList, detailVersionList, primaryLangId);\r\n\r\n if (!matchFound) {\r\n this.isDisplayVersionInSelectedLang(treeVersionList, detailVersionList, otherPrimaryLangId);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n isDisplayVersionInSelectedLang(treeVersionList: any[], detailVersionList: any[], primaryLangId): boolean {\r\n let unAuthList: any[] = [];\r\n let authIndex, draftIndex, unAuthIndex = -1;\r\n let fileStyle = [];\r\n const isAnyAuthorized = (x) => (x.currentAuthorized && !x.currentDraft);\r\n const isAnyDraft = (x) => (!x.currentAuthorized && x.currentDraft\r\n && x.approvalRequestedByGpn === null && x.approvalRequestedFromGpn === null);\r\n const isAnyAuthPending = (x) => (!x.currentAuthorized && x.currentDraft\r\n && x.approvalRequestedByGpn != null && x.approvalRequestedFromGpn != null\r\n && x.authorizedByGpn === null && x.authorizedDateTime === null);\r\n\r\n if (!detailVersionList.some(isAnyAuthorized)) {\r\n fileStyle.push('G');\r\n if (detailVersionList.some(isAnyAuthPending)) {\r\n fileStyle.push('A');\r\n }\r\n }\r\n else if (detailVersionList.some(isAnyAuthPending)) {\r\n fileStyle.push('A');\r\n }\r\n else if (detailVersionList.some(isAnyDraft)) {\r\n fileStyle.push('D');\r\n }\r\n\r\n\r\n //check for current authorized version in selected language\r\n authIndex = detailVersionList?.findIndex(x => x.currentAuthorized\r\n && !x.currentDraft && Number(x.languageId) === Number(primaryLangId));\r\n //check for current draft version in selected language\r\n draftIndex = detailVersionList?.findIndex(x => !x.currentAuthorized\r\n && x.currentDraft && Number(x.languageId) === Number(primaryLangId));\r\n //check for unauthorized versions in selected language\r\n unAuthList = detailVersionList?.filter(x => !x.currentAuthorized\r\n && !x.currentDraft && Number(x.languageId) === Number(primaryLangId))?.sort(this.date_sort_desc);\r\n if (authIndex > -1) {\r\n this.setFileToggleClass(treeVersionList, detailVersionList, authIndex, fileStyle);\r\n }\r\n else if (draftIndex > -1) {\r\n this.setFileToggleClass(treeVersionList, detailVersionList, draftIndex, fileStyle);\r\n }\r\n else {\r\n if (unAuthList.length > 0) {\r\n unAuthIndex = detailVersionList.indexOf(unAuthList[0]);\r\n this.setFileToggleClass(treeVersionList, detailVersionList, unAuthIndex, fileStyle);\r\n\r\n }\r\n }\r\n\r\n if (authIndex === -1 && draftIndex === -1 && unAuthIndex === -1) {\r\n return false;\r\n }\r\n return true;\r\n\r\n }\r\n\r\n setFileToggleClass(treeVersionList, detailVersionList, versionIndex, fileStyle) {\r\n treeVersionList.forEach(x => {\r\n if (Number(x?.data[0]?.docVersionId) === Number(detailVersionList[versionIndex]?.docVersionId)) {\r\n x['styleClass'] = 'fileClass';\r\n x['docId'] = detailVersionList[versionIndex]?.docId;\r\n x.data[0].showDraftMark = false;\r\n x.data[0].showRedMark = false;\r\n\r\n //Add additonal styles to visible file\r\n if (fileStyle.length > 0) {\r\n fileStyle.forEach(style => {\r\n if (style === 'G') {\r\n x['styleClass'] = 'fileClass grayFileClass';\r\n }\r\n if (style === 'D') {\r\n x.data[0].showDraftMark = true;\r\n }\r\n if (style === 'A') {\r\n x.data[0].showRedMark = true;\r\n }\r\n });\r\n }\r\n\r\n }\r\n else {\r\n x['styleClass'] = 'fileClass hideFileClass';\r\n x['docId'] = detailVersionList[versionIndex]?.docId;\r\n }\r\n });\r\n }\r\n\r\n get globalIdentitySeed() {\r\n\r\n if (this.targetTreeData.length > 0) {\r\n\r\n this.targetTreeData.forEach(node => {\r\n this.getMaxSeedValue(node);\r\n });\r\n }\r\n\r\n return this.maxSeed;\r\n }\r\n\r\n set globalIdentitySeed(value) {\r\n this.maxSeed = value;\r\n }\r\n\r\n getMaxSeedValue(node: TreeNode) {\r\n\r\n if (this.maxSeed < Number(node.key)) {\r\n this.maxSeed = Number(node.key);\r\n }\r\n if (node.children) {\r\n node.children.forEach(childNode => {\r\n this.getMaxSeedValue(childNode);\r\n });\r\n }\r\n\r\n }\r\n\r\n getStatusPillClass(statusId: Number) {\r\n\r\n let pillClass = '';\r\n if (statusId) {\r\n if (statusId === 2 || statusId === 4 || statusId === 7)\r\n pillClass = 'pill pill--approved m-0';\r\n else if (statusId === 1)\r\n pillClass = 'pill pill--closed m-0';\r\n else if (statusId === 3 || statusId === 6)\r\n pillClass = 'pill pill--failed m-0';\r\n // else if (statusId === 'authorized')\r\n // pillClass = 'pill pill--hold m-0';\r\n }\r\n\r\n return pillClass;\r\n }\r\n\r\n loadMasterData() {\r\n return new Promise((resolve, reject) => {\r\n this.getDocType()\r\n .then(res =>\r\n this.getDocStatus()\r\n .then(res =>\r\n this.getUserList()\r\n .then(res =>\r\n resolve(1))\r\n ))\r\n .catch(error => console.log(error));\r\n });\r\n\r\n\r\n }\r\n\r\n getUserList() {\r\n return new Promise((resolve, reject) => {\r\n this.userService.GetUserList().subscribe(res => {\r\n if (res.status === 0) {\r\n //success\r\n this.userList = res.data;\r\n } else {\r\n //display error\r\n }\r\n resolve(1);\r\n });\r\n });\r\n }\r\n getDocStatus() {\r\n\r\n return new Promise((resolve, reject) => {\r\n this.manageDocService.getDocStatus().subscribe(res => {\r\n if (res) {\r\n //success\r\n this.docStatusList = res.data;\r\n } else {\r\n //display error\r\n }\r\n resolve(1);\r\n });\r\n });\r\n }\r\n\r\n getDocType() {\r\n return new Promise((resolve, reject) => {\r\n this.manageDocService.getDocType().subscribe(res => {\r\n if (res) {\r\n //success\r\n this.docTypeList = res.data;\r\n } else {\r\n //display error\r\n }\r\n resolve(1);\r\n });\r\n });\r\n\r\n }\r\n\r\n getEngagementDoc() {\r\n return new Promise((resolve, reject) => {\r\n this.manageDocService.getEngagementDocument(this.engagementDetail).subscribe(res => {\r\n if (res) {\r\n //success\r\n this.engagementDocList = res.data;\r\n } else {\r\n //display error\r\n }\r\n resolve(1);\r\n });\r\n });\r\n }\r\n\r\n toggleBack() {\r\n this.showHistory = false;\r\n }\r\n\r\n getLanguageList() {\r\n return new Promise((resolve, reject) => {\r\n this.labelCardService.getLanguageList().subscribe(res => {\r\n if (res) {\r\n //success\r\n // this.appLangList = res;\r\n res.forEach(element => {\r\n if (element.isAppLanguage) {\r\n this.appLangList.push({\r\n languageId: element.languageId,\r\n languageName: element.name,\r\n languageFlagPath: element.languagePath\r\n });\r\n }\r\n\r\n });\r\n } else {\r\n //display error\r\n }\r\n resolve(1);\r\n });\r\n });\r\n }\r\n\r\n sortTree() {\r\n this.targetTreeData.sort((a, b) => a.label?.localeCompare(b.label));\r\n this.targetTreeData.forEach(element => {\r\n element.children?.sort((a, b) => a.label?.localeCompare(b.label));\r\n });\r\n\r\n\r\n }\r\n\r\n getFiles() {\r\n return this.http.get('../../../../assets/files/treedata.js')\r\n .toPromise()\r\n .then(res => res.data);\r\n }\r\n\r\n nodeSelect(event) {\r\n let selectedNodeCopy: TreeNode = {};\r\n this.showHistory = false;\r\n\r\n this.selectedNode = event?.node;\r\n\r\n if (event?.node?.type === 'file') {\r\n this.showFileVersionGrid = true;\r\n selectedNodeCopy = _.cloneDeep(this.selectedNode);\r\n this.setAbsoluteFilePath(selectedNodeCopy, 'edit');\r\n this.viewFileVersion(event.node);\r\n }\r\n else {\r\n this.showFileVersionGrid = false;\r\n }\r\n }\r\n\r\n setAbsoluteFilePath(node: TreeNode, operation: string) {\r\n let filePath = '';\r\n this.selectedFilePath = '';\r\n if (operation == 'edit') {\r\n node = node.parent;\r\n }\r\n while (node?.parent !== undefined && node?.parent !== null) {\r\n filePath = node.label + '/' + filePath;\r\n node = node.parent;\r\n }\r\n\r\n this.selectedFilePath = filePath;\r\n }\r\n\r\n nodeDrop(event) {\r\n if(event != null || event != undefined)\r\n {\r\n \r\n let sourceNode: TreeNode = event.dragNode == null || event.dragNode == undefined ? null : event.dragNode.parent;\r\n let dragNode: TreeNode = event.dragNode;\r\n let targetNode: TreeNode = null;\r\n let versionNodeList: TreeNode[] = [];\r\n let isReshuffle = false;\r\n let versionIndex = -1;\r\n \r\n \r\n\r\n if ('index' in event) {\r\n targetNode = event.dropNode;\r\n }\r\n else if (event?.hasOwnProperty('dropIndex') && (event.dropNode != null || event.dropNode != undefined)) {\r\n targetNode = event.dropNode?.parent;\r\n }\r\n\r\n if(targetNode != null && targetNode != undefined){\r\n if (sourceNode.key === targetNode.key) {\r\n isReshuffle = true;\r\n }\r\n if (!isReshuffle) {\r\n dragNode.data[0].parentId = targetNode.key;\r\n if ('parent' in dragNode) {\r\n dragNode.parent = targetNode;\r\n }\r\n //fetch other versions of the same docid\r\n if((sourceNode != null && sourceNode != undefined) && (sourceNode.children != null && sourceNode.children != undefined && sourceNode.children.length > 0 ))\r\n versionNodeList = sourceNode?.children.filter(x => (x != null && x != undefined) && x?.type.toLowerCase() === 'file'\r\n && (+x?.data[0]?.docId === +dragNode?.data[0]?.docId));\r\n \r\n if (versionNodeList != null && versionNodeList != undefined && versionNodeList.length > 0) {\r\n versionNodeList.forEach(versionNode => {\r\n if (+versionNode.key !== +dragNode.key) {\r\n versionIndex = sourceNode?.children.indexOf(versionNode);\r\n if (versionIndex > -1) {\r\n \r\n sourceNode?.children.splice(versionIndex, 1);\r\n versionNode.data[0].parentId = targetNode.key;\r\n if (targetNode.children.indexOf(versionNode) === -1) {\r\n \r\n targetNode.children.push(versionNode);\r\n if(sourceNode ==null && versionNode.parent.key != targetNode.key)\r\n {\r\n sourceNode = versionNode.parent\r\n }\r\n if(versionNode.parent.key != targetNode.key){\r\n versionNode.parent = null;\r\n }\r\n \r\n \r\n }\r\n }\r\n }\r\n });\r\n \r\n }\r\n }\r\n \r\n this.saveTree(false);\r\n event.dropNode.expanded = true;\r\n }\r\n\r\n //check for re-position in same folder\r\n \r\n }\r\n }\r\n\r\n saveDragDropChanges(document) {\r\n this.spinner.show();\r\n this.manageDocService.moveDocFolder(document).subscribe(res => {\r\n if (res.status === 0) {\r\n //success\r\n this.saveTree(false);\r\n } else {\r\n //display error\r\n this.messageService.add({\r\n summary: this.labelReplacer('msgTypeErrorDragDrop'),\r\n detail: res.message,\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n this.spinner.hide();\r\n\r\n });\r\n }\r\n\r\n expandAll() {\r\n this.targetTreeData.forEach(node => {\r\n this.expandRecursive(node, true);\r\n });\r\n }\r\n\r\n collapseAll() {\r\n this.targetTreeData.forEach(node => {\r\n this.expandRecursive(node, false);\r\n });\r\n if(this.targetTreeData.length>0){\r\n this.targetTreeData[0].expanded = true;\r\n }\r\n }\r\n\r\n expandRecursive(node: TreeNode, isExpand: boolean) {\r\n node.expanded = isExpand;\r\n if (node.children) {\r\n node.children.forEach(childNode => {\r\n this.expandRecursive(childNode, isExpand);\r\n });\r\n }\r\n }\r\n\r\n getFileIcon(node: TreeNode) {\r\n let fileType = node.data[0]?.fileType?.toLowerCase();\r\n\r\n //attach file icon based on file type\r\n if (fileType === '.pdf') {\r\n node.data[0].fileTypeIcon = 'picture_as_pdf';\r\n node.data[0].fileIconStyle = '#E0362C';\r\n }\r\n else if (fileType === '.doc' || fileType === '.docx' || fileType === '.dot'\r\n || fileType === '.txt') {\r\n node.data[0].fileTypeIcon = 'description';\r\n node.data[0].fileIconStyle = '#1777CF';\r\n }\r\n else if (fileType === '.xls' || fileType === '.xlsx' || fileType === '.xlsb'\r\n || fileType === '.csv') {\r\n node.data[0].fileTypeIcon = 'insert_chart';\r\n node.data[0].fileIconStyle = '#189D3E';\r\n }\r\n else if (fileType === '.jpg' || fileType === '.jpeg' || fileType === '.png'\r\n || fileType === '.tif') {\r\n node.data[0].fileTypeIcon = 'insert_photo';\r\n node.data[0].fileIconStyle = '#FF6D00';\r\n }\r\n else {\r\n node.data[0].fileTypeIcon = 'help';\r\n }\r\n\r\n\r\n }\r\n\r\n getFileLabel(node: TreeNode) {\r\n let nodeLabel = '';\r\n let docDate = '';\r\n let fileSizeInMb = 0;\r\n if (node !== null && node != undefined) {\r\n nodeLabel += node.label + ' - ';\r\n if (node.data[0]?.documentDate !== null && node.data[0]?.documentDate !== undefined) {\r\n docDate = new Date(node.data[0]?.documentDate)?.toUTCString();\r\n }\r\n else {\r\n docDate = new Date(node.data[0]?.createdDTTM)?.toUTCString();\r\n }\r\n\r\n if (docDate !== 'Invalid Date')\r\n docDate = this.monthReplacer(this.datePipe.transform(docDate, \"dd MMM yyyy\"));\r\n nodeLabel += docDate + ' - '\r\n\r\n fileSizeInMb = Math.round((node.data[0]?.fileSize / 1024));\r\n\r\n nodeLabel += fileSizeInMb + ' KB';\r\n\r\n\r\n return nodeLabel;\r\n }\r\n }\r\n\r\n uploadFile(node) {\r\n this.uploadFileKey = node?.key ?? null;\r\n this.setAbsoluteFilePath(node, 'add');\r\n this.showSideBar = true;\r\n }\r\n\r\n getSavedDoc(emitSaveVersion) {\r\n\r\n this.spinner.show();\r\n let emitDocData = emitSaveVersion.versionData;\r\n this.showSideBar = false;\r\n if (emitDocData) {\r\n\r\n //add uploaded file to tree json\r\n this.selectedNode.children.push({\r\n label: emitDocData.documentTitle,\r\n key: Date.now().toString(),\r\n type: \"file\",\r\n data: [{\r\n parentId: this.selectedNode.key,\r\n docId: emitDocData.docId,\r\n docVersionId: emitDocData.docVersionId,\r\n languageId: emitDocData.languageId,\r\n isFileUploaded: emitDocData.isFileUploaded,\r\n documentDate: emitDocData.documentDate,\r\n createdDTTM: new Date(emitDocData.createdDate)?.toUTCString(),\r\n fileSize: emitDocData.fileLength, //IN MB Math.ceil((emitDocData.fileLength/Math.pow(1024,2)))\r\n fileType: emitDocData.fileType,\r\n fileTypeIcon: '',\r\n fileIconStyle: '#000',\r\n showRedMark: false,\r\n showDraftMark: false\r\n }],\r\n styleClass: \"fileClass\",\r\n children: [],\r\n draggable: true\r\n } as TreeNode);\r\n\r\n this.sortNode(this.selectedNode);\r\n this.selectedNode.expanded = true;\r\n\r\n // //auto save tree with new file added\r\n // this.saveMsg = this.labelReplacer('msgSuccessAddDoc');\r\n if (emitSaveVersion?.saveType?.toLowerCase() === 'save') {\r\n this.saveMsg = this.labelReplacer('msgSuccessAddDoc');\r\n }\r\n else if (emitSaveVersion?.saveType?.toLowerCase() === 'other') {\r\n this.saveMsg = this.labelReplacer('msgSuccessDocReqApproval');\r\n }\r\n else if (emitSaveVersion?.saveType?.toLowerCase() === 'self') {\r\n this.saveMsg = this.labelReplacer('msgSuccessDocApproval');\r\n }\r\n }\r\n\r\n this.refreshDocTree();\r\n\r\n }\r\n\r\n validateTree() {\r\n\r\n if (this.targetTreeData.length > 0) {\r\n this.inValidFieldCounter = 0; //reset counter\r\n this.targetTreeData.forEach(node => {\r\n this.checkTreeRecursive(node);\r\n });\r\n\r\n this.inValidFieldCounter > 0 ? this.isValid = false : this.isValid = true;\r\n }\r\n }\r\n\r\n checkTreeRecursive(node: TreeNode) {\r\n if (node == undefined || node == null || typeof node == 'undefined') {\r\n this.inValidFieldCounter++;\r\n return;\r\n }\r\n else \r\n {\r\n if (node.children == undefined || node.children == null)\r\n {\r\n this.inValidFieldCounter++;\r\n return;\r\n }\r\n else {\r\n node.children.forEach(childNode => {\r\n this.checkTreeRecursive(childNode);\r\n });\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n saveTree(showMsg) {\r\n\r\n this.spinner.show();\r\n this.validateTree();\r\n if (this.isValid) {\r\n this.folderService.saveFolderTemplate(this.targetTreeData, this.engagementDetail.engagementId).subscribe(res => {\r\n if (res.status === 0) {\r\n //success\r\n if (showMsg) {\r\n this.messageService.add({\r\n summary: this.labelReplacer('msgTypeSuccess'),\r\n detail: this.saveMsg,\r\n sticky: false,\r\n severity: 'success'\r\n });\r\n }\r\n\r\n } else {\r\n //display error\r\n this.messageService.add({\r\n summary: this.labelReplacer('msgTypeError'),\r\n detail: res.message,\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n\r\n this.spinner.hide();\r\n\r\n });\r\n }\r\n else {\r\n this.spinner.hide();\r\n this.messageService.add({\r\n summary: this.labelReplacer('msgErrorType'),\r\n detail: this.labelReplacer('msgTypeErrorDragDrop'),\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n }\r\n\r\n disableDelete(rowData) {\r\n let isDisabled = true;\r\n let otherPrimaryLang = 0;\r\n const isDraftInOpl = (x) => (Number(x.languageId) === Number(otherPrimaryLang) && Number(x.statusId) === 1);\r\n const isOtherLangDraftExist = (x) => (Number(x.languageId) !== 1 && Number(x.languageId) !== 2 && Number(x.statusId) === 1);\r\n\r\n if (Number(rowData['statusId']) === 1) {\r\n //allow delete if only one draft version exists for docid\r\n if (this.docVersionList.length == 1)\r\n isDisabled = false;\r\n else {\r\n if (Number(rowData['languageId']) === 1) { //english\r\n otherPrimaryLang = 2; //french\r\n }\r\n else if (Number(rowData['languageId']) === 2)//french\r\n {\r\n otherPrimaryLang = 1; //english\r\n }\r\n\r\n if (Number(rowData['languageId']) === 1 || Number(rowData['languageId']) === 2) {\r\n //check if OPL draft exists\r\n if (this.docVersionList.findIndex(isDraftInOpl) > -1) {\r\n isDisabled = false;\r\n }\r\n else {\r\n //check if draft exists in any other language\r\n if (this.docVersionList.some(isOtherLangDraftExist)) {\r\n isDisabled = true;\r\n }\r\n else {\r\n isDisabled = false;\r\n }\r\n }\r\n\r\n }\r\n else {\r\n isDisabled = false;\r\n }\r\n }\r\n\r\n }\r\n return isDisabled;\r\n }\r\n\r\n\r\n\r\n\r\n editDocVersion() {\r\n this.spinner.show();\r\n return new Promise((resolve, reject) => {\r\n\r\n this.showEditSideBar = true;\r\n this.editDocVersionList = [];\r\n this.computeDocPerLang()\r\n .then(res => this.spinner.hide())\r\n .catch((error) => {\r\n console.log(error);\r\n this.spinner.hide();\r\n });\r\n resolve(1);\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n this.spinner.hide();\r\n });\r\n }\r\n\r\n computeDocPerLang() {\r\n\r\n return new Promise((resolve, reject) => {\r\n\r\n let docByLangList: any[];\r\n let nonDraftIndex = -1;\r\n let draftIndex = -1;\r\n let editDocLangList: any[] = [];\r\n let showDraftButton: boolean = false;\r\n let showDraftIcon: boolean = false;\r\n let showPendingDraftIcon = false;\r\n this.canApproveOtherLang = false;\r\n\r\n\r\n const isAnyNonDraft = (x) => ((!x.currentAuthorized && !x.currentDraft)\r\n || (x.currentAuthorized && !x.currentDraft));\r\n const isApprovedInPrimaryLang = (x) => ((x.languageId === 1 || x.languageId === 2) && x.currentAuthorized && !x.currentDraft);\r\n\r\n this.canApproveOtherLang = this.gridVersionList.some(isApprovedInPrimaryLang);\r\n\r\n this.isAllNonApproved = this.gridVersionList.every(x => !x.currentAuthorized);\r\n if (this.gridVersionList.length > 0) {\r\n this.engagementDetail.engLanguage.forEach(engLang => {\r\n docByLangList = this.gridVersionList.filter(x => Number(x.languageId) === Number(engLang.languageId));\r\n\r\n if (docByLangList && docByLangList.length > 0) {\r\n //check for non draft doc if any to show on LHS for language tab\r\n if ((nonDraftIndex = docByLangList.findIndex(isAnyNonDraft)) > -1) {\r\n showDraftButton = true;\r\n editDocLangList.push(\r\n docByLangList[nonDraftIndex]\r\n );\r\n }\r\n\r\n //check for existing draft (if any)\r\n if ((draftIndex = docByLangList.findIndex(x => Number(x.statusId) === 1)) > -1) {\r\n showDraftButton = false;\r\n showDraftIcon = true;\r\n if (docByLangList[draftIndex].isPendingApproval) {\r\n showPendingDraftIcon = true;\r\n showDraftIcon = false;\r\n }\r\n editDocLangList.push(\r\n docByLangList[draftIndex]\r\n );\r\n }\r\n\r\n }\r\n else {\r\n editDocLangList.push({\r\n approvalRequestedByGpn: null,\r\n approvalRequestedDateTime: null,\r\n approvalRequestedFromEmail: null,\r\n approvalRequestedFromGpn: null,\r\n authorizationEndDateTime: null,\r\n authorizationEndedByGpn: null,\r\n authorizedByGpn: null,\r\n authorizedDateTime: null,\r\n cloneFilePath: null,\r\n createdBy: null,\r\n createdByGpn: null,\r\n createdDate: null,\r\n currentAuthorized: false,\r\n currentDraft: true,\r\n docId: this.gridVersionList[0].docId,\r\n docVersionId: 0,\r\n documentDate: null,\r\n documentDescription: null,\r\n documentHash: null,\r\n documentLink: null,\r\n documentTitle: null,\r\n documentType: this.gridVersionList[0]?.documentType,\r\n documentTypeId: this.gridVersionList[0]?.documentTypeId,\r\n externalViews: null,\r\n fileLength: 0,\r\n fileStream: null,\r\n fileType: null,\r\n isFileUploaded: false,\r\n isPendingApproval: false,\r\n languageId: engLang.languageId,\r\n languageName: engLang.languageName,\r\n modifiedBy: null,\r\n modifiedDate: null,\r\n postedDate: null,\r\n status: null,\r\n statusId: 1,\r\n statusName: 'Draft'\r\n })\r\n }\r\n\r\n //pending check for authorized doc\r\n\r\n this.editDocVersionList.push(\r\n {\r\n languageId: engLang.languageId,\r\n languageName: engLang.languageName,\r\n languageDocList: editDocLangList,\r\n showDraftButton: showDraftButton,\r\n showDraftIcon: showDraftIcon,\r\n showPendingDraftIcon: showPendingDraftIcon\r\n }\r\n )\r\n\r\n //reset indices\r\n editDocLangList = [];\r\n draftIndex = -1;\r\n nonDraftIndex = -1;\r\n showDraftButton = false;\r\n showDraftIcon = false;\r\n showPendingDraftIcon = false;\r\n\r\n });\r\n }\r\n resolve(1);\r\n })\r\n .catch(error => {\r\n console.log(error);\r\n });\r\n }\r\n\r\n viewFileVersion(fileNode) {\r\n this.spinner.show();\r\n if (fileNode?.data) {\r\n this.manageDocService.getDocVersionByDocId(fileNode.data[0]).subscribe(res => {\r\n if (res?.data) {\r\n //success\r\n this.docVersionList = res.data['documentVersionList'];\r\n this.showDocVersionTypeId = res.data['documentTypeId'];\r\n this.formatVersionList();\r\n } else {\r\n //display error\r\n this.messageService.add({\r\n summary: this.labelReplacer('msgTypeErrorDocVersion'),\r\n detail: res.message,\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n this.spinner.hide();\r\n\r\n });\r\n }\r\n else {\r\n this.spinner.hide();\r\n\r\n this.messageService.add({\r\n summary: this.labelReplacer('msgTypeErrorDocVersion'),\r\n detail: '',\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n\r\n\r\n }\r\n\r\n viewTopicFileVersion(fileNode) {\r\n this.spinner.show();\r\n if (fileNode) {\r\n this.manageDocService.getDocVersionByDocId(fileNode).subscribe(res => {\r\n if (res?.data) {\r\n //success\r\n this.docVersionList = res.data['documentVersionList'];\r\n this.showDocVersionTypeId = res.data['documentTypeId'];\r\n this.formatVersionList();\r\n } else {\r\n //display error\r\n this.messageService.add({\r\n summary: this.labelReplacer('msgTypeErrorDocVersion'),\r\n detail: res.message,\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n this.spinner.hide();\r\n\r\n });\r\n }\r\n else {\r\n this.spinner.hide();\r\n\r\n this.messageService.add({\r\n summary: this.labelReplacer('msgTypeErrorDocVersion'),\r\n detail: '',\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n getCompactHistory() {\r\n this.compactHistoryList = [];\r\n let cloneHistory = [];\r\n let processedVersionList = [];\r\n if (this.documentVersionHistoryModel?.length > 0) {\r\n cloneHistory = _.cloneDeep(this.documentVersionHistoryModel);\r\n\r\n cloneHistory.forEach(x => {\r\n if (!processedVersionList.includes(x.docVersionId)) {\r\n this.compactHistoryList.push(x);\r\n processedVersionList.push(x.docVersionId);\r\n }\r\n });\r\n\r\n this.formatHistoryList(this.compactHistoryList);\r\n }\r\n }\r\n\r\n\r\n\r\n getDocumentsHistory(fileNode) {\r\n return new Promise((resolve, reject) => {\r\n\r\n this.spinner.show();\r\n var docId = fileNode.data[0].docId;\r\n this.DocService.getDocVersionHistoryList(docId)\r\n .subscribe\r\n (\r\n (resp) => {\r\n this.documentVersionHistoryModel = resp;\r\n if (this.documentVersionHistoryModel.length > 0) {\r\n this.getCompactHistory();\r\n this.formatHistoryList(this.documentVersionHistoryModel);\r\n resolve(1);\r\n this.spinner.hide();\r\n }\r\n else{\r\n this.spinner.hide();\r\n }\r\n }\r\n );\r\n });\r\n }\r\n\r\n formatHistoryList(historyList) {\r\n historyList.forEach(elements => {\r\n elements.statusName = this.statusReplacer(elements.statusId);\r\n elements.languagePath = this.appLangList.filter(x=> Number(x.languageId)==Number(elements.languageId))[0]?.languageFlagPath;\r\n elements.languageName = this.languageReplacer(elements.languageName);\r\n elements.createdDate = this.monthReplacer(this.datePipe.transform(elements.createdDate, 'dd MMM yyyy HH:mm:ss'));\r\n elements.logCreatedDate = this.monthReplacer(this.datePipe.transform(elements.logCreatedDate, 'dd MMM yyyy HH:mm:ss'));\r\n elements.documentDate = this.monthReplacer(this.datePipe.transform(elements.documentDate, 'dd MMM yyyy'));\r\n elements.approvalRequestedStringFormat = this.monthReplacer(this.datePipe.transform(elements.approvalRequestedDateTime, 'dd MMM yyyy HH:mm:ss'));\r\n elements.authorizedStringFormat = this.monthReplacer(this.datePipe.transform(elements.authorizedDateTime, 'dd MMM yyyy HH:mm:ss'));\r\n elements.authorizationEndStringFormat = this.monthReplacer(this.datePipe.transform(elements.authorizationEndDateTime, 'dd MMM yyyy HH:mm:ss'));\r\n elements.postedDateStringFormat = this.monthReplacer(this.datePipe.transform(elements.postedDate, 'dd MMM yyyy HH:mm:ss'));\r\n });\r\n\r\n return historyList;\r\n }\r\n\r\n formatVersionList() {\r\n if (this.docVersionList.length > 0) {\r\n this.docVersionList.forEach(docVersion => {\r\n //docVersion.languageName = this.appLangList.filter(x => Number(x.languageId) === Number(docVersion.languageId))[0]?.languageName;\r\n //docVersion.statusName = this.statusReplacer(this.docStatusList.filter(x => Number(x.statusId) === Number(docVersion.statusId))[0]?.name);\r\n //docVersion.documentType = this.docTypeReplacer(this.docTypeList.filter(x => Number(x.documentTypeId) === Number(this.showDocVersionTypeId))[0]?.documentTypeDescription);\r\n docVersion.languageName = this.languageReplacer(this.appLangList.filter(x => Number(x.languageId) === Number(docVersion.languageId))[0]?.languageName);\r\n docVersion.languagePath = this.appLangList.filter(x=> Number(x.languageId)==Number(docVersion.languageId))[0]?.languageFlagPath;\r\n docVersion.statusName = this.statusReplacer(docVersion.statusId);\r\n docVersion.documentType = this.docTypeReplacer(this.showDocVersionTypeId);\r\n docVersion.documentTypeId = this.showDocVersionTypeId;\r\n docVersion.documentDate = this.datePipe.transform(docVersion.documentDate, \"dd MMM yyyy\");\r\n docVersion.documentDateStr = this.monthReplacer(this.datePipe.transform(docVersion.documentDate, \"dd MMM yyyy\"));\r\n docVersion.authorizedDateTime = this.monthReplacer(this.datePipe.transform(docVersion.authorizedDateTime, \"dd MMM yyyy\"));\r\n docVersion.authorizedByEmail = docVersion?.authorizedByGpn; //this.userList.filter(x => x.gpn?.toLowerCase() === docVersion?.authorizedByGpn?.toLowerCase())[0]?.emailId;\r\n docVersion.isPendingApproval = false;\r\n });\r\n\r\n if (this.docVersionList.some(x => Number(x.statusId) === 2 ||\r\n Number(x.statusId) === 4 || Number(x.statusId === 7))) {\r\n this.isApproveDisabled = false;\r\n this.isUnapproved = false;\r\n }\r\n else {\r\n this.isApproveDisabled = true;\r\n this.isUnapproved = true;\r\n }\r\n\r\n this.getGridVersionList();\r\n\r\n }\r\n }\r\n\r\n getGridVersionList() {\r\n let versionLangList, unauthorizedList: any[] = [];\r\n let draftIndex, authorizedIndex, unauthorizedIndex = -1;\r\n this.gridVersionList = [];\r\n const isVersionAuthorized = (x) => (!x.currentDraft && x.currentAuthorized);\r\n const isVersionDraft = (x) => (x.currentDraft && !x.currentAuthorized);\r\n const isDraftAuthPending = (x) => (!x.currentAuthorized && x.currentDraft\r\n && x.approvalRequestedByGpn != null && x.approvalRequestedFromGpn != null\r\n && x.authorizedByGpn === null && x.authorizedDateTime === null);\r\n\r\n this.engagementDetail.engLanguage.forEach(engLang => {\r\n\r\n versionLangList = this.docVersionList.filter(x => Number(x.languageId) === Number(engLang.languageId));\r\n\r\n if (versionLangList && versionLangList.length > 0) {\r\n\r\n draftIndex = versionLangList.findIndex(isVersionDraft);\r\n if (draftIndex > -1) {\r\n if (isDraftAuthPending(versionLangList[draftIndex])) {\r\n versionLangList[draftIndex].isPendingApproval = true;\r\n }\r\n this.gridVersionList.push(versionLangList[draftIndex]);\r\n }\r\n\r\n authorizedIndex = versionLangList.findIndex(isVersionAuthorized);\r\n\r\n if (authorizedIndex > -1) {\r\n this.gridVersionList.push(versionLangList[authorizedIndex]);\r\n }\r\n else {\r\n if (versionLangList.some(x => !x.currentAuthorized && !x.currentDraft)) {\r\n unauthorizedList = versionLangList?.filter(x => !x.currentAuthorized && !x.currentDraft).sort(this.date_sort_desc);\r\n if (unauthorizedList && unauthorizedList.length > 0) {\r\n this.gridVersionList.push(unauthorizedList[0]);\r\n }\r\n }\r\n\r\n }\r\n\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n\r\n date_sort_desc = function (a, b) {\r\n // This is a comparison function that will result in dates being sorted in\r\n // DESCENDING order.\r\n a = new Date(a.authorizationEndDateTime);\r\n b = new Date(b.authorizationEndDateTime);\r\n return a > b ? -1 : a < b ? 1 : 0;\r\n };\r\n\r\n\r\n\r\n onAddPanelHide() {\r\n this.showSideBar = false;\r\n this.uploadNewDoc.forEach(childRef => childRef.resetForm());\r\n this.addTabIndex = 0;\r\n }\r\n\r\n\r\n onEditPanelHide() {\r\n this.showEditSideBar = false;\r\n this.editTabIndex = 0;\r\n }\r\n\r\n viewLog() {\r\n this.showHistory = true;\r\n this.showCompactLog = true;\r\n this.getDocumentsHistory(this.selectedNode)\r\n .then(res => this.viewLogList = this.compactHistoryList);\r\n }\r\n\r\n toggleLogClick() {\r\n this.showCompactLog = !this.showCompactLog;\r\n this.getDocumentsHistory(this.selectedNode);\r\n this.viewLogList = this.showCompactLog ? this.compactHistoryList : this.documentVersionHistoryModel;\r\n }\r\n\r\n saveAsExcelFile(buffer: any, fileName: string): void {\r\n import(\"file-saver\").then(FileSaver => {\r\n let EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\r\n let EXCEL_EXTENSION = '.xlsx';\r\n const data: Blob = new Blob([buffer], {\r\n type: EXCEL_TYPE\r\n });\r\n FileSaver.saveAs(data, fileName + '_export_' + new Date().getTime() + EXCEL_EXTENSION);\r\n });\r\n }\r\n\r\n\r\n exportExcel() {\r\n import(\"xlsx\").then(xlsx => {\r\n const worksheet = xlsx.utils.json_to_sheet(this.getDocuments());\r\n const workbook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] };\r\n const excelBuffer: any = xlsx.write(workbook, { bookType: 'xlsx', type: 'array' });\r\n this.saveAsExcelFile(excelBuffer, \"documentVersionHistoryLogs\");\r\n });\r\n }\r\n\r\n public selectionItemForFilter(e) {\r\n const colsTempor = e.value;\r\n colsTempor.sort(function (a, b) {\r\n return a.index - b.index;\r\n });\r\n this.colmns = [];\r\n this.colmns = colsTempor;\r\n if (e.value.length > 23) {\r\n e.value.pop();\r\n }\r\n }\r\n\r\n versionGridFilter(e) {\r\n const colsTempor = e.value;\r\n colsTempor.sort(function (a, b) {\r\n return a.index - b.index;\r\n });\r\n this.cols = [];\r\n this.cols = colsTempor;\r\n if (e.value.length > 8) {\r\n e.value.pop();\r\n }\r\n }\r\n\r\n getDocuments() {\r\n let lstofdocument = [];\r\n for (let documents of this.documentVersionHistoryModel) {\r\n\r\n documents.docId = documents.docId;\r\n lstofdocument.push(documents);\r\n }\r\n return lstofdocument;\r\n }\r\n\r\n deleteFileVersion(file) {\r\n const initialState = {\r\n paramList: {\r\n displayMessage: this.labelReplacer('lblDeleteDraftModal'),\r\n showFootNote: false,\r\n footNote: ''\r\n }\r\n };\r\n\r\n this.bsModalRef = this.modalService.show(ModalContentComponent, { initialState });\r\n this.bsModalRef.content.event.subscribe(res => {\r\n if (res.data) {\r\n //yes\r\n this.spinner.show();\r\n\r\n let deleteNode = this.getDeleteFile(file);\r\n\r\n if (!_.isEmpty(deleteNode)) {\r\n //delete file from json\r\n let index = deleteNode.parent.children.indexOf(deleteNode);\r\n if (index > -1) {\r\n deleteNode.parent.children.splice(index, 1);\r\n //update in table and blob\r\n this.manageDocService.deleteDocVersion(file).subscribe(res => {\r\n if (res.status === 0) {\r\n //success\r\n this.saveMsg = this.labelReplacer('msgSuccessDeleteDraft');\r\n\r\n } else {\r\n //display error\r\n this.messageService.add({\r\n summary: this.labelReplacer('msgTypeErrorDelete'),\r\n detail: res.message,\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n\r\n }\r\n\r\n this.refreshDocTree().then(res => {\r\n if (this.docVersionList?.length > 1) {\r\n this.viewFileVersion(deleteNode);\r\n }\r\n else {\r\n this.showFileVersionGrid = false;\r\n //this.docVersionList = [];\r\n }\r\n });\r\n\r\n this.spinner.hide();\r\n\r\n });\r\n }\r\n else {\r\n //display error\r\n this.spinner.hide();\r\n this.messageService.add({\r\n summary: this.labelReplacer('msgTypeErrorDelete'),\r\n detail: this.labelReplacer('msgDelete404'),\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n }\r\n else {\r\n this.spinner.hide();\r\n this.messageService.add({\r\n summary: this.labelReplacer('msgTypeErrorDelete'),\r\n detail: this.labelReplacer('msgDelete404'),\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n\r\n }\r\n }\r\n else {\r\n //do nothing\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n getDeleteFile(file): TreeNode {\r\n\r\n let node: TreeNode = {};\r\n // this.selectedNode?.parent?.children?.forEach(childNode => {\r\n // if (Number(childNode?.data[0]?.docId) === Number(file.docId)\r\n // && Number(childNode?.data[0]?.docVersionId) === Number(file.docVersionId)) {\r\n // node = childNode;\r\n // }\r\n // });\r\n\r\n if (this.selectedNode?.parent?.children) {\r\n this.selectedNode.parent.children.forEach(r => {\r\n if (Number(r?.data[0]?.docId) === Number(file.docId)\r\n && Number(r?.data[0]?.docVersionId) === Number(file.docVersionId)) {\r\n node = r;\r\n }\r\n })\r\n }\r\n\r\n return node;\r\n }\r\n\r\n unapproveDocument(e) {\r\n this.spinner.show();\r\n if (e.checked) {\r\n let documentToUnapprove = this.selectedNode;\r\n if (documentToUnapprove) {\r\n this.manageDocService.unapproveDocument(documentToUnapprove.data[0]).subscribe(res => {\r\n if (res.status === 0) {\r\n //success\r\n this.saveMsg = this.labelReplacer('msgSuccessUnapprove');\r\n\r\n // this.messageService.add({\r\n // summary: this.labelReplacer('msgTypeSuccess'),\r\n // detail: 'Document unapproved successfully',\r\n // sticky: false,\r\n // severity: 'success'\r\n // });\r\n } else {\r\n //display error\r\n this.messageService.add({\r\n summary: this.labelReplacer('msgTypeErrorUnapprove'),\r\n detail: res.message,\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n\r\n this.refreshDocTree().then(res =>\r\n this.viewFileVersion(this.selectedNode));\r\n this.spinner.hide();\r\n\r\n });\r\n }\r\n else {\r\n this.spinner.hide();\r\n\r\n }\r\n }\r\n }\r\n\r\n refreshDocTree() {\r\n return new Promise((resolve, reject) => {\r\n this.getEngagementDoc()\r\n .then(res => this.preProcessTree()\r\n .then(res => this.saveTree(true)));\r\n resolve(1);\r\n })\r\n }\r\n\r\n getSavedVersion(emitSaveVersion) {\r\n this.spinner.show();\r\n\r\n let updateNode: TreeNode = {};\r\n let savedVersionData = emitSaveVersion.versionData;\r\n this.showEditSideBar = false;\r\n\r\n if (emitSaveVersion.isNewVersion) {\r\n //add uploaded version to tree json\r\n\r\n this.selectedNode.parent.children.push({\r\n label: savedVersionData?.documentTitle,\r\n key: Date.now().toString(),\r\n type: \"file\",\r\n data: [{\r\n parentId: this.selectedNode.parent.key,\r\n docId: savedVersionData?.docId,\r\n docVersionId: savedVersionData?.docVersionId,\r\n languageId: savedVersionData?.languageId,\r\n isFileUploaded: savedVersionData?.isFileUploaded,\r\n documentDate: savedVersionData?.documentDate,\r\n createdDTTM: new Date(savedVersionData.createdDate)?.toUTCString(),\r\n fileSize: savedVersionData?.fileLength, //IN MB Math.ceil\r\n fileType: savedVersionData?.fileType,\r\n fileTypeIcon: '',\r\n fileIconStyle: '#000',\r\n showRedMark: false,\r\n showDraftMark: false\r\n }],\r\n styleClass: \"fileClass\",\r\n children: [],\r\n draggable: true\r\n } as TreeNode);\r\n\r\n //sort folder\r\n this.sortNode(this.selectedNode.parent);\r\n this.selectedNode.parent.expanded = true;\r\n }\r\n else {\r\n if (emitSaveVersion?.saveType?.toLowerCase() === 'draftapproved') {\r\n //do nothing\r\n }\r\n else if (emitSaveVersion?.saveType?.toLowerCase() === 'draftdeleted') {\r\n //do nothing\r\n }\r\n else {\r\n\r\n let updateNodeIndex = this.selectedNode?.parent?.children\r\n .findIndex(x => Number(x.data[0]?.docId) === (savedVersionData?.docId)\r\n && Number(x.data[0]?.docVersionId) === Number(savedVersionData?.docVersionId))\r\n\r\n if (updateNodeIndex > -1) {\r\n updateNode = this.selectedNode?.parent?.children[updateNodeIndex];\r\n updateNode.label = savedVersionData?.documentTitle,\r\n updateNode.data[0].isFileUploaded = savedVersionData?.isFileUploaded,\r\n updateNode.data[0].documentDate = savedVersionData?.documentDate,\r\n updateNode.data[0].fileSize = savedVersionData?.fileLength, //IN MB Math.ceil\r\n updateNode.data[0].fileType = savedVersionData?.fileType,\r\n updateNode.data[0].fileTypeIcon = '',\r\n updateNode.data[0].fileIconStyle = '#000',\r\n updateNode.data[0].showRedMark = false,\r\n updateNode.data[0].showDraftMark = false\r\n }\r\n }\r\n\r\n }\r\n\r\n //auto save tree with new file added\r\n if (emitSaveVersion?.saveType?.toLowerCase() === 'save') {\r\n this.saveMsg = this.labelReplacer('msgSuccessDocSave');\r\n\r\n }\r\n else if (emitSaveVersion?.saveType?.toLowerCase() === 'other') {\r\n this.saveMsg = this.labelReplacer('msgSuccessDocReqApproval');\r\n\r\n }\r\n else if (emitSaveVersion?.saveType?.toLowerCase() === 'self') {\r\n this.saveMsg = this.labelReplacer('msgSuccessDocApproval');\r\n }\r\n\r\n this.refreshDocTree()\r\n .then((res) => {\r\n return new Promise((resolve, reject) => {\r\n this.viewFileVersion(this.selectedNode);\r\n resolve(1);\r\n })\r\n .then(res => this.spinner.hide())\r\n .catch(error => {\r\n console.log(error);\r\n this.spinner.hide();\r\n })\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n this.spinner.hide();\r\n });\r\n\r\n }\r\n\r\n onTabChange(event, tabControl) {\r\n var selectedIndex = event.index;\r\n const initialState = {\r\n paramList: {\r\n displayMessage: this.labelReplacer('lblUnsavedChangesModal'),\r\n showFootNote: true,\r\n footNote: this.labelReplacer('lblFootNoteModal')\r\n }\r\n };\r\n\r\n if (tabControl.toLowerCase() === 'add') {\r\n let addChild = this.uploadNewDoc['_results'][this.addTabIndex];\r\n if (addChild?.documentForm.dirty) {\r\n this.bsModalRef = this.modalService.show(ModalContentComponent, { initialState });\r\n this.bsModalRef.content.event.subscribe(res => {\r\n if (res.data) {\r\n this.addTabIndex = selectedIndex;\r\n }\r\n else {\r\n this.ctrlAddTab.forEach((element, index) => {\r\n if (index === this.addTabIndex) {\r\n element['selected'] = true;\r\n }\r\n else {\r\n element['selected'] = false;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n else {\r\n this.addTabIndex = selectedIndex;\r\n }\r\n }\r\n else if (tabControl.toLowerCase() === 'edit') {\r\n let editChild = this.editDoc['_results'][this.editTabIndex];\r\n if (editChild?.documentForm?.dirty) {\r\n this.bsModalRef = this.modalService.show(ModalContentComponent, { initialState });\r\n this.bsModalRef.content.event.subscribe(res => {\r\n if (res.data) {\r\n this.editTabIndex = selectedIndex;\r\n }\r\n else {\r\n this.ctrlEditTab.forEach((element, index) => {\r\n if (index === this.editTabIndex) {\r\n element['selected'] = true;\r\n }\r\n else {\r\n element['selected'] = false;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n else {\r\n this.editTabIndex = selectedIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n getTabIcon(lang): string {\r\n let piClass = '';\r\n if (lang) {\r\n if (lang.showDraftIcon) {\r\n\r\n piClass = 'pi pi-user-edit';\r\n }\r\n else if (lang.showPendingDraftIcon) {\r\n piClass = 'pi pi-exclamation-circle';\r\n\r\n }\r\n }\r\n return piClass;\r\n }\r\n\r\n downloadFileVersion(file) {\r\n return new Promise((resolve, reject) => {\r\n this.spinner.show();\r\n if (file) {\r\n var languageCode = this.languageLists.filter(item=>item.languageId==file.languageId)[0]?.languageCode;\r\n var popupMessage =this.labelReplacer('PleasedisableyourPop-upblockerandtryagain');\r\n let downloadModel = new downloadDocument(+this.engagementDetail?.engagementId,\r\n +file?.docId, +file?.docVersionId, file?.documentTitle,\r\n '.' + file?.documentLink?.split('.').pop(),languageCode);\r\n this.manageDocService.getDownloadDocumentwithVersion(downloadModel,popupMessage).subscribe(res => {\r\n this.spinner.hide();\r\n resolve(1);\r\n });\r\n }\r\n })\r\n .catch(error => {\r\n console.log(error)\r\n this.spinner.hide();\r\n });\r\n }\r\n\r\n sortNode(node: TreeNode) {\r\n\r\n if (!('sortTypeId' in node?.data[0])) {\r\n node.data[0]['sortTypeId'] = '2';\r\n }\r\n\r\n if (node?.data[0]?.sortTypeId.toString() === '1') {\r\n // node.draggable = false;\r\n // node.droppable = false;\r\n\r\n if (node.children) {\r\n //node?.children?.sort((a, b) => a.label?.localeCompare(b.label));\r\n node?.children?.sort((a, b) => this.displayFolderLabel(a).localeCompare(this.displayFolderLabel(b)));\r\n\r\n\r\n }\r\n }\r\n else if (node?.data[0]?.sortTypeId.toString() === '2') {\r\n // node.draggable = false;\r\n // node.droppable = false;\r\n\r\n if (node.children) {\r\n //node?.children?.sort((a, b) => a.label?.localeCompare(b.label));\r\n node?.children?.sort((a, b) => this.displayFolderLabel(a).localeCompare(this.displayFolderLabel(b)));\r\n node?.children?.sort(this.folder_date_sort_desc);\r\n\r\n }\r\n }\r\n else if (node?.data[0]?.sortTypeId.toString() === '3') {\r\n\r\n }\r\n else if (node?.data[0]?.sortTypeId.toString() === '4') {\r\n\r\n //node?.children?.sort((a, b) => b.label?.localeCompare(a.label));\r\n node?.children?.sort((a, b) => this.displayFolderLabel(b).localeCompare(this.displayFolderLabel(a)));\r\n node?.children?.sort((a, b) => this.folder_date_sort_desc(a, b));\r\n\r\n }\r\n }\r\n\r\n\r\n folder_date_sort_desc = function (a, b) {\r\n // This is a comparison function that will result in dates being sorted in\r\n // DESCENDING order.\r\n let res;\r\n if (a?.type?.toLowerCase() === 'file') {\r\n a = new Date(a?.data[0]?.documentDate).getTime() ?? new Date(a?.data[0]?.createdDTTM).getTime();\r\n }\r\n else {\r\n a = new Date(a?.data[0]?.createdDTTM).getTime();\r\n }\r\n\r\n if (b?.type?.toLowerCase() === 'file') {\r\n b = new Date(b?.data[0]?.documentDate).getTime() ?? new Date(b?.data[0]?.createdDTTM).getTime();\r\n }\r\n else {\r\n b = new Date(b?.data[0]?.createdDTTM).getTime();\r\n }\r\n\r\n res = a > b ? -1 : a < b ? 1 : 0;\r\n\r\n return res;\r\n\r\n }\r\n\r\n\r\n // Start function\r\n findDocument(fileVersionId): TreeNode {\r\n\r\n var found = false;\r\n let foundNode: TreeNode = {};\r\n\r\n function recurseFindParent(searchTree) {\r\n\r\n for (var i = 0; i < searchTree.length; i++) {\r\n\r\n // Found the category!\r\n if (searchTree[i]?.type?.toLowerCase() === 'file') {\r\n if (Number(searchTree[i]?.data[0]?.docVersionId) === Number(fileVersionId)) {\r\n foundNode = searchTree[i];\r\n found = true;\r\n break;\r\n }\r\n // Did not match...\r\n } else {\r\n // Are there children / sub-categories? YES\r\n if (searchTree[i].children.length > 0) {\r\n recurseFindParent(searchTree[i].children);\r\n if (found) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n recurseFindParent(this.targetTreeData);\r\n\r\n return foundNode;\r\n }\r\n\r\n}\r\n\r\n\r\nexport class downloadDocument {\r\n EngagementId: Number;\r\n DocId: any;\r\n DocVersionId: any;\r\n FileName: any;\r\n FileType: any;\r\n LanguageCode:any;\r\n constructor(engagementId: Number, docId: any, docVersionId: any, fileName: any, fileType: any,languageCode: any) {\r\n this.EngagementId = engagementId;\r\n this.DocId = docId;\r\n this.DocVersionId = docVersionId;\r\n this.FileName = fileName;\r\n this.FileType = fileType;\r\n this.LanguageCode=languageCode;\r\n }\r\n}\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { TreeNode } from 'primeng/api';\r\nimport { FolderManagementService } from 'src/framework/services/folder-mgmt.service';\r\nimport { LabelcardMgmtService } from 'src/framework/services/labelcard-mgmt.service';\r\nimport * as _ from 'lodash';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { MessageService } from 'primeng/api';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal'\r\nimport { ModalContentComponent } from 'src/app/shared/modal-component/modal.component';\r\nimport { CategoryConstant } from 'src/app/shared/app-constants/category-constants';\r\nimport { LanguageService } from 'src/framework/services/language.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-manage-folder',\r\n templateUrl: './manage-folder.component.html',\r\n styleUrls: ['./manage-folder.component.css'],\r\n providers: [MessageService]\r\n})\r\n\r\nexport class ManageFolderComponent implements OnInit {\r\n bsModalRef: BsModalRef;\r\n\r\n targetTreeData: TreeNode[] = [];\r\n\r\n maxSeed: number = 0;\r\n\r\n languageList: any[] = [];\r\n languageLabels: any[] = [];\r\n\r\n folderPath: \"\";\r\n selectedTargetFile: TreeNode;\r\n\r\n templateNode: TreeNode[];\r\n\r\n deleteNodeObj: TreeNode;\r\n\r\n clonedTree: any[] = [];\r\n cloneTemplateCounter: number = 0;\r\n isValid: boolean = false;\r\n inValidFieldCounter: number = 0;\r\n isEditable: boolean = false;\r\n fileCounter: number = 0;\r\n folderCounter: number = 0;\r\n selectedAppLanguage: any;\r\n selectedAppLanguageJson: any;\r\n defaultEnglishJson: any;\r\n islabelLoaded: boolean = false;\r\n engagementDetail = {\r\n appLanguage: 1,\r\n engagementId: 1,\r\n engagementName: '',\r\n engStatusId: 1,\r\n engStatusName: '',\r\n engInitialDate: null,\r\n engLanguage: [{\r\n \"languageId\": 1,\r\n \"languageName\": \"English\",\r\n \"languageFlagPath\": \"../../assets/flags/English.png\"\r\n }],\r\n engLanguageFrench: [{\r\n \"languageId\": 1,\r\n \"languageName\": \"Anglaise\",\r\n \"languageFlagPath\": \"../../assets/flags/English.png\"\r\n }]\r\n };\r\n appLanguageList: any[] = [];\r\n sortingTypeList: any[] = [];\r\n selectedLangLabelJson: any;\r\n defaultEngLangLabelJson: any;\r\n selectedLangSortJson: any;\r\n defaultEngSortJson: any;\r\n selectedLangDateJson: any;\r\n defaultEngDateJson: any;\r\n localeSetting: any;\r\n\r\n constructor(private folderService: FolderManagementService, private messageService: MessageService,\r\n private labelCardService: LabelcardMgmtService, private spinner: NgxSpinnerService,\r\n private languageService: LanguageService, private modalService: BsModalService\r\n ) {\r\n this.sortingTypeList = [\r\n { label: 'Alphabetical Order (ASC)', value: '1' },\r\n { label: 'Chronological Order (DESC)', value: '2' },\r\n { label: 'Chrono,Alpha Order (DESC)', value: '4' },\r\n { label: 'Manual', value: '3' }\r\n ];\r\n }\r\n\r\n public ngOnInit() {\r\n\r\n\r\n this.initializeEngagementData()\r\n .then(res => {\r\n this.loadLanguageLabel()\r\n .then(res => {\r\n this.initializeSortList();\r\n this.getFolderStructure()\r\n })\r\n .catch(err => {\r\n console.log(err);\r\n })\r\n })\r\n .catch(err => {\r\n console.log(err);\r\n });\r\n\r\n }\r\n\r\nisMobileDevice = function () {\r\n return (typeof window.orientation !== \"undefined\") || (navigator.userAgent.indexOf('EdgA') !== -1);\r\n};\r\n\r\n initializeEngagementData() {\r\n\r\n return new Promise((resolve, reject) => {\r\n if (sessionStorage.getItem('appLanguageList')) {\r\n this.appLanguageList = JSON.parse(sessionStorage.getItem('appLanguageList'));\r\n }\r\n else {\r\n this.preLoadData();\r\n }\r\n\r\n if (sessionStorage.getItem('engagementDetail')) {\r\n this.engagementDetail = JSON.parse(sessionStorage.getItem('engagementDetail'));\r\n }\r\n resolve(1);\r\n });\r\n }\r\n\r\n initializeSortList() {\r\n this.sortingTypeList = [\r\n { label: this.sortTypeReplacer('1'), value: '1' },\r\n { label: this.sortTypeReplacer('2'), value: '2' },\r\n { label: this.sortTypeReplacer('4'), value: '4' },\r\n { label: this.sortTypeReplacer('3'), value: '3' }\r\n ];\r\n }\r\n\r\n loadLanguageLabel() {\r\n let englishLanguageMappings, selectedLanguageMappings: any;\r\n let englishLangLabelMappings, selectedLangLabelMappings: any;\r\n let englishSortMappings, selectedLangSortMappings: any;\r\n let englishDateMappings, selectedLangDateMappings: any;\r\n\r\n return new Promise((resolve, reject) => {\r\n this.spinner.show();\r\n if (sessionStorage.getItem('selectedLanguageId')) {\r\n this.selectedAppLanguage = 1;//JSON.parse(sessionStorage.getItem('selectedLanguageId'));\r\n }\r\n\r\n this.languageService.currentData.subscribe(data => {\r\n this.selectedAppLanguage = data.Id\r\n });\r\n\r\n\r\n this.languageService.mySubject.subscribe((data) => {\r\n var languageMappings = data;\r\n if (languageMappings?.length > 0) {\r\n\r\n englishLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.ManageFolder.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishSortMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.SortTypes.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n\r\n if (englishLanguageMappings?.isGlobal) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.ManageFolder.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangSortMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.SortTypes.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n }\r\n else {\r\n if (Number(this.selectedAppLanguage) === 2) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.ManageFolder.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangSortMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.SortTypes.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n }\r\n else {\r\n selectedLanguageMappings = englishLanguageMappings;\r\n selectedLangLabelMappings = englishLangLabelMappings;\r\n selectedLangSortMappings = englishSortMappings;\r\n selectedLangDateMappings = englishDateMappings;\r\n\r\n }\r\n }\r\n\r\n this.selectedAppLanguageJson = JSON.parse(selectedLanguageMappings?.languageMappingJSON ?? englishLanguageMappings.languageMappingJSON);\r\n this.defaultEnglishJson = JSON.parse(englishLanguageMappings.languageMappingJSON);\r\n\r\n this.selectedLangLabelJson = JSON.parse(selectedLangLabelMappings?.languageMappingJSON ?? englishLangLabelMappings.languageMappingJSON);\r\n this.defaultEngLangLabelJson = JSON.parse(englishLangLabelMappings.languageMappingJSON);\r\n\r\n this.selectedLangSortJson = JSON.parse(selectedLangSortMappings?.languageMappingJSON ?? englishSortMappings.languageMappingJSON);\r\n this.defaultEngSortJson = JSON.parse(englishSortMappings.languageMappingJSON);\r\n\r\n this.selectedLangDateJson = JSON.parse(selectedLangDateMappings?.languageMappingJSON ?? englishDateMappings.languageMappingJSON);\r\n this.defaultEngDateJson = JSON.parse(englishDateMappings.languageMappingJSON);\r\n\r\n this.setCalendarLocale();\r\n\r\n this.islabelLoaded = true;\r\n this.spinner.hide();\r\n resolve(1);\r\n }\r\n else {\r\n this.spinner.hide();\r\n }\r\n });\r\n })\r\n .catch(err => {\r\n this.spinner.hide();\r\n\r\n console.log(err);\r\n });\r\n }\r\n\r\n omit_special_char(event) { \r\n var k;\r\n k = event.charCode; //         k = event.keyCode;  (Both can be used)    \r\n //return((k > 64 && k < 91) || (k > 96 && k < 123) || k == 8 || k == 32 || (k >= 48 && k <= 57)); }\r\n return(k != 47 && k != 92 && k != 58 && k != 42 && k != 63 && k!= 34 && k != 60 && k!= 62 && k != 124); }\r\n \r\n\r\n labelReplacer(labelKey): string {\r\n return this.selectedAppLanguageJson[labelKey]?.trim() ? this.selectedAppLanguageJson[labelKey] ?? 'text not found' : this.defaultEnglishJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n languageReplacer(labelKey): string {\r\n return this.selectedLangLabelJson[labelKey]?.trim() ? this.selectedLangLabelJson[labelKey] ?? 'text not found' : this.defaultEngLangLabelJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n sortTypeReplacer(labelKey): string {\r\n return this.selectedLangSortJson[labelKey]?.trim() ? this.selectedLangSortJson[labelKey] ?? 'text not found' : this.defaultEngSortJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n monthReplacer(labelKey): string {\r\n let localeDt;\r\n if (labelKey) {\r\n let arr = labelKey.split(' ');\r\n if (arr?.length == 3)\r\n localeDt = arr[0] + ' ' + this.calendarReplacer(arr[1]?.toUpperCase()) + ' ' + arr[2];\r\n else\r\n localeDt = labelKey;\r\n }\r\n return localeDt;\r\n }\r\n\r\n calendarReplacer(labelKey): string {\r\n return this.selectedLangDateJson[labelKey]?.trim() ? this.selectedLangDateJson[labelKey] ?? 'text not found' : this.defaultEngDateJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n dayOrMonthNameShort(name, length): string {\r\n let shortName = '';\r\n if (name?.trim()?.length == 0)\r\n shortName = 'Text not found';\r\n else if (name?.trim()?.length > 0 && name?.trim()?.length < length)\r\n shortName = name;\r\n else\r\n shortName = name.substr(0, length);\r\n return shortName;\r\n }\r\n\r\n setCalendarLocale() {\r\n this.localeSetting = {\r\n firstDayOfWeek: 0,\r\n dayNames: [\r\n this.calendarReplacer(\"SUN\"),\r\n this.calendarReplacer(\"MON\"), this.calendarReplacer(\"TUE\"), this.calendarReplacer(\"WED\"),\r\n this.calendarReplacer(\"THU\"), this.calendarReplacer(\"FRI\"), this.calendarReplacer(\"SAT\")\r\n ],\r\n dayNamesShort: [\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"SUN\"), 3),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"MON\"), 3), this.dayOrMonthNameShort(this.calendarReplacer(\"TUE\"), 3),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"WED\"), 3), this.dayOrMonthNameShort(this.calendarReplacer(\"THU\"), 3),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"FRI\"), 3), this.dayOrMonthNameShort(this.calendarReplacer(\"SAT\"), 3)\r\n ],\r\n dayNamesMin: [\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"SUN\"), 1),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"MON\"), 1), this.dayOrMonthNameShort(this.calendarReplacer(\"TUE\"), 1),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"WED\"), 1), this.dayOrMonthNameShort(this.calendarReplacer(\"THU\"), 1),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"FRI\"), 1), this.dayOrMonthNameShort(this.calendarReplacer(\"SAT\"), 1)\r\n ],\r\n monthNames: [\r\n this.calendarReplacer(\"JAN\"), this.calendarReplacer(\"FEB\"), this.calendarReplacer(\"MAR\"),\r\n this.calendarReplacer(\"APR\"), this.calendarReplacer(\"MAY\"), this.calendarReplacer(\"JUN\"),\r\n this.calendarReplacer(\"JUL\"), this.calendarReplacer(\"AUG\"), this.calendarReplacer(\"SEP\"),\r\n this.calendarReplacer(\"OCT\"), this.calendarReplacer(\"NOV\"), this.calendarReplacer(\"DEC\")\r\n ],\r\n monthNamesShort: [\r\n this.calendarReplacer(\"JAN\"), this.calendarReplacer(\"FEB\"), this.calendarReplacer(\"MAR\"),\r\n this.calendarReplacer(\"APR\"), this.calendarReplacer(\"MAY\"), this.calendarReplacer(\"JUN\"),\r\n this.calendarReplacer(\"JUL\"), this.calendarReplacer(\"AUG\"), this.calendarReplacer(\"SEP\"),\r\n this.calendarReplacer(\"OCT\"), this.calendarReplacer(\"NOV\"), this.calendarReplacer(\"DEC\")\r\n ],\r\n today: this.calendarReplacer('TODAY'),\r\n clear: this.calendarReplacer('CLEAR')\r\n }\r\n }\r\n\r\n get globalIdentitySeed() {\r\n\r\n if (this.targetTreeData.length > 0) {\r\n\r\n this.targetTreeData.forEach(node => {\r\n this.getMaxSeedValue(node);\r\n });\r\n }\r\n\r\n return this.maxSeed;\r\n }\r\n\r\n set globalIdentitySeed(value) {\r\n this.maxSeed = value;\r\n }\r\n\r\n getMaxSeedValue(node: TreeNode) {\r\n\r\n if (this.maxSeed < Number(node.key)) {\r\n this.maxSeed = Number(node.key);\r\n }\r\n if (node.children) {\r\n node.children.forEach(childNode => {\r\n this.getMaxSeedValue(childNode);\r\n });\r\n }\r\n\r\n }\r\n\r\n public preLoadData() {\r\n\r\n return new Promise((resolve, reject) => {\r\n this.spinner.show();\r\n this.labelCardService.getLanguageList().subscribe(res => {\r\n if (res) {\r\n //success\r\n res.forEach(element => {\r\n if (element.isAppLanguage) {\r\n this.appLanguageList.push({\r\n languageId: element.languageId,\r\n languageName: element.name,\r\n languageFlagPath: element.languagePath\r\n });\r\n }\r\n\r\n });\r\n } else {\r\n //display error\r\n }\r\n resolve(1);\r\n\r\n });\r\n });\r\n\r\n }\r\n\r\n getFolderStructure() {\r\n this.spinner.show();\r\n this.targetTreeData = [];\r\n this.languageList = this.engagementDetail.engLanguage; //language list will be mapped from engagement langauge\r\n this.folderService.getFolderTemplate(this.engagementDetail.engagementId).then(files => {\r\n var count: Array=[];\r\n if (files.length > 0 && files[0].children) {\r\n let i =0;\r\n files[0].children.forEach(childNode => {\r\n if(childNode == null || childNode.label==undefined)\r\n {\r\n count.push(i);\r\n }\r\n i = i+1;\r\n });\r\n }\r\n \r\n count.forEach( val =>{\r\n files[0].children.splice(val,1);\r\n });\r\n this.targetTreeData = files.length > 0 ? files : []\r\n this.preProcessTree();\r\n this.clonedTree = _.cloneDeep(this.targetTreeData);\r\n this.spinner.hide();\r\n });\r\n\r\n }\r\n\r\n preProcessTree() {\r\n this.targetTreeData.forEach(x => {\r\n this.preProcessTreeRecursive(x)\r\n });\r\n }\r\n\r\n preProcessTreeRecursive(node: TreeNode) {\r\n if (node != null && node != undefined) {\r\n if (node?.type.toLowerCase() === 'file') {\r\n if (this.isMobileDevice()) { //disable drag n drop for mobile Edge until\r\n // primeng issue of drag drop is fixed in future versions\r\n node.draggable = false;\r\n node.droppable = false;\r\n }\r\n else {\r\n node.draggable = true;\r\n node.droppable = false;\r\n }\r\n }\r\n else if (node?.type.toLowerCase() === 'folder') {\r\n if (this.isMobileDevice()) { //disable drag n drop for mobile Edge until\r\n // primeng issue of drag drop is fixed in future versions\r\n node.draggable = false;\r\n node.droppable = false;\r\n }\r\n else {\r\n //update flags\r\n node.draggable = true;\r\n node.droppable = true;\r\n }\r\n\r\n this.computeFolderLangLabel(node, 'nodeAdd');\r\n this.sortNode(node);\r\n }\r\n else if (node?.type.toLowerCase() === 'structure') {\r\n this.sortNode(node);\r\n }\r\n\r\n if (node?.children?.length > 0) {\r\n //toggle display of expand/collapse arrow\r\n if (node.type.toLowerCase() === 'folder') {\r\n if (node?.children?.some(x => x.type?.toLowerCase() === 'folder')) {\r\n node.styleClass = 'childFolder';\r\n }\r\n else {\r\n node.styleClass = 'childFolder hideArrowClass';\r\n }\r\n }\r\n\r\n node.children.forEach(childNode => {\r\n this.preProcessTreeRecursive(childNode);\r\n });\r\n }\r\n }\r\n\r\n }\r\n\r\n sortNode(node: TreeNode) {\r\n\r\n if (!('sortTypeId' in node?.data[0])) {\r\n node.data[0]['sortTypeId'] = '2';\r\n }\r\n\r\n if (node?.data[0]?.sortTypeId.toString() === '1') {\r\n // node.draggable = false;\r\n // node.droppable = false;\r\n\r\n if (node.children?.length > 0) {\r\n node?.children?.sort((a, b) => a.label?.localeCompare(b.label));\r\n // node?.children.forEach(childNode => {\r\n // childNode.draggable = false;\r\n // childNode.droppable = false;\r\n // });\r\n }\r\n }\r\n else if (node?.data[0]?.sortTypeId.toString() === '2') {\r\n // node.draggable = false;\r\n // node.droppable = false;\r\n\r\n if (node.children?.length > 0) {\r\n node?.children?.sort((a, b) => a.label?.localeCompare(b.label));\r\n node?.children?.sort((a, b) => this.date_sort_desc(a, b));\r\n\r\n // node?.children.forEach(childNode => {\r\n // childNode.draggable = false;\r\n // childNode.droppable = false;\r\n // });\r\n }\r\n }\r\n else if (node?.data[0]?.sortTypeId.toString() === '3') {\r\n\r\n }\r\n else if (node?.data[0]?.sortTypeId.toString() === '4') {\r\n node?.children?.sort((a, b) => b.label?.localeCompare(a.label));\r\n node?.children?.sort((a, b) => this.date_sort_desc(a, b));\r\n }\r\n }\r\n\r\n\r\n\r\n date_sort_desc = function (a, b) {\r\n // This is a comparison function that will result in dates being sorted in\r\n // DESCENDING order.\r\n let res;\r\n if (a?.type?.toLowerCase() === 'file') {\r\n a = new Date(a?.data[0]?.documentDate).getTime() ?? new Date(a?.data[0]?.createdDTTM).getTime();\r\n }\r\n else {\r\n a = new Date(a?.data[0]?.createdDTTM).getTime();\r\n }\r\n\r\n if (b?.type?.toLowerCase() === 'file') {\r\n b = new Date(b?.data[0]?.documentDate).getTime() ?? new Date(b?.data[0]?.createdDTTM).getTime();\r\n }\r\n else {\r\n b = new Date(b?.data[0]?.createdDTTM).getTime();\r\n }\r\n\r\n res = a > b ? -1 : a < b ? 1 : 0;\r\n\r\n return res;\r\n };\r\n\r\n getChildCount(childType, node) {\r\n let nodeType = childType.toLowerCase();\r\n const msgStr = this.labelReplacer('ttFileCount') + \": \";\r\n this.fileCounter = 0;\r\n this.folderCounter = 0;\r\n if (node !== undefined && node !== null) {\r\n if (node.children.length > 0) {\r\n node.children?.forEach(childNode => {\r\n this.recursiveChildCount(childNode);\r\n });\r\n return msgStr + this.fileCounter;\r\n }\r\n return msgStr + \"0\";\r\n }\r\n return msgStr + \"0\";\r\n }\r\n\r\n recursiveChildCount(node: TreeNode) {\r\n if (node.type.toLowerCase() === 'file')\r\n this.fileCounter++;\r\n else if (node.type.toLowerCase() === 'folder')\r\n this.folderCounter++;\r\n if (node.children) {\r\n node.children.forEach(childNode => {\r\n this.recursiveChildCount(childNode);\r\n });\r\n }\r\n }\r\n\r\n validateTree() {\r\n\r\n if (this.targetTreeData.length > 0) {\r\n this.inValidFieldCounter = 0; //reset counter\r\n this.targetTreeData.forEach(node => {\r\n this.checkTreeRecursive(node);\r\n });\r\n\r\n let isDuplicate = this.findDuplicate();\r\n this.inValidFieldCounter > 0 || isDuplicate ? this.isValid = false : this.isValid = true;\r\n }\r\n }\r\n\r\n checkTreeRecursive(node: TreeNode) {\r\n\r\n if (node == undefined || node == null) {\r\n this.inValidFieldCounter++;\r\n return;\r\n }\r\n\r\n if (node.label?.trim() === '') {\r\n this.inValidFieldCounter++;\r\n }\r\n if (node.children) {\r\n node.children.forEach(childNode => {\r\n this.checkTreeRecursive(childNode);\r\n });\r\n }\r\n }\r\n\r\n\r\n\r\n computeFolderLangLabel(node, operation) {\r\n //Build array for modal\r\n var searchObj = null;\r\n let nodeLangList: any[] = this.languageList;\r\n this.languageLabels = [];\r\n this.templateNode = [];\r\n this.templateNode = node;\r\n\r\n // if (node?.type === 'structure') {\r\n // nodeLangList = [];\r\n // // nodeLangList.push(this.languageList.filter(x => x.languageId === 1)[0]); //english\r\n // // nodeLangList.push(this.languageList.filter(x => x.languageId === 2)[0]); //french\r\n // }\r\n\r\n if (nodeLangList.length > 0) {\r\n nodeLangList.forEach(element => {\r\n\r\n if (node.data[0]?.language?.length > 0) {\r\n\r\n searchObj = node.data[0]['language'].filter(x => Number(x.languageId) === Number(element.languageId))[0];\r\n if (searchObj) {\r\n\r\n this.languageLabels.push({\r\n languageId: searchObj.languageId,\r\n languageName: searchObj.languageName,\r\n languageFlagPath: searchObj.languageFlagPath,\r\n folderName: searchObj.folderName,\r\n languageFlagCssClass: searchObj.languageFlagCssClass\r\n });\r\n }\r\n else {\r\n\r\n this.languageLabels.push({\r\n languageId: element.languageId,\r\n languageName: element.languageName,\r\n languageFlagPath: element.languageFlagPath,\r\n folderName: '',\r\n languageFlagCssClass: 'flag-fade-out'\r\n });\r\n }\r\n\r\n }\r\n\r\n else {\r\n this.languageLabels.push({\r\n languageId: element.languageId,\r\n languageName: element.languageName,\r\n languageFlagPath: element.languageFlagPath,\r\n folderName: '',\r\n languageFlagCssClass: 'flag-fade-out'\r\n })\r\n }\r\n\r\n });\r\n\r\n if (operation === 'nodeAdd') this.saveFolderLabel();\r\n\r\n }\r\n else {\r\n this.languageLabels = [];\r\n }\r\n\r\n }\r\n\r\n onLabelLoad(folderType): boolean {\r\n let element = null;\r\n if (folderType?.toLowerCase() == 'root')\r\n element = document.getElementById(\"elasticInpRoot\");\r\n // else if (folderType?.toLowerCase() == 'folder')\r\n else\r\n element = document.getElementById(folderType);\r\n\r\n if (element !== null && element !== undefined) {\r\n element.style.width = ((element.value.length + 1) * 8) + 'px';\r\n }\r\n\r\n return true;\r\n }\r\n\r\n\r\n onLabelChange(node, event) {\r\n\r\n let ev = event;\r\n if (ev !== null && ev !== undefined) {\r\n ev.srcElement.style.width = ((ev.srcElement.value.length + 1) * 8) + 'px';\r\n }\r\n let langArray = node['data'][0]['language'];\r\n let langEnglish = langArray.filter(x => Number(x.languageId) === 1)[0];\r\n\r\n if (node.label && node.label?.trim() !== '') {\r\n node.label = node.label?.trim();\r\n if (langEnglish) {\r\n langEnglish.folderName = node.label?.trim();\r\n langEnglish[\"languageFlagCssClass\"] = \"\";\r\n }\r\n }\r\n else {\r\n if (langEnglish) {\r\n langEnglish.folderName = node.label;\r\n langEnglish[\"languageFlagCssClass\"] = \"flag-fade-out\"\r\n }\r\n }\r\n\r\n };\r\n\r\n\r\n saveFolderLabel() {\r\n this.languageLabels.forEach(lang => {\r\n lang[\"languageId\"] = lang[\"languageId\"].toString();\r\n if (lang[\"folderName\"] != \"\" && lang[\"folderName\"] != null) {\r\n lang[\"languageFlagCssClass\"] = \"\"\r\n } else {\r\n lang[\"languageFlagCssClass\"] = \"flag-fade-out\"\r\n\r\n }\r\n });\r\n\r\n if (this.templateNode?.['data'].length > 0) {\r\n this.templateNode['data'][0]['language'] = this.languageLabels;\r\n }\r\n else {\r\n this.templateNode['data'] = [{\r\n 'language': this.languageLabels\r\n }]\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n addNode(node) {\r\n if (node) {\r\n if (node.label) {\r\n node.children.push({\r\n label: \"\",\r\n key: Date.now().toString(),//(++this.globalIdentitySeed).toString(),\r\n type: \"folder\",\r\n data: [{\r\n \"createdDTTM\": new Date().toDateString(),\r\n \"sortTypeId\": '2'\r\n }],\r\n expandedIcon: \"pi pi-folder-open\",\r\n collapsedIcon: \"pi pi-folder\",\r\n styleClass: \"childFolder\",\r\n children: []\r\n } as TreeNode);\r\n\r\n\r\n this.computeFolderLangLabel(node.children[node.children.length - 1], 'nodeAdd');\r\n this.sortNode(node);\r\n node.expanded = true;\r\n }\r\n else {\r\n this.messageService.add({\r\n summary: this.labelReplacer('msgWarningType'),\r\n detail: this.labelReplacer('msgErrorAddingFolder'),\r\n sticky: false,\r\n severity: 'warning'\r\n });\r\n }\r\n }\r\n }\r\n\r\n copyNode(node) {\r\n // if (node.children.length > 0) {\r\n // var returnVal = this.verifyNodeBeforeDelete(node);\r\n // if (returnVal == false) {\r\n // this.deleteNodeObj = node;\r\n // }\r\n // else {\r\n // this.messageService.add({\r\n // summary: this.labelReplacer('msgErrorType'),\r\n // detail: this.labelReplacer('msgBlankOrDuplicateFolder'),\r\n // sticky: false,\r\n // severity: 'error'\r\n // });\r\n // }\r\n // } else {\r\n this.deleteNodeObj = node;\r\n //}\r\n }\r\n\r\n verifyNodeBeforeDelete(node: TreeNode): boolean {\r\n var returnValue = false\r\n node.children.forEach(element => {\r\n if (element.type.toLowerCase() === 'file') {\r\n returnValue = true;\r\n return returnValue;\r\n }\r\n else if (element.children.length > 0 && element.type.toLowerCase() === 'folder') {\r\n returnValue = this.verifyNodeBeforeDelete(element);\r\n return returnValue;\r\n }\r\n });\r\n return returnValue;\r\n }\r\n\r\n deleteNode(node) {\r\n if (this.deleteNodeObj) {\r\n let node = this.deleteNodeObj;\r\n if (node && node.parent) {\r\n let index = node.parent.children.indexOf(node);\r\n node.parent.children.splice(index, 1);\r\n }\r\n else {\r\n let index = this.targetTreeData.indexOf(node);\r\n this.targetTreeData.splice(index, 1);\r\n }\r\n this.deleteNodeObj = null;\r\n\r\n }\r\n\r\n }\r\n\r\n\r\n nodeSelect(event) {\r\n }\r\n\r\n nodeDrop(event) {\r\n // event.dropNode.droppable = undefined;\r\n // const initialState = {\r\n // list: [\r\n // {\"value\": event.dragNode.label}\r\n // ]\r\n // };\r\n\r\n // this.bsModalRef = this.modalService.show(ModalContentComponent,{initialState});\r\n // this.bsModalRef.content.event.subscribe(res => {\r\n // if(res.data){\r\n // event.accept();\r\n // event.dropNode.expanded = true;\r\n // }\r\n // });\r\n event.dropNode.expanded = true;\r\n }\r\n\r\n sortTree() {\r\n return new Promise((resolve, reject) => {\r\n this.targetTreeData.forEach(x => {\r\n this.sortRecursive(x)\r\n });\r\n resolve(1);\r\n });\r\n }\r\n\r\n sortRecursive(node: TreeNode) {\r\n if (node.type.toLowerCase() === 'folder' || node.type.toLowerCase() === 'structure') {\r\n this.sortNode(node);\r\n }\r\n if (node.children?.length > 0) {\r\n node.children.forEach(childNode => {\r\n this.sortRecursive(childNode);\r\n });\r\n }\r\n }\r\n\r\n\r\n saveTree() {\r\n\r\n this.spinner.show();\r\n this.validateTree();\r\n if (this.isValid) {\r\n this.sortTree()\r\n .then(res => {\r\n this.folderService.saveFolderTemplate(this.targetTreeData, this.engagementDetail.engagementId).subscribe(res => {\r\n if (res.status === 0) {\r\n //success\r\n this.isEditable = false;\r\n this.clonedTree = _.cloneDeep(this.targetTreeData);\r\n this.messageService.add({\r\n summary: this.labelReplacer('msgSuccessType'),\r\n detail: this.labelReplacer('msgSaveSucess'),\r\n sticky: false,\r\n severity: 'success'\r\n });\r\n } else {\r\n //display error\r\n this.messageService.add({\r\n summary: this.labelReplacer('msgErrorType'),\r\n detail: res.message,\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n\r\n this.spinner.hide();\r\n\r\n });\r\n })\r\n .catch(error => {\r\n console.log(error);\r\n this.spinner.hide();\r\n });\r\n\r\n }\r\n else {\r\n this.spinner.hide();\r\n this.messageService.add({\r\n summary: this.labelReplacer('msgErrorType'),\r\n detail: this.labelReplacer('msgBlankOrDuplicateFolder'),\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n }\r\n\r\n resetTree() {\r\n this.targetTreeData = _.cloneDeep(this.clonedTree);\r\n }\r\n\r\n expandAll() {\r\n this.targetTreeData.forEach(node => {\r\n this.expandRecursive(node, true);\r\n });\r\n }\r\n\r\n collapseAll() {\r\n this.targetTreeData[0]?.children.forEach(node => {\r\n this.expandRecursive(node, false);\r\n });\r\n }\r\n\r\n\r\n\r\n expandRecursive(node: TreeNode, isExpand: boolean) {\r\n node.expanded = isExpand;\r\n if (node.children) {\r\n node.children.forEach(childNode => {\r\n this.expandRecursive(childNode, isExpand);\r\n });\r\n }\r\n }\r\n\r\n changeFolderDate(selectedDate, node) {\r\n if (selectedDate) {\r\n node.data[0].createdDTTM = selectedDate.toDateString();\r\n }\r\n }\r\n\r\n // Start function\r\n findDuplicate(): boolean {\r\n let isDuplicate = false;\r\n let duplicateNode: TreeNode = {};\r\n let labelArr: any[] = [];\r\n\r\n function recurseFindDuplicate(searchTree) {\r\n\r\n for (var i = 0; i < searchTree.length; i++) {\r\n if (isDuplicate) {\r\n break;\r\n }\r\n // Are there children / sub-categories? YES\r\n if (searchTree[i].children.length > 0) {\r\n labelArr = searchTree[i]?.children?.filter(x => x.type.toLowerCase() === 'folder')?.map(function (item) { return item.label });\r\n isDuplicate = labelArr.some(function (item, idx) {\r\n return labelArr.indexOf(item) != idx\r\n });\r\n if (isDuplicate) {\r\n break;\r\n }\r\n recurseFindDuplicate(searchTree[i].children);\r\n\r\n }\r\n }\r\n\r\n }\r\n\r\n recurseFindDuplicate(this.targetTreeData);\r\n\r\n return isDuplicate;\r\n }\r\n\r\n getFlagTooltip(langObj): string {\r\n let tooltipMsg = this.labelReplacer('ttFlagDefault');\r\n if (langObj) {\r\n if (langObj?.folderName !== undefined && langObj?.folderName !== null && langObj?.folderName?.trim() !== '') {\r\n tooltipMsg = langObj.folderName;\r\n }\r\n return tooltipMsg;\r\n }\r\n }\r\n\r\n}\r\n","import { Component, OnInit, ViewChildren, QueryList, ElementRef, Input } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { DocumentManagementService } from 'src/framework/services/manage-doc.service';\r\nimport { LabelcardMgmtService } from 'src/framework/services/labelcard-mgmt.service';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { DatePipe } from '@angular/common';\r\nimport { FolderManagementService } from 'src/framework/services/folder-mgmt.service';\r\nimport { MessageService, TreeNode } from 'primeng';\r\nimport { DocverHistoryService } from 'src/framework/services/docver-history.service';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal'\r\nimport { UserService } from 'src/framework/services/userservice';\r\nimport { ModalContentComponent } from 'src/app/shared/modal-component/modal.component';\r\nimport { TopicCardService } from 'src/framework/services/topic-card.service';\r\nimport * as _ from 'lodash';\r\nimport { AddNewTopicCardComponent } from '../add-new-topic-card/add-new-topic-card.component';\r\nimport { EditTopicCardComponent } from '../edit-topic-card/edit-topic-card.component';\r\nimport { Cards } from 'src/app/entities/topic-card';\r\nimport { LanguageService } from 'src/framework/services/language.service';\r\nimport { CategoryConstant } from 'src/app/shared/app-constants/category-constants';\r\n\r\n@Component({\r\n selector: 'app-topic-card',\r\n templateUrl: './topic-card.component.html',\r\n styleUrls: ['./topic-card.component.css']\r\n})\r\nexport class TopicCardComponent implements OnInit {\r\n @Input() selectedtopicCard=0;\r\n\r\n @ViewChildren('uploadNewDocComponent') uploadNewDoc: QueryList;\r\n @ViewChildren('editDocComponent') editDoc: QueryList;\r\n @ViewChildren('ctrlAddTab') ctrlAddTab: QueryList;\r\n @ViewChildren('ctrlEditTab') ctrlEditTab: QueryList;\r\n\r\n\r\n selectedNode: TreeNode;\r\n targetTreeData: any[]=[];\r\n showSideBar = false;\r\n showFileVersionGrid = false;\r\n docVersionList: any[] = [];\r\n gridVersionList: any[] = [];\r\n engagementDocList: any[] = [];\r\n processedDocIdList: any[] = [];\r\n cols: any[];\r\n cities=[];\r\n selectedCity1:any;\r\n colmns: any[];\r\n editDocVersionList: any[] = [];\r\n addTabIndex = 0;\r\n editTabIndex = 0;\r\n appLangList: any[] = [];\r\n docStatusList: any[] = [];\r\n docTypeList: any[] = [];\r\n maxSeed: number = 0;\r\n documentVersionHistoryModel: any[]\r\n showHistory = false;\r\n isApproveDisabled = false;\r\n public selectedColumns: any[];\r\n public columnOptions: any[];\r\n exportColumns: any[];\r\n bsModalRef: BsModalRef;\r\n showDocVersionCategoryId:number;\r\n\r\n selectedAppLanguage: any;\r\n selectedAppLanguageJson: any;\r\n defaultEnglishJson: any;\r\n selectedLangDocTypeJson: any;\r\n defaultEngDocTypeJson: any;\r\n selectedLangStatusJson: any;\r\n defaultEngStatusJson: any;\r\n selectedLangLabelJson: any;\r\n defaultEngLangLabelJson: any;\r\n islabelLoaded: boolean = false;\r\n selectedLangDateJson: any;\r\n defaultEngDateJson: any;\r\n\r\n engagementDetail = {\r\n appLanguage: 1,\r\n engagementId: 1,\r\n engagementName: '',\r\n engStatusId: 1,\r\n engStatusName: '',\r\n engInitialDate: null,\r\n engLanguage: [{\r\n \"languageId\": 1,\r\n \"languageName\": \"English\",\r\n \"languageFlagPath\": \"../../assets/flags/English.png\"\r\n }],\r\n engLanguageFrench: [{\r\n \"languageId\": 1,\r\n \"languageName\": \"Anglaise\",\r\n \"languageFlagPath\": \"../../assets/flags/English.png\"\r\n }]\r\n }\r\n showDocVersionTypeId: number;\r\n isUnapproved: boolean = true;\r\n showEditSideBar: boolean;\r\n saveMsg: string;\r\n topics=[];\r\n userDetail: any = {};\r\n isAllNonApproved: boolean = false;\r\n canApproveOtherLang: boolean = false;\r\n selectedFilePath: string;\r\n userList: any[] = [];\r\n uploadFileKey: any = null;\r\n cards= new Cards();\r\n docCategoryList: any[] = [];\r\n fileName=\"\";\r\n selectedGlobalLanguageJson: any;\r\n defaultGlobalEnglishJson:any\r\n\r\n\r\n\r\n constructor(private http: HttpClient, private manageDocService: TopicCardService,\r\n private labelCardService: LabelcardMgmtService, private spinner: NgxSpinnerService,\r\n private datePipe: DatePipe, private folderService: FolderManagementService,\r\n private messageService: MessageService, private DocService: DocverHistoryService,\r\n private modalService: BsModalService,private userService : UserService,private languageService:LanguageService\r\n ) {\r\n\r\n\r\n \r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadLanguageLabel();\r\n this.fileName=\"topicCardVersionHistoryLogs_export_\" + new Date().getTime();\r\n if (sessionStorage.getItem('userDetail')) {\r\n this.userDetail = JSON.parse(sessionStorage.getItem('userDetail'));\r\n }\r\n\r\n this.cards.topicCard[\"primary\"]=[];\r\n this.cards.topicCard[\"secondary\"]=[];\r\n this.cards.statusUpdate=[];\r\n\r\n this.loadMasterData()\r\n .then(res => (\r\n this.initializeEngagementData()\r\n .then(res => res=> this.getTopicCards())\r\n ));\r\n }\r\n\r\n\r\n loadLanguageLabel() {\r\n let englishLanguageMappings, selectedLanguageMappings: any;\r\n let englishDocTypeMappings, selectedLangDocTypeMappings: any;\r\n let englishStatusMappings, selectedLangStatusMappings: any;\r\n let englishLangLabelMappings, selectedLangLabelMappings: any;\r\n let englishglobalLanguageMappings, selectedglobalLanguageMappings: any;\r\n let englishDateMappings, selectedLangDateMappings: any;\r\n\r\n return new Promise((resolve, reject) => {\r\n if (sessionStorage.getItem('selectedLanguageId')) {\r\n this.selectedAppLanguage = 1;//JSON.parse(sessionStorage.getItem('selectedLanguageId'));\r\n }\r\n\r\n this.languageService.currentData.subscribe(data => {\r\n this.spinner.show();\r\n this.selectedAppLanguage = data.Id\r\n this.engagementDetail.appLanguage = this.selectedAppLanguage;\r\n });\r\n\r\n\r\n this.languageService.mySubject.subscribe((data) => {\r\n var languageMappings = data;\r\n if (languageMappings?.length > 0) {\r\n\r\n englishLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.TopicCards.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishDocTypeMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.DocumentTypes.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishStatusMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Status.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishglobalLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Global.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n \r\n\r\n if (englishLanguageMappings?.isGlobal) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.TopicCards.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangDocTypeMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.DocumentTypes.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangStatusMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Status.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedglobalLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Global.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0]; \r\n\r\n selectedLangDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n }\r\n else {\r\n if (Number(this.selectedAppLanguage) === 2) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.TopicCards.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangDocTypeMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.DocumentTypes.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangStatusMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Status.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedglobalLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Global.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n \r\n\r\n selectedLangDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n }\r\n else {\r\n selectedLanguageMappings = englishLanguageMappings;\r\n selectedLangDocTypeMappings = englishDocTypeMappings;\r\n selectedLangStatusMappings = englishStatusMappings;\r\n selectedLangLabelMappings = englishLangLabelMappings;\r\n selectedglobalLanguageMappings = englishglobalLanguageMappings;\r\n selectedLangDateMappings = englishDateMappings;\r\n\r\n }\r\n }\r\n\r\n this.selectedAppLanguageJson = JSON.parse(selectedLanguageMappings?.languageMappingJSON ?? englishLanguageMappings.languageMappingJSON);\r\n this.defaultEnglishJson = JSON.parse(englishLanguageMappings.languageMappingJSON);\r\n\r\n this.selectedLangDocTypeJson = JSON.parse(selectedLangDocTypeMappings?.languageMappingJSON ?? englishDocTypeMappings.languageMappingJSON);\r\n this.defaultEngDocTypeJson = JSON.parse(englishDocTypeMappings.languageMappingJSON);\r\n\r\n this.selectedLangStatusJson = JSON.parse(selectedLangStatusMappings?.languageMappingJSON ?? englishStatusMappings.languageMappingJSON);\r\n this.defaultEngStatusJson = JSON.parse(englishStatusMappings.languageMappingJSON);\r\n\r\n this.selectedLangLabelJson = JSON.parse(selectedLangLabelMappings?.languageMappingJSON ?? englishLangLabelMappings.languageMappingJSON);\r\n this.defaultEngLangLabelJson = JSON.parse(englishLangLabelMappings.languageMappingJSON);\r\n\r\n this.selectedGlobalLanguageJson = JSON.parse(selectedglobalLanguageMappings.languageMappingJSON);\r\n this.defaultGlobalEnglishJson = JSON.parse(englishglobalLanguageMappings.languageMappingJSON);\r\n\r\n this.selectedLangDateJson = JSON.parse(selectedLangDateMappings?.languageMappingJSON ?? englishDateMappings.languageMappingJSON);\r\n this.defaultEngDateJson = JSON.parse(englishDateMappings.languageMappingJSON);\r\n\r\n this.islabelLoaded =false; \r\n this.cols = [\r\n { field: 'statusName', header: this.labelReplacer('Status') },\r\n { field: 'languageName', header: this.labelReplacer('Language') },\r\n { field: 'topicCardCategory', header: this.labelReplacer('Category') },\r\n { field: 'tctitle', header: this.labelReplacer('Title') },\r\n { field: 'description', header: this.labelReplacer('Description') },\r\n { field: 'topicCardType', header: this.labelReplacer('Type') },\r\n { field: 'topicCardDateStr', header: this.labelReplacer('Date') } ];\r\n this.colmns = [\r\n { field: 'topicCardId', header: this.labelReplacer('TopicCardID') },\r\n { field: 'tcversionId', header: this.labelReplacer('TopicCardVersionID') },\r\n { field: 'languageName', header: this.labelReplacer('Language') },\r\n { field: 'statusName', header: this.labelReplacer('Status') },\r\n { field: 'currentAuthorized', header: this.labelReplacer('CurrentAuthorized') },\r\n { field: 'currentDraft', header: this.labelReplacer('CurrentDraft') },\r\n { field: 'tctitle', header: this.labelReplacer('TopicCardTitle') },\r\n { field: 'description', header: this.labelReplacer('TopicCardDescription') },\r\n { field: 'createdBy', header: this.labelReplacer('CreatedBy') },\r\n { field: 'createdDate', header: this.labelReplacer('CreatedDate') },\r\n { field: 'approvalRequestedByGpn', header: this.labelReplacer('ApprovalRequestedByGPN') },\r\n { field: 'approvalRequestedFromGpn', header: this.labelReplacer('ApprovalRequestedFromGPN') },\r\n { field: 'approvalRequestedStringFormat', header: this.labelReplacer('ApprovalRequestedDateTime') },\r\n { field: 'authorizedByGpn', header: this.labelReplacer('AuthorizedByGPN') },\r\n { field: 'authorizedStringFormat', header: this.labelReplacer('AuthorizedDateTime') },\r\n { field: 'postedDateStringFormat', header: this.labelReplacer('PostedDate') },\r\n { field: 'authorizationEndedByGpn', header: this.labelReplacer('AuthorizationEndedByGPN') },\r\n { field: 'authorizationEndStringFormat', header: this.labelReplacer('AuthorizationEndedDateTime') },\r\n { field: 'logCreatedDate', header: this.labelReplacer('LogCreatedDate') },\r\n { field: 'logCreatedBy', header: this.labelReplacer('LogCreatedBy') }\r\n ];\r\n this.exportColumns = this.colmns.map(col => ({ title: col.header, dataKey: col.field }));\r\n\r\n this.columnOptions = [];\r\n this.selectedColumns = [];\r\n for (let i = 0; i < this.colmns.length; i++) {\r\n this.columnOptions.push({ label: this.colmns[i].header, value: this.colmns[i] });\r\n }\r\n\r\n this.formatVersionList()\r\n\r\n this.islabelLoaded = true;\r\n resolve(1);\r\n }\r\n else {\r\n\r\n }\r\n });\r\n })\r\n .catch(err => {\r\n console.log(err);\r\n });\r\n }\r\n\r\n\r\n labelReplacer(labelKey): string {\r\n return this.selectedAppLanguageJson[labelKey]?.trim() ? this.selectedAppLanguageJson[labelKey] ?? 'text not found' : this.defaultEnglishJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n docTypeReplacer(labelKey): string {\r\n return this.selectedLangDocTypeJson[labelKey]?.trim() ? this.selectedLangDocTypeJson[labelKey] ?? 'text not found' : this.defaultEngDocTypeJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n activeReplacer(labelKey): string {\r\n return this.selectedGlobalLanguageJson[labelKey]?.trim() ? this.selectedGlobalLanguageJson[labelKey] ?? 'text not found' : this.defaultGlobalEnglishJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n statusReplacer(labelKey): string {\r\n return this.selectedLangStatusJson[labelKey]?.trim() ? this.selectedLangStatusJson[labelKey] ?? 'text not found' : this.defaultEngStatusJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n languageReplacer(labelKey): string {\r\n return this.selectedLangLabelJson[labelKey]?.trim() ? this.selectedLangLabelJson[labelKey] ?? 'text not found' : this.defaultEngLangLabelJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n monthReplacer(labelKey): string {\r\n let localeDt;\r\n if (labelKey) {\r\n let arr = labelKey.split(' ');\r\n if (arr?.length == 3)\r\n localeDt = arr[0] + ' ' + this.calendarReplacer(arr[1]?.toUpperCase()) + ' ' + arr[2];\r\n else if (arr?.length == 4)\r\n localeDt = arr[0] + ' ' + this.calendarReplacer(arr[1]?.toUpperCase()) + ' ' + arr[2] + ' ' + arr[3];\r\n else\r\n localeDt = labelKey;\r\n }\r\n return localeDt;\r\n }\r\n\r\n calendarReplacer(labelKey): string {\r\n return this.selectedLangDateJson[labelKey]?.trim() ? this.selectedLangDateJson[labelKey] ?? 'text not found' : this.defaultEngDateJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n dayOrMonthNameShort(name, length): string {\r\n let shortName = '';\r\n if (name?.trim()?.length == 0)\r\n shortName = 'Text not found';\r\n else if (name?.trim()?.length > 0 && name?.trim()?.length < length)\r\n shortName = name;\r\n else\r\n shortName = name.substr(0, length);\r\n return shortName;\r\n }\r\n\r\n initializeEngagementData() {\r\n this.spinner.show();\r\n return new Promise((resolve, reject) => {\r\n if (sessionStorage.getItem('appLanguageList')) {\r\n this.appLangList = JSON.parse(sessionStorage.getItem('appLanguageList'));\r\n }\r\n else {\r\n this.getLanguageList();\r\n }\r\n if (sessionStorage.getItem('engagementDetail')) {\r\n this.engagementDetail = JSON.parse(sessionStorage.getItem('engagementDetail'));\r\n\r\n }\r\n resolve(1);\r\n });\r\n }\r\n\r\n\r\n getTopicCards() {\r\n\r\n this.cards.topicCard[\"primary\"]=[];\r\n this.cards.topicCard[\"secondary\"]=[];\r\n this.cards.statusUpdate=[];\r\n this.cities=[];\r\n this.targetTreeData=[];\r\n this.engagementDetail[\"selectedLanguageId\"]=this.selectedAppLanguage;\r\n this.manageDocService.getEngagementTopicCardsBasedOnLanguage(this.engagementDetail).subscribe(files => {\r\n this.targetTreeData =files.data;\r\n this.engagementDocList = files.data;\r\n this.preProcessTree();\r\n this.targetTreeData.forEach(items=>{\r\n items.topicCardVersionList=items.topicCardVersionList.filter(e=>e.styleClass != 'fileClass hideFileClass');\r\n });\r\n \r\n this.targetTreeData.forEach(item=>{\r\n if(item.topicCardTypeId==1){\r\n if(item.topicCardCategoryId==1){\r\n this.cards.topicCard[\"primary\"].push(item.topicCardVersionList[0]);\r\n }\r\n else{\r\n this.cards.topicCard[\"secondary\"].push(item.topicCardVersionList[0]);\r\n }\r\n }\r\n else if(item.topicCardTypeId==2){\r\n this.cards.statusUpdate.push(item.topicCardVersionList[0]);\r\n }\r\n this.cities.push(item.topicCardVersionList[0]);\r\n });\r\n this.cards.topicCard[\"primary\"] = this.cards.topicCard[\"primary\"].sort((a, b) =>{\r\n\r\n a.topicCardDate = a.topicCardDate.split('/').reverse().join('');\r\n b.topicCardDate = b.topicCardDate.split('/').reverse().join('');\r\n return a.topicCardDate < b.topicCardDate ? 1 : a.topicCardDate > b.topicCardDate ? -1 : 0;\r\n });\r\n this.cards.topicCard[\"secondary\"] = this.cards.topicCard[\"secondary\"].sort((a, b) =>{\r\n\r\n a.topicCardDate = a.topicCardDate.split('/').reverse().join('');\r\n b.topicCardDate = b.topicCardDate.split('/').reverse().join('');\r\n return a.topicCardDate < b.topicCardDate ? 1 : a.topicCardDate > b.topicCardDate ? -1 : 0;\r\n });\r\n\r\n this.cards.statusUpdate = this.cards.statusUpdate.sort((a, b) =>{\r\n\r\n a.topicCardDate = a.topicCardDate.split('/').reverse().join('');\r\n b.topicCardDate = b.topicCardDate.split('/').reverse().join('');\r\n return a.topicCardDate < b.topicCardDate ? 1 : a.topicCardDate > b.topicCardDate ? -1 : 0;\r\n });\r\n\r\n\r\n if(this.selectedtopicCard!=0 && this.selectedtopicCard!=undefined){\r\n this.topics=this.targetTreeData.filter(item=>item.topicCardId==this.selectedtopicCard)\r\n if(this.topics.length>0){\r\n this.viewFileVersion(this.topics[0]);\r\n }\r\n }\r\n this.spinner.hide();\r\n });\r\n\r\n }\r\n\r\n preProcessTree() {\r\n this.processedDocIdList = [];\r\n\r\n return new Promise((resolve, reject) => {\r\n this.targetTreeData.forEach(x => {\r\n this.toggleFileDisplay(x);\r\n });\r\n resolve(1);\r\n });\r\n\r\n }\r\n\r\n\r\n\r\n displayFolderLabel(node: TreeNode): string {\r\n let primaryLangId, otherPrimaryLangId = 0;\r\n let nodeLangList: any[] = [];\r\n let langIndex = -1;\r\n let folderLabel = '';\r\n\r\n if (this.engagementDetail.appLanguage == 2) {\r\n primaryLangId = 2;\r\n otherPrimaryLangId = 1;\r\n }\r\n else //default is english\r\n {\r\n primaryLangId = 1;\r\n otherPrimaryLangId = 2;\r\n }\r\n\r\n folderLabel = node.label;\r\n nodeLangList = node?.data[0]?.language;\r\n\r\n if (nodeLangList.length > 0) {\r\n if ((langIndex = nodeLangList.findIndex(x => Number(x.languageId) === Number(primaryLangId))) > -1) {\r\n if (nodeLangList[langIndex]?.folderName?.trim() !== '') {\r\n folderLabel = nodeLangList[langIndex]?.folderName;\r\n }\r\n else {\r\n if ((langIndex = nodeLangList.findIndex(x => Number(x.languageId) === Number(otherPrimaryLangId))) > -1) {\r\n if (nodeLangList[langIndex]?.folderName?.trim() !== '') {\r\n folderLabel = nodeLangList[langIndex]?.folderName;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n return folderLabel;\r\n\r\n }\r\n\r\n // Start function\r\n\r\n\r\n\r\n toggleFileDisplay(node: any) {\r\n let primaryLangId, otherPrimaryLangId = 0;\r\n let currentDocId = 0;\r\n let treeVersionList: any[] = [];\r\n let detailVersionList: any[] = [];\r\n let matchFound = false;\r\n\r\n if (this.engagementDetail.appLanguage == 2) {\r\n primaryLangId = 2;\r\n otherPrimaryLangId = 1;\r\n }\r\n else //default is english\r\n {\r\n primaryLangId = 1;\r\n otherPrimaryLangId = 2;\r\n }\r\n\r\n if (!this.processedDocIdList?.includes(node?.topicCardId)) {\r\n currentDocId = node?.topicCardId;\r\n this.processedDocIdList.push(currentDocId);\r\n\r\n //fetch all versions for current docid from tree\r\n treeVersionList = this.targetTreeData?.filter(x => Number(x.topicCardId) === Number(currentDocId))[0]?.topicCardVersionList;\r\n detailVersionList = this.engagementDocList?.filter(x => Number(x.topicCardId) === Number(currentDocId))[0]?.topicCardVersionList;\r\n\r\n if (treeVersionList && detailVersionList) {\r\n\r\n if (treeVersionList?.length === detailVersionList?.length) {\r\n\r\n matchFound = this.isDisplayVersionInSelectedLang(treeVersionList, detailVersionList, primaryLangId);\r\n\r\n if (!matchFound) {\r\n this.isDisplayVersionInSelectedLang(treeVersionList, detailVersionList, otherPrimaryLangId);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n isDisplayVersionInSelectedLang(treeVersionList: any[], detailVersionList: any[], primaryLangId): boolean {\r\n let unAuthList: any[] = [];\r\n let authIndex, draftIndex, unAuthIndex = -1;\r\n let fileStyle = [];\r\n const isAnyAuthorized = (x) => (x.currentAuthorized && !x.currentDraft);\r\n const isAnyDraft = (x) => (!x.currentAuthorized && x.currentDraft\r\n && x.approvalRequestedByGpn === null && x.approvalRequestedFromGpn === null);\r\n const isAnyAuthPending = (x) => (!x.currentAuthorized && x.currentDraft\r\n && x.approvalRequestedByGpn != null && x.approvalRequestedFromGpn != null\r\n && x.authorizedByGpn === null && x.authorizedDateTime === null);\r\n\r\n if (!detailVersionList.some(isAnyAuthorized)) {\r\n fileStyle.push('G');\r\n if (detailVersionList.some(isAnyAuthPending)) {\r\n fileStyle.push('A');\r\n }\r\n }\r\n else if (detailVersionList.some(isAnyAuthPending)) {\r\n fileStyle.push('A');\r\n }\r\n else if (detailVersionList.some(isAnyDraft)) {\r\n fileStyle.push('D');\r\n }\r\n\r\n\r\n //check for current authorized version in selected language\r\n authIndex = detailVersionList?.findIndex(x => x.currentAuthorized\r\n && !x.currentDraft && Number(x.languageId) === Number(primaryLangId));\r\n //check for current draft version in selected language\r\n draftIndex = detailVersionList?.findIndex(x => !x.currentAuthorized\r\n && x.currentDraft && Number(x.languageId) === Number(primaryLangId));\r\n //check for unauthorized versions in selected language\r\n unAuthList = detailVersionList?.filter(x => !x.currentAuthorized\r\n && !x.currentDraft && Number(x.languageId) === Number(primaryLangId))?.sort(this.date_sort_desc);\r\n if (authIndex > -1) {\r\n this.setFileToggleClass(treeVersionList, detailVersionList, authIndex, fileStyle);\r\n }\r\n else if (draftIndex > -1) {\r\n this.setFileToggleClass(treeVersionList, detailVersionList, draftIndex, fileStyle);\r\n }\r\n else {\r\n if (unAuthList.length > 0) {\r\n unAuthIndex = detailVersionList.indexOf(unAuthList[0]);\r\n this.setFileToggleClass(treeVersionList, detailVersionList, unAuthIndex, fileStyle);\r\n\r\n }\r\n }\r\n\r\n if (authIndex === -1 && draftIndex === -1 && unAuthIndex === -1) {\r\n return false;\r\n }\r\n return true;\r\n\r\n }\r\n\r\n setFileToggleClass(treeVersionList, detailVersionList, versionIndex, fileStyle) {\r\n treeVersionList.forEach(x => {\r\n if (Number(x?.tcversionId) === Number(detailVersionList[versionIndex]?.tcversionId)) {\r\n x['styleClass'] = 'fileClass';\r\n x.showDraftMark = false;\r\n x.showRedMark = false;\r\n\r\n //Add additonal styles to visible file\r\n if (fileStyle.length > 0) {\r\n fileStyle.forEach(style => {\r\n if (style === 'G') {\r\n x['styleClass'] = 'fileClass grayFileClass';\r\n }\r\n if (style === 'D') {\r\n x.showDraftMark = true;\r\n }\r\n if (style === 'A') {\r\n x.showRedMark = true;\r\n }\r\n });\r\n }\r\n\r\n }\r\n else {\r\n x['styleClass'] = 'fileClass hideFileClass';\r\n }\r\n });\r\n }\r\n\r\n get globalIdentitySeed() {\r\n\r\n if (this.targetTreeData.length > 0) {\r\n\r\n this.targetTreeData.forEach(node => {\r\n this.getMaxSeedValue(node);\r\n });\r\n }\r\n\r\n return this.maxSeed;\r\n }\r\n\r\n set globalIdentitySeed(value) {\r\n this.maxSeed = value;\r\n }\r\n\r\n getMaxSeedValue(node: TreeNode) {\r\n\r\n if (this.maxSeed < Number(node.key)) {\r\n this.maxSeed = Number(node.key);\r\n }\r\n if (node.children) {\r\n node.children.forEach(childNode => {\r\n this.getMaxSeedValue(childNode);\r\n });\r\n }\r\n\r\n }\r\n\r\n getStatusPillClass(statusId: Number) {\r\n\r\n let pillClass = '';\r\n if (statusId) {\r\n if (statusId === 2 || statusId === 4 || statusId === 7)\r\n pillClass = 'pill pill--approved m-0';\r\n else if (statusId === 1)\r\n pillClass = 'pill pill--closed m-0';\r\n else if (statusId === 3 || statusId === 6)\r\n pillClass = 'pill pill--failed m-0';\r\n // else if (statusId === 'authorized')\r\n // pillClass = 'pill pill--hold m-0';\r\n }\r\n\r\n return pillClass;\r\n }\r\n\r\n loadMasterData() {\r\n return new Promise((resolve, reject) => {\r\n this.getTopicCardType()\r\n .then(res => \r\n this.getTopicCardCategories()\r\n .then(res=>\r\n this.getDocStatus()\r\n .then(res => \r\n this.getUserList()\r\n .then(res => \r\n resolve(1))\r\n )))\r\n .catch(error => console.log(error))\r\n });\r\n\r\n }\r\n \r\n getTopicCardCategories() {\r\n return new Promise((resolve, reject) => {\r\n this.manageDocService.getTopicCardCategory().subscribe(res => {\r\n if (res) {\r\n //success\r\n this.docCategoryList = res.data;\r\n this.docCategoryList.forEach(item=>{\r\n item.topicCardCategoryDescription=this.activeReplacer(item.topicCardCategoryDescription);\r\n })\r\n } else {\r\n //display error\r\n }\r\n resolve(1);\r\n });\r\n });\r\n}\r\n\r\n\r\n \r\n\r\n getUserList(){\r\n return new Promise((resolve, reject) => {\r\n this.userService.GetUserList().subscribe(res => {\r\n if (res.status === 0) {\r\n //success\r\n this.userList = res.data;\r\n } else {\r\n //display error\r\n }\r\n resolve(1);\r\n });\r\n });\r\n }\r\n getDocStatus() {\r\n\r\n return new Promise((resolve, reject) => {\r\n this.manageDocService.getDocStatus().subscribe(res => {\r\n if (res) {\r\n //success\r\n this.docStatusList = res.data;\r\n } else {\r\n //display error\r\n }\r\n resolve(1);\r\n });\r\n });\r\n }\r\n\r\n\r\n\r\n \r\n\r\n toggleBack() {\r\n this.showHistory = false;\r\n }\r\n\r\n getLanguageList() {\r\n return new Promise((resolve, reject) => {\r\n this.labelCardService.getLanguageList().subscribe(res => {\r\n if (res) {\r\n //success\r\n // this.appLangList = res;\r\n res.forEach(element => {\r\n if (element.isAppLanguage) {\r\n this.appLangList.push({\r\n languageId: element.languageId,\r\n languageName: element.name,\r\n languageFlagPath: element.languagePath\r\n });\r\n }\r\n\r\n });\r\n } else {\r\n //display error\r\n }\r\n resolve(1);\r\n });\r\n });\r\n }\r\n\r\n sortTree() {\r\n this.targetTreeData.sort((a, b) => a.label?.localeCompare(b.label));\r\n this.targetTreeData.forEach(element => {\r\n element.children?.sort((a, b) => a.label?.localeCompare(b.label));\r\n });\r\n\r\n\r\n }\r\n\r\n getFiles() {\r\n return this.http.get('../../../../assets/files/treedata.js')\r\n .toPromise()\r\n .then(res => res.data);\r\n }\r\n\r\n nodeSelect(event) {\r\n let selectedNodeCopy: TreeNode = {};\r\n this.showHistory = false;\r\n\r\n this.selectedNode = event?.node;\r\n\r\n if (event?.node?.type === 'file') {\r\n\r\n selectedNodeCopy = _.cloneDeep(this.selectedNode);\r\n this.setAbsoluteFilePath(selectedNodeCopy);\r\n this.viewFileVersion(event.node);\r\n }\r\n else {\r\n this.showFileVersionGrid = false;\r\n }\r\n }\r\n\r\n setAbsoluteFilePath(node: TreeNode) {\r\n let filePath = '';\r\n this.selectedFilePath = '';\r\n node = node.parent;\r\n while (node?.parent !== undefined && node?.parent !== null) {\r\n filePath = node.label + '/' + filePath;\r\n node = node.parent;\r\n }\r\n\r\n this.selectedFilePath = filePath;\r\n }\r\n\r\n nodeDrop(event) {\r\n\r\n let sourceNode: TreeNode = event.dragNode?.parent;\r\n let dragNode: TreeNode = event.dragNode;\r\n let targetNode: TreeNode;\r\n let versionNodeList: TreeNode[];\r\n let isReshuffle = false;\r\n let versionIndex = -1;\r\n\r\n if ('index' in event) {\r\n targetNode = event?.dropNode;\r\n }\r\n else if (event?.hasOwnProperty('dropIndex')) {\r\n targetNode = event?.dropNode?.parent;\r\n }\r\n\r\n //check for re-position in same folder\r\n if (sourceNode.key === targetNode.key) {\r\n isReshuffle = true;\r\n }\r\n\r\n if (!isReshuffle) {\r\n dragNode.data[0].parentId = targetNode.key;\r\n //fetch other versions of the same docid\r\n versionNodeList = sourceNode?.children.filter(x => x?.type.toLowerCase() === 'file'\r\n && (+x?.data[0]?.docId === +sourceNode?.data[0]?.docId));\r\n\r\n if (versionNodeList.length > 0) {\r\n versionNodeList.forEach(versionNode => {\r\n if (+versionNode.key !== +dragNode.key) {\r\n versionIndex = sourceNode?.children.indexOf(versionNode);\r\n if (versionIndex > -1) {\r\n sourceNode?.children.splice(versionIndex, 1);\r\n versionNode.data[0].parentId = targetNode.key;\r\n if (targetNode.children.indexOf(versionNode) === -1) {\r\n targetNode.children.push(versionNode);\r\n }\r\n }\r\n }\r\n });\r\n\r\n }\r\n }\r\n event.dropNode.expanded = true;\r\n }\r\n\r\n\r\n expandAll() {\r\n this.targetTreeData.forEach(node => {\r\n this.expandRecursive(node, true);\r\n });\r\n }\r\n\r\n collapseAll() {\r\n this.targetTreeData.forEach(node => {\r\n this.expandRecursive(node, false);\r\n });\r\n if(this.targetTreeData.length>0){\r\n this.targetTreeData[0].expanded = true;\r\n }\r\n }\r\n\r\n expandRecursive(node: TreeNode, isExpand: boolean) {\r\n node.expanded = isExpand;\r\n if (node.children) {\r\n node.children.forEach(childNode => {\r\n this.expandRecursive(childNode, isExpand);\r\n });\r\n }\r\n }\r\n\r\n getFileIcon(node: TreeNode) {\r\n let fileType = node.data[0]?.fileType?.toLowerCase();\r\n\r\n //attach file icon based on file type\r\n if (fileType === '.pdf') {\r\n node.data[0].fileTypeIcon = 'picture_as_pdf';\r\n node.data[0].fileIconStyle = '#E0362C';\r\n }\r\n else if (fileType === '.doc' || fileType === '.docx' || fileType === '.dot'\r\n || fileType === '.txt') {\r\n node.data[0].fileTypeIcon = 'description';\r\n node.data[0].fileIconStyle = '#1777CF';\r\n }\r\n else if (fileType === '.xls' || fileType === '.xlsx' || fileType === '.xlsb'\r\n || fileType === '.csv') {\r\n node.data[0].fileTypeIcon = 'insert_chart';\r\n node.data[0].fileIconStyle = '#189D3E';\r\n }\r\n else if (fileType === '.jpg' || fileType === '.jpeg' || fileType === '.png'\r\n || fileType === '.tif') {\r\n node.data[0].fileTypeIcon = 'insert_photo';\r\n node.data[0].fileIconStyle = '#FF6D00';\r\n }\r\n else {\r\n node.data[0].fileTypeIcon = 'help';\r\n }\r\n\r\n\r\n }\r\n\r\n getFileLabel(node: TreeNode) {\r\n let nodeLabel = '';\r\n let docDate = '';\r\n let fileSizeInMb = 0;\r\n if (node !== null && node != undefined) {\r\n nodeLabel += node.label + ' - ';\r\n if (node.data[0]?.documentDate !== null && node.data[0]?.documentDate !== undefined) {\r\n docDate = new Date(node.data[0]?.documentDate)?.toUTCString();\r\n }\r\n else {\r\n docDate = new Date(node.data[0]?.createdDTTM)?.toUTCString();\r\n }\r\n\r\n if (docDate !== 'Invalid Date')\r\n docDate = this.datePipe.transform(docDate, \"dd MMM, yyyy\");\r\n nodeLabel += docDate + ' - '\r\n\r\n fileSizeInMb = Math.round((node.data[0]?.fileSize / 1024));\r\n\r\n nodeLabel += fileSizeInMb + ' KB';\r\n\r\n\r\n return nodeLabel;\r\n }\r\n }\r\n uploadFile(node) {\r\n this.uploadFileKey = node?.key ?? null;\r\n }\r\n\r\n getSavedDoc(emitDocData) {\r\n\r\n this.spinner.show();\r\n this.showSideBar = false;\r\n\r\n\r\n //auto save tree with new file added\r\n this.getTopicCards();\r\n this.saveMsg = 'Topic Card saved successfully.';\r\n \r\n\r\n this.spinner.hide();\r\n\r\n }\r\n\r\n\r\n disableDelete(rowData) {\r\n let isDisabled = true;\r\n let otherPrimaryLang = 0;\r\n const isDraftInOpl = (x) => (Number(x.languageId) === Number(otherPrimaryLang) && Number(x.statusId) === 1);\r\n const isOtherLangDraftExist = (x) => (Number(x.languageId) !== 1 && Number(x.languageId) !== 2 && Number(x.statusId) === 1);\r\n\r\n if (Number(rowData['statusId']) === 1) {\r\n //allow delete if only one draft version exists for docid\r\n if (this.docVersionList.length == 1)\r\n isDisabled = false;\r\n else {\r\n if (Number(rowData['languageId']) === 1) { //english\r\n otherPrimaryLang = 2; //french\r\n }\r\n else if (Number(rowData['languageId']) === 2)//french\r\n {\r\n otherPrimaryLang = 1; //english\r\n }\r\n\r\n if (Number(rowData['languageId']) === 1 || Number(rowData['languageId']) === 2) {\r\n //check if OPL draft exists\r\n if (this.docVersionList.findIndex(isDraftInOpl) > -1) {\r\n isDisabled = false;\r\n }\r\n else {\r\n //check if draft exists in any other language\r\n if (this.docVersionList.some(isOtherLangDraftExist)) {\r\n isDisabled = true;\r\n }\r\n else {\r\n isDisabled = false;\r\n }\r\n }\r\n\r\n }\r\n else {\r\n isDisabled = false;\r\n }\r\n }\r\n\r\n }\r\n return isDisabled;\r\n }\r\n\r\n\r\n\r\n\r\n editDocVersion() {\r\n this.spinner.show();\r\n return new Promise((resolve, reject) => {\r\n\r\n this.showEditSideBar = true;\r\n this.editDocVersionList = [];\r\n this.computeDocPerLang()\r\n .then(res => this.spinner.hide())\r\n .catch((error) => {\r\n console.log(error);\r\n this.spinner.hide();\r\n });\r\n resolve(1);\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n this.spinner.hide();\r\n });\r\n }\r\n\r\n computeDocPerLang() {\r\n\r\n return new Promise((resolve, reject) => {\r\n\r\n let docByLangList: any[];\r\n let nonDraftIndex = -1;\r\n let draftIndex = -1;\r\n let editDocLangList: any[] = [];\r\n let showDraftButton: boolean = false;\r\n let showDraftIcon: boolean = false;\r\n let showPendingDraftIcon = false;\r\n this.canApproveOtherLang = false;\r\n\r\n\r\n const isAnyNonDraft = (x) => ((!x.currentAuthorized && !x.currentDraft)\r\n || (x.currentAuthorized && !x.currentDraft));\r\n const isApprovedInPrimaryLang = (x) => ((x.languageId === 1 || x.languageId === 2) && x.currentAuthorized && !x.currentDraft);\r\n\r\n this.canApproveOtherLang = this.gridVersionList.some(isApprovedInPrimaryLang);\r\n\r\n this.isAllNonApproved = this.gridVersionList.every(x => !x.currentAuthorized);\r\n if (this.gridVersionList.length > 0) {\r\n this.engagementDetail.engLanguage.forEach(engLang => {\r\n docByLangList = this.gridVersionList.filter(x => Number(x.languageId) === Number(engLang.languageId));\r\n\r\n if (docByLangList && docByLangList.length > 0) {\r\n //check for non draft doc if any to show on LHS for language tab\r\n if ((nonDraftIndex = docByLangList.findIndex(isAnyNonDraft)) > -1) {\r\n showDraftButton = true;\r\n editDocLangList.push(\r\n docByLangList[nonDraftIndex]\r\n );\r\n }\r\n\r\n //check for existing draft (if any)\r\n if ((draftIndex = docByLangList.findIndex(x => Number(x.statusId) === 1)) > -1) {\r\n showDraftButton = false;\r\n showDraftIcon = true;\r\n if (docByLangList[draftIndex].isPendingApproval) {\r\n showPendingDraftIcon = true;\r\n showDraftIcon = false;\r\n }\r\n editDocLangList.push(\r\n docByLangList[draftIndex]\r\n );\r\n }\r\n\r\n }\r\n else {\r\n editDocLangList.push({\r\n approvalRequestedByGpn: null,\r\n approvalRequestedDateTime: null,\r\n approvalRequestedFromEmail: null,\r\n approvalRequestedFromGpn: null,\r\n authorizationEndDateTime: null,\r\n authorizationEndedByGpn: null,\r\n authorizedByGpn: null,\r\n authorizedDateTime: null,\r\n createdBy: null,\r\n createdByGpn: null,\r\n createdDate: null,\r\n currentAuthorized: false,\r\n currentDraft: true,\r\n topicCardId: this.gridVersionList[0].topicCardId,\r\n tcversionId: 0,\r\n topicCardDate: null,\r\n description: null,\r\n tctitle: null,\r\n topicCardCategory:this.gridVersionList[0]?.topicCardCategory,\r\n topicCardCategoryId : this.gridVersionList[0]?.topicCardCategoryId,\r\n topicCardType: this.gridVersionList[0]?.topicCardType,\r\n topicCardTypeId: this.gridVersionList[0]?.topicCardTypeId,\r\n externalViews: null,\r\n iconRef:this.gridVersionList[0]?.iconRef,\r\n icon:this.gridVersionList[0]?.icon,\r\n isPendingApproval: false,\r\n languageId: engLang.languageId,\r\n languageName: engLang.languageName,\r\n modifiedBy: null,\r\n modifiedDate: null,\r\n postedDate: null,\r\n status: null,\r\n statusId: 1,\r\n statusName: 'Draft'\r\n })\r\n }\r\n\r\n //pending check for authorized doc\r\n\r\n this.editDocVersionList.push(\r\n {\r\n languageId: engLang.languageId,\r\n languageName: engLang.languageName,\r\n languageDocList: editDocLangList,\r\n showDraftButton: showDraftButton,\r\n showDraftIcon: showDraftIcon,\r\n showPendingDraftIcon: showPendingDraftIcon\r\n }\r\n )\r\n\r\n //reset indices\r\n editDocLangList = [];\r\n draftIndex = -1;\r\n nonDraftIndex = -1;\r\n showDraftButton = false;\r\n showDraftIcon = false;\r\n showPendingDraftIcon = false;\r\n\r\n });\r\n }\r\n resolve(1);\r\n })\r\n .catch(error => {\r\n console.log(error);\r\n });\r\n }\r\n\r\n viewFileVersion(fileNode:any) {\r\n this.selectedNode=fileNode;\r\n this.showFileVersionGrid = true;\r\n if (fileNode?.topicCardId) {\r\n this.manageDocService.getDocVersionByDocId(fileNode).subscribe(res => {\r\n if (res?.data) {\r\n //success\r\n this.docVersionList = res.data['topicCardVersionList'];\r\n this.showDocVersionTypeId = res.data['topicCardTypeId'];\r\n this.showDocVersionCategoryId = res.data['topicCardCategoryId'];\r\n this.formatVersionList();\r\n } else {\r\n //display error\r\n this.messageService.add({\r\n summary: this.labelReplacer('ErrorUnabletogettopicCardversion'),\r\n detail: res.message,\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n\r\n });\r\n }\r\n else {\r\n\r\n this.messageService.add({\r\n summary: this.labelReplacer('ErrorUnabletogettopicCardversion'),\r\n detail: '',\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n\r\n\r\n }\r\n\r\n getDocumentsHistory(fileNode) {\r\n var docId = fileNode.topicCardId;\r\n this.manageDocService.getTopicCardVersionHistoryList(docId)\r\n .subscribe\r\n (\r\n (resp) => {\r\n this.documentVersionHistoryModel = resp;\r\n if(this.documentVersionHistoryModel.length>0){\r\n this.documentVersionHistoryModel.forEach(elements=>{\r\n elements.statusName= this.statusReplacer(elements.statusId);\r\n elements.languagePath = this.appLangList.filter(x=> x.languageName==elements.languageName)[0]?.languageFlagPath;\r\n elements.languageName = this.languageReplacer(elements.languageName);\r\n elements.createdDate = this.monthReplacer(this.datePipe.transform(elements.createdDate, 'dd MMM yyyy HH:mm:ss'));\r\n elements.logCreatedDate = this.monthReplacer(this.datePipe.transform(elements.logCreatedDate, 'dd MMM yyyy HH:mm:ss'));\r\n elements.approvalRequestedStringFormat = this.monthReplacer(this.datePipe.transform(elements.approvalRequestedDateTime, 'dd MMM yyyy HH:mm:ss'));\r\n elements.authorizedStringFormat = this.monthReplacer(this.datePipe.transform(elements.authorizedDateTime, 'dd MMM yyyy HH:mm:ss'));\r\n elements.authorizationEndStringFormat = this.monthReplacer(this.datePipe.transform(elements.AuthorizationEndDateTime, 'dd MMM yyyy HH:mm:ss'));\r\n elements.postedDateStringFormat = this.monthReplacer(this.datePipe.transform(elements.postedDate, 'dd MMM yyyy HH:mm:ss'));\r\n });\r\n }\r\n }\r\n );\r\n }\r\n\r\n getTopicCardType() {\r\n return new Promise((resolve, reject) => {\r\n this.manageDocService.getTopicCardType().subscribe(res => {\r\n if (res) {\r\n //success\r\n this.docTypeList = res.data;\r\n this.docTypeList.forEach(element => {\r\n element.topicCardTypeDescription=this.activeReplacer(element.topicCardTypeDescription);\r\n });\r\n } else {\r\n //display error\r\n }\r\n resolve(1);\r\n });\r\n });\r\n\r\n }\r\n\r\n formatVersionList() {\r\n if (this.docVersionList.length > 0) {\r\n this.docVersionList.forEach(docVersion => {\r\n docVersion.languageName = this.languageReplacer(this.appLangList.filter(x => Number(x.languageId) === Number(docVersion.languageId))[0]?.languageName); \r\n docVersion.languagePath = this.appLangList.filter(x=> Number(x.languageId)==Number(docVersion.languageId))[0]?.languageFlagPath;\r\n docVersion.statusName = this.statusReplacer(docVersion.statusId);\r\n docVersion.topicCardType = this.docTypeList.filter(x => Number(x.topicCardTypeId) === Number(this.showDocVersionTypeId))[0]?.topicCardTypeDescription;\r\n docVersion.topicCardCategory = this.docCategoryList.filter(x => Number(x.topicCardCategoryId) === Number(this.showDocVersionCategoryId))[0]?.topicCardCategoryDescription;\r\n docVersion.topicCardTypeId = this.showDocVersionTypeId;\r\n docVersion.topicCardCategoryId = this.showDocVersionCategoryId;\r\n docVersion.topicCardDate = this.datePipe.transform(docVersion.topicCardDate, \"dd MMM yyyy\");\r\n docVersion.topicCardDateStr = this.monthReplacer(this.datePipe.transform(docVersion.topicCardDate, \"dd MMM yyyy\"));\r\n docVersion.authorizedDateTime = this.monthReplacer(this.datePipe.transform(docVersion.authorizedDateTime, \"dd MMM yyyy\"));\r\n docVersion.isPendingApproval = false;\r\n });\r\n\r\n if (this.docVersionList.some(x => Number(x.statusId) === 2 ||\r\n Number(x.statusId) === 4 || Number(x.statusId === 7))) {\r\n this.isApproveDisabled = false;\r\n this.isUnapproved = false;\r\n }\r\n else {\r\n this.isApproveDisabled = true;\r\n this.isUnapproved = true;\r\n }\r\n\r\n this.getGridVersionList();\r\n\r\n }\r\n }\r\n\r\n getGridVersionList() {\r\n let versionLangList, unauthorizedList: any[] = [];\r\n let draftIndex, authorizedIndex, unauthorizedIndex = -1;\r\n this.gridVersionList = [];\r\n const isVersionAuthorized = (x) => (!x.currentDraft && x.currentAuthorized);\r\n const isVersionDraft = (x) => (x.currentDraft && !x.currentAuthorized);\r\n const isDraftAuthPending = (x) => (!x.currentAuthorized && x.currentDraft\r\n && x.approvalRequestedByGpn != null && x.approvalRequestedFromGpn != null\r\n && x.authorizedByGpn === null && x.authorizedDateTime === null);\r\n\r\n this.engagementDetail.engLanguage.forEach(engLang => {\r\n\r\n versionLangList = this.docVersionList.filter(x => Number(x.languageId) === Number(engLang.languageId));\r\n\r\n if (versionLangList && versionLangList.length > 0) {\r\n\r\n draftIndex = versionLangList.findIndex(isVersionDraft);\r\n if (draftIndex > -1) {\r\n if (isDraftAuthPending(versionLangList[draftIndex])) {\r\n versionLangList[draftIndex].isPendingApproval = true;\r\n }\r\n this.gridVersionList.push(versionLangList[draftIndex]);\r\n }\r\n\r\n authorizedIndex = versionLangList.findIndex(isVersionAuthorized);\r\n\r\n if (authorizedIndex > -1) {\r\n this.gridVersionList.push(versionLangList[authorizedIndex]);\r\n }\r\n else {\r\n if (versionLangList.some(x => !x.currentAuthorized && !x.currentDraft)) {\r\n unauthorizedList = versionLangList?.filter(x => !x.currentAuthorized && !x.currentDraft).sort(this.date_sort_desc);\r\n if (unauthorizedList && unauthorizedList.length > 0) {\r\n this.gridVersionList.push(unauthorizedList[0]);\r\n }\r\n }\r\n\r\n }\r\n\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n\r\n date_sort_desc = function (a, b) {\r\n // This is a comparison function that will result in dates being sorted in\r\n // DESCENDING order.\r\n a = new Date(a.authorizationEndDateTime);\r\n b = new Date(b.authorizationEndDateTime);\r\n return a > b ? -1 : a < b ? 1 : 0;\r\n };\r\n\r\n\r\n\r\n onAddPanelHide() {\r\n this.showSideBar = false;\r\n this.uploadNewDoc.forEach(childRef => childRef.resetForm());\r\n this.addTabIndex = 0;\r\n }\r\n\r\n onEditPanelHide() {\r\n this.showEditSideBar = false;\r\n this.editTabIndex = 0;\r\n }\r\n\r\n\r\n getDocLogs() {\r\n this.showHistory = true;\r\n this.getDocumentsHistory(this.selectedNode);\r\n\r\n }\r\n\r\n saveAsExcelFile(buffer: any, fileName: string): void {\r\n import(\"file-saver\").then(FileSaver => {\r\n let EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\r\n let EXCEL_EXTENSION = '.xlsx';\r\n const data: Blob = new Blob([buffer], {\r\n type: EXCEL_TYPE\r\n });\r\n FileSaver.saveAs(data, fileName + '_export_' + new Date().getTime() + EXCEL_EXTENSION);\r\n });\r\n }\r\n\r\n\r\n exportExcel() {\r\n import(\"xlsx\").then(xlsx => {\r\n const worksheet = xlsx.utils.json_to_sheet(this.getDocuments());\r\n const workbook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] };\r\n const excelBuffer: any = xlsx.write(workbook, { bookType: 'xlsx', type: 'array' });\r\n this.saveAsExcelFile(excelBuffer, \"documentVersionHistoryLogs\");\r\n });\r\n }\r\n\r\n public selectionItemForFilter(e) {\r\n const colsTempor = e.value;\r\n colsTempor.sort(function (a, b) {\r\n return a.index - b.index;\r\n });\r\n this.colmns = [];\r\n this.colmns = colsTempor;\r\n if (e.value.length > 23) {\r\n e.value.pop();\r\n }\r\n }\r\n\r\n getDocuments() {\r\n let lstofdocument = [];\r\n for (let documents of this.documentVersionHistoryModel) {\r\n\r\n documents.docId = documents.topicCardId;\r\n lstofdocument.push(documents);\r\n }\r\n return lstofdocument;\r\n }\r\n\r\n deleteFileVersion(file) {\r\n const initialState = {\r\n paramList: {\r\n displayMessage: this.labelReplacer('lblDeleteDraftModal'),\r\n showFootNote: false,\r\n footNote: ''\r\n }\r\n };\r\n\r\n this.bsModalRef = this.modalService.show(ModalContentComponent, { initialState });\r\n this.bsModalRef.content.event.subscribe(res => {\r\n if (res.data) {\r\n\r\n this.spinner.show();\r\n //delete file from json\r\n //update in table and blob\r\n this.manageDocService.deleteDocVersion(file).subscribe(res => {\r\n if (res.status === 0) {\r\n //success\r\n this.saveMsg = this.labelReplacer('Draftdeletedsuccessfully');\r\n\r\n } else {\r\n //display error\r\n this.messageService.add({\r\n summary: this.labelReplacer('ErrorUnabletodelete'),\r\n detail: res.message,\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n\r\n }\r\n\r\n this.refreshDocTree().then(res => {\r\n if (this.docVersionList?.length > 1) {\r\n this.viewFileVersion(file);\r\n }\r\n else {\r\n this.showFileVersionGrid = false;\r\n //this.docVersionList = [];\r\n }\r\n });\r\n\r\n this.spinner.hide();\r\n\r\n });\r\n }\r\n\r\n else {\r\n //do nothing\r\n }\r\n });\r\n }\r\n\r\n\r\n getDeleteFile(file): TreeNode {\r\n\r\n let node: TreeNode = {};\r\n this.selectedNode?.parent?.children?.forEach(childNode => {\r\n if (Number(childNode?.data[0]?.docId) === Number(file.docId)\r\n && Number(childNode?.data[0]?.docVersionId) === Number(file.docVersionId)) {\r\n node = childNode;\r\n }\r\n });\r\n\r\n return node;\r\n }\r\n\r\n unapproveDocument(e) {\r\n this.spinner.show();\r\n if (e.checked) {\r\n let documentToUnapprove = this.selectedNode;\r\n if (documentToUnapprove) {\r\n this.manageDocService.unapproveDocument(documentToUnapprove).subscribe(res => {\r\n if (res.status === 0) {\r\n //success\r\n this.saveMsg = this.labelReplacer('TopicCardunapprovedsuccessfully');\r\n\r\n // this.messageService.add({\r\n // summary: 'Success',\r\n // detail: 'Document unapproved successfully',\r\n // sticky: false,\r\n // severity: 'success'\r\n // });\r\n } else {\r\n //display error\r\n this.messageService.add({\r\n summary: this.labelReplacer('ErrorUnabletounapprovedocument'),\r\n detail: res.message,\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n\r\n this.refreshDocTree().then(res =>\r\n this.viewFileVersion(this.selectedNode));\r\n this.spinner.hide();\r\n\r\n });\r\n }\r\n else {\r\n this.spinner.hide();\r\n\r\n }\r\n }\r\n }\r\n\r\n refreshDocTree() {\r\n return new Promise((resolve, reject) => {\r\n this.preProcessTree()\r\n resolve(1);\r\n })\r\n }\r\n\r\n addTopicCard() {\r\n this.showSideBar = true;\r\n }\r\n\r\n getSavedVersion(emitSaveVersion) {\r\n this.spinner.show();\r\n\r\n let updateNode: TreeNode = {};\r\n this.showEditSideBar=false;\r\n let savedVersionData = emitSaveVersion.versionData;\r\n if (emitSaveVersion.isNewVersion) {\r\n }\r\n\r\n //auto save tree with new file added\r\n if (emitSaveVersion?.saveType?.toLowerCase() === 'save') {\r\n this.saveMsg = this.labelReplacer('TopicCardversionsavedsuccessfully');\r\n\r\n }\r\n else if (emitSaveVersion?.saveType?.toLowerCase() === 'other') {\r\n this.saveMsg = this.labelReplacer('TopicCardversionsentforapprovalsuccessfully');\r\n\r\n }\r\n else if (emitSaveVersion?.saveType?.toLowerCase() === 'self') {\r\n this.saveMsg = this.labelReplacer('TopicCardversionapprovedsuccessfully');\r\n }\r\n\r\n this.refreshDocTree()\r\n .then((res) => {\r\n return new Promise((resolve, reject) => {\r\n this.getTopicCards();\r\n this.viewFileVersion(this.selectedNode);\r\n this.showEditSideBar = false;\r\n this.messageService.add({\r\n summary: this.labelReplacer('msgTypeSuccess'),\r\n detail: this.saveMsg,\r\n sticky: false,\r\n severity: 'success'\r\n });\r\n resolve(1);\r\n })\r\n .then(res => this.spinner.hide())\r\n .catch(error => {\r\n console.log(error);\r\n this.spinner.hide();\r\n })\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n this.spinner.hide();\r\n });\r\n\r\n this.spinner.hide();\r\n\r\n }\r\n\r\n onTabChange(event, tabControl) {\r\n var selectedIndex = event.index;\r\n const initialState = {\r\n paramList: {\r\n displayMessage: this.labelReplacer('Areyousureyouwanttonavigateawayfromthecurrentscreen'),\r\n showFootNote: true,\r\n footNote: this.labelReplacer('Pleaseensureyoudonothaveanyunsavedchanges')\r\n }\r\n };\r\n\r\n if (tabControl.toLowerCase() === 'add') {\r\n let addChild = this.uploadNewDoc['_results'][this.addTabIndex];\r\n if (addChild?.documentForm.dirty) {\r\n this.bsModalRef = this.modalService.show(ModalContentComponent, { initialState });\r\n this.bsModalRef.content.event.subscribe(res => {\r\n if (res.data) {\r\n this.addTabIndex = selectedIndex;\r\n }\r\n else {\r\n this.ctrlAddTab.forEach((element, index) => {\r\n if (index === this.addTabIndex) {\r\n element['selected'] = true;\r\n }\r\n else {\r\n element['selected'] = false;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n else {\r\n this.addTabIndex = selectedIndex;\r\n }\r\n }\r\n else if (tabControl.toLowerCase() === 'edit') {\r\n let editChild = this.editDoc['_results'][this.editTabIndex];\r\n if (editChild?.documentForm?.dirty) {\r\n this.bsModalRef = this.modalService.show(ModalContentComponent, { initialState });\r\n this.bsModalRef.content.event.subscribe(res => {\r\n if (res.data) {\r\n this.editTabIndex = selectedIndex;\r\n }\r\n else {\r\n this.ctrlEditTab.forEach((element, index) => {\r\n if (index === this.editTabIndex) {\r\n element['selected'] = true;\r\n }\r\n else {\r\n element['selected'] = false;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n else {\r\n this.editTabIndex = selectedIndex;\r\n }\r\n }\r\n\r\n }\r\n\r\n getTabIcon(lang): string {\r\n let piClass = '';\r\n if (lang) {\r\n if (lang.showDraftIcon) {\r\n\r\n piClass = 'pi pi-user-edit';\r\n }\r\n else if (lang.showPendingDraftIcon) {\r\n piClass = 'pi pi-exclamation-circle';\r\n\r\n }\r\n }\r\n return piClass;\r\n }\r\n\r\n\r\n\r\n sortNode(node: TreeNode) {\r\n\r\n if (!('sortTypeId' in node?.data[0])) {\r\n node.data[0]['sortTypeId'] = '1';\r\n }\r\n\r\n if (node?.data[0]?.sortTypeId.toString() === '1') {\r\n node.draggable = false;\r\n node.droppable = false;\r\n\r\n if (node.children) {\r\n node?.children?.sort((a, b) => a.label?.localeCompare(b.label));\r\n node?.children.forEach(childNode => {\r\n childNode.draggable = false;\r\n childNode.droppable = false;\r\n });\r\n }\r\n }\r\n else if (node?.data[0]?.sortTypeId.toString() === '2') {\r\n node.draggable = false;\r\n node.droppable = false;\r\n\r\n if (node.children) {\r\n node?.children?.sort(this.folder_date_sort_desc);\r\n node?.children.forEach(childNode => {\r\n childNode.draggable = false;\r\n childNode.droppable = false;\r\n });\r\n }\r\n }\r\n else if (node?.data[0]?.sortTypeId.toString() === '3') {\r\n node.draggable = false;\r\n node.droppable = true;\r\n if (node.children) {\r\n node?.children.forEach(childNode => {\r\n if (childNode.type.toLowerCase() === 'file') {\r\n childNode.draggable = true;\r\n childNode.droppable = false;\r\n }\r\n else {\r\n childNode.draggable = false;\r\n childNode.droppable = false;\r\n }\r\n\r\n });\r\n }\r\n\r\n }\r\n }\r\n\r\n\r\n folder_date_sort_desc = function (a, b) {\r\n // This is a comparison function that will result in dates being sorted in\r\n // DESCENDING order.\r\n if (a?.type?.toLowerCase() === 'file') {\r\n a = a?.data[0]?.documentDate ?? new Date(a?.data[0]?.createdDTTM);\r\n }\r\n else {\r\n a = new Date(a?.data[0]?.createdDTTM);\r\n }\r\n\r\n if (b?.type?.toLowerCase() === 'file') {\r\n b = b?.data[0]?.documentDate ?? new Date(b?.data[0]?.createdDTTM);\r\n }\r\n else {\r\n b = new Date(b?.data[0]?.createdDTTM);\r\n }\r\n\r\n return a > b ? -1 : a < b ? 1 : 0;\r\n };\r\n\r\n\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter, ViewChild, ElementRef } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { DocumentManagementService } from 'src/framework/services/manage-doc.service';\r\nimport { SelectItemGroup, SelectItem, MessageService } from 'primeng/api';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { LabelcardMgmtService } from 'src/framework/services/labelcard-mgmt.service';\r\nimport { LanguageService } from 'src/framework/services/language.service';\r\nimport { CategoryConstant } from 'src/app/shared/app-constants/category-constants';\r\nimport { ignoreElements } from 'rxjs/operators';\r\n\r\n\r\n@Component({\r\n selector: 'app-upload-new-doc',\r\n templateUrl: './upload-new-doc.component.html',\r\n styleUrls: ['./upload-new-doc.component.css'],\r\n providers: [MessageService]\r\n})\r\n\r\nexport class UploadNewDocComponent implements OnInit {\r\n\r\n @Input() docLanguageId: number;\r\n @Input() docFolderId: string;\r\n @Input() absoluteFilePath: string;\r\n @Output() emitDocument = new EventEmitter();\r\n @ViewChild(\"ctrlFileUpload\") ctrlFileUpload: ElementRef;\r\n\r\n docTypeKeyValueList: SelectItem[];\r\n allowedFileTypes: string;\r\n calendarYearRange: string;\r\n pUpload: any;\r\n tinyMceConfig:any;\r\n docTypeList: any[] = [];\r\n docInfo = '';\r\n docDateDesc = 'Document Date';\r\n authorizerList: SelectItemGroup[] = [\r\n {\r\n label: 'Owners',\r\n items: []\r\n },\r\n {\r\n label: 'Reviewers',\r\n items: []\r\n },\r\n {\r\n label: 'PPAP',\r\n items: []\r\n },\r\n {\r\n label: 'Sr. Managers',\r\n items: []\r\n },\r\n {\r\n label: 'Admin',\r\n items: []\r\n }\r\n ];\r\n\r\n engagementDetail = {\r\n appLanguage: 1,\r\n engagementId: 1,\r\n engagementName: '',\r\n engStatusId: 1,\r\n engStatusName: '',\r\n engInitialDate: null,\r\n engLanguage: [{\r\n \"languageId\": 1,\r\n \"languageName\": \"English\",\r\n \"languageFlagPath\": \"../../assets/flags/English.png\"\r\n }],\r\n engLanguageFrench: [{\r\n \"languageId\": 1,\r\n \"languageName\": \"Anglaise\",\r\n \"languageFlagPath\": \"../../assets/flags/English.png\"\r\n }]\r\n }\r\n\r\n documentForm: FormGroup;\r\n formSubmitted = false;\r\n showDateMandatory: boolean = false;\r\n appLangList: any[] = [];\r\n selectedAppLanguage: any;\r\n selectedAppLanguageJson: any;\r\n defaultEnglishJson: any;\r\n selectedLangDocTypeJson: any;\r\n defaultEngDocTypeJson: any;\r\n selectedLangDateJson: any;\r\n defaultEngDateJson: any;\r\n islabelLoaded: boolean = false;\r\n isDocTypeLoaded: boolean = false;\r\n fontSizeList: SelectItem[];\r\n userDetail: any = {};\r\n showApproveButton: boolean = false;\r\n isApproverSelected: boolean = false;\r\n errorMsg: string = '';\r\n approverRemovedNote: string;\r\n rawApproverList: any[] = [];\r\n emitVersionResponse: any = {\r\n saveType: '',\r\n versionData: {}\r\n };\r\n isFontLoaded: boolean = false;\r\n localeSetting: any;\r\n apporveBtnState: boolean = false;\r\n\r\n constructor(private formBuilder: FormBuilder,\r\n private manageDocService: DocumentManagementService, private spinner: NgxSpinnerService,\r\n private messageService: MessageService,\r\n private labelCardService: LabelcardMgmtService, private languageService: LanguageService) {\r\n\r\n this.allowedFileTypes = \".doc,.docx,.dot,.jpg,.jpeg,.png,.tif,.pdf,.xls,.xlsx,.xlsb\";\r\n this.calendarYearRange = (new Date().getUTCFullYear() - 10) + ':' + (new Date().getUTCFullYear() + 1);\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n this.approverRemovedNote = null;\r\n if (sessionStorage.getItem('userDetail')) {\r\n this.userDetail = JSON.parse(sessionStorage.getItem('userDetail'));\r\n }\r\n this.configureTinyMce();\r\n this.loadLanguageLabel()\r\n .then(res => {\r\n this.getDocType()\r\n .then(res => {\r\n this.initializeEngagementData()\r\n .then(res => {\r\n this.buildForm();\r\n this.setDocDateValidators();\r\n this.getApproverList(+this.engagementDetail.engagementId)\r\n .then(res => {\r\n this.formatApproverList()\r\n })\r\n .catch(err => {\r\n console.log(err);\r\n })\r\n })\r\n .catch(err => {\r\n console.log(err);\r\n })\r\n })\r\n .catch(err => {\r\n console.log(err);\r\n })\r\n })\r\n .catch(err => {\r\n console.log(err);\r\n })\r\n }\r\n\r\n initializeEngagementData() {\r\n\r\n return new Promise((resolve, reject) => {\r\n if (sessionStorage.getItem('appLanguageList')) {\r\n this.appLangList = JSON.parse(sessionStorage.getItem('appLanguageList'));\r\n }\r\n else {\r\n this.getLanguageList();\r\n }\r\n\r\n\r\n if (sessionStorage.getItem('engagementDetail')) {\r\n this.engagementDetail = JSON.parse(sessionStorage.getItem('engagementDetail'));\r\n const minYear =\r\n Number(new Date().getUTCFullYear() - 10) <\r\n Number(new Date(this.engagementDetail?.engInitialDate).getUTCFullYear()) ?\r\n Number(new Date().getUTCFullYear() - 10) :\r\n Number(new Date(this.engagementDetail?.engInitialDate).getUTCFullYear());\r\n\r\n this.calendarYearRange = minYear + ':' + (new Date().getUTCFullYear() + 1);\r\n }\r\n resolve(1);\r\n });\r\n }\r\n\r\n setCalendarLocale() {\r\n this.localeSetting = {\r\n firstDayOfWeek: 0,\r\n dayNames: [\r\n this.calendarReplacer(\"SUN\"),\r\n this.calendarReplacer(\"MON\"), this.calendarReplacer(\"TUE\"), this.calendarReplacer(\"WED\"),\r\n this.calendarReplacer(\"THU\"), this.calendarReplacer(\"FRI\"), this.calendarReplacer(\"SAT\")\r\n ],\r\n dayNamesShort: [\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"SUN\"), 3),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"MON\"), 3), this.dayOrMonthNameShort(this.calendarReplacer(\"TUE\"), 3),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"WED\"), 3), this.dayOrMonthNameShort(this.calendarReplacer(\"THU\"), 3),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"FRI\"), 3), this.dayOrMonthNameShort(this.calendarReplacer(\"SAT\"), 3)\r\n ],\r\n dayNamesMin: [\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"SUN\"), 1),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"MON\"), 1), this.dayOrMonthNameShort(this.calendarReplacer(\"TUE\"), 1),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"WED\"), 1), this.dayOrMonthNameShort(this.calendarReplacer(\"THU\"), 1),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"FRI\"), 1), this.dayOrMonthNameShort(this.calendarReplacer(\"SAT\"), 1)\r\n ],\r\n monthNames: [\r\n this.calendarReplacer(\"JAN\"), this.calendarReplacer(\"FEB\"), this.calendarReplacer(\"MAR\"),\r\n this.calendarReplacer(\"APR\"), this.calendarReplacer(\"MAY\"), this.calendarReplacer(\"JUN\"),\r\n this.calendarReplacer(\"JUL\"), this.calendarReplacer(\"AUG\"), this.calendarReplacer(\"SEP\"),\r\n this.calendarReplacer(\"OCT\"), this.calendarReplacer(\"NOV\"), this.calendarReplacer(\"DEC\")\r\n ],\r\n monthNamesShort: [\r\n this.calendarReplacer(\"JAN\"), this.calendarReplacer(\"FEB\"), this.calendarReplacer(\"MAR\"),\r\n this.calendarReplacer(\"APR\"), this.calendarReplacer(\"MAY\"), this.calendarReplacer(\"JUN\"),\r\n this.calendarReplacer(\"JUL\"), this.calendarReplacer(\"AUG\"), this.calendarReplacer(\"SEP\"),\r\n this.calendarReplacer(\"OCT\"), this.calendarReplacer(\"NOV\"), this.calendarReplacer(\"DEC\")\r\n ],\r\n today: this.calendarReplacer('TODAY'),\r\n clear: this.calendarReplacer('CLEAR')\r\n }\r\n }\r\n\r\n\r\n configureTinyMce() {\r\n const that = this;\r\n this.tinyMceConfig = {\r\n branding: false,\r\n toolbar_mode: 'sliding',\r\n toolbar_sticky: false,\r\n inline: false,\r\n statusbar: false,\r\n theme: \"silver\",\r\n resize: false,\r\n skin: \"oxide\",\r\n skin_url: 'assets/skins/ui/oxide',\r\n base_url: '/tinymce', \r\n suffix: '.min',\r\n plugins: [\r\n \"print preview importcss autoresize searchreplace autolink autosave save directionality visualblocks visualchars fullscreen image link media template codesample table charmap hr pagebreak nonbreaking anchor toc insertdatetime advlist lists wordcount imagetools textpattern noneditable help code charmap emoticons paste table\"],\r\n menubar: 'edit insert view format table tools help',\r\n force_br_newlines: false,\r\n //force_p_newlines: false,\r\n //forced_root_block: '',\r\n // content_css: [\r\n // '//fonts.googleapis.com/css?family=EYFontRegular',\r\n // ],\r\n paste_as_text: true,\r\n paste_text_sticky: true,\r\n font_formats: 'EYFontRegular=EYFontRegular;',\r\n theme_advanced_fonts: \"EYFontRegular=EYFontRegular\",\r\n extended_valid_elements: \"@[id|class|title|style|onmouseover|onclick],\" +\r\n \"a[name|href=javascript:void(0);|target|title|alt],\" +\r\n \"#div,blockquote,-ol,-ul,-li,br,img[src|height|width],-sub,-sup,-b,-i,-u,\" +\r\n \"-span[data-mce-type],hr,\",\r\n toolbar: 'bold italic backcolor | ' +\r\n 'bullist numlist outdent indent | alignright alignjustify |' +\r\n ' alignleft aligncenter | removeformat |' +\r\n ' help '\r\n };\r\n }\r\n\r\n loadLanguageLabel() {\r\n let englishLanguageMappings, selectedLanguageMappings: any;\r\n let englishDocTypeMappings, selectedLangDocTypeMappings: any;\r\n let englishDateMappings, selectedLangDateMappings: any;\r\n\r\n return new Promise((resolve, reject) => {\r\n this.spinner.show();\r\n if (sessionStorage.getItem('selectedLanguageId')) {\r\n this.selectedAppLanguage = 1;//JSON.parse(sessionStorage.getItem('selectedLanguageId'));\r\n }\r\n\r\n this.languageService.currentData.subscribe(data => {\r\n this.selectedAppLanguage = data.Id\r\n this.isFontLoaded = false;\r\n });\r\n\r\n\r\n this.languageService.mySubject.subscribe((data) => {\r\n var languageMappings = data;\r\n if (languageMappings?.length > 0) {\r\n\r\n englishLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.UploadDocument.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishDocTypeMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.DocumentTypes.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n if (englishLanguageMappings?.isGlobal) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.UploadDocument.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangDocTypeMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.DocumentTypes.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n }\r\n else {\r\n if (Number(this.selectedAppLanguage) === 2) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.UploadDocument.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangDocTypeMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.DocumentTypes.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n\r\n selectedLangDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedAppLanguage))[0];\r\n }\r\n else {\r\n selectedLanguageMappings = englishLanguageMappings;\r\n selectedLangDocTypeMappings = englishDocTypeMappings;\r\n selectedLangDateMappings = englishDateMappings;\r\n }\r\n }\r\n\r\n this.selectedAppLanguageJson = JSON.parse(selectedLanguageMappings?.languageMappingJSON ?? englishLanguageMappings.languageMappingJSON);\r\n this.defaultEnglishJson = JSON.parse(englishLanguageMappings.languageMappingJSON);\r\n\r\n this.selectedLangDocTypeJson = JSON.parse(selectedLangDocTypeMappings?.languageMappingJSON ?? englishDocTypeMappings.languageMappingJSON);\r\n this.defaultEngDocTypeJson = JSON.parse(englishDocTypeMappings.languageMappingJSON);\r\n\r\n this.selectedLangDateJson = JSON.parse(selectedLangDateMappings?.languageMappingJSON ?? englishDateMappings.languageMappingJSON);\r\n this.defaultEngDateJson = JSON.parse(englishDateMappings.languageMappingJSON);\r\n\r\n this.docDateDesc = this.labelReplacer('txtDocDate');\r\n\r\n this.setCalendarLocale();\r\n\r\n this.isFontLoaded = true;\r\n this.islabelLoaded = true;\r\n this.spinner.hide();\r\n resolve(1);\r\n }\r\n else {\r\n this.spinner.hide();\r\n }\r\n });\r\n })\r\n .catch(err => {\r\n this.spinner.hide();\r\n\r\n console.log(err);\r\n });\r\n }\r\n\r\n\r\n labelReplacer(labelKey): string {\r\n let value;\r\n value = this.selectedAppLanguageJson[labelKey]?.trim() ? this.selectedAppLanguageJson[labelKey] ?? 'text not found' : this.defaultEnglishJson[labelKey] ?? 'text not found';\r\n return value;\r\n }\r\n\r\n docTypeReplacer(labelKey): string {\r\n return this.selectedLangDocTypeJson[labelKey]?.trim() ? this.selectedLangDocTypeJson[labelKey] ?? 'text not found' : this.defaultEngDocTypeJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n calendarReplacer(labelKey): string {\r\n return this.selectedLangDateJson[labelKey]?.trim() ? this.selectedLangDateJson[labelKey] ?? 'text not found' : this.defaultEngDateJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n dayOrMonthNameShort(name, length): string {\r\n let shortName = '';\r\n if (name?.trim()?.length == 0)\r\n shortName = 'Text not found';\r\n else if (name?.trim()?.length > 0 && name?.trim()?.length < length)\r\n shortName = name;\r\n else\r\n shortName = name.substr(0, length);\r\n return shortName;\r\n }\r\n\r\n buildForm() {\r\n\r\n this.documentForm = this.formBuilder.group({\r\n docTitle: ['', Validators.required],\r\n docDescription: ['', Validators.required],\r\n docType: ['', Validators.required],\r\n docDate: [''],\r\n approvalRequestedFrom: ['']\r\n });\r\n\r\n }\r\n\r\n getDocType() {\r\n return new Promise((resolve, reject) => {\r\n\r\n this.manageDocService.getDocType().subscribe(res => {\r\n if (res) {\r\n //success\r\n this.docTypeKeyValueList = res.data.map(x => ({\r\n label: this.docTypeReplacer(x.documentTypeId),\r\n value: x.documentTypeId\r\n }));\r\n this.docTypeList = res.data;\r\n console.log(this.docTypeKeyValueList);\r\n this.isDocTypeLoaded = true;\r\n resolve(1);\r\n } else {\r\n //display error\r\n reject();\r\n }\r\n })\r\n });\r\n }\r\n\r\n\r\n getLanguageList() {\r\n return new Promise((resolve, reject) => {\r\n this.labelCardService.getLanguageList().subscribe(res => {\r\n if (res) {\r\n //success\r\n // this.appLangList = res;\r\n res.forEach(element => {\r\n if (element.isAppLanguage) {\r\n this.appLangList.push({\r\n languageId: element.languageId,\r\n languageName: element.name,\r\n languageFlagPath: element.languagePath\r\n });\r\n }\r\n\r\n });\r\n console.log(res);\r\n } else {\r\n //display error\r\n }\r\n resolve(1);\r\n });\r\n });\r\n }\r\n\r\n setDocDateValidators() {\r\n this.docDateDesc = this.labelReplacer('txtDocDate');\r\n this.documentForm.get('docType').valueChanges\r\n .subscribe(docTypeValue => {\r\n this.getDocTypeDetails(docTypeValue);\r\n });\r\n }\r\n\r\n getDocTypeDetails(docTypeValue) {\r\n const docDateControl = this.documentForm.get('docDate');\r\n let docTypeData = this.docTypeList.filter(x => x.documentTypeId === docTypeValue)[0];\r\n if (docTypeValue) {\r\n if (docTypeValue === 1 ||\r\n docTypeValue === 2 ||\r\n docTypeValue === 3 ||\r\n docTypeValue === 5) {\r\n docDateControl.setValidators([Validators.required]);\r\n this.documentForm.patchValue({\r\n docDate: null\r\n });\r\n this.showDateMandatory = true;\r\n }\r\n else if (docTypeValue === 4 ||\r\n docTypeValue === 6) {\r\n docDateControl.setValidators(null);\r\n this.documentForm.patchValue({\r\n docDate: new Date()\r\n });\r\n this.showDateMandatory = false;\r\n\r\n }\r\n\r\n this.docInfo = \"\";\r\n this.docDateDesc = this.docTypeReplacer('d' + docTypeValue.toString())//docTypeData?.descriptionOfDate;\r\n if (docTypeData?.preferredNamingConvention && docTypeData?.preferredNamingConvention != '')\r\n this.docInfo = this.labelReplacer('msgFileNameFyi') + ': ' + this.docTypeReplacer('f' + docTypeValue.toString()) + ', ';\r\n this.docInfo += this.labelReplacer('msgProtectPdf') + ' ' + (docTypeData?.protectPdf ? this.docTypeReplacer('ppdftrue') : this.docTypeReplacer('ppdffalse'));\r\n\r\n }\r\n\r\n docDateControl.updateValueAndValidity();\r\n }\r\n\r\n\r\n getApproverList(engagementId) {\r\n return new Promise((resolve, reject) => {\r\n\r\n this.spinner.show();\r\n this.manageDocService.getApproverList(engagementId).subscribe(res => {\r\n if (res.status === 0) {\r\n //success\r\n this.rawApproverList = res.data;\r\n this.spinner.hide();\r\n } else {\r\n //display error\r\n this.spinner.hide();\r\n }\r\n resolve(1);\r\n });\r\n });\r\n }\r\n\r\n formatApproverList() {\r\n return new Promise((resolve, reject) => {\r\n let ownerList, reviewerList, partnerList, srMangerList, adminList: any[] = [];\r\n this.authorizerList = [];\r\n\r\n this.authorizerList.push({\r\n label: this.labelReplacer('lblOwner'),\r\n items: []\r\n });\r\n this.authorizerList.push({\r\n label: this.labelReplacer('lblReviewer'),\r\n items: []\r\n });\r\n this.authorizerList.push({\r\n label: this.labelReplacer('lblPPAP'),\r\n items: []\r\n });\r\n this.authorizerList.push({\r\n label: this.labelReplacer('lblSrManager'),\r\n items: []\r\n });\r\n this.authorizerList.push({\r\n label: this.labelReplacer('lblAdmin'),\r\n items: []\r\n });\r\n\r\n if (this.rawApproverList.length > 0) {\r\n ownerList = this.rawApproverList[0];\r\n reviewerList = this.rawApproverList[1];\r\n partnerList = this.rawApproverList[2];\r\n srMangerList = this.rawApproverList[3];\r\n adminList = this.rawApproverList[4];\r\n\r\n this.setDesignationList(ownerList, 0);\r\n this.setDesignationList(reviewerList, 1);\r\n this.setDesignationList(partnerList, 2);\r\n this.setDesignationList(srMangerList, 3);\r\n this.setDesignationList(adminList, 4);\r\n\r\n }\r\n\r\n resolve(1);\r\n })\r\n .catch(error => {\r\n console.log(error);\r\n })\r\n }\r\n\r\n setDesignationList(userList, index) {\r\n\r\n if (userList.length > 0) {\r\n this.authorizerList[index].items = userList.map(x => ({\r\n label: x.emailId,\r\n value: x.emailId\r\n }));\r\n }\r\n }\r\n\r\n save() {\r\n this.formSubmitted = true;\r\n this.apporveBtnState = true;\r\n this.spinner.show();\r\n if (this.documentForm.invalid) {\r\n this.spinner.hide()\r\n this.apporveBtnState = false;\r\n return\r\n }\r\n this.saveDocument('save')\r\n .then((res) => {\r\n this.apporveBtnState = false;\r\n this.emitDocument.emit(this.emitVersionResponse);\r\n this.spinner.hide();\r\n\r\n })\r\n .catch(err => {\r\n this.manageDocService.deleteDocVersion(this.emitVersionResponse?.versionData).subscribe(res => {\r\n if (res.status === 0) {\r\n\r\n }\r\n else {\r\n console.log(res?.message);\r\n }\r\n });\r\n console.log(err);\r\n })\r\n }\r\n\r\n saveDocument(saveType: string) {\r\n return new Promise((resolve, reject) => {\r\n // stop here if form is invalid\r\n let documentData = {\r\n ...this.documentForm.value,\r\n 'engagementId': this.engagementDetail.engagementId,\r\n 'folderId': this.docFolderId,\r\n 'languageId': this.docLanguageId,\r\n 'docId': 0,\r\n 'docVersionId': 0,\r\n 'statusId': 1,\r\n 'documentDate': (this.documentForm.controls['docDate']?.value == null ||\r\n this.documentForm.controls['docDate']?.value == undefined ||\r\n this.documentForm.controls['docDate']?.value == '') ? null : new Date(this.documentForm.controls['docDate'].value).toDateString(),\r\n 'docName': this.pUpload ? this.pUpload.name : '',\r\n 'absoluteFilePath': this.absoluteFilePath\r\n }\r\n const formData = new FormData();\r\n if (this.pUpload) {\r\n let fileToUpload = this.pUpload;\r\n if (fileToUpload.name.includes('eicar.com')) {\r\n this.spinner.hide();\r\n return;\r\n }\r\n else {\r\n formData.append('file', fileToUpload, fileToUpload.name);\r\n }\r\n }\r\n\r\n formData.append('fileJson', JSON.stringify(documentData));\r\n this.manageDocService.uploadNewDocument(formData).subscribe(res => {\r\n if (res.status === 0) {\r\n //success\r\n if (res.data) {\r\n this.resetForm();\r\n this.emitVersionResponse.versionData = res?.data;\r\n this.emitVersionResponse.saveType = saveType;\r\n }\r\n resolve(true);\r\n\r\n } else {\r\n //display error\r\n this.resetForm();\r\n this.errorMsg = res?.message;\r\n this.spinner.hide();\r\n this.messageService.add({\r\n summary: 'Error : Unable to save document version',\r\n detail: this.errorMsg,\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n reject(false);\r\n }\r\n\r\n });\r\n\r\n\r\n })\r\n .catch(error => {\r\n console.log(error);\r\n this.spinner.hide();\r\n })\r\n\r\n }\r\n\r\n approverChange(event) {\r\n this.approverCheck(event?.value);\r\n }\r\n\r\n approverCheck(selectedApprover) {\r\n this.approverRemovedNote = null;\r\n if (selectedApprover) {\r\n //check if user exists in approver list\r\n if (this.findAuthorizer(selectedApprover)) {\r\n this.isApproverSelected = true;\r\n if (selectedApprover?.toString().toLowerCase() === this.userDetail?.emailId?.toLowerCase()) {\r\n this.showApproveButton = true;\r\n }\r\n else {\r\n this.showApproveButton = false;\r\n }\r\n }\r\n else {\r\n this.isApproverSelected = false;\r\n this.showApproveButton = false;\r\n this.approverRemovedNote = this.labelReplacer('msgApproverNotExists');\r\n }\r\n }\r\n else {\r\n this.isApproverSelected = false;\r\n }\r\n\r\n }\r\n\r\n\r\n findAuthorizer(selectedApprover): any {\r\n let authIndex = -1;\r\n let searchObj = null;\r\n this.authorizerList.forEach(x => {\r\n if ((authIndex = x.items.findIndex(y => y.label?.toLowerCase() ?? '' === selectedApprover.toLowerCase())) > -1) {\r\n searchObj = {} = x.items[authIndex];\r\n }\r\n });\r\n\r\n return searchObj;\r\n }\r\n\r\n approveDocumentVersion(approvalType: string) {\r\n this.apporveBtnState = true;\r\n \r\n this.spinner.show();\r\n this.formSubmitted = true;\r\n \r\n if (this.documentForm.invalid) {\r\n this.spinner.hide()\r\n this.apporveBtnState = false;\r\n return\r\n }\r\n\r\n if (this.canApprovalBeSent()) {\r\n //approval type = others ->save version / send email / mark version as pending approval\r\n this.emitVersionResponse.saveType = approvalType;\r\n if (approvalType.toLowerCase() === 'other') {\r\n this.saveDocument('approve')\r\n .then((res) =>\r\n this.sendApprovalMail()\r\n .then((res) => {\r\n this.apporveBtnState = false;\r\n this.emitVersionResponse.saveType = approvalType;\r\n this.emitDocument.emit(this.emitVersionResponse);\r\n this.spinner.hide();\r\n\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n this.spinner.hide();\r\n }))\r\n .catch((error) => {\r\n console.log(error)\r\n this.spinner.hide();\r\n });\r\n }\r\n else if (approvalType.toLowerCase() === 'self') {\r\n //if approval type = self -> approve version\r\n this.saveDocument('approve')\r\n .then((res) =>\r\n this.approve()\r\n .then((res) => {\r\n this.spinner.hide();\r\n this.emitVersionResponse.saveType = approvalType;\r\n this.emitDocument.emit(this.emitVersionResponse);\r\n this.apporveBtnState = false;\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n this.spinner.hide();\r\n }))\r\n .catch((error) => {\r\n console.log(error)\r\n this.spinner.hide();\r\n });\r\n\r\n }\r\n\r\n }\r\n else {\r\n this.messageService.add({\r\n summary: this.labelReplacer('msgErrorTypeApprovalReq'),\r\n detail: this.labelReplacer('msgErrorFileMissing'),\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n }\r\n\r\n this.spinner.hide();\r\n }\r\n\r\n canApprovalBeSent(): boolean {\r\n\r\n let isAllowed = false;\r\n if (this.checkForAttachmentInDraft()) {\r\n isAllowed = true;\r\n }\r\n else {\r\n isAllowed = false;\r\n }\r\n\r\n return isAllowed;\r\n\r\n }\r\n\r\n checkForAttachmentInDraft(): boolean {\r\n let isFileExists = false;\r\n if (this.pUpload?.name !== null\r\n && this.pUpload?.name !== undefined\r\n && this.pUpload?.name !== '') {\r\n isFileExists = true;\r\n }\r\n else {\r\n isFileExists = false;\r\n }\r\n\r\n return isFileExists;\r\n }\r\n\r\n approve() {\r\n this.spinner.show();\r\n let approveVersion = {};\r\n approveVersion = this.emitVersionResponse?.versionData;\r\n approveVersion['absoluteFilePath'] = this.absoluteFilePath;\r\n return new Promise((resolve, reject) => {\r\n this.manageDocService.approveDocumentVersion(approveVersion).subscribe(res => {\r\n if (res.status === 0) {\r\n //success\r\n resolve(true);\r\n }\r\n else {\r\n //display error\r\n this.spinner.hide();\r\n console.log(res.message);\r\n reject(false);\r\n }\r\n\r\n });\r\n });\r\n }\r\n\r\n sendApprovalMail() {\r\n this.spinner.show();\r\n let approveVersion = {};\r\n approveVersion = this.emitVersionResponse?.versionData;\r\n //approveVersion['authorizerEmail'] = this.findAuthorizer(approveVersion['approvalRequestedFromGpn']);\r\n approveVersion['absoluteFilePath'] = this.absoluteFilePath;\r\n return new Promise((resolve, reject) => {\r\n this.manageDocService.sendDocumentApprovalMail(approveVersion).subscribe(res => {\r\n if (res?.data) {\r\n //success\r\n resolve(true);\r\n }\r\n else {\r\n //display error\r\n this.spinner.hide();\r\n console.log(res?.message);\r\n reject(false);\r\n }\r\n });\r\n });\r\n }\r\n\r\n omit_special_char(event) { \r\n var k;\r\n k = event.charCode; //         k = event.keyCode;  (Both can be used)    \r\n //return((k > 64 && k < 91) || (k > 96 && k < 123) || k == 8 || k == 32 || (k >= 48 && k <= 57)); }\r\n return(k != 47 && k != 92 && k != 58 && k != 42 && k != 63 && k!= 34 && k != 60 && k!= 62 && k != 124); }\r\n \r\n\r\n onUpload(event) {\r\n for (let file of event.files) {\r\n this.pUpload = file;\r\n }\r\n }\r\n\r\n resetForm() {\r\n this.formSubmitted = false;\r\n this.documentForm.controls['docTitle'].setValue('');\r\n this.documentForm.controls['docDescription'].setValue('');\r\n this.documentForm.controls['docType'].setValue('');\r\n this.documentForm.controls['docDate'].setValue('');\r\n this.documentForm.controls['approvalRequestedFrom'].setValue('');\r\n this.pUpload = null;\r\n this.docInfo = '';\r\n this.docDateDesc = this.labelReplacer('txtDocDate');\r\n this.ctrlFileUpload['files'] = [];\r\n }\r\n\r\n onFileRemove(event) {\r\n this.pUpload = null;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EditEngagementMemoryServiceService {\r\n\r\n private engagementId: number;\r\n private selectedlanguages: any[];\r\n private engagementRoles = [];\r\n private languages = [];\r\n private internalContacts = [];\r\n private externalRoles = [];\r\n private externalContacts = [];\r\n private selectedFolderTemplate: string;\r\n private jurisdiction = [];\r\n\r\n private engagementDetails: EngagementDetails;\r\n\r\n constructor() { }\r\n\r\n setSelectedLanguages(selectedLanguages) {\r\n this.selectedlanguages = selectedLanguages;\r\n }\r\n getSelectedLanguages() {\r\n return this.selectedlanguages;\r\n }\r\n setLanguages(languages: []) {\r\n this.languages = languages;\r\n }\r\n getLanguages(): any[] {\r\n return this.languages;\r\n }\r\n setEngagementRoles(engagementRoles: []) {\r\n this.engagementRoles = engagementRoles;\r\n }\r\n getLanguageBasedRoles(): any[] {\r\n return this.engagementRoles;\r\n }\r\n setEngagementDetails(initalDate: Date, isPrivate: boolean, shortUrl: string, isConfidential: boolean, languageBasedDetails: any, urlDomain: string, eyRole: any, juridiction: any) {\r\n this.engagementDetails = new EngagementDetails(initalDate, isPrivate, shortUrl, isConfidential, languageBasedDetails, urlDomain, eyRole, juridiction);\r\n }\r\n getEngagementDetails() {\r\n return this.engagementDetails;\r\n }\r\n setContactDetails(internalContacts: any[], externalRoles: any[], externalContacts: any[]) {\r\n this.internalContacts = internalContacts;\r\n this.externalRoles = externalRoles;\r\n this.externalContacts = externalContacts;\r\n }\r\n getInteralContact(): any[] {\r\n return this.internalContacts;\r\n }\r\n getExternalRole(): any[] {\r\n return this.externalRoles;\r\n }\r\n getExternalContacts(): any[] {\r\n return this.externalContacts;\r\n }\r\n\r\n setFolderTemplate(selectedFolder) {\r\n this.selectedFolderTemplate = JSON.stringify(selectedFolder);\r\n }\r\n\r\n getFolderTemplate(): any {\r\n return this.selectedFolderTemplate;\r\n }\r\n\r\n setEngagementId(engagementId: number) {\r\n this.engagementId = engagementId;\r\n }\r\n\r\n getEngagementId(): number {\r\n return this.engagementId;\r\n }\r\n\r\n resetEngagementMemory() {\r\n this.selectedlanguages = [];\r\n this.engagementDetails = null;\r\n this.internalContacts = [];\r\n this.externalContacts = [];\r\n this.externalRoles = [];\r\n this.selectedFolderTemplate = \"\";\r\n\r\n }\r\n\r\n setJurisdictionOption(jurisdictionOptions) {\r\n this.jurisdiction = jurisdictionOptions;\r\n }\r\n\r\n getJurisdictionOption(): any {\r\n return this.jurisdiction;\r\n }\r\n\r\n addSelectedLanguage(languageModel: any) {\r\n this.selectedlanguages.push(languageModel);\r\n }\r\n}\r\n\r\nexport class EngagementDetails {\r\n initalDate: Date;\r\n isPrivate: boolean;\r\n shortUrl: string;\r\n isConfidential: boolean;\r\n languageBasedDetails: any;\r\n urlDomain: string;\r\n eyRole: any;\r\n jurisdiction: any;\r\n constructor(initalDate: Date, isPrivate: boolean, shortUrl: string, isConfidential: boolean, languageBasedDetails: any, urlDomain: string, eyRole, jurisdiction) {\r\n this.initalDate = initalDate;\r\n this.isPrivate = isPrivate;\r\n this.shortUrl = shortUrl;\r\n this.isConfidential = isConfidential;\r\n this.languageBasedDetails = languageBasedDetails;\r\n this.urlDomain = urlDomain;\r\n this.eyRole = eyRole;\r\n this.jurisdiction = jurisdiction;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { EditEngagementComponent } from './edit-engagement.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: EditEngagementComponent,\r\n data: { Title: 'Edit Engagement' }// canActivate: [RouteGuard]\r\n }\r\n];\r\n\r\n@NgModule({\r\n\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\n\r\nexport class EditEngagementRoutingModule { }\r\n","import { Component, OnInit, Output, EventEmitter, ViewChild } from '@angular/core';\r\nimport { FormControl, Validators, FormGroup } from '@angular/forms';\r\nimport { MatStepper } from '@angular/material/stepper';\r\nimport * as _ from 'lodash';\r\nimport { SelectItem, MessageService } from 'primeng/api';\r\nimport { ManageFolderComponent } from './components/manage-folder/manage-folder.component';\r\nimport { ManageDocComponent } from './components/manage-doc/manage-doc.component';\r\nimport { LanguageSelectionComponent } from './components/language-selection/language-selection.component';\r\nimport { BasicDetailsEditComponent } from './components/basic-details-edit/basic-details-edit.component';\r\nimport { ContactsEditComponent } from './components/contacts-edit/contacts-edit.component';\r\nimport { EditEngagementMemoryServiceService } from './edit-engagement-memory-service/edit-engagement-memory-service.service';\r\nimport { LanguageService } from '../../framework/services/language.service';\r\nimport { EngagementManagementService } from '../../framework/services/engagement-mgmt.service'\r\nimport { LabelcardMgmtService } from 'src/framework/services/labelcard-mgmt.service';\r\nimport { HomeService } from 'src/framework/services/home.service';\r\nimport { JurisdictionService } from 'src/framework/services/jurisdiction.service';\r\nimport { CommonService } from 'src/framework/services/common.service';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { TopicCardComponent } from './components/topic-card/topic-card.component';\r\nimport { CategoryConstant } from '../shared/app-constants/category-constants';\r\n\r\n\r\n@Component({\r\n selector: 'app-edit-engagement',\r\n templateUrl: './edit-engagement.component.html',\r\n styleUrls: ['./edit-engagement.component.css']\r\n})\r\nexport class EditEngagementComponent implements OnInit {\r\n\r\n languageList: SelectItem[];\r\n selectedEngagement: any;\r\n languages: string[];\r\n languageControl = new FormControl();\r\n currentStep = 0;\r\n alreadySelectedLanguageId = 0;\r\n index = 2;\r\n folderName: any;\r\n engagementSteps: { [key: string]: number } = {\r\n basicDetailsStep: 0,\r\n contactsStep: 1,\r\n folderStep: 2,\r\n authorizationStep: 3\r\n };\r\n\r\n showEngagementSection: ShowEngagementSection;\r\n languageForm: FormGroup;\r\n languageCtrl: FormControl;\r\n @ViewChild('stepper') stepper: MatStepper;\r\n @ViewChild('languageSelectionComponent') languageSelectionComponent: LanguageSelectionComponent;\r\n @ViewChild('basicDetailsEditComponent') basicDetailsEditComponent: BasicDetailsEditComponent;\r\n @ViewChild('contactsEditComponent') contactsEditComponent: ContactsEditComponent;\r\n @ViewChild('manageFolderComponent') manageFolderComponent: ManageFolderComponent;\r\n @ViewChild('manageDocComponent') manageDocComponent: ManageDocComponent;\r\n @ViewChild('topicCardComponent') topicCardComponent: TopicCardComponent;\r\n selectedLanguages: any[] = [];\r\n isLanguageError = false;\r\n engLanguage: any[] = [];\r\n appLanguageList: any[] = [];\r\n engagementDetail = {\r\n appLanguage: 1,\r\n engagementId: 1,\r\n engagementRole: '',\r\n engagementName: '',\r\n engStatusId: 1,\r\n engStatusName: '',\r\n engInitialDate: null,\r\n engLanguage: [{\r\n \"languageId\": 1,\r\n \"languageName\": \"English\",\r\n \"languageFlagPath\": \"../../assets/flags/English.png\"\r\n }],\r\n engLanguageFrench: [{\r\n \"languageId\": 1,\r\n \"languageName\": \"Anglaise\",\r\n \"languageFlagPath\": \"../../assets/flags/English.png\"\r\n }]\r\n };\r\n userDetail: any = {};\r\n loadChild: boolean = false;\r\n selectedLanguageId: number;\r\n defaultEnglishJson: any;\r\n islabelLoaded: boolean = false;\r\n selectedAppLanguageJson: any;\r\n selectedTab = \"Document\";\r\n versionId = 0;\r\n selectedLangStatusJson: any;\r\n defaultEngStatusJson: any;\r\n selectedLangLabelJson: any;\r\n defaultEngLangLabelJson: any;\r\n\r\n\r\n constructor(private engagementMemoryService: EditEngagementMemoryServiceService,\r\n private languageSerivce: LanguageService,\r\n private engagementManagementService: EngagementManagementService,\r\n private labelCardService: LabelcardMgmtService,\r\n private service: HomeService,\r\n private jurisdictionService: JurisdictionService,\r\n private commonService: CommonService,\r\n private spinner: NgxSpinnerService,\r\n private confirmationService: ConfirmationService,\r\n private languageService: LanguageService,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private messageService: MessageService) {\r\n\r\n this.engagementMemoryService.resetEngagementMemory();\r\n this.showEngagementSection = new ShowEngagementSection(false, false, false, false, false);\r\n this.getAllLanguages();\r\n }\r\n\r\n ngOnInit() {\r\n window.scrollTo(0, 0);\r\n this.route.queryParams.subscribe(params => {\r\n this.selectedTab = params['type'];\r\n this.versionId = params['DocId']\r\n if (this.selectedTab == 'TopicCard') {\r\n this.index = 3;\r\n } else if (this.selectedTab == 'EngagementDetails') {\r\n this.index = 0;\r\n }\r\n });\r\n this.loadLanguageLabel();\r\n this.loadChild = false;\r\n this.selectedEngagement = [];\r\n if (localStorage.getItem('userModel')) {\r\n this.userDetail = JSON.parse(localStorage.getItem('userModel'))\r\n sessionStorage.setItem('userDetail', JSON.stringify(this.userDetail));\r\n }\r\n this.preLoadData()\r\n .then(res => this.initializeEngagementData()\r\n .then(res => {\r\n sessionStorage.setItem('engagementDetail', JSON.stringify(this.engagementDetail));\r\n this.loadChild = true;\r\n\r\n if (sessionStorage.getItem('engagementData')) {\r\n this.selectedEngagement = JSON.parse(sessionStorage.getItem('engagementData'));\r\n }\r\n this.engagementMemoryService.setEngagementId(this.engagementDetail.engagementId);\r\n }));\r\n\r\n }\r\n\r\n public preLoadData() {\r\n return new Promise((resolve, reject) => {\r\n this.labelCardService.getLanguageList().subscribe(res => {\r\n if (res) {\r\n //success\r\n res.forEach(element => {\r\n if (element.isAppLanguage) {\r\n this.appLanguageList.push({\r\n languageId: element.languageId,\r\n languageName: element.name,\r\n languageFlagPath: element.languagePath,\r\n languageCode:element.languageCode\r\n });\r\n }\r\n\r\n });\r\n\r\n if (this.appLanguageList.length > 0) {\r\n sessionStorage.setItem('appLanguageList', JSON.stringify(this.appLanguageList));\r\n }\r\n } else {\r\n //display error\r\n }\r\n resolve(1);\r\n\r\n });\r\n });\r\n\r\n }\r\n\r\n getArchievedFiles() {\r\n this.spinner.show();\r\n this.service.getEngagementDocsById(this.selectedEngagement.engagementId).subscribe((data) =>{\r\n this.downloadFiles(data,0);\r\n });\r\n }\r\n async downloadFiles(totalDocs,docIds) \r\n {\r\n var documentCount=0;\r\n var strdocids ='';\r\n await this.service.getEngagementDetailsById(this.selectedEngagement.engagementId, docIds).subscribe((res) => {\r\n if(res.responseModel != undefined &&(res.responseModel.data.folderPath ! = null || res.responseModel.data.folderPath != undefined))\r\n {\r\n strdocids = res.count.toString();\r\n documentCount = res.count.length;\r\n this.folderName = res.responseModel.data.folderName;\r\n this.service.getEngagementZipFolder(this.folderName).subscribe((resp) => {\r\n const blob = new Blob([resp], { type: resp.type });\r\n this.spinner.hide();\r\n const element = document.createElement('a');\r\n element.href = URL.createObjectURL(blob);\r\n element.download = this.selectedEngagement.name.replaceAll(\".\",\" \");;\r\n document.body.appendChild(element);\r\n element.click();\r\n if(documentCount !=0 && documentCount {\r\n if (sessionStorage.getItem('selectedLanguageId')) {\r\n this.selectedLanguageId = 1;//JSON.parse(sessionStorage.getItem('selectedLanguageId'));\r\n }\r\n\r\n this.languageService.currentData.subscribe(data => {\r\n if (this.alreadySelectedLanguageId != 0) {\r\n if (this.alreadySelectedLanguageId != data.Id && this.router.url == \"/edit-engmt\") {\r\n\r\n this.router.navigate([\"/home\"], { queryParams: { engagementType: 'active' } })\r\n }\r\n }\r\n this.selectedLanguageId = data.Id\r\n this.alreadySelectedLanguageId = data.Id;\r\n this.getJurisdiction(this.selectedLanguageId);\r\n this.getEngagementRoles(this.selectedLanguageId);\r\n\r\n });\r\n\r\n this.languageSerivce.currentData.subscribe(data => {\r\n\r\n\r\n this.selectedLanguageId = data.Id\r\n\r\n });\r\n\r\n\r\n this.languageService.mySubject.subscribe((data) => {\r\n var languageMappings = data;\r\n\r\n if (languageMappings?.length > 0) {\r\n\r\n englishLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.EditEngagement.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishStatusMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Status.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n if (englishLanguageMappings?.isGlobal) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.EditEngagement.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangStatusMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Status.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n }\r\n else {\r\n if (Number(this.selectedLanguageId) === 2) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.EditEngagement.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangStatusMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Status.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangLabelMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Language.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n }\r\n else {\r\n selectedLanguageMappings = englishLanguageMappings;\r\n selectedLangStatusMappings = englishStatusMappings;\r\n selectedLangLabelMappings = englishLangLabelMappings;\r\n\r\n }\r\n }\r\n\r\n this.selectedAppLanguageJson = JSON.parse(selectedLanguageMappings.languageMappingJSON);\r\n\r\n this.defaultEnglishJson = JSON.parse(englishLanguageMappings.languageMappingJSON);\r\n\r\n this.selectedLangLabelJson = JSON.parse(selectedLangLabelMappings?.languageMappingJSON ?? englishLangLabelMappings.languageMappingJSON);\r\n this.defaultEngLangLabelJson = JSON.parse(englishLangLabelMappings.languageMappingJSON);\r\n\r\n this.selectedLangStatusJson = JSON.parse(selectedLangStatusMappings?.languageMappingJSON ?? englishStatusMappings.languageMappingJSON);\r\n this.defaultEngStatusJson = JSON.parse(englishStatusMappings.languageMappingJSON);\r\n this.islabelLoaded = true;\r\n resolve(1);\r\n }\r\n else {\r\n\r\n }\r\n });\r\n })\r\n .catch(err => {\r\n\r\n\r\n console.log(err);\r\n });\r\n }\r\n\r\n labelReplacer(labelKey): string {\r\n return this.selectedAppLanguageJson[labelKey]?.trim() ? this.selectedAppLanguageJson[labelKey] ?? 'text not found' : this.defaultEnglishJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n languageReplacer(labelKey): string {\r\n return this.selectedLangLabelJson[labelKey]?.trim() ? this.selectedLangLabelJson[labelKey] ?? 'text not found' : this.defaultEngLangLabelJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n\r\n statusReplacer(labelKey): string {\r\n return this.selectedLangStatusJson[labelKey]?.trim() ? this.selectedLangStatusJson[labelKey] ?? 'text not found' : this.defaultEngStatusJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n initializeEngagementData() {\r\n let languageMappingIds: any[] = [];\r\n let searchObj;\r\n return new Promise((resolve, reject) => {\r\n if (sessionStorage.getItem('selectedLanguageId')) {\r\n this.engagementDetail.appLanguage = JSON.parse(sessionStorage.getItem('selectedLanguageId'));\r\n }\r\n if (sessionStorage.getItem('engagementData')) {\r\n let sessionEngObj = JSON.parse(sessionStorage.getItem('engagementData'));\r\n this.engagementDetail.engagementId = sessionEngObj['engagementId'];\r\n this.engagementDetail.engagementName = sessionEngObj['name'];\r\n this.engagementDetail.engStatusId = sessionEngObj['statusId'];\r\n this.engagementDetail.engStatusName = sessionEngObj['statusName'];\r\n this.engagementDetail.engagementRole = sessionEngObj['engagementRoleName'];\r\n this.engagementDetail.engInitialDate = new Date(sessionEngObj['initialdatestringformat']);\r\n\r\n if (sessionEngObj['languageMappings'] !== null) {\r\n this.engagementDetail.engLanguage = [];\r\n languageMappingIds = sessionEngObj['languageMappings']?.toString().split(',');\r\n if (languageMappingIds.length > 0) {\r\n languageMappingIds?.sort((a, b) => a.localeCompare(b));\r\n languageMappingIds.forEach(langId => {\r\n searchObj = this.appLanguageList?.filter(x => Number(x.languageId) === Number(langId))[0];\r\n if (searchObj) {\r\n this.engagementDetail.engLanguage.push({\r\n languageId: searchObj.languageId,\r\n languageName: searchObj.languageName,\r\n languageFlagPath: searchObj.languageFlagPath\r\n })\r\n }\r\n });\r\n }\r\n }\r\n\r\n }\r\n resolve(1);\r\n });\r\n }\r\n\r\n getStatusPillClass(statusId) {\r\n\r\n let pillClass = '';\r\n if (statusId) {\r\n if (statusId === 2 || statusId === 4 || statusId === 7)\r\n pillClass = 'pill pill--approved m-0';\r\n else if (statusId === 1)\r\n pillClass = 'pill pill--closed m-0';\r\n else if (statusId === 3 || statusId === 6)\r\n pillClass = 'pill pill--failed m-0';\r\n // else if (statusId === 'authorized')\r\n // pillClass = 'pill pill--hold m-0';\r\n }\r\n\r\n return pillClass;\r\n }\r\n\r\n tabViewChange(event) {\r\n this.index = event.index;\r\n let index = event.index;\r\n if (index === 1) {\r\n this.manageFolderComponent.getFolderStructure();\r\n }\r\n else if (index === 2) {\r\n this.manageDocComponent.getFolderStructure();\r\n }\r\n else if (index === 3) {\r\n this.topicCardComponent.getTopicCards()\r\n }\r\n }\r\n\r\n getAllLanguages() {\r\n this.spinner.show();\r\n this.languageSerivce.getAllLanguages().subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n\r\n } else {\r\n if (response != null && response.length > 0) {\r\n this.engagementMemoryService.setLanguages(response.filter(t => t.isAppLanguage));\r\n this.getJurisdiction(this.selectedLanguageId);\r\n }\r\n }\r\n })\r\n }\r\n\r\n getJurisdiction(languageId: number) {\r\n this.jurisdictionService.getJurisdictionDropDown(languageId).subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n } else {\r\n if (response != null && response.data.length > 0) {\r\n this.engagementMemoryService.setJurisdictionOption(response.data);\r\n this.getEngagementRoles(this.selectedLanguageId);\r\n }\r\n }\r\n })\r\n }\r\n\r\n getEngagementRoles(languageId: number) {\r\n this.commonService.getEngagementRoles(languageId).subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n\r\n } else {\r\n if (response != null && response.data.length > 0) {\r\n this.engagementMemoryService.setEngagementRoles(response.data);\r\n this.getSelectedLanguages();\r\n }\r\n }\r\n })\r\n }\r\n\r\n getSelectedLanguages() {\r\n if (sessionStorage.getItem('engagementData')) {\r\n let sessionEngObj = JSON.parse(sessionStorage.getItem('engagementData'));\r\n let engagementId = sessionEngObj['engagementId'];\r\n this.languageSerivce.getEngagementSelectedLanguages(engagementId).subscribe((response) => {\r\n if (response.data && response.data.length > 0) {\r\n this.engagementMemoryService.setSelectedLanguages(response.data.filter(t => t.isAppLanguage));\r\n }\r\n this.showEngagementSection = new ShowEngagementSection(false, true, false, false, false);\r\n this.spinner.hide();\r\n })\r\n }\r\n }\r\n\r\n showNextControl(event) {\r\n this.stepper.next();\r\n }\r\n\r\n showPreviousControl(event) {\r\n this.stepper.previous();\r\n }\r\n\r\n selectionChange(event: any) {\r\n if (event.selectedIndex == 0)\r\n this.showEngagementSection = new ShowEngagementSection(false, true, false, false, false);\r\n else if (event.selectedIndex == 1)\r\n this.showEngagementSection = new ShowEngagementSection(false, false, true, false, false);\r\n else if (event.selectedIndex == 2)\r\n this.showEngagementSection = new ShowEngagementSection(false, false, false, true, false);\r\n else if (event.selectedIndex == 3)\r\n this.showEngagementSection = new ShowEngagementSection(false, false, false, false, true);\r\n }\r\n\r\n deleteEngagement() {\r\n this.confirmationService.confirm({\r\n message: this.labelReplacer('Areyousurethatyouwanttodeletethisengagement?'),\r\n accept: () => {\r\n this.spinner.show();\r\n if (sessionStorage.getItem('engagementData')) {\r\n let sessionEngObj = JSON.parse(sessionStorage.getItem('engagementData'));\r\n this.service.getEngagementById(sessionEngObj['engagementId']).subscribe((resp) => {\r\n const blob = new Blob([resp], { type: resp.type });\r\n const element = document.createElement('a');\r\n element.href = URL.createObjectURL(blob);\r\n element.download = this.selectedEngagement.name;\r\n document.body.appendChild(element);\r\n element.click();\r\n this.engagementManagementService.deleteEngagement(sessionEngObj['engagementId']).subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n this.messageService.add({\r\n summary: this.labelReplacer('Erroroccuredwhiledeletingengagement'),\r\n detail: \"Error\",\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n this.spinner.hide();\r\n } else {\r\n this.messageService.add({\r\n summary: this.labelReplacer('Engagementdeletedsuccessfully'),\r\n detail: \"Sucess\",\r\n sticky: false,\r\n severity: 'success'\r\n });\r\n setTimeout(() => {\r\n this.spinner.hide()\r\n this.router.navigate([\"/home\"], { queryParams: { engagementType: 'active' } });\r\n }, 3000)\r\n }\r\n })\r\n })\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n navigateToDetail() {\r\n this.router.navigate(['/detail-engmt'], { queryParams: { 'eid': this.engagementDetail.engagementId } });\r\n }\r\n}\r\n\r\nexport class ShowEngagementSection {\r\n showLanguageSelection: boolean;\r\n showEngagementDetails: boolean;\r\n showContact: boolean;\r\n showAuthorization: boolean;\r\n showFolderManagement: boolean\r\n constructor(showLanguageSelection, showEngagementDetails, showContact, showFolderManagement, showAuthorization) {\r\n this.showLanguageSelection = showLanguageSelection;\r\n this.showEngagementDetails = showEngagementDetails;\r\n this.showContact = showContact;\r\n this.showAuthorization = showAuthorization;\r\n this.showFolderManagement = showFolderManagement;\r\n }\r\n}\r\n\r\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgMultiSelectDropDownModule } from 'ng-multiselect-dropdown';\r\nimport { EditEngagementComponent } from './edit-engagement.component';\r\nimport { EditEngagementRoutingModule } from './edit-engagement-routing.module';\r\nimport { TreeTableModule } from 'primeng/treetable';\r\nimport { EditorModule, TINYMCE_SCRIPT_SRC } from '@tinymce/tinymce-angular';\r\nimport { PaginatorModule } from 'primeng/paginator';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { EditorModule as Editor } from 'primeng/editor';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatStepperModule } from '@angular/material/stepper';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { PanelModule } from 'primeng/panel';\r\nimport { CardModule } from 'primeng/card';\r\nimport { TableModule } from 'primeng/table';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { ToggleButtonModule } from 'primeng/togglebutton';\r\nimport { ManageDocComponent } from './components/manage-doc/manage-doc.component';\r\nimport { UploadNewDocComponent } from './components/upload-new-doc/upload-new-doc.component';\r\nimport { EditDocumentComponent } from './components/edit-doc/edit-doc.component';\r\nimport { ManageFolderComponent } from './components/manage-folder/manage-folder.component';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { FileUploadModule } from 'primeng/fileupload';\r\nimport { RDCServiceModule } from '../../framework/services/services.module';\r\nimport { TabViewModule } from 'primeng/tabview';\r\nimport { TreeModule } from 'primeng/tree';\r\nimport { TreeDragDropService } from 'primeng/api';\r\nimport { CalendarModule, TooltipModule } from 'primeng';\r\nimport { SidebarModule } from 'primeng/sidebar';\r\nimport { LanguageSelectionComponent } from './components/language-selection/language-selection.component';\r\nimport { BasicDetailsEditComponent } from './components/basic-details-edit/basic-details-edit.component';\r\nimport { AppConfigService } from '../../framework/services/app-config.service';\r\nimport { ContactsEditComponent } from './components/contacts-edit/contacts-edit.component';\r\nimport { InputSwitchModule } from 'primeng/inputswitch';\r\nimport { ToastModule } from 'primeng/toast';\r\n//import { ModalContentComponent } from '../shared/modal-component/modal.component';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { EditLanguageComponent } from './components/edit-language/edit-language.component';\r\nimport { EditEngagementMemoryServiceService } from './edit-engagement-memory-service/edit-engagement-memory-service.service';\r\nimport { FolderMgmtEditComponent } from './components/folder-mgmt-edit/folder-mgmt-edit.component';\r\nimport { EngagementAuthorizationComponent } from './components/engagement-authorization/engagement-authorization.component';\r\nimport { TopicCardComponent } from './components/topic-card/topic-card.component';\r\nimport {ListboxModule} from 'primeng/listbox';\r\nimport { AddNewTopicCardComponent } from './components/add-new-topic-card/add-new-topic-card.component';\r\nimport { EditTopicCardComponent } from './components/edit-topic-card/edit-topic-card.component';\r\n\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n NgMultiSelectDropDownModule,\r\n FormsModule,\r\n EditEngagementRoutingModule,\r\n TreeTableModule,\r\n PaginatorModule,\r\n ReactiveFormsModule,\r\n MatRadioModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatCardModule,\r\n MatIconModule,\r\n MatStepperModule,\r\n MatExpansionModule,\r\n MatCheckboxModule,\r\n MatSnackBarModule,\r\n EditorModule,\r\n Editor,\r\n MatDatepickerModule,\r\n MatNativeDateModule,\r\n MultiSelectModule,\r\n PanelModule,\r\n CardModule,\r\n TableModule,\r\n DropdownModule,\r\n ButtonModule,\r\n DialogModule,\r\n ToggleButtonModule,\r\n MatTabsModule,\r\n TreeModule,\r\n FileUploadModule,\r\n CalendarModule,\r\n SidebarModule,\r\n TabViewModule,\r\n TooltipModule,\r\n InputSwitchModule,\r\n ToastModule,\r\n ConfirmDialogModule,\r\n ListboxModule,\r\n \r\n // FolderManagementModule\r\n ],\r\n declarations: [\r\n EditEngagementComponent,\r\n ManageFolderComponent,\r\n ManageDocComponent,\r\n UploadNewDocComponent,\r\n EditDocumentComponent,\r\n // ModalContentComponent,\r\n LanguageSelectionComponent,\r\n BasicDetailsEditComponent,\r\n ContactsEditComponent,\r\n EditLanguageComponent,\r\n FolderMgmtEditComponent,\r\n EngagementAuthorizationComponent,\r\n TopicCardComponent,\r\n AddNewTopicCardComponent,\r\n EditTopicCardComponent\r\n ],\r\n providers: [\r\n MatDatepickerModule,\r\n TreeDragDropService,\r\n RDCServiceModule,\r\n AppConfigService,\r\n DatePipe,\r\n EditEngagementMemoryServiceService,\r\n ConfirmationService,\r\n { provide: TINYMCE_SCRIPT_SRC, useValue: 'tinymce/tinymce.min.js' }],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n //entryComponents: [ModalContentComponent]\r\n})\r\n\r\nexport class EditEngagementModule { }\r\n","export class Cards {\r\n constructor(\r\n public topicCard=[],\r\n public statusUpdate=[])\r\n { }\r\n }\r\n\r\n\r\n\r\n\r\n","export class UserList {\r\n constructor(\r\n public gpn = 0,\r\n public activeEmployee=true,\r\n public firstName='',\r\n public lastName='',\r\n public rankCode=0,\r\n public rankName='',\r\n public subServiceLine='',\r\n public serviceLine = '',\r\n public locationCity='',\r\n public emailId='',\r\n public isAdmin='',\r\n public isAuthorized = '',\r\n public picture='',\r\n public title='',\r\n public designation='',\r\n public linkEnglish='',\r\n public linkFrench='',\r\n public is_Display='',\r\n public businessUnitCode='',\r\n public userId=0)\r\n { }\r\n}\r\n\r\nexport class UserLogsList {\r\n constructor(\r\n public UserLogsId = 0,\r\n public gpn = 0,\r\n public activeEmployee='',\r\n public firstName='',\r\n public lastName='',\r\n public rankCode=0,\r\n public rankName='',\r\n public subServiceLine='',\r\n public serviceLine = '',\r\n public locationCity='',\r\n public emailId='',\r\n public isAdmin='',\r\n public isAuthorized = '',\r\n public picture='',\r\n public title='',\r\n public designation='',\r\n public linkEnglish='',\r\n public linkFrench='',\r\n public is_Display='',\r\n public businessUnitCode='',\r\n public userId=0,\r\n public logCreatedBy='',\r\n public logModifiedBy='',\r\n public logCreatedDate= new Date(),\r\n public logModifiedDate= ''\r\n )\r\n{ }\r\n}\r\n\r\n\r\n","export enum ImageType {\r\n Logo = 1,\r\n Icon=2,\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { HomeComponent } from './home.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: HomeComponent,\r\n data: { Title: 'Home' }\r\n }\r\n];\r\n\r\n@NgModule({\r\n\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\n\r\nexport class HomeRoutingModule { }\r\n","import { Component, OnInit, ViewChild, ChangeDetectorRef, OnDestroy, AfterViewInit, ElementRef, ViewChildren, Query, QueryList, DoCheck, OnChanges } from '@angular/core';\r\nimport { HomeService } from '../../framework/services/home.service';\r\nimport { ignoreElements } from 'rxjs/operators';\r\nimport { log } from 'util';\r\nimport { FilterUtils } from 'primeng/utils';\r\nimport { Table, SelectItem } from 'primeng';\r\n//import { THIS_EXPR } from '@angular/compiler/src/output/output_ast';\r\nimport { stringify } from 'querystring';\r\nimport { getLocaleMonthNames } from '@angular/common';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { LanguageService } from 'src/framework/services/language.service';\r\nimport { CategoryConstant } from '../shared/app-constants/category-constants';\r\nimport { AppConfigService } from 'src/framework/services/app-config.service';\r\nimport { CommonService } from 'src/framework/services/common.service';\r\n//import { MsAdalAngular6Service } from 'microsoft-adal-angular6';\r\nimport {MsalService} from '@azure/msal-angular'\r\n// import { Table } from 'primeng/table';\r\n\r\n@Component({\r\n selector: 'app-home',\r\n templateUrl: './home.component.html'\r\n ,\r\n styleUrls: ['./home.component.css']\r\n})\r\nexport class HomeComponent implements OnInit, OnDestroy, AfterViewInit, DoCheck {\r\n @ViewChild('dt') public _table: Table;\r\n @ViewChildren('filter') public filter: QueryList;\r\n cols: any[];\r\n initialDate: string;\r\n modifiedDate: string;\r\n incomingDate: Date;\r\n engagementList: any[];\r\n pastEngagementList: any[];\r\n maxDateSelected = new Date();\r\n selectedItem: string;\r\n filterTemp: any[];\r\n numberArray: any[];\r\n NameAndDesc: string;\r\n roles: any[];\r\n status: any[];\r\n juridication: any[];\r\n selectedLanguageId: number;\r\n selectedEngagement: any;\r\n MappedLanguage = [];\r\n userData: any;\r\n MappedEnglishLanguage = [];\r\n data: { name: string; };\r\n loggedIn: boolean = false;\r\n selectedLangStatusJson: any;\r\n defaultEngStatusJson: any;\r\n defaultEnglishJson: any;\r\n islabelLoaded: boolean = false;\r\n selectedAppLanguageJson: any;\r\n isDocnavClicked: boolean = false;\r\n globalSearchFilter: string = \"\";\r\n isLoadComplete: boolean = false;\r\n queryParameter: string = \"\";\r\n filterElement: HTMLInputElement;\r\n selectedLangDateJson: any;\r\n defaultEngDateJson: any;\r\n localeSetting: any;\r\n approvalCount: number = 0;\r\n\r\n constructor(private service: HomeService, private router: Router, private routes: ActivatedRoute, private changes: ChangeDetectorRef, private languageService: LanguageService, private spinner: NgxSpinnerService, private appService: AppConfigService, private commonService: CommonService, private msalService: MsalService) {\r\n this.maxDateSelected.setDate(this.maxDateSelected.getDate());\r\n }\r\n ngOnInit() {\r\n if (this.msalService.instance.getActiveAccount()!= null) {\r\n this.commonService.getUserApprovalCount().subscribe((response: any) => {\r\n this.approvalCount = parseInt(response.data);\r\n })\r\n }\r\n\r\n this.isLoadComplete = false;\r\n\r\n this.selectedEngagement = \"active\"\r\n this.loadLanguageLabel();\r\n if (sessionStorage.getItem('selectedLanguageId')) {\r\n this.selectedLanguageId = JSON.parse(sessionStorage.getItem('selectedLanguageId'));\r\n }\r\n this.languageService.currentData.subscribe(data => this.selectedLanguageId = data.Id);\r\n this.roles = [];\r\n this.juridication = [];\r\n this.languageService.userData.subscribe((data) => {\r\n this.userData = data.data;\r\n if (this.userData) {\r\n this.loggedIn = true;\r\n this.cols = this.getHomeGridColumns(true);\r\n this.getEngagementListbasedonTabsSelected(true);\r\n\r\n }\r\n else {\r\n this.cols = this.getHomeGridColumns(false);\r\n var indexes = -1;\r\n indexes = this.cols.findIndex(x => x.header === \"Status\");\r\n this.loggedIn = false;\r\n if (indexes != -1) {\r\n this.cols.splice(indexes, 1)\r\n\r\n }\r\n }\r\n });\r\n FilterUtils['numberInBetween'] = (value: string, filter: [Date, Date]) => {\r\n this.incomingDate = new Date(value);\r\n if (filter === undefined || filter === null) {\r\n return true;\r\n }\r\n\r\n if (value === undefined || value === null) {\r\n return false;\r\n }\r\n var dateserch = this.incomingDate.toISOString().slice(0, 10);\r\n var incomdate = new Date(dateserch);\r\n var filterdateto = this.dateAsYYYYMMDDHHNNSS(filter[1]);\r\n var toDate = new Date(filterdateto);\r\n var filterDateFrom = this.dateAsYYYYMMDDHHNNSS(filter[0]);\r\n var FromDate = new Date(filterDateFrom);\r\n return incomdate.getTime() >= FromDate.getTime()\r\n && incomdate.getTime() <= toDate.getTime();\r\n\r\n };\r\n this.routes.queryParams.subscribe(params => {\r\n if (params.engagementType) {\r\n\r\n this.selectedEngagement = params.engagementType;\r\n\r\n if (this.selectedEngagement == \"active\") {\r\n\r\n this.service.setIsHomeSelected(true)\r\n this.getEngagementListbasedonTabsSelected(true);\r\n this.isLoadComplete = false;\r\n }\r\n else {\r\n this.getEngagementListbasedonTabsSelected(false);\r\n this.isLoadComplete = false;\r\n }\r\n }\r\n });\r\n this.languageService.currentData.subscribe(data => {\r\n this.data = data;\r\n this.selectedLanguageId = data.Id;\r\n if (this.selectedEngagement == \"active\") {\r\n this.getEngagementListbasedonTabsSelected(true);\r\n this.isLoadComplete = false;\r\n }\r\n else {\r\n this.getEngagementListbasedonTabsSelected(false);\r\n this.isLoadComplete = false;\r\n }\r\n\r\n });\r\n this.languageService.currentData.subscribe(data => this.data = data);\r\n }\r\n\r\n\r\n loadLanguageLabel() {\r\n let englishLanguageMappings, selectedLanguageMappings: any;\r\n let englishStatusMappings, selectedLangStatusMappings: any;\r\n let englishDateMappings, selectedLangDateMappings: any;\r\n\r\n return new Promise((resolve, reject) => {\r\n if (sessionStorage.getItem('selectedLanguageId')) {\r\n this.selectedLanguageId = 1;//JSON.parse(sessionStorage.getItem('selectedLanguageId'));\r\n }\r\n\r\n this.languageService.currentData.subscribe(data => {\r\n this.selectedLanguageId = data.Id\r\n });\r\n\r\n\r\n this.languageService.mySubject.subscribe((data) => {\r\n var languageMappings = data;\r\n if (languageMappings?.length > 0) {\r\n\r\n englishLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.DocumentCentre.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishStatusMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Status.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n\r\n if (englishLanguageMappings?.isGlobal) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.DocumentCentre.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangStatusMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Status.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n }\r\n else {\r\n if (Number(this.selectedLanguageId) === 2) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.DocumentCentre.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangStatusMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Status.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n }\r\n else {\r\n selectedLanguageMappings = englishLanguageMappings;\r\n selectedLangStatusMappings = englishStatusMappings;\r\n selectedLangDateMappings = englishDateMappings;\r\n\r\n }\r\n }\r\n if (selectedLanguageMappings != undefined) {\r\n this.selectedAppLanguageJson = JSON.parse(selectedLanguageMappings.languageMappingJSON);\r\n this.selectedLangStatusJson = JSON.parse(selectedLangStatusMappings.languageMappingJSON);\r\n this.selectedLangDateJson = JSON.parse(selectedLangDateMappings?.languageMappingJSON);\r\n }\r\n else {\r\n this.selectedAppLanguageJson = JSON.parse(englishLanguageMappings.languageMappingJSON);\r\n this.selectedLangStatusJson = JSON.parse(englishStatusMappings.languageMappingJSON);\r\n this.selectedLangDateJson = JSON.parse(englishDateMappings?.languageMappingJSON);\r\n\r\n }\r\n\r\n this.defaultEnglishJson = JSON.parse(englishLanguageMappings.languageMappingJSON);\r\n this.defaultEngStatusJson = JSON.parse(englishStatusMappings.languageMappingJSON);\r\n\r\n this.selectedLangDateJson = JSON.parse(selectedLangDateMappings?.languageMappingJSON ?? englishDateMappings.languageMappingJSON);\r\n this.defaultEngDateJson = JSON.parse(englishDateMappings.languageMappingJSON);\r\n\r\n this.setCalendarLocale();\r\n\r\n\r\n this.cols = [\r\n { field: 'name', header: this.labelReplacer('EngagementName') },\r\n { field: 'modifieddatestringformat', header: this.labelReplacer('LastUpdatedOn') },\r\n { field: 'initialdatestringformat', header: this.labelReplacer('InitialDate') },\r\n { field: 'engagementRoleName', header: this.labelReplacer('OurRole') },\r\n { field: 'jurisdictionOfFilingName', header: this.labelReplacer('JurisdictionOfFiling') }\r\n ];\r\n this.status = [\r\n { label: 1, value: this.statusReplacer(1) },\r\n { label: 2, value: this.statusReplacer(2) },\r\n { label: 3, value: this.statusReplacer(3) }\r\n ];\r\n if (this.userData) {\r\n this.cols.push({ field: 'statusId', header: this.labelReplacer('Status') })\r\n }\r\n this.islabelLoaded = true;\r\n resolve();\r\n }\r\n else {\r\n }\r\n });\r\n })\r\n .catch(err => {\r\n\r\n console.log(err);\r\n });\r\n }\r\n\r\n labelReplacer(labelKey): string {\r\n return this.selectedAppLanguageJson[labelKey]?.trim() ? this.selectedAppLanguageJson[labelKey] ?? 'text not found' : this.defaultEnglishJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n monthReplacer(labelKey): string {\r\n let localeDt;\r\n if (labelKey) {\r\n let arr = labelKey.split(' ');\r\n if (arr?.length == 3)\r\n localeDt = arr[0] + ' ' + this.calendarReplacer(arr[1]?.toUpperCase()) + ' ' + arr[2];\r\n else\r\n localeDt = labelKey;\r\n }\r\n return localeDt;\r\n }\r\n\r\n calendarReplacer(labelKey): string {\r\n return this.selectedLangDateJson[labelKey]?.trim() ? this.selectedLangDateJson[labelKey] ?? 'text not found' : this.defaultEngDateJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n dayOrMonthNameShort(name, length): string {\r\n let shortName = '';\r\n if (name?.trim()?.length == 0)\r\n shortName = 'Text not found';\r\n else if (name?.trim()?.length > 0 && name?.trim()?.length < length)\r\n shortName = name;\r\n else\r\n shortName = name.substr(0, length);\r\n\r\n return shortName;\r\n }\r\n\r\n setCalendarLocale() {\r\n this.localeSetting = {\r\n firstDayOfWeek: 0,\r\n dayNames: [\r\n this.calendarReplacer(\"SUN\"),\r\n this.calendarReplacer(\"MON\"), this.calendarReplacer(\"TUE\"), this.calendarReplacer(\"WED\"),\r\n this.calendarReplacer(\"THU\"), this.calendarReplacer(\"FRI\"), this.calendarReplacer(\"SAT\")\r\n ],\r\n dayNamesShort: [\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"SUN\"), 3),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"MON\"), 3), this.dayOrMonthNameShort(this.calendarReplacer(\"TUE\"), 3),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"WED\"), 3), this.dayOrMonthNameShort(this.calendarReplacer(\"THU\"), 3),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"FRI\"), 3), this.dayOrMonthNameShort(this.calendarReplacer(\"SAT\"), 3)\r\n ],\r\n dayNamesMin: [\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"SUN\"), 1),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"MON\"), 1), this.dayOrMonthNameShort(this.calendarReplacer(\"TUE\"), 1),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"WED\"), 1), this.dayOrMonthNameShort(this.calendarReplacer(\"THU\"), 1),\r\n this.dayOrMonthNameShort(this.calendarReplacer(\"FRI\"), 1), this.dayOrMonthNameShort(this.calendarReplacer(\"SAT\"), 1)\r\n ],\r\n monthNames: [\r\n this.calendarReplacer(\"JAN\"), this.calendarReplacer(\"FEB\"), this.calendarReplacer(\"MAR\"),\r\n this.calendarReplacer(\"APR\"), this.calendarReplacer(\"MAY\"), this.calendarReplacer(\"JUN\"),\r\n this.calendarReplacer(\"JUL\"), this.calendarReplacer(\"AUG\"), this.calendarReplacer(\"SEP\"),\r\n this.calendarReplacer(\"OCT\"), this.calendarReplacer(\"NOV\"), this.calendarReplacer(\"DEC\")\r\n ],\r\n monthNamesShort: [\r\n this.calendarReplacer(\"JAN\"), this.calendarReplacer(\"FEB\"), this.calendarReplacer(\"MAR\"),\r\n this.calendarReplacer(\"APR\"), this.calendarReplacer(\"MAY\"), this.calendarReplacer(\"JUN\"),\r\n this.calendarReplacer(\"JUL\"), this.calendarReplacer(\"AUG\"), this.calendarReplacer(\"SEP\"),\r\n this.calendarReplacer(\"OCT\"), this.calendarReplacer(\"NOV\"), this.calendarReplacer(\"DEC\")\r\n ],\r\n today: this.calendarReplacer('TODAY'),\r\n clear: this.calendarReplacer('CLEAR')\r\n }\r\n }\r\n\r\n dateAsYYYYMMDDHHNNSS(date): string {\r\n return date.getFullYear()\r\n + '-' + this.leftpad(date.getMonth() + 1, 2)\r\n + '-' + this.leftpad(date.getDate(), 2);\r\n }\r\n\r\n getJurisdiction(engagementList) {\r\n if (engagementList?.length > 0) {\r\n var names = engagementList.map(function (item) {\r\n return { 'label': item.jurisdictionOfFilingName, 'value': item.jurisdictionOfFilingName }\r\n });\r\n\r\n const filteredArr = names.reduce((acc, current) => {\r\n const x = acc.find(item => item.label === current.label);\r\n if (!x) {\r\n return acc.concat([current]);\r\n } else {\r\n return acc;\r\n }\r\n }, []);\r\n\r\n this.juridication = filteredArr;\r\n }\r\n\r\n }\r\n\r\n getRoles(engagementList) {\r\n if (engagementList?.length > 0) {\r\n var rolenames = engagementList.map(function (item) {\r\n return { 'label': item.engagementRoleName, 'value': item.engagementRoleName }\r\n });\r\n\r\n const filteredRoleArr = rolenames.reduce((acc, current) => {\r\n const x = acc.find(item => item.label === current.label);\r\n if (!x) {\r\n return acc.concat([current]);\r\n } else {\r\n return acc;\r\n }\r\n }, []);\r\n\r\n this.roles = filteredRoleArr;\r\n }\r\n\r\n }\r\n\r\n statusReplacer(labelKey): string {\r\n return this.selectedLangStatusJson[labelKey]?.trim() ? this.selectedLangStatusJson[labelKey] ?? 'text not found' : this.defaultEngStatusJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n leftpad(val, resultLength = 2, leftpadChar = '0'): string {\r\n return (String(leftpadChar).repeat(resultLength)\r\n + String(val)).slice(String(val).length);\r\n }\r\n\r\n applyFilter(event, dt) {\r\n if (this.initialDate != null && this.initialDate != \"\") {\r\n dt.filter([this.initialDate[0], this.initialDate[1]], 'initialdatestringformat', 'numberInBetween');\r\n }\r\n }\r\n\r\n applyFilterForModifiedDate(event, dt) {\r\n if (this.modifiedDate != null && this.modifiedDate != \"\") {\r\n dt.filter([this.modifiedDate[0], this.modifiedDate[1]], 'modifieddatestringformat', 'numberInBetween');\r\n }\r\n }\r\n\r\n\r\n getColor(status) {\r\n switch (status) {\r\n case \"Draft\":\r\n return \"#747480\";\r\n case \"Taken Down\":\r\n return \"#ff4136\";\r\n case \"Live\":\r\n return \"#2db757\";\r\n }\r\n }\r\n\r\n\r\n getEngagementListbasedonTabsSelected(tabs) {\r\n this.spinner.show();\r\n // if (this._table)\r\n // this._table.reset();\r\n this.modifiedDate = \"\";\r\n this.initialDate = \"\";\r\n if (!tabs) {\r\n if (!this.userData || this.userData.isActive == false) {\r\n this.engagementList = [];\r\n this.service.GetPastEngagementsForExternalUser(this.selectedLanguageId).subscribe((resp) => {\r\n this.engagementList = resp;\r\n this.filterTemp = this.engagementList;\r\n this.getJurisdiction(this.engagementList);\r\n this.getRoles(this.engagementList);\r\n this.getStatus(this.engagementList);\r\n this.addCustomColumn();\r\n this.spinner.hide();\r\n });\r\n }\r\n else if (this.userData && this.userData.isActive == true) {\r\n this.service.getPastEngagementList(this.selectedLanguageId).subscribe((resp) => {\r\n this.engagementList = [];\r\n if (this.userData.rankCode == 11 || this.userData.rankCode == 13 || this.userData.rankCode == 21 || this.userData.isAdmin == true) {\r\n this.engagementList = resp;\r\n this.filterTemp = this.engagementList;\r\n }\r\n else {\r\n if (resp && resp.length > 0) {\r\n this.engagementList = resp.filter(item => item.isConfidential != 1);\r\n this.filterTemp = this.engagementList;\r\n }\r\n }\r\n this.getJurisdiction(this.engagementList);\r\n this.getRoles(this.engagementList);\r\n this.getStatus(this.engagementList)\r\n this.addCustomColumn();\r\n this.spinner.hide();\r\n });\r\n }\r\n\r\n }\r\n else {\r\n if (!this.userData || this.userData.isActive == false) {\r\n this.engagementList = [];\r\n this.service.GetEngagementsForExternalUser(this.selectedLanguageId).subscribe((resp) => {\r\n this.engagementList = resp.data;\r\n this.filterTemp = this.engagementList;\r\n this.getJurisdiction(this.engagementList);\r\n this.getRoles(this.engagementList);\r\n this.getStatus(this.engagementList);\r\n this.addCustomColumn();\r\n this.spinner.hide();\r\n });\r\n }\r\n else if (this.userData && this.userData.isActive == true) {\r\n this.service.getEngagementList(this.selectedLanguageId).subscribe((resp) => {\r\n this.engagementList = [];\r\n if (this.userData.rankCode == 11 || this.userData.rankCode == 13 || this.userData.rankCode == 21 || this.userData.isAdmin == true) {\r\n this.engagementList = resp.data;\r\n this.filterTemp = this.engagementList;\r\n }\r\n else {\r\n if (resp.data && resp.data.length > 0) {\r\n this.engagementList = resp.data.filter(item => item.isConfidential != 1);\r\n this.filterTemp = this.engagementList;\r\n }\r\n }\r\n this.getJurisdiction(this.engagementList);\r\n this.getRoles(this.engagementList);\r\n this.getStatus(this.engagementList);\r\n this.addCustomColumn();\r\n this.spinner.hide();\r\n });\r\n }\r\n }\r\n }\r\n\r\n addCustomColumn() {\r\n if (this.engagementList && this.engagementList.length)\r\n this.engagementList.forEach(element => {\r\n element.EngWithDesc = element.name + ' ' + element.description;\r\n });\r\n }\r\n\r\n\r\n GetEngagementsForExternalUser(languageId) {\r\n this.service.GetEngagementsForExternalUser(languageId).subscribe((resp) => {\r\n this.engagementList = resp.data;\r\n this.filterTemp = this.engagementList;\r\n this.addCustomColumn();\r\n });\r\n }\r\n\r\n GetPastEngagementsForExternalUser(languageId) {\r\n this.service.GetPastEngagementsForExternalUser(languageId).subscribe((resp) => {\r\n this.engagementList = resp.data;\r\n this.filterTemp = this.engagementList;\r\n this.addCustomColumn();\r\n });\r\n }\r\n\r\n filterBy(filtercomponent: string) {\r\n this.selectedItem = filtercomponent;\r\n this.engagementList = this.filterTemp;\r\n this.engagementList = this.engagementList.filter((x) => ((x.name.startsWith(filtercomponent)) || (x.name.startsWith(filtercomponent.toLocaleLowerCase()))));\r\n\r\n }\r\n\r\n filterNumber(filtercomponent) {\r\n this.selectedItem = filtercomponent;\r\n this.engagementList = this.filterTemp;\r\n this.engagementList = this.engagementList.filter((item) => (item.name.match(/^\\d/)));\r\n }\r\n\r\n clearFilter(filtercomponent) {\r\n this.selectedItem = filtercomponent;\r\n this.engagementList = this.filterTemp;\r\n }\r\n\r\n\r\n\r\n getColorBasedOnConfidentiality(isFormal, status) {\r\n\r\n if (isFormal == false) {\r\n return \"#cdcdcd\";\r\n }\r\n else if (isFormal == true) {\r\n if (status == 'Taken Down' || status == 'Draft') {\r\n return \"#ffe600\";\r\n }\r\n }\r\n }\r\n\r\n getPastEngagementList(): any {\r\n this.service.getPastEngagementList(this.selectedLanguageId).subscribe\r\n (\r\n (resp) => {\r\n this.filterTemp = resp;\r\n this.addCustomColumn();\r\n return resp;\r\n }\r\n );\r\n }\r\n clickHandler(anchor) {\r\n var hasClass = anchor.getAttribute('class');\r\n if (hasClass !== 'active') {\r\n anchor.setAttribute('class', 'active');\r\n }\r\n }\r\n\r\n getStatusPillClass(status) {\r\n let pillClass = '';\r\n if (status.toLowerCase() === 'live')\r\n pillClass = 'pill pill--approved';\r\n else if (status.toLowerCase() === 'draft')\r\n pillClass = 'pill pill--closed';\r\n else if (status.toLowerCase() === 'taken down')\r\n pillClass = 'pill pill--failed';\r\n else if (status.toLowerCase() === 'authorized' || status.toLowerCase() === 'deleted')\r\n pillClass = 'pill pill--hold';\r\n\r\n return pillClass;\r\n }\r\n\r\n navigateToEdit(engagementData) {\r\n var newElement = document.getElementById(\"engagement_nav\");\r\n if (newElement) {\r\n newElement.classList.remove(\"active\");\r\n newElement.classList.remove(\"show\");\r\n }\r\n var newElements = document.getElementById(\"addEngagement\");\r\n if (newElements) {\r\n newElements.classList.remove(\"active\");\r\n }\r\n this.changes.detectChanges();\r\n sessionStorage.setItem('engagementData', JSON.stringify(engagementData));\r\n this.router.navigate(['/edit-engmt'])\r\n // this.router.navigate(['/engagement-mgt'])\r\n }\r\n\r\n navigateToDetail(engagementData) {\r\n // if(engagementData.statusName.toLowerCase() == 'live')\r\n // {\r\n var newElement = document.getElementById(\"engagement_nav\");\r\n if (newElement) {\r\n newElement.classList.remove(\"active\");\r\n newElement.classList.remove(\"show\");\r\n }\r\n var newElements = document.getElementById(\"addEngagement\");\r\n if (newElements) {\r\n newElements.classList.remove(\"active\");\r\n }\r\n sessionStorage.setItem('engagementData', JSON.stringify(engagementData));\r\n // this.router.navigate(['/detail-engmt'])\r\n // }\r\n this.router.navigate(['/detail-engmt'], { queryParams: { 'eid': engagementData.engagementId } });\r\n }\r\n ngOnDestroy() {\r\n this.service.setIsHomeSelected(false);\r\n }\r\n\r\n getStatus(engagementList) {\r\n if (engagementList?.length > 0) {\r\n var rolenames = engagementList.map(function (item) {\r\n return { 'label': item.statusId, 'value': item.statusId }\r\n });\r\n\r\n const filteredRoleArr = rolenames.reduce((acc, current) => {\r\n const x = acc.find(item => item.label === current.label);\r\n if (!x) {\r\n return acc.concat([current]);\r\n } else {\r\n return acc;\r\n }\r\n }, []);\r\n filteredRoleArr.forEach(item => {\r\n item.label = this.statusReplacer(item.label);\r\n }\r\n );\r\n this.status = filteredRoleArr;\r\n\r\n }\r\n\r\n }\r\n\r\n getHomeGridColumns(isAuthenticated: boolean): any[] {\r\n let cols = [];\r\n if (this.selectedAppLanguageJson) {\r\n cols =\r\n [\r\n { field: 'name', header: this.labelReplacer('EngagementName') },\r\n { field: 'modifieddatestringformat', header: this.labelReplacer('LastUpdatedOn') },\r\n { field: 'initialdatestringformat', header: this.labelReplacer('InitialDate') },\r\n { field: 'engagementRoleName', header: this.labelReplacer('OurRole') },\r\n { field: 'jurisdictionOfFilingName', header: this.labelReplacer('JurisdictionOfFiling') }\r\n ]\r\n if (isAuthenticated) {\r\n cols.push({ field: 'statusId', header: this.labelReplacer('Status') })\r\n }\r\n }\r\n else {\r\n cols =\r\n [\r\n { field: 'name', header: 'Engagement Name' },\r\n { field: 'modifieddatestringformat', header: 'Last Updated On' },\r\n { field: 'initialdatestringformat', header: 'Initial Date' },\r\n { field: 'engagementRoleName', header: 'Our Role' },\r\n { field: 'jurisdictionOfFilingName', header: 'Jurisdiction Of Filing' }\r\n ]\r\n if (isAuthenticated) {\r\n cols.push({ field: 'statusId', header: 'Status' })\r\n }\r\n\r\n }\r\n return cols;\r\n }\r\n\r\n ngAfterViewInit() {\r\n\r\n this.filter.changes.subscribe((x: QueryList) => {\r\n if (!this.isLoadComplete) {\r\n this.filterElement = x.first.nativeElement;\r\n this.filterElement.value = '';\r\n this.isLoadComplete = true;\r\n }\r\n })\r\n }\r\n\r\n ngDoCheck() {\r\n if (this.filterElement && !this.isLoadComplete) {\r\n //this.filterElement.value = \"\";\r\n this.isLoadComplete = true;\r\n }\r\n }\r\n\r\n loadApprovalManagement() {\r\n this.router.navigateByUrl(\"/approval-mgt?navigateTo=approval\");\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HomeComponent } from './home.component';\r\nimport { HomeRoutingModule } from './home-routing.module';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { SliderModule} from 'primeng/slider';\r\nimport { DropdownModule} from 'primeng/dropdown';\r\nimport { MultiSelectModule} from 'primeng/multiselect';\r\nimport { PaginatorModule } from 'primeng/paginator';\r\nimport { TableModule } from 'primeng/table';\r\n// import { PublicUserComponent } from '../public-user/public-user.component';\r\nimport {CalendarModule} from 'primeng/calendar'\r\nimport { TooltipModule } from 'primeng';\r\nimport {ToastModule} from 'primeng/toast';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n HomeRoutingModule,\r\n FormsModule,\r\n PaginatorModule,\r\n ReactiveFormsModule,\r\n TableModule,\r\n SliderModule,\r\n DropdownModule,\r\n MultiSelectModule,\r\n CalendarModule,\r\n TooltipModule,\r\n ToastModule,\r\n ],\r\n declarations: [HomeComponent],\r\n providers: []\r\n})\r\n\r\nexport class HomeModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport {MsalService } from '@azure/msal-angular';\r\nimport { request } from 'https';\r\n\r\n@Component({\r\n selector: 'app-login-internal',\r\n templateUrl: './login-internal.component.html',\r\n styleUrls: ['./login-internal.component.css']\r\n})\r\nexport class LoginInternalComponent implements OnInit {\r\n\r\n constructor(private msalService: MsalService, private router: Router) { }\r\n\r\n ngOnInit(): void {\r\n\r\n if (!this.msalService.instance.getActiveAccount()) {\r\n this.msalService.loginRedirect();\r\n this.router.navigateByUrl('/home');\r\n } else {\r\n this.router.navigateByUrl('/home');\r\n }\r\n }\r\n}\r\n","/**\r\n * This file contains authentication parameters. Contents of this file\r\n * is roughly the same across other MSAL.js libraries. These parameters\r\n * are used to initialize Angular and MSAL Angular configurations in\r\n * in app.module.ts file.\r\n */\r\n\r\n import { LogLevel, Configuration, BrowserCacheLocation } from '@azure/msal-browser';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n const isIE = window.navigator.userAgent.indexOf(\"MSIE \") > -1 || window.navigator.userAgent.indexOf(\"Trident/\") > -1;\r\n \r\n /**\r\n * Configuration object to be passed to MSAL instance on creation. \r\n * For a full list of MSAL.js configuration parameters, visit:\r\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md \r\n */\r\n export const msalConfig: Configuration = {\r\n auth: {\r\n clientId: environment.MsalConfig.FrontEndClientId, // This is the ONLY mandatory field that you need to supply.\r\n authority: environment.MsalConfig.Authority, // Defaults to \"https://login.microsoftonline.com/common\"\r\n redirectUri: environment.MsalConfig.RedirectUri, // Points to window.location.origin. You must register this URI on Azure portal/App Registration.\r\n },\r\n cache: {\r\n cacheLocation: BrowserCacheLocation.SessionStorage, // Configures cache location. \"sessionStorage\" is more secure, but \"localStorage\" gives you SSO between tabs.\r\n storeAuthStateInCookie: isIE, // Set this to \"true\" if you are having issues on IE11 or Edge\r\n },\r\n system: {\r\n loggerOptions: {\r\n loggerCallback(logLevel: LogLevel, message: string) {\r\n console.log(message);\r\n },\r\n logLevel: LogLevel.Verbose,\r\n piiLoggingEnabled: false,\r\n },\r\n },\r\n };\r\n \r\n /**\r\n * Add here the endpoints and scopes when obtaining an access token for protected web APIs. For more information, see:\r\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/resources-and-scopes.md\r\n */\r\n export const protectedResources = {\r\n armTenants: {\r\n endpoint: environment.MsalConfig.Api_url,\r\n scopes: [environment.MsalConfig.API_Access],\r\n },\r\n graphMe: {\r\n endpoint: 'https://graph.microsoft.com/v1.0/me',\r\n scopes: ['User.Read'],\r\n },\r\n groups: {\r\n endpoint: 'https://graph.microsoft.com/v1.0/groups',\r\n scopes: ['User.Read'],\r\n },\r\n };\r\n \r\n /**\r\n * Scopes you add here will be prompted for user consent during sign-in.\r\n * By default, MSAL.js will add OIDC scopes (openid, profile, email) to any login request.\r\n * For more information about OIDC scopes, visit: \r\n * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#openid-connect-scopes\r\n */\r\n export const loginRequest = {\r\n scopes: ['User.Read'],\r\n };","import { Injectable } from '@angular/core';\r\nimport { AccountInfo, AuthenticationResult, InteractionRequiredAuthError, InteractionType } from \"@azure/msal-browser\";\r\nimport { MsalService } from '@azure/msal-angular';\r\nimport { Client, AuthenticationProvider, AuthenticationProviderOptions } from '@microsoft/microsoft-graph-client';\r\n\r\n\r\n/**\r\n * The code below demonstrates how you can use MSAL as a custom authentication provider for the Microsoft Graph JavaScript SDK. \r\n * You do NOT need to implement a custom provider. Microsoft Graph JavaScript SDK v3.0 (preview) offers AuthCodeMSALBrowserAuthenticationProvider \r\n * which handles token acquisition and renewal for you automatically. For more information on how to use it, visit: \r\n * https://github.com/microsoftgraph/msgraph-sdk-javascript/blob/dev/docs/AuthCodeMSALBrowserAuthenticationProvider.md\r\n */\r\n\r\nexport interface ProviderOptions extends AuthenticationProviderOptions {\r\n account: AccountInfo, // user account object to be used when attempting silent token acquisition \r\n scopes: string[], // array of scopes required for this resource endpoint\r\n interactionType: InteractionType // type of interaction to fallback to when silent token acquisition fails \r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GraphService {\r\n\r\n constructor(private authService: MsalService) { }\r\n\r\n/**\r\n * Returns a graph client object with the provided token acquisition options\r\n * @param {ProviderOptions} providerOptions: object containing user account, required scopes and interaction type\r\n */\r\n getGraphClient = (providerOptions: ProviderOptions) => {\r\n\r\n /**\r\n * Pass the instance as authProvider in ClientOptions to instantiate the Client which will create and set the default middleware chain.\r\n * For more information, visit: https://github.com/microsoftgraph/msgraph-sdk-javascript/blob/dev/docs/CreatingClientInstance.md\r\n */\r\n let clientOptions = {\r\n authProvider: new MsalAuthenticationProvider(providerOptions, this.authService),\r\n };\r\n\r\n const graphClient = Client.initWithMiddleware(clientOptions);\r\n\r\n return graphClient;\r\n }\r\n}\r\n\r\n/**\r\n * This class implements the IAuthenticationProvider interface, which allows a custom auth provider to be\r\n * used with the Graph client. See: https://github.com/microsoftgraph/msgraph-sdk-javascript/blob/dev/src/IAuthenticationProvider.ts\r\n */\r\nclass MsalAuthenticationProvider implements AuthenticationProvider {\r\n\r\n account;\r\n scopes;\r\n interactionType;\r\n\r\n constructor(providerOptions: ProviderOptions, private authService: MsalService) {\r\n this.account = providerOptions.account;\r\n this.scopes = providerOptions.scopes;\r\n this.interactionType = providerOptions.interactionType;\r\n }\r\n\r\n /**\r\n * This method will get called before every request to the ms graph server\r\n * This should return a Promise that resolves to an accessToken (in case of success) or rejects with error (in case of failure)\r\n * Basically this method will contain the implementation for getting and refreshing accessTokens\r\n */\r\n getAccessToken(): Promise {\r\n return new Promise(async (resolve, reject) => {\r\n let response: AuthenticationResult;\r\n\r\n try {\r\n response = await this.authService.instance.acquireTokenSilent({\r\n account: this.account,\r\n scopes: this.scopes\r\n });\r\n\r\n if (response.accessToken) {\r\n resolve(response.accessToken);\r\n } else {\r\n reject(Error('Failed to acquire an access token'));\r\n }\r\n } catch (error) {\r\n // in case if silent token acquisition fails, fallback to an interactive method\r\n if (error instanceof InteractionRequiredAuthError) {\r\n switch (this.interactionType) {\r\n case InteractionType.Popup:\r\n response = await this.authService.instance.acquireTokenPopup({\r\n scopes: this.scopes\r\n });\r\n\r\n if (response.accessToken) {\r\n resolve(response.accessToken);\r\n } else {\r\n reject(Error('Failed to acquire an access token'));\r\n }\r\n\r\n break;\r\n\r\n case InteractionType.Redirect:\r\n /**\r\n * This will cause the app to leave the current page and redirect to the consent screen.\r\n * Once consent is provided, the app will return back to the current page and then the \r\n * silent token acquisition will succeed. \r\n */\r\n this.authService.instance.acquireTokenRedirect({\r\n scopes: this.scopes\r\n });\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","import {\r\n Component, OnInit, ViewChild,\r\n ElementRef, AfterViewInit, ChangeDetectorRef,\r\n HostListener, DoCheck, AfterViewChecked, EventEmitter, Output\r\n} from '@angular/core';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { Location, LocationStrategy, PathLocationStrategy } from '@angular/common';\r\nimport { AppConfigService } from '../../framework/services/app-config.service';\r\nimport { LinkMasterService } from '../../framework/services/link-master.service';\r\nimport { LinkMastermodel } from '../link-master/link-master-model';\r\nimport { disableDebugTools, DomSanitizer, Title } from '@angular/platform-browser';\r\nimport { environment } from '../../environments/environment';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { LanguageService } from 'src/framework/services/language.service';\r\nimport { LabelcardMgmtService } from 'src/framework/services/labelcard-mgmt.service';\r\nimport { MsalService } from '@azure/msal-angular';\r\nimport { MessageService } from 'primeng/api';\r\nimport { UserService } from '../../framework/services/userservice';\r\nimport { CategoryConstant } from '../shared/app-constants/category-constants';\r\nimport { FormBuilder, FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { EditUser } from '../user-management/user-management.component';\r\nimport { UserManagementService } from 'src/framework/services/user-management.service';\r\nimport { FileUpload } from 'primeng';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { UserMemoryService } from 'src/framework/services/user-memory.service';\r\nimport { Observable, Subject, timer, Subscription } from 'rxjs';\r\nimport { startWith, take, switchMap, map, ignoreElements } from 'rxjs/operators';\r\nimport { runInThisContext } from 'vm';\r\nimport { HomeService } from 'src/framework/services/home.service';\r\nimport { CommonService } from 'src/framework/services/common.service';\r\ndeclare function toggleMenu();\r\n\r\n@Component({\r\n selector: 'app-nav-menu',\r\n templateUrl: './nav-menu.component.html',\r\n styleUrls: ['./nav-menu.component.css'],\r\n providers: [Location, MessageService, { provide: LocationStrategy, useClass: PathLocationStrategy }]\r\n})\r\nexport class NavMenuComponent implements OnInit, AfterViewInit, DoCheck, AfterViewChecked {\r\n\r\n public contactactive = false;\r\n public isPageReady: boolean = true;\r\n public minutesDisplay = 0;\r\n public secondsDisplay = 0;\r\n public endTime = 3;\r\n public sessionEndTime = 1;//In minutes\r\n public sessionEndTimeNotify: number = 0;//In minutes\r\n public showConfirmation: boolean = false;\r\n //public renewsessiontoken: boolean = false;\r\n public notificationStatusList;\r\n public isUserTriggredLogout: boolean = false;\r\n public languageName=\"EN\";\r\n\r\n languageLists=[];\r\n formal=true;\r\n\r\n unsubscribe$: Subject = new Subject();\r\n reset$: Subject = new Subject();\r\n //reset$: Subject = new Subject();\r\n //timerSubscription: Subscription;\r\n //sessiontimer: Subscription;\r\n\r\n isExpanded = false;\r\n labelsLoaded = false;\r\n languageList: SelectItem[];\r\n showEngSecondaryNav: boolean = false;\r\n showAdminSecondaryNav: boolean = false;\r\n aboutrestructuringlink: string;\r\n LinkMastermodel: LinkMastermodel[];\r\n showDocumentSecondaryNav: boolean = true;\r\n href = \"\";\r\n newmsalsvc: MsalService;\r\n isLabelLoaded: boolean = false;\r\n isTokenRenewed: boolean = false;\r\n displayUserDialog = false;\r\n isAuthorizedUser = false;\r\n userTitles = [];\r\n maxRenewTokenCount = 3;\r\n\r\n\r\n searchtxt: \"\";\r\n sessionId: '';\r\n count: 0;\r\n\r\n modalShow = false;\r\n public sessionReq = {\r\n userEmail: null,\r\n sessionId: null\r\n }\r\n\r\n //Initialize variables\r\n public userName = \"\";\r\n public statusList;\r\n public isUserExist = null;\r\n public IsAdmin = false;\r\n public isPublicUserExist = null;\r\n public userData: any;\r\n chooseImageHeading: string = 'Choose Image';\r\n externalContactModel: EditUser;\r\n @ViewChild(FileUpload) ctrlImageUpload: FileUpload;\r\n pUpload: any;\r\n imageURL: string;\r\n userEditForm: FormGroup;\r\n isImageUploaded = false;\r\n showOnlyProfile = true;\r\n isClickComplete = false;\r\n @ViewChild('approvalMgt', { static: true, read: ElementRef }) approvalMgt: ElementRef\r\n @ViewChild('managementNav', { static: true, read: ElementRef }) managementNav: ElementRef\r\n\r\n @ViewChild('openNav', { static: true, read: ElementRef }) openNav: ElementRef;\r\n @ViewChild('documentSubNav', { static: true, read: ElementRef }) documentSubNav: ElementRef;\r\n @ViewChild('addEngagement', { static: true, read: ElementRef }) addEngagement: ElementRef;\r\n selectedLanguage: { name: string; };\r\n MappedLanguage = [];\r\n MappedEnglishLanguage = [];\r\n MappedLinksLanguage = [];\r\n MappedLinksEnglishLanguage = [];\r\n title = 'Restructuring Document Centre 2.0';\r\n MappedUserLanguage = [];\r\n MappedUserEnglishLanguage = [];\r\n\r\n MappedLangLanguage = [];\r\n MappedLangEnglishLanguage = [];\r\n MappedTitleLanguage = [];\r\n MappedTitleEnglishLanguage = [];\r\n\r\n\r\n userActivity: any;\r\n languagechanged=false;\r\n appLanguage: any;\r\n userActivityAfterNotified: any;\r\n userInactive: Subject = new Subject();\r\n notifiedInactiveUser: Subject = new Subject();\r\n constructor(private usermgmtService: UserManagementService,\r\n private sanitizer: DomSanitizer,\r\n private appConfigService: AppConfigService,\r\n private service: LinkMasterService,\r\n private router: Router,\r\n private changes: ChangeDetectorRef,\r\n private languageService: LanguageService,\r\n private lableCardService: LabelcardMgmtService,\r\n private msalSvc: MsalService,\r\n private titleService: Title,\r\n private messageService: MessageService,\r\n private userService: UserService,\r\n private spinner: NgxSpinnerService,\r\n private userMemoryService: UserMemoryService,\r\n private appService: AppConfigService,\r\n private homeService: HomeService,\r\n private commonService:CommonService,\r\n private route: ActivatedRoute,) {\r\n this.externalContactModel = new EditUser(false, false, \"\", \"\", \"\", \"\", \"\", true, 0);\r\n this.userEditForm = new FormGroup({\r\n 'userId': new FormControl(this.externalContactModel.userId, [Validators.required]),\r\n 'isAdmin': new FormControl(this.externalContactModel.isAdmin, [Validators.required]),\r\n 'isAuthorized': new FormControl(this.externalContactModel.isAuthorized, [Validators.required]),\r\n 'picture': new FormControl(this.externalContactModel.picture, [Validators.required]),\r\n 'title': new FormControl(this.externalContactModel.title, [Validators.required, Validators.email]),\r\n 'designation': new FormControl(this.externalContactModel.designation, [Validators.required]),\r\n 'linkEnglish': new FormControl(this.externalContactModel.linkEnglish, [Validators.required]),\r\n 'linkFrench': new FormControl(this.externalContactModel.linkFrench, [Validators.required]),\r\n 'isDisplays': new FormControl(true)\r\n });\r\n if (this.msalSvc.instance.getActiveAccount()!= null) {\r\n //this.resetTimer();\r\n \r\n setTimeout(() => { this.authenticateuser(); }, 2000)\r\n this.setTimeout();\r\n this.userInactive.subscribe(() => {\r\n this.notifyUser();\r\n });\r\n }\r\n else {\r\n this.languageName=\"EN\"\r\n this.nonEYEmpLogin();\r\n }\r\n this.isExpanded = this.homeService.isHomeSelected;\r\n\r\n }\r\n\r\n setTimeout() {\r\n this.userActivity = setTimeout(() => this.userInactive.next(undefined), 59 * 60 * 1000);\r\n }\r\n\r\n setTimeoutForAutoLogout() {\r\n this.userActivityAfterNotified = setTimeout(() => this.notifiedInactiveUser.next(undefined), 5 * 60 * 1000);\r\n }\r\n\r\n @HostListener('window:mousemove')\r\n refreshUserState() {\r\n clearTimeout(this.userActivity);\r\n clearTimeout(this.userActivityAfterNotified);\r\n this.setTimeout();\r\n if (this.showConfirmation == true) {\r\n this.setTimeoutForAutoLogout();\r\n }\r\n }\r\n\r\n private notifyUser() {\r\n if (this.showConfirmation == false && this.isTokenRenewed == false) {\r\n this.showConfirmation = true;\r\n this.setTimeoutForAutoLogout();\r\n this.notifiedInactiveUser.subscribe(() => {\r\n this.logout();\r\n });\r\n } else {\r\n this.showConfirmation = true;\r\n }\r\n }\r\n\r\n\r\n ngOnInit(): void {\r\n \r\n this.commonService.formal.subscribe(updatedTitle => {\r\n this.formal = updatedTitle;\r\n })\r\n this.commonService.getLoggedInUserObs().subscribe((data) =>{\r\n if(data == true)\r\n this.authenticateuser() ;\r\n } );\r\n this.languageService.currentData.subscribe(data => this.selectedLanguage = data);\r\n this.languageService.mySubject.subscribe((data) => {\r\n //call my function\r\n var languageMappings = data;\r\n if (languageMappings?.length > 0) {\r\n var selectedLanguageMappings = languageMappings.filter(item =>\r\n item.categoryName == CategoryConstant.Global && item.languageId == this.selectedLanguage['Id']);\r\n this.MappedLanguage = JSON.parse(selectedLanguageMappings[0].languageMappingJSON);\r\n var englishLanguageMappings = languageMappings.filter(item =>\r\n item.categoryName == CategoryConstant.Global && item.languageId == 1);\r\n this.MappedEnglishLanguage = JSON.parse(englishLanguageMappings[0].languageMappingJSON);\r\n\r\n\r\n\r\n var selectedLinkLanguageMappings = languageMappings.filter(item =>\r\n item.categoryName == CategoryConstant.Links && item.languageId == this.selectedLanguage['Id']);\r\n this.MappedLinksLanguage = JSON.parse(selectedLinkLanguageMappings[0].languageMappingJSON);\r\n var englishLinkLanguageMappings = languageMappings.filter(item =>\r\n item.categoryName == CategoryConstant.Links && item.languageId == 1);\r\n\r\n this.MappedLinksEnglishLanguage = JSON.parse(englishLinkLanguageMappings[0].languageMappingJSON);\r\n\r\n\r\n var selectedLangLanguageMappings = languageMappings.filter(item =>\r\n item.categoryName == CategoryConstant.Language && item.languageId == this.selectedLanguage['Id']);\r\n this.MappedLangLanguage = JSON.parse(selectedLangLanguageMappings[0].languageMappingJSON);\r\n var englishLangLanguageMappings = languageMappings.filter(item =>\r\n item.categoryName == CategoryConstant.Language && item.languageId == 1);\r\n\r\n this.MappedLangEnglishLanguage = JSON.parse(englishLangLanguageMappings[0].languageMappingJSON);\r\n\r\n var selectedUserLanguageMappings = languageMappings.filter(item =>\r\n item.categoryName == CategoryConstant.UserManagement && item.languageId == this.selectedLanguage['Id']);\r\n this.MappedUserLanguage = JSON.parse(selectedUserLanguageMappings[0].languageMappingJSON);\r\n var englishUserLanguageMappings = languageMappings.filter(item =>\r\n item.categoryName == CategoryConstant.UserManagement && item.languageId == 1);\r\n\r\n this.MappedUserEnglishLanguage = JSON.parse(englishUserLanguageMappings[0].languageMappingJSON);\r\n\r\n\r\n var selectedUserLanguageMappings = languageMappings.filter(item =>\r\n item.categoryName == CategoryConstant.Title && item.languageId == this.selectedLanguage['Id']);\r\n this.MappedTitleLanguage = JSON.parse(selectedUserLanguageMappings[0].languageMappingJSON);\r\n var englishUserLanguageMappings = languageMappings.filter(item =>\r\n item.categoryName == CategoryConstant.Title && item.languageId == 1);\r\n\r\n this.MappedTitleEnglishLanguage = JSON.parse(englishUserLanguageMappings[0].languageMappingJSON);\r\n if (!this.userData) {\r\n this.userName = this.globalReplacer('Public');\r\n }\r\n\r\n\r\n this.userTitles = [{ label: this.titleReplacer('Chairman'), value: 'Chairman' },\r\n { label: this.titleReplacer('President'), value: 'President' },\r\n { label: this.titleReplacer('Senior Vice President'), value: 'Senior Vice President' },\r\n { label: this.titleReplacer('Vice President'), value: 'Vice President' },\r\n { label: this.titleReplacer('Manager'), value: 'Manager' },\r\n { label: this.titleReplacer('Senior'), value: 'Senior' },\r\n { label: this.titleReplacer('Staff'), value: 'Staff' },\r\n { label: this.titleReplacer('Consultant'), value: 'Consultant' },\r\n { label: this.titleReplacer('Senior Manager'), value: 'Senior Manager' },\r\n { label: this.titleReplacer('Partner'), value: 'Partner' },\r\n { label: this.titleReplacer('Associate Partner'), value: 'Associate Partner' },\r\n { label: this.titleReplacer('Executive Director'), value: 'Executive Director' }\r\n ];\r\n\r\n this.getLanguages();\r\n this.labelsLoaded = true;\r\n }\r\n\r\n });\r\n\r\n // if (this.adalSvc.isAuthenticated) {\r\n // this.resetTimer();\r\n // this.resetSessionTimer();\r\n // }\r\n\r\n // this.appConfigService.navDocumentElement = this.openNav.nativeElement;\r\n // this.appConfigService.documentSubNav = this.documentSubNav.nativeElement;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe$.next();\r\n this.unsubscribe$.complete();\r\n }\r\n\r\n titleReplacer(labelKey): string {\r\n return this.MappedTitleLanguage[labelKey]?.trim() ? this.MappedTitleLanguage[labelKey] ?? 'text not found' : this.MappedTitleEnglishLanguage[labelKey] ?? 'text not found';\r\n }\r\n\r\n getLanguages() {\r\n this.appConfigService.getLanguageList().subscribe((response: any) => {\r\n if (response) {\r\n this.languageLists = response;\r\n this.languageList = response.filter(x => x?.isAppLanguage).map(lang => ({\r\n label: lang.name,\r\n value: lang.languageId\r\n }));\r\n this.checkPublicUsers();\r\n\r\n sessionStorage.setItem('selectedLanguageId', this.languageList[0].value);\r\n\r\n\r\n this.route.queryParams.subscribe(params => {\r\n var languageId=1;\r\n if(params['lang']){\r\n this.languageName = params['lang'];\r\n var lists=this.languageLists.filter(item=>item.languageCode==this.languageName.toUpperCase());\r\n languageId=lists[0].languageId;\r\n if(this.selectedLanguage['Id']!=languageId && !this.languagechanged){\r\n this.appLanguage=lists[0].languageId;\r\n \r\n sessionStorage.setItem('selectedLanguageId', languageId.toString());\r\n this.languageService.changeLanguage({ name: lists[0].name, Id: lists[0].languageId });\r\n this.lableCardService.getAllMappedLabels(languageId).subscribe\r\n (\r\n (resp) => {\r\n var languageList = resp;\r\n this.languageService.myDataSetter(languageList);\r\n });\r\n }\r\n }\r\n });\r\n\r\n \r\n\r\n\r\n // this.languageList=languages.forEach(element => {\r\n // element.label=this.languageReplacer(element.label);\r\n // });\r\n }\r\n });\r\n }\r\n\r\n\r\n removeURLParameter(url, parameter) {\r\n //prefer to use l.search if you have a location/link object\r\n var urlparts = url.split('?'); \r\n if (urlparts.length >= 2) {\r\n\r\n var prefix = encodeURIComponent(parameter) + '=';\r\n var pars = urlparts[1].split(/[&;]/g);\r\n\r\n //reverse iteration as may be destructive\r\n for (var i = pars.length; i-- > 0;) { \r\n //idiom for string.startsWith\r\n if (pars[i].lastIndexOf(prefix, 0) !== -1) { \r\n pars.splice(i, 1);\r\n }\r\n }\r\n\r\n return urlparts[0] + (pars.length > 0 ? '?' + pars.join('&') : '');\r\n }\r\n return url;\r\n}\r\n\r\n\r\n languageReplacer(labelKey): string {\r\n return this.MappedLangLanguage[labelKey]?.trim() ? this.MappedLangLanguage[labelKey] ?? 'text not found' : this.MappedLangEnglishLanguage[labelKey] ?? 'text not found';\r\n }\r\n\r\n userReplacer(labelKey): string {\r\n return this.MappedUserLanguage[labelKey]?.trim() ? this.MappedUserLanguage[labelKey] ?? 'text not found' : this.MappedUserEnglishLanguage[labelKey] ?? 'text not found';\r\n }\r\n\r\n globalReplacer(labelKey): string {\r\n return this.MappedLanguage[labelKey]?.trim() ? this.MappedLanguage[labelKey] ?? 'text not found' : this.MappedEnglishLanguage[labelKey] ?? 'text not found';\r\n }\r\n\r\n cancel() {\r\n this.onReset()\r\n }\r\n\r\n saveEditedUser() {\r\n this.spinner.show();\r\n const formData = new FormData();\r\n this.externalContactModel;\r\n let imageData;\r\n imageData = {\r\n 'userId': this.userEditForm.get('userId').value,\r\n 'isAdmin': this.userEditForm.get('isAdmin').value,\r\n 'isAuthorized': this.userEditForm.get('isAuthorized').value,\r\n 'title': this.userEditForm.get('title').value,\r\n 'designation': this.userEditForm.get('designation').value,\r\n 'linkEnglish': this.userEditForm.controls['linkEnglish'].value,\r\n 'linkFrench': this.userEditForm.controls['linkFrench'].value,\r\n 'isDisplay': this.userEditForm.get('isDisplays').value,\r\n 'picFileName': ''\r\n }\r\n if (this.pUpload) {\r\n\r\n const fileToUpload = this.pUpload;\r\n\r\n formData.append('file', fileToUpload, fileToUpload.name);\r\n imageData.picFileName = fileToUpload.name;\r\n }\r\n formData.append('fileJson', JSON.stringify(imageData));\r\n this.usermgmtService.uploadProfilePhoto(formData).subscribe(res => {\r\n\r\n if (res) {\r\n this.spinner.hide();\r\n // success\r\n this.onReset();\r\n this.getUserRole(this.msalSvc.instance.getActiveAccount().username);\r\n //newFunction();\r\n console.log(res);\r\n } else {\r\n this.spinner.hide();\r\n // display error\r\n this.onReset();\r\n }\r\n\r\n\r\n /*function newFunction() {\r\n this.getUserRole(this.msalSvc.userInfo.profile.upn);\r\n }*/\r\n });\r\n }\r\n\r\n\r\n EditUser() {\r\n this.displayUserDialog = true;\r\n this.userEditForm.controls['userId'].setValue(this.userData.userId);\r\n this.userEditForm.controls['isAdmin'].setValue(this.userData.isAdmin);\r\n this.userEditForm.controls['isAuthorized'].setValue(this.userData.isAuthorized);\r\n this.userEditForm.controls['title'].setValue(this.userData.title);\r\n this.userEditForm.controls['designation'].setValue(this.userData.designation);\r\n this.userEditForm.controls['linkEnglish'].setValue(this.userData.linkEnglish);\r\n this.userEditForm.controls['linkFrench'].setValue(this.userData.linkFrench);\r\n this.userEditForm.controls['isDisplays'].setValue(this.userData.is_Display);\r\n if (this.userData.picture != \"\") {\r\n\r\n this.usermgmtService.downloadImage(this.userData.picture)\r\n .subscribe((data :any)=> {\r\n this.ctrlImageUpload.files.push(new File([data], this.userData.picture));\r\n this.pUpload = new File([data], this.userData.picture);\r\n var blob = new Blob([data], { type: \"image/png\" });\r\n\r\n var reader = new FileReader();\r\n reader.readAsDataURL(blob);\r\n reader.onloadend = () => {\r\n var base64data = reader.result;\r\n this.imageURL = this.sanitizer.bypassSecurityTrustUrl(base64data.toString()) as string;\r\n }\r\n\r\n });\r\n }\r\n }\r\n\r\n\r\n onUpload(event) {\r\n for (const file of event.files) {\r\n this.pUpload = file;\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n this.imageURL = reader.result as string;\r\n };\r\n reader.readAsDataURL(file);\r\n }\r\n this.isImageUploaded = true;\r\n }\r\n onRemove(event) {\r\n this.pUpload = null;\r\n this.imageURL = '';\r\n }\r\n\r\n onReset() {\r\n this.userEditForm.reset();\r\n this.pUpload = null;\r\n this.imageURL = '';\r\n this.ctrlImageUpload['files'] = [];\r\n this.isImageUploaded = false;\r\n this.displayUserDialog = false;\r\n }\r\n\r\n ngAfterViewInit() {\r\n // this.showDocumentSecondaryNav = true;\r\n // this.changes.detectChanges();\r\n // this.openNav.nativeElement.click();\r\n // this.changes.detectChanges();\r\n\r\n var newElement = document.getElementById(\"activeLink\")\r\n newElement.classList.add(\"active\");\r\n this.changes.detectChanges();\r\n\r\n }\r\n\r\n checkPublicUsers() {\r\n this.userService.checkPublicUser().subscribe(res => {\r\n });\r\n \r\n }\r\n collapse() {\r\n this.isExpanded = false;\r\n }\r\n\r\n closemenu() {\r\n this.titleService.setTitle(this.title);\r\n toggleMenu();\r\n }\r\n\r\n //Authenticates current logged in user\r\n authenticateuser() \r\n {\r\n var currentAccount = this.msalSvc.instance.getActiveAccount();\r\n this.getUserRole(this.msalSvc.instance.getActiveAccount().username);\r\n /*this.msalSvc.acquireTokenSilent(environment.MsalConfig.GraphUri)\r\n .subscribe((token: any)=> {\r\n if (!token) {\r\n this.nonEYEmpLogin();\r\n } else\r\n {\r\n if (sessionStorage.getItem('CurrentSession') == null|| sessionStorage.getItem('CurrentSession') == undefined)\r\n {\r\n this.manageUserSession(currentAccount.username);\r\n } \r\n else\r\n {\r\n this.sessionReq = JSON.parse(sessionStorage.getItem('CurrentSession'));\r\n if (this.sessionReq) \r\n {\r\n this.userService.updateSessionInfo(this.sessionReq).subscribe();\r\n this.isTokenRenewed = true;\r\n }\r\n }\r\n \r\n this.getUserRole(currentAccount.username);\r\n }\r\n } );*/\r\n }\r\n \r\n\r\n nonEYEmpLogin() {\r\n this.isPublicUserExist = 'Reader';\r\n localStorage.setItem('role', 'Reader');\r\n this.userName = this.globalReplacer('Public');\r\n this.userMemoryService.role = \"reader\"\r\n }\r\n\r\n //Gets role of current user\r\n getUserRole(email: any) {\r\n var currentAccount = this.msalSvc.instance.getActiveAccount();\r\n this.isPageReady = false;\r\n this.userService.getUserRole(email)\r\n .subscribe((response: any) => {\r\n if (!response.data) {\r\n this.logOutUserNotFound();\r\n } else {\r\n this.userData = response.data;\r\n if (this.userData.rankCode == 11 || this.userData.rankCode == 21 || this.userData.rankCode == 13) {\r\n this.showOnlyProfile = false;\r\n }\r\n else {\r\n this.showOnlyProfile = true;\r\n }\r\n this.isUserExist = 'hasaccess';\r\n sessionStorage.setItem('userName', currentAccount.name);\r\n sessionStorage.setItem('userEmail', currentAccount.username);\r\n this.userName = currentAccount.name;\r\n this.isAuthorizedUser = true;\r\n this.IsAdmin = response.data.isAdmin ? true : false;\r\n localStorage.setItem('IsAdmin', String(this.IsAdmin));\r\n localStorage.setItem('userModel', JSON.stringify(response.data));\r\n this.languageService.userDataSetter(response);\r\n }\r\n this.isPageReady = true;\r\n },\r\n (error) => {\r\n\r\n this.messageService.add({\r\n summary: 'error : Error occured while getting user role from server',\r\n // detail: data.message,\r\n sticky: false,\r\n severity: 'error'\r\n });\r\n // this.notifierService.notify('error', 'Error occured while getting user role from server');\r\n this.isPageReady = true;\r\n });\r\n\r\n\r\n }\r\n\r\n private manageUserSession(userName) {\r\n this.userService.addSessionInfo({ 'userEmail': userName })\r\n .subscribe((response: any) => {\r\n if (response && response.status == 1) {\r\n this.sessionReq.userEmail = userName;\r\n this.sessionReq.sessionId = response.message;\r\n sessionStorage.setItem('CurrentSession', JSON.stringify(this.sessionReq));\r\n\r\n if (!response.data) {\r\n this.modalShow = true;\r\n }\r\n }\r\n });\r\n } \r\n\r\n hideModal(response: any) {\r\n\r\n if (response == \"Yes\") {\r\n this.modalShow = false;\r\n this.refreshUserState();\r\n this.userService.endOtherActiveSession(this.sessionReq).subscribe();\r\n } else {\r\n\r\n this.modalShow = false;\r\n this.userService.endSessionInfo(this.sessionReq).subscribe((response: any) => {\r\n if (!response.data) {\r\n this.logout();\r\n }\r\n\r\n });\r\n }\r\n }\r\n\r\n proceedsession() {\r\n this.renewToken();\r\n }\r\n\r\n endsession() {\r\n this.showConfirmation = false;\r\n this.logout();\r\n }\r\n\r\n logout() {\r\n this.sessionReq = JSON.parse(sessionStorage.getItem('CurrentSession'));\r\n clearTimeout(this.userActivity);\r\n clearTimeout(this.userActivityAfterNotified);\r\n //this.userService.endSessionInfo(this.sessionReq).subscribe();\r\n this.userService.endSessionInfo(this.sessionReq).subscribe((response: any) => {\r\n if (!response.data) {\r\n } \r\n this.showConfirmation = false;\r\n sessionStorage.clear();\r\n localStorage.clear()\r\n this.msalSvc.logout();\r\n this.isUserTriggredLogout = true;\r\n this.router.navigate[\"/home\"];\r\n });\r\n \r\n }\r\n\r\n \r\n /*this.showConfirmation = false;\r\n sessionStorage.clear();\r\n localStorage.clear()\r\n this.msalSvc.logout();\r\n this.isUserTriggredLogout = true;\r\n this.router.navigate[\"/home\"];*/\r\n\r\n \r\n\r\n logOutUserNotFound() {\r\n localStorage.clear();\r\n this.msalSvc.logout();\r\n this.isAuthorizedUser = false;\r\n this.router.navigate[\"/home\"];\r\n //this.router.navigate(['/access-denied']);\r\n }\r\n\r\n toggle() {\r\n this.isExpanded = !this.isExpanded;\r\n }\r\n\r\n changeLanguage(event: any) {\r\n if (event.value) {\r\n this.languagechanged=true;\r\n var values = this.languageList.filter(item => item.value == event.value)\r\n this.languageService.changeLanguage({ name: values[0].label, Id: values[0].value });\r\n sessionStorage.setItem('selectedLanguageId', event.value);\r\n this.lableCardService.getAllMappedLabels(event.value).subscribe\r\n (\r\n (resp) => {\r\n var languageList = resp;\r\n this.languageService.myDataSetter(languageList);\r\n // var url = window.location.href;\r\n // if(url.indexOf('&lang=') != -1){\r\n // var newUrl=this.removeURLParameter(url,'lang');\r\n // console.log(newUrl);\r\n // }\r\n });\r\n }\r\n }\r\n\r\n navigateToResource(): void {\r\n this.titleService.setTitle(this.title);\r\n this.aboutrestructuringlink = this.MappedLinksLanguage['RdcLinkURL'] ? this.MappedLinksLanguage['RdcLinkURL'] : this.MappedLinksEnglishLanguage['RdcLinkURL'];\r\n\r\n window.open(this.aboutrestructuringlink);\r\n }\r\n\r\n openAddEngagement() {\r\n this.titleService.setTitle(this.title);\r\n this.router.navigate(['/engagement-mgt']);\r\n var newElement = document.getElementById(\"addEngagement\");\r\n var mgmtNav = document.getElementById(\"management_nav\");\r\n var primaryEngMgmt = document.getElementById(\"primaryEngMgmt\");\r\n\r\n if (mgmtNav) {\r\n mgmtNav.style.display = \"block\";\r\n newElement.classList.add(\"active\");\r\n primaryEngMgmt.classList.add(\"active\");\r\n }\r\n this.contactactive = false;\r\n this.showDocumentSecondaryNav = false;\r\n }\r\n\r\n loadFolderMgmt() {\r\n this.titleService.setTitle(this.title);\r\n this.router.navigate(['/app-config']);\r\n this.contactactive = false;\r\n }\r\n\r\n navigatetoActive() {\r\n this.titleService.setTitle(this.title);\r\n if (!this.isClickComplete) {\r\n this.router.navigate(['/home'], { queryParams: { engagementType: 'active' } });\r\n this.contactactive = false;\r\n }\r\n }\r\n\r\n eyInternalUserLogin() {\r\n if (this.msalSvc?.instance.getActiveAccount() == null) {\r\n this.msalSvc.loginRedirect();\r\n this.isUserTriggredLogout = true;\r\n \r\n \r\n } \r\n }\r\n\r\n renewToken() {\r\n this.isPageReady = true;\r\n this.reset$.next(void 0);\r\n this.isPageReady = true;\r\n this.refreshUserState();\r\n this.showConfirmation = false;\r\n this.isTokenRenewed = true;\r\n }\r\n\r\n private getSeconds(ticks: number) {\r\n const seconds = ((ticks % 60000) / 1000).toFixed(0);\r\n return this.pad(seconds);\r\n }\r\n\r\n private getMinutes(ticks: number) {\r\n const minutes = Math.floor(ticks / 60000);\r\n return this.pad(minutes);\r\n }\r\n\r\n private pad(digit: any) {\r\n return digit <= 9 ? '0' + digit : digit;\r\n }\r\n\r\n ngDoCheck() {\r\n // console.log(this.managementNav);\r\n this.isExpanded = this.homeService.isHomeSelected\r\n if (this.isExpanded == true && !this.isClickComplete) {\r\n this.showAdminSecondaryNav = true;\r\n this.showEngSecondaryNav = false;\r\n this.showAdminSecondaryNav = false;\r\n let nav: HTMLElement = this.openNav.nativeElement;\r\n nav.click();\r\n this.isClickComplete = true;\r\n }\r\n if (!this.isExpanded) {\r\n this.isClickComplete = false;\r\n }\r\n this.route.queryParams.subscribe(params => {\r\n if (this.router.url == \"/approval-mgt?navigateTo=approval\" && params[\"navigateTo\"] && params[\"navigateTo\"] == \"approval\") {\r\n //if (this.managementNav) {\r\n this.showDocumentSecondaryNav = false;\r\n this.showAdminSecondaryNav = false;\r\n this.showEngSecondaryNav = true;\r\n this.showAdminSecondaryNav = false;\r\n\r\n }\r\n })\r\n }\r\n\r\n\r\n ngAfterViewChecked() {\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { PublicuserService } from 'src/framework/services/publicuser.service';\r\nimport { MessageService } from 'primeng';\r\n//import { Route } from '@angular/compiler/src/core';\r\nimport { CategoryConstant } from '../shared/app-constants/category-constants';\r\nimport { LanguageService } from 'src/framework/services/language.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-public-user-signup',\r\n templateUrl: './public-user-signup.component.html',\r\n styleUrls: ['./public-user-signup.component.css']\r\n})\r\nexport class PublicUserSignupComponent implements OnInit {\r\n usersignUpId:any;\r\n unsubscribe:any;\r\n displayModal=false;\r\n modalMessage:any;\r\n\r\n selectedLanguageId: number;\r\n defaultEnglishJson: any;\r\n islabelLoaded: boolean = false;\r\n selectedAppLanguageJson: any;\r\n constructor(private router: ActivatedRoute,public service: PublicuserService,private messageService: MessageService,private languageSerivce: LanguageService,private route:Router) { }\r\n\r\n ngOnInit(): void {\r\n this.loadLanguageLabel();\r\n this.modalMessage=\"\";\r\n this.router.queryParams.subscribe(params => {\r\n this.usersignUpId=parseInt(params.publicUserId);\r\n this.unsubscribe=params.unsubscribe;\r\n if(this.unsubscribe==\"true\"){\r\n this.unsubscribeEngagement(this.usersignUpId);\r\n }\r\n else{\r\n this.signUpEngagement(this.usersignUpId);\r\n }\r\n });\r\n }\r\n\r\n signUpEngagement(userId:number){\r\n this.service.signUpUser(userId).subscribe\r\n (res=> \r\n {\r\n var responseData=res;\r\n var responses = res.data;\r\n if(responses){\r\n this.modalMessage=\"You have successfully subscribed to the Engagement\";\r\n this.displayModal=true;\r\n }\r\n else{\r\n this.modalMessage=res.message;\r\n this.displayModal=true;\r\n }\r\n });\r\n }\r\n\r\n unsubscribeEngagement(userId:number){\r\n this.service.unsubscribeEngagement(userId).subscribe\r\n (res=> \r\n {\r\n var responses =res;\r\n if(responses){\r\n this.modalMessage=\"You have successfully unsubscribed to the engagement\";\r\n this.displayModal=true;\r\n }\r\n else{\r\n this.modalMessage=\"Your have already unsubscribed to the engagement\";\r\n this.displayModal=true;\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n loadLanguageLabel() {\r\n let englishLanguageMappings, selectedLanguageMappings: any;\r\n\r\n return new Promise((resolve, reject) => {\r\n if (sessionStorage.getItem('selectedLanguageId')) {\r\n this.selectedLanguageId = 1;//JSON.parse(sessionStorage.getItem('selectedLanguageId'));\r\n }\r\n\r\n this.languageSerivce.currentData.subscribe(data => {\r\n this.selectedLanguageId = data.Id\r\n });\r\n\r\n\r\n this.languageSerivce.mySubject.subscribe((data) => {\r\n var languageMappings = data;\r\n if (languageMappings?.length > 0) {\r\n\r\n englishLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.EngagementDetail.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n if (englishLanguageMappings?.isGlobal) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.EngagementDetail.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n }\r\n else {\r\n if (Number(this.selectedLanguageId) === 2) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.EngagementDetail.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n }\r\n else {\r\n selectedLanguageMappings = englishLanguageMappings;\r\n }\r\n }\r\n\r\n this.selectedAppLanguageJson = JSON.parse(selectedLanguageMappings.languageMappingJSON);\r\n\r\n this.defaultEnglishJson = JSON.parse(englishLanguageMappings.languageMappingJSON);\r\n\r\n this.islabelLoaded = true;\r\n\r\n resolve(1);\r\n }\r\n else {\r\n }\r\n });\r\n })\r\n .catch(err => {\r\n\r\n console.log(err);\r\n });\r\n }\r\n\r\n labelReplacer(labelKey): string {\r\n return this.selectedAppLanguageJson[labelKey]?.trim() ? this.selectedAppLanguageJson[labelKey] ?? 'text not found' : this.defaultEnglishJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n\r\n\r\n NavigateHome(){\r\n this.route.navigate([\"/home\"]);\r\n }\r\n\r\n\r\n}\r\n","export const CategoryConstant = {\r\n Global:\"Global\",\r\n DocumentCentre:\"Document Centre\",\r\n EngagementDetail:\"Engagement Detail\",\r\n AboutRdc:\"About Rdc\",\r\n ContactUs:\"Contact Us\",\r\n AddEngagement:\"Add Engagement\",\r\n EditEngagement:\"Edit Engagement\",\r\n ManageFolder:\"Manage Folder\",\r\n ManageDocument:\"Manage Document\",\r\n UploadDocument:\"Upload Document\",\r\n EditDocument:\"Edit Document\",\r\n UserManagement:\"User Management\",\r\n LanguageConfiguration:\"Language Configuration\",\r\n FolderTemplate:\"Folder Template\",\r\n EmailTemplate:\"Email Template\",\r\n ManageLogoandIcon:\"Manage Logo and Icon\",\r\n LabelCardManagement:\"Label Card Management\",\r\n Links:\"Links\",\r\n DocumentTypes:\"DocumentTypes\",\r\n IconCategory:\"IconCategory\",\r\n ImageType:\"ImageType\",\r\n Language:\"Language\",\r\n Status:\"Status\",\r\n UserRole:\"UserRole\",\r\n RoleMasterList:\"RoleMasterList\",\r\n JurisdictionList:\"JurisdictionList\",\r\n Title:\"Title\",\r\n SortTypes:\"SortTypes\",\r\n DocumentsApproval:\"Document Approval\",\r\n TopicCards:\"Topic Card\",\r\n EmailTemplateTypes:\"Email Template Types\",\r\n Calendar:\"Calendar\",\r\n PublicUserList:\"Public User List\",\r\n IconCategoryList:\"Icon Category List\"\r\n\r\n}; \r\n","import { Component, OnInit, EventEmitter } from '@angular/core';\r\nimport { BsModalRef } from 'ngx-bootstrap/modal';\r\n \r\n/* This is a component which we pass in modal*/\r\n\r\n@Component({\r\n selector: 'modal-content',\r\n templateUrl: './modal.component.html'\r\n})\r\n\r\nexport class ModalContentComponent implements OnInit {\r\n paramList: any = {\r\n displayMessage : '',\r\n showFootNote : false,\r\n footNote : ''\r\n };\r\n public event: EventEmitter = new EventEmitter();\r\n\r\n constructor(public modalRef: BsModalRef) {}\r\n\r\n ngOnInit() {\r\n }\r\n\r\n confirm(): void {\r\n this.triggerEvent(true);\r\n this.modalRef.hide();\r\n }\r\n \r\n decline(): void {\r\n this.triggerEvent(false);\r\n this.modalRef.hide();\r\n }\r\n\r\n triggerEvent(res: boolean) {\r\n this.event.emit({ data: res });\r\n }\r\n}","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { UserManagementService } from 'src/framework/services/user-management.service';\r\nimport { UserList, UserLogsList } from '../entities/user-management';\r\nimport { FormBuilder, FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { FileUpload, MessageService, ConfirmationService } from 'primeng';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { LanguageService } from 'src/framework/services/language.service';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { CategoryConstant } from '../shared/app-constants/category-constants';\r\nimport { DatePipe } from '@angular/common';\r\nimport * as _ from 'lodash';\r\nimport { Observable } from 'rxjs-compat';\r\n\r\n@Component({\r\n selector: 'app-user-management',\r\n templateUrl: './user-management.component.html',\r\n styleUrls: ['./user-management.component.css']\r\n})\r\nexport class UserManagementComponent implements OnInit {\r\n userArray: any[];\r\n cols: { field: string; header: string; }[];\r\n colmns: { field: string; header: string; }[];\r\n UserListArray: UserList[];\r\n mainHeading = \"User Management\";\r\n showtable = false;\r\n displayUserDialog = false;\r\n chooseImageHeading: string = 'Choose Image';\r\n userEditForm: FormGroup;\r\n externalContactModel: EditUser;\r\n selectedLanguage: any;\r\n MappedLanguage: any;\r\n MappedEnglishLanguage: any;\r\n showError = false;\r\n disableActive = false;\r\n userTitles = [];\r\n UserEmail = '';\r\n @ViewChild(FileUpload) ctrlImageUpload: FileUpload;\r\n pUpload: any;\r\n emailPattern = \"[A-Za-z0-9._%-]+@[A-Za-z0-9._%-]+\\\\.[a-z]{2,3}\";\r\n isImageUploaded = false;\r\n imageURL: string;\r\n isEdit = false;\r\n base64data: any;\r\n selectedLanguageId: number;\r\n defaultEnglishJson: any;\r\n defaulttitleEnglishJson: any\r\n islabelLoaded: boolean = false;\r\n selectedAppLanguageJson: any;\r\n selectedtitleAppLanguageJson: any;\r\n userlogsArray: any[];\r\n UserLogsListArray: any[];\r\n EnglishTitleCodes:any;\r\n selectedGlobalLanguageJson: any;\r\n defaultGlobalEnglishJson: any\r\n selectedLangDateJson: any;\r\n defaultEngDateJson: any;\r\n CopyUserListArray:any;\r\n\r\n constructor(private service: UserManagementService, private fb: FormBuilder, private sanitizer: DomSanitizer, private languageService: LanguageService, private messageService: MessageService, private confirmationService: ConfirmationService, private spinner: NgxSpinnerService, private datePipe: DatePipe) {\r\n this.externalContactModel = new EditUser(false, false, \"\", \"\", \"\", \"\", \"\", true, 0);\r\n this.userEditForm = new FormGroup({\r\n 'userId': new FormControl(this.externalContactModel.userId, [Validators.required]),\r\n 'isAdmin': new FormControl(this.externalContactModel.isAdmin, [Validators.required]),\r\n 'isAuthorized': new FormControl(this.externalContactModel.isAuthorized, [Validators.required]),\r\n 'picture': new FormControl(this.externalContactModel.picture, [Validators.required]),\r\n 'title': new FormControl(this.externalContactModel.title, [Validators.required, Validators.email]),\r\n 'designation': new FormControl(this.externalContactModel.designation, [Validators.required]),\r\n 'linkEnglish': new FormControl(this.externalContactModel.linkEnglish, [Validators.required]),\r\n 'linkFrench': new FormControl(this.externalContactModel.linkFrench, [Validators.required]),\r\n 'isDisplays': new FormControl(true),\r\n 'isActive': new FormControl(true)\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.spinner.show();\r\n\r\n this.loadLanguageLabel();\r\n\r\n\r\n this.getAllRoles();\r\n this.getAllUserLogs();\r\n\r\n this.languageService.currentData.subscribe(data => this.selectedLanguage = data);\r\n\r\n\r\n this.languageService.mySubject.subscribe((data) => {\r\n //call my function\r\n\r\n var languageMappings = data;\r\n if (languageMappings.length > 0) {\r\n var selectedLanguageMappings = languageMappings.filter(item =>\r\n item.categoryName == \"Global\" && item.languageId == this.selectedLanguage['Id']);\r\n this.MappedLanguage = JSON.parse(selectedLanguageMappings[0].languageMappingJSON);\r\n var englishLanguageMappings = languageMappings.filter(item =>\r\n item.categoryName == \"Global\" && item.languageId == 1);\r\n this.MappedEnglishLanguage = JSON.parse(englishLanguageMappings[0].languageMappingJSON);\r\n }\r\n\r\n\r\n\r\n\r\n });\r\n }\r\n\r\n cancel() {\r\n this.onReset()\r\n }\r\n\r\n deleteUser(rowData: any) {\r\n this.confirmationService.confirm({\r\n message: this.labelReplacer('AreyousurethatyouwanttodeletethisUser'),\r\n accept: () => {\r\n this.spinner.show();\r\n this.service.deleteUser(rowData.userId).subscribe((response) => {\r\n if (response.responseStatus == 1) {\r\n\r\n } else {\r\n this.messageService.add({ severity: 'success', summary: this.labelReplacer('UserDeleted'), detail: this.labelReplacer('UserDetailshasbeenDeletedSuccessfully') });\r\n }\r\n this.getAllRoles();\r\n this.getAllUserLogs();\r\n this.spinner.hide();\r\n });\r\n }\r\n });\r\n\r\n }\r\n\r\n onRowEditInit(row: any) {\r\n this.userEditForm.controls['userId'].setValue(row.userId);\r\n this.userEditForm.controls['isAdmin'].setValue(row.isAdmin);\r\n this.userEditForm.controls['isAuthorized'].setValue(row.isAuthorized);\r\n if (row.title != null) {\r\n this.userEditForm.controls['title'].setValue(row.title);\r\n }\r\n this.userEditForm.controls['designation'].setValue(row.designation);\r\n this.userEditForm.controls['linkEnglish'].setValue(row.linkEnglish);\r\n this.userEditForm.controls['linkFrench'].setValue(row.linkFrench);\r\n this.userEditForm.controls['isDisplays'].setValue(row.is_Display);\r\n this.userEditForm.controls['isActive'].setValue(row.activeEmployee);\r\n if (row.businessUnitCode == 'CA814') {\r\n this.disableActive = true;\r\n }\r\n else {\r\n this.disableActive = false;\r\n }\r\n if (row.picture != \"\") {\r\n \r\n this.service.downloadImage(row.picture)\r\n .subscribe((data : any)=> {\r\n this.displayUserDialog = true;\r\n this.ctrlImageUpload.files.push(new File([data], row.picture));\r\n this.pUpload = new File([data], row.picture);\r\n var blob = new Blob([data], { type: \"image/png\" });\r\n\r\n var reader = new FileReader();\r\n reader.readAsDataURL(blob);\r\n reader.onloadend = () => {\r\n var base64data = reader.result;\r\n this.imageURL = this.sanitizer.bypassSecurityTrustUrl(base64data.toString()) as string;\r\n }\r\n\r\n });\r\n }\r\n else {\r\n this.displayUserDialog = true;\r\n }\r\n }\r\n\r\n onUpload(event) {\r\n for (const file of event.files) {\r\n this.pUpload = file;\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n this.imageURL = reader.result as string;\r\n };\r\n reader.readAsDataURL(file);\r\n }\r\n this.isImageUploaded = true;\r\n }\r\n onRemove(event) {\r\n this.pUpload = null;\r\n this.imageURL = '';\r\n }\r\n\r\n onReset() {\r\n this.userEditForm.reset();\r\n this.pUpload = null;\r\n this.imageURL = '';\r\n this.ctrlImageUpload['files'] = [];\r\n this.isImageUploaded = false;\r\n this.isEdit = false;\r\n this.displayUserDialog = false;\r\n }\r\n\r\n loadLanguageLabel() {\r\n let englishLanguageMappings, selectedLanguageMappings: any;\r\n let englishtitleLanguageMappings, selectedtitleLanguageMappings: any;\r\n let englishglobalLanguageMappings, selectedglobalLanguageMappings: any;\r\n let englishDateMappings, selectedLangDateMappings: any;\r\n\r\n return new Promise((resolve, reject) => {\r\n this.spinner.show();\r\n if (sessionStorage.getItem('selectedLanguageId')) {\r\n this.selectedLanguageId = 1;//JSON.parse(sessionStorage.getItem('selectedLanguageId'));\r\n }\r\n\r\n this.languageService.currentData.subscribe(data => {\r\n this.selectedLanguageId = data.Id\r\n });\r\n\r\n\r\n this.languageService.mySubject.subscribe((data) => {\r\n var languageMappings = data;\r\n if (languageMappings?.length > 0) {\r\n\r\n this.EnglishTitleCodes = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Title.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.UserManagement.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishtitleLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Title.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishglobalLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Global.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n englishDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === 1)[0];\r\n\r\n\r\n if (englishLanguageMappings?.isGlobal) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.UserManagement.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedtitleLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Title.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedglobalLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Global.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n }\r\n else {\r\n if (Number(this.selectedLanguageId) === 2) {\r\n selectedLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.UserManagement.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedtitleLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Title.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedglobalLanguageMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Global.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n\r\n selectedLangDateMappings = languageMappings.filter(item =>\r\n item?.categoryName?.toLowerCase() === CategoryConstant.Calendar.toLowerCase()\r\n && Number(item?.languageId) === Number(this.selectedLanguageId))[0];\r\n }\r\n else {\r\n selectedLanguageMappings = englishLanguageMappings;\r\n selectedtitleLanguageMappings = englishtitleLanguageMappings;\r\n selectedglobalLanguageMappings = englishglobalLanguageMappings;\r\n selectedLangDateMappings = englishDateMappings;\r\n\r\n }\r\n }\r\n\r\n this.selectedAppLanguageJson = JSON.parse(selectedLanguageMappings.languageMappingJSON);\r\n this.defaultEnglishJson = JSON.parse(englishLanguageMappings.languageMappingJSON);\r\n\r\n this.selectedtitleAppLanguageJson = JSON.parse(selectedtitleLanguageMappings.languageMappingJSON);\r\n this.defaulttitleEnglishJson = JSON.parse(englishtitleLanguageMappings.languageMappingJSON);\r\n\r\n this.selectedGlobalLanguageJson = JSON.parse(selectedglobalLanguageMappings.languageMappingJSON);\r\n this.defaultGlobalEnglishJson = JSON.parse(englishglobalLanguageMappings.languageMappingJSON);\r\n\r\n this.selectedLangDateJson = JSON.parse(selectedLangDateMappings?.languageMappingJSON ?? englishDateMappings.languageMappingJSON);\r\n this.defaultEngDateJson = JSON.parse(englishDateMappings.languageMappingJSON);\r\n\r\n var Titles=Object.keys(JSON.parse(this.EnglishTitleCodes.languageMappingJSON));\r\n\r\n this.cols = [\r\n { field: 'gpn', header: this.labelReplacer('GPN') },\r\n { field: 'activeEmployee', header: this.labelReplacer('ActiveEmployee') },\r\n { field: 'firstName', header: this.labelReplacer('PrefferedSearchName') },\r\n { field: 'lastName', header: this.labelReplacer('LastName') },\r\n { field: 'rankCode', header: this.labelReplacer('RankCode') },\r\n { field: 'rankName', header: this.labelReplacer('RankName') },\r\n { field: 'subServiceLine', header: this.labelReplacer('SubServiceLine') },\r\n { field: 'serviceLine', header: this.labelReplacer('ServiceLine') },\r\n { field: 'locationCity', header: this.labelReplacer('LocationCity') },\r\n { field: 'emailId', header: this.labelReplacer('EmailAddress') },\r\n { field: 'isAdmin', header: this.labelReplacer('SuperAdmin') },\r\n { field: 'isAuthorized', header: this.labelReplacer('IsAuthorized') },\r\n { field: 'picture', header: this.labelReplacer('Picture') },\r\n { field: 'title', header: this.labelReplacer('Title') },\r\n { field: 'designation', header: this.labelReplacer('Designation') },\r\n { field: 'linkEnglish', header: this.labelReplacer('EnglishLink') },\r\n { field: 'linkFrench', header: this.labelReplacer('FrenchLink') },\r\n { field: 'is_Display', header: this.labelReplacer('Display') }\r\n ];\r\n Titles.forEach(item=>{\r\n this.userTitles.push({'label':this.titleReplacer(item),'value':item});\r\n })\r\n this.colmns = [\r\n { field: 'gpn', header: this.labelReplacer('GPN') },\r\n { field: 'activeEmployee', header: this.labelReplacer('ActiveEmployee') },\r\n { field: 'firstName', header: this.labelReplacer('PrefferedSearchName') },\r\n { field: 'lastName', header: this.labelReplacer('LastName') },\r\n { field: 'rankCode', header: this.labelReplacer('RankCode') },\r\n { field: 'rankName', header: this.labelReplacer('RankName') },\r\n { field: 'subServiceLine', header: this.labelReplacer('SubServiceLine') },\r\n { field: 'serviceLine', header: this.labelReplacer('ServiceLine') },\r\n { field: 'locationCity', header: this.labelReplacer('LocationCity') },\r\n { field: 'emailId', header: this.labelReplacer('EmailAddress') },\r\n { field: 'isAdmin', header: this.labelReplacer('SuperAdmin') },\r\n { field: 'isAuthorized', header: this.labelReplacer('IsAuthorized') },\r\n { field: 'picture', header: this.labelReplacer('Picture') },\r\n { field: 'title', header: this.labelReplacer('Title') },\r\n { field: 'designation', header: this.labelReplacer('Designation') },\r\n { field: 'linkEnglish', header: this.labelReplacer('EnglishLink') },\r\n { field: 'linkFrench', header: this.labelReplacer('FrenchLink') },\r\n { field: 'is_Display', header: this.labelReplacer('Display') },\r\n { field: 'logModifiedBy', header: this.labelReplacer('ModifiedBy') },\r\n { field: 'logModifiedDate', header: this.labelReplacer('ModifiedDate') }\r\n ];\r\n\r\n // this.userTitles = [{ label: this.titleReplacer('Chairman'), value: 'Chairman' },\r\n // { label: this.titleReplacer('President'), value: 'President' },\r\n // { label: this.titleReplacer('Senior Vice President'), value: 'Senior Vice President' },\r\n // { label: this.titleReplacer('Vice President'), value: 'Vice President' },\r\n // { label: this.titleReplacer('Manager'), value: 'Manager' },\r\n // { label: this.titleReplacer('Senior'), value: 'Senior' },\r\n // { label: this.titleReplacer('Staff'), value: 'Staff' },\r\n // { label: this.titleReplacer('Consultant'), value: 'Consultant' },\r\n // { label: this.titleReplacer('Senior Manager'), value: 'Senior Manager' },\r\n // { label: this.titleReplacer('Partner'), value: 'Partner' },\r\n // { label: this.titleReplacer('Associate Partner'), value: 'Associate Partner' },\r\n // { label: this.titleReplacer('Executive Director'), value: 'Executive Director' }\r\n // ];\r\n this.islabelLoaded = true;\r\n resolve(1);\r\n }\r\n else {\r\n }\r\n });\r\n })\r\n .catch(err => {\r\n console.log(err);\r\n });\r\n }\r\n\r\n\r\n monthReplacer(labelKey): string {\r\n let localeDt;\r\n if (labelKey) {\r\n let arr = labelKey.split(' ');\r\n if (arr?.length == 3)\r\n localeDt = arr[0] + ' ' + this.calendarReplacer(arr[1]?.toUpperCase()) + ' ' + arr[2];\r\n else if (arr?.length == 4)\r\n localeDt = arr[0] + ' ' + this.calendarReplacer(arr[1]?.toUpperCase()) + ' ' + arr[2] + ' ' + arr[3];\r\n else\r\n localeDt = labelKey;\r\n }\r\n return localeDt;\r\n }\r\n\r\n calendarReplacer(labelKey): string {\r\n return this.selectedLangDateJson[labelKey]?.trim() ? this.selectedLangDateJson[labelKey] ?? 'text not found' : this.defaultEngDateJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n\r\n dayOrMonthNameShort(name, length): string {\r\n let shortName = '';\r\n if (name?.trim()?.length == 0)\r\n shortName = 'Text not found';\r\n else if (name?.trim()?.length > 0 && name?.trim()?.length < length)\r\n shortName = name;\r\n else\r\n shortName = name.substr(0, length);\r\n return shortName;\r\n }\r\n\r\n getAllRoles() {\r\n this.userArray = [];\r\n this.UserListArray = [];\r\n this.service.getAllUsers()\r\n .subscribe\r\n (\r\n (resp) => {\r\n this.userArray = resp.data;\r\n this.userArray.forEach((item) => {\r\n var userList = new UserList(\r\n item.gpn,\r\n item.isActive,\r\n item.firstName,\r\n item.lastName,\r\n item.rankCode,\r\n item.rankName,\r\n item.subserviceLine,\r\n item.serviceLine,\r\n item.locationCity,\r\n item.emailId,\r\n item.isAdmin,\r\n item.isAuthorized,\r\n item.picture,\r\n item.title,\r\n item.designation,\r\n item.linkEnglish,\r\n item.linkFrench,\r\n item.is_Display,\r\n item.businessUnitCode,\r\n item.userId\r\n );\r\n this.UserListArray.push(userList);\r\n \r\n });\r\n this.CopyUserListArray = _.cloneDeep(this.UserListArray);\r\n this.UserListArray=this.UserListArray.filter(item=>item.activeEmployee==true);\r\n this.showtable = true;\r\n this.spinner.hide();\r\n }\r\n );\r\n }\r\n\r\n\r\n getAllUserLogs() {\r\n this.userlogsArray = [];\r\n this.UserLogsListArray = [];\r\n this.service.getAllUserLogs()\r\n .subscribe\r\n (\r\n (resp) => {\r\n this.userlogsArray = resp.data;\r\n this.userlogsArray.forEach((item) => {\r\n var userList = new UserLogsList(\r\n item.userLogsId,\r\n item.gpn,\r\n item.isActive,\r\n item.firstName,\r\n item.lastName,\r\n item.rankCode,\r\n item.rankName,\r\n item.subserviceLine,\r\n item.serviceLine,\r\n item.locationCity,\r\n item.emailId,\r\n item.isAdmin,\r\n item.isAuthorized,\r\n item.picture,\r\n item.title,\r\n item.designation,\r\n item.linkEnglish,\r\n item.linkFrench,\r\n item.is_Display,\r\n item.businessUnitCode,\r\n item.userId,\r\n item.logCreatedBy,\r\n item.logModifiedBy,\r\n item.logCreatedDate,\r\n item.logModifiedDate\r\n );\r\n this.UserLogsListArray.push(userList);\r\n });\r\n this.showtable = true;\r\n this.spinner.hide();\r\n }\r\n );\r\n }\r\n\r\n addUser() {\r\n if (this.UserEmail != \"\") {\r\n\r\n var users = new UserList();\r\n users.emailId = this.UserEmail;\r\n this.service.addUser(users).subscribe(res => {\r\n if (res.data != null) {\r\n this.messageService.add({ severity: 'success', summary: this.labelReplacer('UserAdded'), detail: this.labelReplacer('UserDetailshasbeenAddedSuccessfully') });\r\n // success\r\n this.UserEmail = \"\";\r\n this.getAllRoles();\r\n this.getAllUserLogs();\r\n console.log(res);\r\n } else {\r\n this.messageService.add({ severity: 'error', summary: this.labelReplacer('IncorrectEmailId'), detail: res.message });\r\n\r\n }\r\n });\r\n\r\n }\r\n else {\r\n this.showError = true;\r\n }\r\n }\r\n\r\n titleReplacer(labelKey): string {\r\n return this.selectedtitleAppLanguageJson[labelKey]?.trim() ? this.selectedtitleAppLanguageJson[labelKey] ?? labelKey : this.defaulttitleEnglishJson[labelKey] ?? labelKey;\r\n }\r\n\r\n activeReplacer(labelKey): string {\r\n return this.selectedGlobalLanguageJson[labelKey]?.trim() ? this.selectedGlobalLanguageJson[labelKey] ?? 'text not found' : this.defaultGlobalEnglishJson[labelKey] ?? 'text not found';\r\n }\r\n\r\n\r\n\r\n saveEditedUser() {\r\n this.spinner.show();\r\n const formData = new FormData();\r\n this.externalContactModel;\r\n let imageData;\r\n imageData = {\r\n 'userId': this.userEditForm.get('userId').value,\r\n 'isAdmin': this.userEditForm.get('isAdmin').value,\r\n 'isAuthorized': this.userEditForm.get('isAuthorized').value,\r\n 'title': this.userEditForm.get('title').value,\r\n 'designation': this.userEditForm.get('designation').value,\r\n 'linkEnglish': this.userEditForm.controls['linkEnglish'].value,\r\n 'linkFrench': this.userEditForm.controls['linkFrench'].value,\r\n 'isDisplay': this.userEditForm.get('isDisplays').value,\r\n 'isActive': this.userEditForm.get('isActive').value,\r\n 'picFileName': ''\r\n }\r\n if (this.pUpload) {\r\n\r\n const fileToUpload = this.pUpload;\r\n\r\n formData.append('file', fileToUpload, fileToUpload.name);\r\n imageData.picFileName = fileToUpload.name;\r\n }\r\n formData.append('fileJson', JSON.stringify(imageData));\r\n this.service.uploadProfilePhoto(formData).subscribe(res => {\r\n\r\n if (res) {\r\n this.spinner.hide();\r\n // success\r\n this.messageService.add({ severity: 'success', summary: this.labelReplacer('UserUpdated'), detail: this.labelReplacer('UserDetailshasbeenUpdatedSuccessfully') });\r\n this.onReset();\r\n this.getAllRoles();\r\n this.getAllUserLogs();\r\n } else {\r\n this.spinner.hide();\r\n // display error\r\n this.onReset();\r\n }\r\n\r\n });\r\n }\r\n\r\n onToggleView(event) {\r\n this.UserListArray=[];\r\n let flag = event.checked;\r\n this.UserListArray=this.CopyUserListArray.filter(item=>item.activeEmployee!=flag); \r\n }\r\n\r\n\r\n\r\n labelReplacer(labelKey) {\r\n var data = this.selectedAppLanguageJson[labelKey]?.trim() ? this.selectedAppLanguageJson[labelKey] ?? 'text not found' : this.defaultEnglishJson[labelKey] ?? 'text not found';\r\n return data;\r\n }\r\n\r\n\r\n\r\n}\r\n\r\nexport class EditUser {\r\n isAdmin: boolean;\r\n isAuthorized?: boolean;\r\n picture?: string;\r\n title?: string;\r\n designation?: string;\r\n linkEnglish?: string;\r\n linkFrench?: string;\r\n isDisplay?: boolean;\r\n userId: number;\r\n constructor(isAdmin: boolean, isAuthorized: boolean, picture: string, title: string, designation: string, linkEnglish: string, linkFrench: string, isDisplay: boolean, UserId: number) {\r\n this.userId = UserId;\r\n this.isAdmin = isAdmin;\r\n this.isAuthorized = isAuthorized;\r\n this.picture = picture;\r\n this.title = title;\r\n this.designation = designation;\r\n this.linkEnglish = linkEnglish;\r\n this.linkFrench = linkFrench;\r\n this.isDisplay = isDisplay;\r\n }\r\n}\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment: { \r\n production: boolean, \r\n APIEndpoint: string, \r\n ApplicationUrl: string,\r\n MsalConfig: any\r\n \r\n\r\n} = prodSettings();\r\n\r\nfunction localSettings(): { production: boolean, APIEndpoint: string, ApplicationUrl: string ,MsalConfig: any } \r\n{\r\n return {\r\n production: false,\r\n APIEndpoint: 'http://localhost:10326/',\r\n ApplicationUrl: 'http://localhost:58337',\r\n MsalConfig: {\r\n Api_url: 'http://localhost:10326/',\r\n API_Access: 'api://e0d44140-a051-416c-b070-5cc0c5c192d9/access_as_user',\r\n FrontEndClientId: 'e0d44140-a051-416c-b070-5cc0c5c192d9',\r\n GraphUri: 'https://graph.microsoft.com/',\r\n Authority: 'https://login.microsoftonline.com/EYGS.onmicrosoft.com/',\r\n RedirectUri: 'http://localhost:4200/'\r\n },\r\n \r\n };\r\n}\r\n\r\n/*function localSettings(): { production: boolean, APIEndpoint: string, ApplicationUrl: string ,MsalConfig: any } \r\n{\r\n return {\r\n production: false,\r\n APIEndpoint: 'http://localhost:10326/',\r\n ApplicationUrl: 'http://localhost:4200',\r\n MsalConfig: {\r\n Api_url: 'http://localhost:10326/',\r\n API_Access: 'api://83faf797-98cc-44e8-83ee-a19f6090d91a/user_impersonation',\r\n FrontEndClientId: '83faf797-98cc-44e8-83ee-a19f6090d91a',\r\n GraphUri: 'https://graph.microsoft.com/',\r\n Authority: 'https://login.microsoftonline.com/EYGS.onmicrosoft.com/',\r\n RedirectUri: 'http://localhost:4200/'\r\n },\r\n \r\n };\r\n}*/\r\n\r\nfunction uatSettings() {\r\n return {\r\n production: false,\r\n APIEndpoint: '/',\r\n ApplicationUrl: 'https://documentcentre-uat.ey.com',\r\n MsalConfig: {\r\n Api_url: 'https://documentcentre-uat.ey.com',\r\n API_Access: 'api://e0d44140-a051-416c-b070-5cc0c5c192d9/access_as_user',\r\n FrontEndClientId: 'e0d44140-a051-416c-b070-5cc0c5c192d9',\r\n GraphUri: 'https://graph.microsoft.com/',\r\n Authority: 'https://login.microsoftonline.com/EYGS.onmicrosoft.com/',\r\n RedirectUri: 'https://documentcentre-uat.ey.com'\r\n},\r\n};\r\n}\r\nfunction prodSettings() {\r\n return {\r\n production: true,\r\n APIEndpoint: '/',\r\n ApplicationUrl: 'https://documentcentre.ey.com/',\r\n MsalConfig: {\r\n Api_url: 'https://documentcentre.ey.com/',\r\n API_Access: 'api://13cca568-fb80-4ab7-b1f1-074d711249c2/access_as_user',\r\n FrontEndClientId: '13cca568-fb80-4ab7-b1f1-074d711249c2',\r\n GraphUri: 'https://graph.microsoft.com/',\r\n Authority: 'https://login.microsoftonline.com/EYGS.onmicrosoft.com/',\r\n RedirectUri: 'https://documentcentre.ey.com'\r\n},\r\n};\r\n}\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient} from '@angular/common/http';\r\n// tslint:disable-next-line: import-blacklist\r\nimport { Observable } from 'rxjs/Rx';\r\nimport { environment } from '../../environments/environment';\r\n\r\n\r\n@Injectable()\r\nexport class AppConfigService {\r\n // baseUrl: String = 'http://localhost:60664/';\r\n \r\n navDocumentElement: HTMLElement;\r\n documentSubNav: HTMLElement;\r\n constructor(private _http: HttpClient) {\r\n }\r\n \r\n\r\n getLanguageList(): any {\r\n return this._http.get(environment.APIEndpoint +'api/Language/GetLanguageList')\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n _errorHandler(error: Response) {\r\n // tslint:disable-next-line: deprecation\r\n return Observable.throw(error || 'Server Error');\r\n }\r\n\r\n GetEngagementLanguageList(): any {\r\n return this._http.get(environment.APIEndpoint +'api/Language/GetEngagementLanguageList')\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n addLanguage(newarray) {\r\n const url_ = (environment.APIEndpoint+'api/Language/AddLanguage');\r\n const params = new URLSearchParams();\r\n params.set('newarray', newarray);\r\n return this._http.post(url_, newarray)\r\n .map(\r\n result => {\r\n console.log(result);\r\n },\r\n error => {\r\n console.log('There was an error: ');\r\n }\r\n );\r\n }\r\n\r\n removeLanguage(languageid) {\r\n const url_ = (environment.APIEndpoint+'api/Language/RemoveLanguage?languageId=' + languageid);\r\n const params = new URLSearchParams();\r\n params.set('languageid', languageid);\r\n return this._http.get(url_)\r\n .map(\r\n result => {\r\n console.log(result);\r\n },\r\n error => {\r\n console.log('There was an error: ');\r\n }\r\n );\r\n}\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApplicationConfigurationService {\r\n applicationLanguage: { languageId: number, languageName: string }\r\n constructor() {\r\n this.applicationLanguage = { languageId: 0, languageName: \"\" };\r\n }\r\n\r\n setApplicationLanguage(languageId, languageName) {\r\n this.applicationLanguage.languageId = languageId;\r\n this.applicationLanguage.languageName = languageName;\r\n }\r\n\r\n getApplicationConfiguration(): { languageId: number, languageName: string }{\r\n return this.applicationLanguage;\r\n }\r\n}\r\n","import { environment } from '../../environments/environment';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable, throwError, BehaviorSubject } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\n\r\n\r\nconst requestOptions = { headers: { 'Content-Type': 'application/json' } };\r\n\r\n@Injectable()\r\nexport class CommonService {\r\n\r\n formal = new BehaviorSubject(true);\r\n public LoggedInUserObs$: BehaviorSubject = new BehaviorSubject(null);\r\n\r\n constructor(private httpClient: HttpClient) { }\r\n\r\n getLoggedInUserObs(): Observable {\r\n return this.LoggedInUserObs$.asObservable();\r\n }\r\n\r\n setLoggedInUserObs(userEmail: any) {\r\n this.LoggedInUserObs$.next(userEmail);\r\n }\r\n\r\n getUserRoles(): Observable {\r\n return this.httpClient.get(environment.APIEndpoint + 'api/Common/GetUserRoles')\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n getEngagementContactDetails(engagementId: number): Observable {\r\n return this.httpClient.get(environment.APIEndpoint + 'api/Common/GetEngagementContact?engagementId=' + engagementId)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n getEngagementRoles(languageId: number): Observable {\r\n return this.httpClient.get(environment.APIEndpoint + 'api/Common/GetEngagementRoleDropDown?languageId=' + languageId)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n getStatus(): Observable {\r\n return this.httpClient.get(environment.APIEndpoint + 'api/Common/GetStatus')\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n deleteInternalUser(engagementInternalContactId: number): Observable {\r\n return this.httpClient.delete(environment.APIEndpoint + 'api/Common/DeleteInternalContact?engagementInternalContactId=' + engagementInternalContactId)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n saveOrUpdateInternalUser(internalUserModel: any): Observable {\r\n return this.httpClient.post(environment.APIEndpoint + 'api/Common/SaveOrUpdateEnagegmentInternalContact', internalUserModel)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n saveExternalRoles(rolesModel: any): Observable {\r\n return this.httpClient.post(environment.APIEndpoint + 'api/Common/SaveEngagementRoles', rolesModel)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n updateExternalRoles(rolesModel: any): Observable {\r\n return this.httpClient.post(environment.APIEndpoint + 'api/Common/UpdateEngagementRoles', rolesModel)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n\r\n deleteExternalRole(externalRoleId: number): Observable {\r\n return this.httpClient.delete(environment.APIEndpoint + 'api/Common/DeleteExternalRole?externalContactId=' + externalRoleId)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n saveOrUpdateExternalContact(externalContactModel): Observable {\r\n return this.httpClient.post(environment.APIEndpoint + 'api/Common/SaveOrUpdateExternalContact', externalContactModel)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n deleteExternalContact(externalContactId): Observable {\r\n return this.httpClient.delete(environment.APIEndpoint + 'api/Common/DeleteExternalContact?externalContactId=' + externalContactId)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n setTitle(title: boolean) {\r\n this.formal.next(title);\r\n }\r\n\r\n getUserApprovalCount() {\r\n return this.httpClient.get(environment.APIEndpoint + 'api/Common/GetApprovalAwaitingCount')\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n \r\n getPendingApprovalList(showAll:boolean): any {\r\n\r\n return this.httpClient.get(environment.APIEndpoint + 'api/Common/GetPendingApproval?showAll=' + showAll)\r\n .map((res: Response) => res)\r\n .catch(this.handleError);\r\n }\r\n\r\n private handleError(error: Response) {\r\n console.error(error);\r\n return throwError(error || 'Server error');\r\n }\r\n\r\n getEngagementInternalContactHistory(engagementId: number) {\r\n return this.httpClient.get(environment.APIEndpoint + 'api/Common/GetInternalContactHistory?engagementId=' + engagementId)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { MessageService } from 'primeng/api'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CustomMessageService {\r\n\r\n constructor(private messageService: MessageService) { }\r\n\r\n displayMessage(message: string, type: string): any {\r\n let messages = message.split('\\n');\r\n if (messages.length == 1)\r\n return {\r\n closable: true,\r\n sticky: false,\r\n details : messages[0],\r\n life: 2000,\r\n severity: type,\r\n \r\n };\r\n let messageModel = [];\r\n for (let i = 0; i < messages.length; i++) {\r\n messageModel.push({\r\n closable: true,\r\n sticky: false,\r\n data: messages[i],\r\n life: 2000,\r\n severity: type,\r\n });\r\n }\r\n return messageModel;\r\n\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { environment } from 'src/environments/environment';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DocverHistoryService {\r\n\r\nconstructor(private _http: HttpClient) { }\r\n\r\n\r\ngetDocVersionHistoryList(docid:number): any {\r\n return this._http.get(environment.APIEndpoint +'api/DocVersionHist/GetDocVersionHistoryList?docId=' + docid)\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n}\r\n_errorHandler(error: Response) {\r\n // tslint:disable-next-line: deprecation\r\n return Observable.throw(error || 'Server Error');\r\n}\r\n\r\n}\r\n","import { environment } from '../../environments/environment';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\n\r\nconst requestOptions = { headers: { 'Content-Type': 'application/json' } };\r\n@Injectable()\r\nexport class EngagementManagementService {\r\n\r\n constructor(private http: HttpClient) {\r\n }\r\n addEngagement(engagementDetails): Observable {\r\n return this.http.post(environment.APIEndpoint + 'api/Engagement/SaveEngagement', engagementDetails)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n getEngagementRoles(languageIds: number[]): Observable {\r\n return this.http.post(environment.APIEndpoint + 'api/Engagement/GetEngagementRoles', languageIds)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n findShortUrl(shortUrl): any {\r\n return this.http.get(environment.APIEndpoint + 'api/Engagement/FindShortUrl?shortUrl=' + shortUrl)\r\n .pipe(map((data: boolean) => {\r\n if (data)\r\n return { 'shortUrlExits': \"Short url already exist's\" }\r\n else\r\n return null;\r\n }),\r\n catchError(this.handleError));\r\n }\r\n\r\n getEngagementBasicDetails(engagementId: number): Observable {\r\n return this.http.get(environment.APIEndpoint + 'api/Engagement/GetEngagementBasicDetails?engagementId=' + engagementId)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n getEngagementDetails(engagementId: number): Observable {\r\n return this.http.get(environment.APIEndpoint + 'api/Engagement/GetEngagementDetails?engagementId=' + engagementId)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n GetEngagementsForExternalUser(engagementId: number, languageId: number): Observable {\r\n return this.http.get(environment.APIEndpoint + 'api/Engagement/FetchEngagementForExternalurl?engagementId=' + engagementId + '&&' + 'languageId=' + languageId)\r\n .map((res) => res)\r\n .catch(this.handleError);\r\n }\r\n\r\n\r\n updateEngagement(engagementDetails): Observable {\r\n return this.http.post(environment.APIEndpoint + 'api/Engagement/UpdateEngagement', engagementDetails)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n getContactInternalInfoList(EngagementId: number, languageId: number): Observable {\r\n\r\n return this.http.get(environment.APIEndpoint + 'api/Engagement/FetchContactInternelInfoList?engagementId=' + EngagementId + '&&' + 'languageId=' + languageId)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n\r\n }\r\n\r\n getContactExternalInfoList(EngagementId: number, languageId: number): Observable {\r\n\r\n return this.http.get(environment.APIEndpoint + 'api/Engagement/FetchContactExternelInfoList?engagementId=' + EngagementId + '&&' + 'languageId=' + languageId)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n\r\n }\r\n\r\n validateEngagementName(engagementName: string, engagementId: number) {\r\n return this.http.get(environment.APIEndpoint + 'api/Engagement/FindEngagementName?engagementName=' + engagementName + '&engagementId=' + engagementId)\r\n .pipe(map((data: boolean) => {\r\n if (data)\r\n return { 'engagementNameExist': \"Engagement name already exists\" }\r\n else\r\n return null;\r\n }),\r\n catchError(this.handleError));\r\n }\r\n\r\n updateEngagementStatus(engagementModel: any): Observable {\r\n return this.http.post(environment.APIEndpoint + 'api/Engagement/UpdateEngagementStatus', engagementModel)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n updateEngagementBasicInfo(engagementBasicInfoModel): Observable {\r\n return this.http.post(environment.APIEndpoint + 'api/Engagement/UpdateEngagementDetails', engagementBasicInfoModel)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n addEngagementDetails(engagementDetailsModel: any): Observable {\r\n return this.http.post(environment.APIEndpoint + 'api/Engagement/AddEngagementDetails', engagementDetailsModel)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n getSaveEngagementDraft(engagementDetailsId: number): Observable {\r\n return this.http.get(environment.APIEndpoint + 'api/Engagement/GetSavedEngagementDraft?engagementDetailsId=' + engagementDetailsId)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n approveEngagementDetails(engagementId: number, engagementDetailsId: number): Observable {\r\n return this.http.post(environment.APIEndpoint + 'api/Engagement/ApproveEngagementDetails?engagementId=' + engagementId + \"&engagementDetailsId=\" + engagementDetailsId, null)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n addorupdateEngagementDetails(engagementDetailsHitoryModel: any): Observable {\r\n return this.http.post(environment.APIEndpoint + 'api/Engagement/SaveOrUpdateDraft', engagementDetailsHitoryModel, { headers: new HttpHeaders().set(\"Content-Type\", \"application/json\") })\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n deleteEngagement(engagementId: number): Observable {\r\n return this.http.delete(environment.APIEndpoint + 'api/Engagement/DeleteEngagement?engagementId=' + engagementId)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n sendForApproval(engagementDetailsHistoryId: number, userId): Observable {\r\n return this.http.get(environment.APIEndpoint + 'api/Engagement/SendForApproval?engagementDetailsHistoryId=' + engagementDetailsHistoryId + \"&userId=\" + userId)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n getEngagementAwaitingApprovals(engagementId: number): Observable {\r\n return this.http.get(environment.APIEndpoint + 'api/Engagement/GetEngagementDetailsForApproval?engagementId=' + engagementId)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n getIsEngagementDetailsApproved(engagementId: number): Observable {\r\n return this.http.get(environment.APIEndpoint + 'api/Engagement/GetIsEngagementDetailsApproved?engagementId=' + engagementId)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n getEngagementDetailsHistory(engagementDetailsId: number): Observable {\r\n return this.http.get(environment.APIEndpoint + 'api/Engagement/GetEngagementDetailsHistoryLog?engagementDetailsId=' + engagementDetailsId)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n getApprovalManagementEngagementApprovals(isAllView: boolean): Observable {\r\n return this.http.get(environment.APIEndpoint + 'api/Engagement/GetEngagementAwaitingApprovals?isAllView=' + isAllView)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n getEngagementStatusLog(engagementId: number, languageId: number):Observable {\r\n return this.http.get(environment.APIEndpoint + 'api/Engagement/GetEngagementStatusLog?engagementId=' + engagementId + '&languageId=' + languageId).pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n private handleError(error: Response) {\r\n console.error(error);\r\n return throwError(error || 'Server error');\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs/Rx';\r\nimport { environment } from '../../environments/environment';\r\n\r\n\r\n// const requestOptions = { \r\n// headers: new HttpHeaders({ \r\n// \"Access-Control-Allow-Origin\": \"*\",\r\n// \"accept\": \"application/json\",\r\n// 'Cache-Control': \"no-cache\",\r\n// \"X-XSS-Protection\": \"1; mode=block\",\r\n// \"Content-Security-Policy\": \"default-src 'self'\",\r\n// \"Content-Type\": \"application/json\" }) \r\n// };\r\n\r\nconst httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n\r\n@Injectable()\r\nexport class FolderManagementService {\r\n\r\n constructor(private _http: HttpClient) {\r\n }\r\n\r\n getCircularReplacer = () => {\r\n const seen = new WeakSet();\r\n return (key, value) => {\r\n if (typeof value === \"object\" && value !== null) {\r\n if (seen.has(value)) {\r\n return;\r\n }\r\n seen.add(value);\r\n }\r\n return value;\r\n };\r\n };\r\n\r\n getFolderTemplate(engagementId): Promise {\r\n return this._http.get(environment.APIEndpoint + 'api/FolderMgmt/GetFolderTemplate?engagementId=' + engagementId)\r\n .toPromise()\r\n .then(res => JSON.parse(res))\r\n .catch(this._errorHandler);\r\n }\r\n\r\n saveFolderTemplate(arrFolderTree, engagementId): any {\r\n var body = JSON.stringify(arrFolderTree, this.getCircularReplacer());\r\n body = body.replace(',null', '');\r\n return this._http.post(environment.APIEndpoint + 'api/FolderMgmt/SaveFolderTemplate?engagementId=' + engagementId, body, httpOptions)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n _errorHandler(error: Response) {\r\n return Observable.throw(error || 'Server Error');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { environment } from '../../environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HomeService {\r\n\r\n isHomeSelected: boolean=false;\r\n constructor(private _http: HttpClient) {\r\n }\r\n\r\n setIsHomeSelected(value:boolean) {\r\n this.isHomeSelected = value;\r\n }\r\n\r\n getEngagementList(languageId:any): any {\r\n return this._http.get(environment.APIEndpoint+'api/Engagement/GetEngagementList?languageId=' + languageId)\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n _errorHandler(error: Response) {\r\n return Observable.throw(error || 'Server Error');\r\n }\r\n\r\n GetEngagementsForExternalUser(languageId): any {\r\n return this._http.get(environment.APIEndpoint+'api/Engagement/GetEngagementsForExternalUser?languageId=' + languageId)\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n GetPastEngagementsForExternalUser(languageId): any {\r\n return this._http.get(environment.APIEndpoint+'api/Engagement/GetPastEngagementsForExternalUser?languageId=' + languageId)\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n getPastEngagementList(languageId:any): any {\r\n return this._http.get(environment.APIEndpoint+'api/Engagement/GetPastEngagementList?languageId=' + languageId)\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n getEngagementById(engagementid): any {\r\n return this._http.get(environment.APIEndpoint+'api/Engagement/DownloadExcel?engagementId=' + engagementid)\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n getEngagementZipFolder(folderPath:any): any {\r\n return this._http.get(environment.APIEndpoint+'api/Engagement/DownloadZipFiles?folderName=' + folderPath, { responseType: 'blob'})\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n getEngagementDocsById(engagementid):any{\r\n return this._http.get(environment.APIEndpoint+'api/Engagement/GetEngagmentDocsById?engagementId=' + engagementid)\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n getEngagementDetailsById(engagementid,downloadedDocIds): any {\r\n return this._http.get(environment.APIEndpoint+'api/Engagement/DownloadExcel?engagementId=' + engagementid+'&&'+ 'strDocIds='+downloadedDocIds)\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs/Rx';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable()\r\nexport class JurisdictionService {\r\n\r\n constructor(private _http: HttpClient) { }\r\n\r\n getLanguageList(): any {\r\n return this._http.get(environment.APIEndpoint + 'api/Language/GetLanguageList')\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n\r\n getAllJurisdictionList(): any {\r\n return this._http.get(environment.APIEndpoint + 'api/Jurisdiction/GetAllJurisdictionList')\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n addJurisdictionList(mappedRoles: any) {\r\n // const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n return this._http.post(environment.APIEndpoint + 'api/Jurisdiction/AddJurisdictionList', mappedRoles)\r\n .map((res: Response) => res);\r\n }\r\n\r\n _errorHandler(error: Response) {\r\n return Observable.throw(error || 'Server Error');\r\n }\r\n\r\n deleteJurisdiction(jurisdictionMappingId: any): any {\r\n return this._http.delete(environment.APIEndpoint + 'api/Jurisdiction/DeleteJurisdiction?mappingId=' + jurisdictionMappingId)\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n getJurisdictionDropDown(languageId: number): Observable {\r\n return this._http.get(environment.APIEndpoint + 'api/Jurisdiction/GetJurisdictionLoadDropdown?languageId=' + languageId)\r\n .map((data) => data).catch(this._errorHandler);\r\n }\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs/Rx';\r\nimport { environment } from '../../environments/environment';\r\n\r\n@Injectable()\r\nexport class LabelcardMgmtService {\r\n\r\nconstructor(private _http: HttpClient) { }\r\n//baseUrl: String = 'http://localhost:10325/';\r\ngetAllCategories(): any {\r\n return this._http.get(environment.APIEndpoint+'api/LabelCategories/GetAllCategories')\r\n .map((res) => res);\r\n }\r\n\r\n getLanguageList(): any {\r\n return this._http.get(environment.APIEndpoint+'api/Language/GetLanguageList')\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n _errorHandler(error: Response) {\r\n return Observable.throw(error || 'Server Error');\r\n }\r\n \r\n getAllLabels(): any {\r\n return this._http.get(environment.APIEndpoint+'api/ApplicationField/GetAllLabel')\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n getAllMappedLabels(languageId:any): any {\r\n return this._http.get(environment.APIEndpoint+'api/ApplicationFieldLanguageMapping/GetAllLangugaeLabelMapping?languageId='+ languageId)\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n getAllCategoriesWiseMappedLabels(catid): any {\r\n \r\n return this._http.get(environment.APIEndpoint+'api/ApplicationFieldLanguageMapping/GetCategoryWiseLanguageLabelMapping?catid=' + catid)\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n saveMappedLabels(mappedlabels: any ) {\r\n const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n return this._http.post(environment.APIEndpoint+'api/ApplicationFieldLanguageMapping/AddMappedLabel', mappedlabels, httpOptions)\r\n .map((res: Response) => res);\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable, throwError, Subject } from 'rxjs';\r\nimport { environment } from '../../environments/environment';\r\nimport { catchError,map } from 'rxjs/operators';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n\r\n\r\n@Injectable()\r\nexport class LanguageService {\r\n private dataSource = new BehaviorSubject({name: 'English',Id:1});\r\ncurrentData = this.dataSource.asObservable();\r\nmySubject : BehaviorSubject = new BehaviorSubject([]);\r\nuserData : BehaviorSubject = new BehaviorSubject([]);\r\nmyData : any ;\r\n\r\n\r\n constructor(private _httpClient: HttpClient) { }\r\n getLanguages(): Observable {\r\n return this._httpClient.get(environment.APIEndpoint + 'api/Language/GetLanguages')\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n getAllLanguages(): Observable{\r\n return this._httpClient.get(environment.APIEndpoint + 'api/Language/GetLanguageList')\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n getEngagementSelectedLanguages(engagementId: number):Observable {\r\n return this._httpClient.get(environment.APIEndpoint + 'api/Language/GetEngagementSelectedLanguages?engagementId=' + engagementId)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n private handleError(error: Response) {\r\n console.error(error);\r\n return throwError(error || 'Server error');\r\n }\r\n\r\n public changeLanguage(data: any) {\r\n this.dataSource.next(data);\r\n }\r\n\r\n public myDataSetter(data : any){\r\n this.myData = data;\r\n this.mySubject.next(this.myData);\r\n }\r\n\r\n public userDataSetter(data : any){\r\n var data = data;\r\n this.userData.next(data);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { environment } from 'src/environments/environment';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { LinkMastermodel } from 'src/app/link-master/link-master-model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LinkMasterService {\r\n\r\nconstructor(private _http: HttpClient) { }\r\n\r\n\r\n\r\ngetLinkList(): any {\r\n return this._http.get(environment.APIEndpoint +'api/LinkMaster/GetLinkMasterList')\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n}\r\n_errorHandler(error: Response) {\r\n // tslint:disable-next-line: deprecation\r\n return Observable.throw(error || 'Server Error');\r\n}\r\n\r\naddLink(newarray) {\r\n const url_ = (environment.APIEndpoint+'api/LinkMaster/AddLink');\r\n const params = new URLSearchParams();\r\n params.set('newarray', newarray);\r\n return this._http.post(url_, newarray)\r\n .map(\r\n result => {\r\n console.log(result);\r\n },\r\n error => {\r\n console.log('There was an error: ');\r\n }\r\n );\r\n}\r\n\r\nupdateLink(LinkModel:LinkMastermodel) {\r\n\r\n const url_ = (environment.APIEndpoint+'api/LinkMaster/UpdateLinkMaster');\r\n return this._http.put(url_, LinkModel)\r\n .map(\r\n result => {\r\n console.log(result);\r\n },\r\n error => {\r\n console.log('There was an error: ');\r\n }\r\n );\r\n}\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs/Rx';\r\nimport { environment } from '../../environments/environment';\r\nimport {MsalService} from '@azure/msal-angular';\r\nconst httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n\r\n\r\n@Injectable()\r\nexport class LogoIconMgmtService {\r\n\r\n constructor(private _http: HttpClient,private adal: MsalService) {\r\n }\r\n\r\n uploadImage(imageDetails): any {\r\n\r\n return this._http.post(environment.APIEndpoint + 'api/LogoIconMgmt/UploadImage', imageDetails)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n getImageType(): any {\r\n return this._http.get(environment.APIEndpoint + 'api/LogoIconMgmt/GetImageType')\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n getIconCategoryList(): any {\r\n return this._http.get(environment.APIEndpoint + 'api/LogoIconMgmt/GetIconCategoryList', httpOptions)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n getLogoIconList(): any {\r\n return this._http.get(environment.APIEndpoint + 'api/LogoIconMgmt/GetLogoIconList', httpOptions)\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n getLogoList(): any {\r\n return this._http.get(environment.APIEndpoint + 'api/LogoIconMgmt/GetLogoList', httpOptions)\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n \r\n addCategory(userEmail):any {\r\n return this._http.post(environment.APIEndpoint + 'api/LogoIconMgmt/AddNewCategory', userEmail)\r\n .map((res: Response) => res);\r\n}\r\n\r\n deleteImage(logo): any {\r\n return this._http.patch(environment.APIEndpoint + 'api/LogoIconMgmt/DeleteImage',logo)\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n deleteCategories(categoryId: any): any {\r\n return this._http.delete(environment.APIEndpoint + 'api/LogoIconMgmt/DeleteCategory?categoryId=' + categoryId)\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n downloadImage(logo : any): Observable {\r\n return this._http.get(environment.APIEndpoint + 'api/LogoIconMgmt/DownloadImage?imageLink=' + logo.imageLink, {\r\n responseType: 'blob'\r\n })\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n /*downloadImage(logo) {\r\n \r\n return Observable.create((observer: any) => {\r\n\r\n let xhr = new XMLHttpRequest();\r\n xhr.open('GET', environment.APIEndpoint + 'api/LogoIconMgmt/DownloadImage?imageLink=' + logo.imageLink);\r\n xhr.setRequestHeader('Content-type', 'application/json');\r\n xhr.responseType = 'blob';\r\n const urls=environment.APIEndpoint + 'api/LogoIconMgmt/DownloadImage?imageLink=' + logo.imageLink;\r\n let token = sessionStorage.getItem('msal.idtoken'); \r\n \r\n xhr.setRequestHeader('Authorization', 'Bearer ' + token);\r\n xhr.onreadystatechange = function () { \r\n\r\n if (xhr.readyState === 4) {\r\n if (xhr.status === 200) {\r\n var contentType = 'arraybuffer';\r\n var blob = new Blob([xhr.response], { type: contentType });\r\n observer.next(blob);\r\n observer.complete();\r\n } else {\r\n\r\n observer.error(xhr.response);\r\n }\r\n }\r\n }\r\n xhr.send();\r\n });\r\n }*/\r\n\r\n checkLogoName(logoName): any {\r\n return this._http.get(environment.APIEndpoint + 'api/LogoIconMgmt/CheckLogoName?logoName=' + logoName)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n checkIconName(iconName): any {\r\n return this._http.get(environment.APIEndpoint + 'api/LogoIconMgmt/CheckIconName?logoName=' + iconName)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n _errorHandler(error: Response) {\r\n return Observable.throw(error || 'Server Error');\r\n }\r\n\r\n \r\n updateIconCategory(categoryDetails): any {\r\n\r\n return this._http.post(environment.APIEndpoint + 'api/LogoIconMgmt/UpdateIconCategory', categoryDetails)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n}\r\n","import { environment } from '../../environments/environment';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class LogoManagementService {\r\n constructor(private http: HttpClient) {\r\n }\r\n\r\n GetExternalContactLogoList(): Observable {\r\n return this.http.get(environment.APIEndpoint + 'api/LogoIconMgmt/GetLogoCategory'\r\n // , { headers: this.getHeader.getHttpHeaders() }\r\n )\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n private handleError(error: Response) {\r\n console.error(error);\r\n return throwError(error || 'Server error');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs/Rx';\r\nimport { environment } from '../../environments/environment';\r\nimport { map } from 'rxjs/operators';\r\nimport { downloadDocument } from 'src/app/detail-engagement/detail-engagement.component';\r\nconst httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n\r\n\r\n@Injectable()\r\nexport class DocumentManagementService {\r\n //baseUrl: String = 'http://localhost:60664/';\r\n\r\n constructor(private _http: HttpClient) {\r\n }\r\n\r\n\r\n getCircularReplacer = () => {\r\n const seen = new WeakSet();\r\n return (key, value) => {\r\n if (typeof value === \"object\" && value !== null) {\r\n if (seen.has(value)) {\r\n return;\r\n }\r\n seen.add(value);\r\n }\r\n return value;\r\n };\r\n };\r\n\r\n test(): any {\r\n return this._http.post(environment.APIEndpoint + 'api/ManageDoc/UploadTest', \"documentDetails\", httpOptions)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n uploadNewDocument(documentDetails): any {\r\n\r\n return this._http.post(environment.APIEndpoint + 'api/ManageDoc/UploadNewDocument', documentDetails)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n getDocVersionByDocId(documentDetails): any {\r\n\r\n return this._http.post(environment.APIEndpoint + 'api/ManageDoc/GetDocumentVersionByDocId', documentDetails)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n\r\n\r\n getDownloadDocument(downloadModel: any,popupMessage:string) { // reading excel\r\n const headers = new HttpHeaders();\r\n var url = environment.APIEndpoint.concat('api/ManageDoc/FetchDocumentFromBlob');\r\n return this._http.post(url, downloadModel, { responseType: 'blob' as 'json' })\r\n .pipe(\r\n map((data) => {\r\n if (data.type != 'text/plain') {\r\n let file = downloadModel.FileName + downloadModel.FileType;\r\n if (downloadModel.FileType.toLowerCase() == \".pdf\") {\r\n var blob = new Blob([data], { type: 'application/pdf' });\r\n\r\n if (window.navigator && window.navigator.msSaveOrOpenBlob) {\r\n window.navigator.msSaveOrOpenBlob(blob, file);\r\n }\r\n else {\r\n //var fileURL = window.URL.createObjectURL(blob);\r\n var fileURL = environment.APIEndpoint + 'api/Document/download?docId='+downloadModel.DocId+ '&' + 'language='+downloadModel.LanguageCode; \r\n var pwa = window.open(fileURL);\r\n if (!pwa || pwa.closed || typeof pwa.closed == 'undefined') {\r\n alert(popupMessage);\r\n }\r\n // const link = document.createElement('a');\r\n // link.href =environment.APIEndpoint + 'api/ManageDoc/download?docId='+downloadModel.DocId+ '&' + 'docVersionId='+downloadModel.DocVersionId \r\n // //link.setAttribute('download', file);\r\n // document.body.appendChild(link);\r\n // link.click();\r\n //var w = window.open(fileURL, file);\r\n // var w = window.open(fileURL);\r\n //w.document.title = 'testing';\r\n // w.document.close();\r\n\r\n //setTimeout(function(){ w.document.title =file ; }, 10000);\r\n\r\n // var title = 'Your Custom Title';\r\n // w.onload = function(){\r\n // w.document.title = title;\r\n // };\r\n // w.document.write('My PDF File Title');\r\n //var pwa = window.open(fileURL, file);\r\n //if (!pwa || pwa.closed || typeof pwa.closed == 'undefined') {\r\n // alert('Please disable your Pop-up blocker and try again.');\r\n //}\r\n }\r\n }\r\n else {\r\n if (window.navigator && window.navigator.msSaveOrOpenBlob) {\r\n window.navigator.msSaveOrOpenBlob(data, file);\r\n }\r\n else {\r\n const link = document.createElement('a');\r\n link.href = window.URL.createObjectURL(new Blob([data]));\r\n link.setAttribute('download', file);\r\n document.body.appendChild(link);\r\n link.click();\r\n }\r\n }\r\n\r\n }\r\n else {\r\n alert('File not found in Blob!');\r\n }\r\n })\r\n );\r\n }\r\n\r\n\r\n \r\n getDownloadDocumentwithVersion(downloadModel: any,popupMessage:string) { // reading excel\r\n const headers = new HttpHeaders();\r\n var url = environment.APIEndpoint.concat('api/ManageDoc/FetchDocumentFromBlob');\r\n return this._http.post(url, downloadModel, { responseType: 'blob' as 'json' })\r\n .pipe(\r\n map((data) => {\r\n if (data.type != 'text/plain') {\r\n let file = downloadModel.FileName + downloadModel.FileType;\r\n if (downloadModel.FileType.toLowerCase() == \".pdf\") {\r\n var blob = new Blob([data], { type: 'application/pdf' });\r\n\r\n if (window.navigator && window.navigator.msSaveOrOpenBlob) {\r\n window.navigator.msSaveOrOpenBlob(blob, file);\r\n }\r\n else {\r\n //var fileURL = window.URL.createObjectURL(blob);\r\n var fileURL = environment.APIEndpoint + 'api/ManageDoc/download?docId='+downloadModel.DocId+ '&' + 'docVersionId='+downloadModel.DocVersionId; \r\n var pwa = window.open(fileURL);\r\n if (!pwa || pwa.closed || typeof pwa.closed == 'undefined') {\r\n alert(popupMessage);\r\n }\r\n // const link = document.createElement('a');\r\n // link.href =environment.APIEndpoint + 'api/ManageDoc/download?docId='+downloadModel.DocId+ '&' + 'docVersionId='+downloadModel.DocVersionId \r\n // //link.setAttribute('download', file);\r\n // document.body.appendChild(link);\r\n // link.click();\r\n //var w = window.open(fileURL, file);\r\n // var w = window.open(fileURL);\r\n //w.document.title = 'testing';\r\n // w.document.close();\r\n\r\n //setTimeout(function(){ w.document.title =file ; }, 10000);\r\n\r\n // var title = 'Your Custom Title';\r\n // w.onload = function(){\r\n // w.document.title = title;\r\n // };\r\n // w.document.write('My PDF File Title');\r\n //var pwa = window.open(fileURL, file);\r\n //if (!pwa || pwa.closed || typeof pwa.closed == 'undefined') {\r\n // alert('Please disable your Pop-up blocker and try again.');\r\n //}\r\n }\r\n }\r\n else {\r\n if (window.navigator && window.navigator.msSaveOrOpenBlob) {\r\n window.navigator.msSaveOrOpenBlob(data, file);\r\n }\r\n else {\r\n const link = document.createElement('a');\r\n link.href = window.URL.createObjectURL(new Blob([data]));\r\n link.setAttribute('download', file);\r\n document.body.appendChild(link);\r\n link.click();\r\n }\r\n }\r\n\r\n }\r\n else {\r\n alert('File not found in Blob!');\r\n }\r\n })\r\n );\r\n }\r\n\r\n\r\n\r\n getDocType(): any {\r\n\r\n return this._http.get(environment.APIEndpoint + 'api/ManageDoc/GetDocumentType')\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n getDocStatus(): any {\r\n\r\n return this._http.get(environment.APIEndpoint + 'api/ManageDoc/GetDocumentStatus')\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n moveDocFolder(documentDetails): any {\r\n\r\n return this._http.post(environment.APIEndpoint + 'api/ManageDoc/MoveDocumentFolder', documentDetails)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n deleteDocVersion(documentDetails): any {\r\n\r\n return this._http.post(environment.APIEndpoint + 'api/ManageDoc/DeleteDocumentVersion', documentDetails)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n unapproveDocument(documentDetails): any {\r\n\r\n return this._http.post(environment.APIEndpoint + 'api/ManageDoc/UnauthorizeDocument', documentDetails)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n getEngagementDocument(documentDetails): any {\r\n\r\n return this._http.post(environment.APIEndpoint + 'api/ManageDoc/GetEngagementDocument', documentDetails)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n getEngagementApprovedDocument(documentDetails): any {\r\n return this._http.post(environment.APIEndpoint + 'api/ManageDoc/GetEngagementDocumentWithApproved', documentDetails)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n saveDocumentVersion(documentDetails): any {\r\n\r\n return this._http.post(environment.APIEndpoint + 'api/ManageDoc/SaveDocumentVersion', documentDetails)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n approveDocumentVersion(documentDetails): any {\r\n\r\n return this._http.post(environment.APIEndpoint + 'api/ManageDoc/ApproveDocumentVersion', documentDetails)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n sendDocumentApprovalMail(documentDetails): any {\r\n\r\n return this._http.post(environment.APIEndpoint + 'api/ManageDoc/SendDocumentApprovalMail', documentDetails)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n getApproverList(engagementId): any {\r\n\r\n return this._http.get(environment.APIEndpoint + 'api/ManageDoc/GetApproverList?engagementId=' + engagementId)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n logPublicUserDocumentViews(documentDetails): any {\r\n\r\n return this._http.post(environment.APIEndpoint + 'api/ManageDoc/LogPublicUserDocumentViews', documentDetails)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n getDocumentApprovalList(showAll:boolean): any {\r\n\r\n return this._http.get(environment.APIEndpoint + 'api/ManageDoc/GetDocumentListForApproval?showAll=' + showAll)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n getEngagementListForUser(languageId: any,showAll:boolean): any {\r\n return this._http.get(environment.APIEndpoint + 'api/ManageDoc/GetEngagementListForUser?languageId=' + languageId + '&&' + 'showAll=' + showAll)\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n _errorHandler(error: Response) {\r\n return Observable.throw(error || 'Server Error');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs/Rx';\r\nimport { environment } from '../../environments/environment';\r\n\r\n@Injectable()\r\nexport class MasterListService {\r\n\r\n constructor(private _http: HttpClient) { }\r\n\r\n\r\n getLanguageList(): any {\r\n return this._http.get(environment.APIEndpoint + 'api/Language/GetLanguageList')\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n\r\n getAllEyRoleList(): any {\r\n return this._http.get(environment.APIEndpoint + 'api/MasterList/GetAllEyRoleList')\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n addEyRoleList(mappedRoles: any) {\r\n // const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n return this._http.post(environment.APIEndpoint + 'api/MasterList/AddEyRoleList', mappedRoles)\r\n .map((res: Response) => res);\r\n }\r\n\r\n _errorHandler(error: Response) {\r\n return Observable.throw(error || 'Server Error');\r\n }\r\n\r\n deleteMasterList(roleMappingId:any): any {\r\n return this._http.delete(environment.APIEndpoint + 'api/MasterList/DeleteMasterList?mappingId='+roleMappingId)\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { PublicuserModel } from 'src/app/public-user/models/publicuser.model';\r\nimport { environment } from '../../environments/environment';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { throwError, Observable } from 'rxjs';\r\nconst httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n\r\n\r\n\r\n@Injectable()\r\nexport class PublicuserService {\r\n // baseUrl: String = 'http://localhost:10325/';\r\n form: FormGroup = new FormGroup(\r\n {name: new FormControl('',[Validators.required]),\r\n email: new FormControl('', [Validators.email, Validators.required]),\r\n company: new FormControl('',[Validators.required])\r\n }\r\n );\r\n\r\nconstructor(private _http: HttpClient) { }\r\n initializeFormGroup(){\r\n this.form.reset()\r\n this.form.setValue(\r\n {\r\n name : '',\r\n email : '',\r\n company : ''\r\n }\r\n );\r\n }\r\n\r\n resetFormGroup() {\r\n this.form.reset();\r\n }\r\n\r\n addPublicUser(publicuser: PublicuserModel,EngagementId:any,selectedId:any):Observable {\r\n {\r\n publicuser.engagementId=EngagementId;\r\n publicuser.languageId = selectedId;\r\n publicuser.createdDate = new Date();\r\n return this._http.post(environment.APIEndpoint +'api/Publicuser/AddPublicUser', publicuser)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n \r\n }\r\n\r\n\r\n getPublicUserList(): any {\r\n return this._http.get(environment.APIEndpoint + 'api/Publicuser/getPublicUserList')\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n checkEmail(email:string,engagementId:any){\r\n return this._http.get(environment.APIEndpoint +'api/Publicuser/CheckEmail?emailId='+email+'&&'+'engagementId='+engagementId,httpOptions)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n signUpUser(publicUserId:number):Observable {\r\n return this._http.get(environment.APIEndpoint +'api/Publicuser/SignUpUser?publicUserId='+publicUserId,httpOptions)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n checkNotifications():Observable {\r\n return this._http.get(environment.APIEndpoint +'api/Publicuser/checkNotifications',httpOptions)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n getPublicUserLogs(): any {\r\n return this._http.get(environment.APIEndpoint + 'api/Publicuser/GetPublicUserLogsList')\r\n .map((res) => res)\r\n .catch(this.handleError);\r\n }\r\n\r\n\r\n unsubscribeEngagement(publicUserId:number):Observable {\r\n return this._http.get(environment.APIEndpoint +'api/Publicuser/unsubscribeEngagement?publicUserId='+publicUserId,httpOptions)\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n updatePublicUser(imageDetails): any {\r\n\r\n return this._http.post(environment.APIEndpoint + 'api/Publicuser/updatePublicUser', imageDetails)\r\n .map((res: Response) => res)\r\n .catch(this.handleError);\r\n }\r\n\r\n\r\n private handleError(error: Response) {\r\n console.error(error);\r\n return throwError(error || 'Server error');\r\n}\r\n\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { UserService } from './userservice';\r\nimport { LocationStrategy, HashLocationStrategy } from '@angular/common';\r\nimport { PublicuserService } from './publicuser.service';\r\nimport { LabelcardMgmtService } from './labelcard-mgmt.service';\r\nimport { FolderManagementService } from './folder-mgmt.service';\r\nimport { DocumentManagementService } from './manage-doc.service';\r\nimport { LogoManagementService } from './logo-mgmt.service';\r\nimport { EngagementManagementService } from './engagement-mgmt.service';\r\nimport { HomeService } from './home.service';\r\nimport { AppConfigService } from './app-config.service';\r\nimport { LanguageService } from './language.service';\r\nimport { CommonService } from './common.service'\r\nimport { ApplicationConfigurationService } from './application-configuration.service';\r\nimport { LinkMasterService } from './link-master.service';\r\nimport { MessageService } from 'primeng';\r\nimport { DocverHistoryService } from './docver-history.service';\r\nimport { MasterListService } from './master-list.service';\r\nimport { CustomMessageService } from './custom-message.service'\r\n\r\nimport { JurisdictionService } from './jurisdiction.service';\r\nimport { UserManagementService } from './user-management.service';\r\nimport { TopicCardService } from './topic-card.service';\r\nimport { LogoIconMgmtService } from './logo-icon-mgmt.service';\r\nimport { UserMemoryService } from './user-memory.service';\r\n \r\n@NgModule({})\r\nexport class RDCServiceModule {\r\n static forRoot(): ModuleWithProviders {\r\n return {\r\n ngModule: RDCServiceModule,\r\n providers: [UserService,\r\n FolderManagementService,\r\n AppConfigService,\r\n LabelcardMgmtService,\r\n PublicuserService,\r\n DocumentManagementService,\r\n LogoManagementService,\r\n LogoIconMgmtService,\r\n EngagementManagementService,\r\n HomeService,\r\n LanguageService,\r\n CommonService,\r\n ApplicationConfigurationService,\r\n LinkMasterService,\r\n MessageService,\r\n DocverHistoryService,\r\n MasterListService,\r\n CustomMessageService,\r\n JurisdictionService,\r\n UserManagementService,\r\n TopicCardService,\r\n UserMemoryService,\r\n { provide: LocationStrategy, useClass: HashLocationStrategy },\r\n ]\r\n };\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs/Rx';\r\nimport { environment } from '../../environments/environment';\r\nimport { map } from 'rxjs/operators';\r\nconst httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n\r\n\r\n@Injectable()\r\nexport class TopicCardService {\r\n //baseUrl: String = 'http://localhost:60664/';\r\n\r\n constructor(private _http: HttpClient) {\r\n }\r\n\r\n\r\n getCircularReplacer = () => {\r\n const seen = new WeakSet();\r\n return (key, value) => {\r\n if (typeof value === \"object\" && value !== null) {\r\n if (seen.has(value)) {\r\n return;\r\n }\r\n seen.add(value);\r\n }\r\n return value;\r\n };\r\n };\r\n\r\n\r\n uploadNewTopicCard(documentDetails): any {\r\n return this._http.post(environment.APIEndpoint + 'api/TopicCard/uploadNewTopicCard', documentDetails)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n \r\n\r\n getTopicCardVersionHistoryList(docid:number): any {\r\n return this._http.get(environment.APIEndpoint +'api/TopicCard/getTopicCardVersionHistoryList?docId=' + docid)\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n \r\n getTopicCardType(): any {\r\n\r\n return this._http.get(environment.APIEndpoint + 'api/TopicCard/GetTopicCardType')\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n getTopicCardCategory(): any {\r\n return this._http.get(environment.APIEndpoint + 'api/TopicCard/getTopicCardCategory')\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n getDocStatus(): any {\r\n\r\n return this._http.get(environment.APIEndpoint + 'api/ManageDoc/GetDocumentStatus')\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n deleteDocVersion(documentDetails): any {\r\n\r\n return this._http.post(environment.APIEndpoint + 'api/TopicCard/DeleteTopicCardVersion', documentDetails)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n unapproveDocument(documentDetails): any {\r\n\r\n return this._http.post(environment.APIEndpoint + 'api/TopicCard/UnauthorizeTopicCard', documentDetails)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n getEngagementTopicCard(documentDetails): any {\r\n\r\n return this._http.post(environment.APIEndpoint + 'api/TopicCard/GetEngagementTopicCard', documentDetails)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n } \r\n\r\n getEngagementTopicCardsBasedOnLanguage(documentDetails): any {\r\n return this._http.post(environment.APIEndpoint + 'api/TopicCard/getEngagementTopicCardsBasedOnLanguage', documentDetails)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n } \r\n\r\n getEngagementTopicCards(documentDetails): Promise{\r\n return this._http.post(environment.APIEndpoint + 'api/TopicCard/GetEngagementTopicCard',documentDetails)\r\n .toPromise()\r\n .then(res => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n getEngagementTopicCardswithImages(documentDetails,languageId): Promise{\r\n return this._http.post(environment.APIEndpoint + 'api/TopicCard/GetEngagementTopicCardsWithImages?languageId='+languageId,documentDetails)\r\n .toPromise()\r\n .then(res => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n getTopicCards(engagementId:number): Promise{\r\n return this._http.get(environment.APIEndpoint + 'api/TopicCard/GetTopicCards?engagementId='+engagementId)\r\n .toPromise()\r\n .then(res => res)\r\n .catch(this._errorHandler);\r\n }\r\n getDocVersionByDocId(documentDetails): any {\r\n\r\n return this._http.post(environment.APIEndpoint + 'api/TopicCard/GetTopicCardVersionByTopicCardId', documentDetails)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n saveTopicCardVersion(documentDetails): any {\r\n\r\n return this._http.post(environment.APIEndpoint + 'api/TopicCard/SaveTopicCardVersion', documentDetails)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n } \r\n\r\n approveDocumentVersion(documentDetails): any {\r\n\r\n return this._http.post(environment.APIEndpoint + 'api/TopicCard/ApproveTopicCardVersion', documentDetails)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n } \r\n\r\n sendTopicCardApprovalMail(documentDetails): any {\r\n\r\n return this._http.post(environment.APIEndpoint + 'api/TopicCard/SendTopicCardApprovalMail', documentDetails)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n } \r\n\r\n getApproverList(engagementId): any {\r\n\r\n return this._http.get(environment.APIEndpoint + 'api/ManageDoc/GetApproverList?engagementId='+engagementId)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n } \r\n\r\n getTopicCardApprovalList(showAll : boolean): any {\r\n\r\n return this._http.get(environment.APIEndpoint + 'api/TopicCard/GetTopicCardListForApproval?showAll=' + showAll)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n } \r\n\r\n _errorHandler(error: Response) {\r\n return Observable.throw(error || 'Server Error');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs/Rx';\r\nimport { environment } from '../../environments/environment';\r\nimport { SendMailModel } from 'src/app/entities/contact-us';\r\nimport {MsalService} from '@azure/msal-angular';\r\nimport { AuthenticationResult, SilentRequest } from '@azure/msal-browser';\r\nconst httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n\r\n\r\n@Injectable()\r\nexport class UserManagementService {\r\n\r\n constructor(private _http: HttpClient,private msal: MsalService) { }\r\n\r\n\r\n getAllUsers(): any {\r\n return this._http.get(environment.APIEndpoint + 'api/User/GetUserList')\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n getAllUserLogs(): any {\r\n return this._http.get(environment.APIEndpoint + 'api/User/GetUserLogsList')\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n /*downloadImage(logo) {\r\n \r\n return Observable.create((observer: any) => {\r\n\r\n let xhr = new XMLHttpRequest();\r\n xhr.open('GET', environment.APIEndpoint + 'api/User/DownloadImage?imageLink=' + logo);\r\n xhr.setRequestHeader('Content-type', 'application/json');\r\n xhr.responseType = 'blob';\r\n const urls=environment.APIEndpoint + 'api/User/DownloadImage?imageLink=' + logo;\r\n var silentRequest: SilentRequest ={\r\n account: this.msal.instance.getActiveAccount(),\r\n scopes: [\"user.read\"]\r\n };\r\n //const resource = this.msal.GetResourceForEndpoint(urls);\r\n this.msal.acquireTokenSilent(silentRequest).subscribe((tokenResponse: AuthenticationResult) => {\r\n xhr.setRequestHeader('Authorization', 'Bearer ' + tokenResponse.idToken);\r\n xhr.setRequestHeader('Url',urls);\r\n let email= sessionStorage.getItem('userName');\r\n xhr.setRequestHeader('UserEmail',email);\r\n xhr.onreadystatechange = function () { \r\n\r\n if (xhr.readyState === 4) {\r\n if (xhr.status === 200) {\r\n var contentType = 'arraybuffer';\r\n var blob = new Blob([xhr.response], { type: contentType });\r\n observer.next(blob);\r\n observer.complete();\r\n } else {\r\n\r\n observer.error(xhr.response);\r\n }\r\n }\r\n }\r\n xhr.send();\r\n });\r\n \r\n \r\n });\r\n }*/\r\n\r\n\r\n downloadImage(logo : any): Observable {\r\n return this._http.get(environment.APIEndpoint + 'api/User/DownloadImage?imageLink=' + logo, {\r\n responseType: 'blob'\r\n })\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n /* downloadImage(logo) {\r\n \r\n return Observable.create((observer: any) => {\r\n\r\n let xhr = new XMLHttpRequest();\r\n xhr.open('GET', environment.APIEndpoint + 'api/User/DownloadImage?imageLink=' + logo);\r\n xhr.setRequestHeader('Content-type', 'application/json');\r\n xhr.responseType = 'blob';\r\n const urls=environment.APIEndpoint + 'api/User/DownloadImage?imageLink=' + logo;\r\n const resource = this.adal.GetResourceForEndpoint(urls);\r\n const token=this.adal.acquireToken(resource).subscribe((token: string) => {\r\n xhr.setRequestHeader('Authorization', 'Bearer ' + token);\r\n xhr.onreadystatechange = function () { \r\n\r\n if (xhr.readyState === 4) {\r\n if (xhr.status === 200) {\r\n var contentType = 'arraybuffer';\r\n var blob = new Blob([xhr.response], { type: contentType });\r\n observer.next(blob);\r\n observer.complete();\r\n } else {\r\n\r\n observer.error(xhr.response);\r\n }\r\n }\r\n }\r\n xhr.send();\r\n });\r\n \r\n \r\n });\r\n }*/\r\n\r\n\r\n uploadProfilePhoto(imageDetails): any {\r\n\r\n return this._http.post(environment.APIEndpoint + 'api/User/UploadProfilePhoto', imageDetails)\r\n .map((res: Response) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n addUser(userEmail):any {\r\n return this._http.post(environment.APIEndpoint + 'api/User/AddNewUser', userEmail)\r\n .map((res: Response) => res);\r\n}\r\n\r\ndeleteUser(userId: number):any {\r\n return this._http.delete(environment.APIEndpoint + 'api/User/DeleteUser?userId=' + userId)\r\n .map((res: Response) => res);\r\n}\r\n\r\n\r\n addEyRoleList(mappedRoles: any) {\r\n // const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n return this._http.post(environment.APIEndpoint + 'api/MasterList/AddEyRoleList', mappedRoles)\r\n .map((res: Response) => res);\r\n }\r\n\r\n _errorHandler(error: Response) {\r\n return Observable.throwError(error || 'Server Error');\r\n }\r\n\r\n deleteMasterList(roleMappingId:any): any {\r\n return this._http.delete(environment.APIEndpoint + 'api/MasterList/DeleteMasterList?mappingId='+roleMappingId)\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n getContactUsList(pageNumber: number) : any {\r\n return this._http.get(environment.APIEndpoint + 'api/User/GetContactUsList?pageNumber='+pageNumber)\r\n .map((res) => res)\r\n .catch(this._errorHandler);\r\n }\r\n\r\n sendEmailToContact(sendMailModel: SendMailModel): any{\r\n return this._http.post(environment.APIEndpoint + 'api/User/SendEmailToContact', sendMailModel)\r\n .map((res: Response) => res); \r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserMemoryService {\r\n\r\n public token: string = '';\r\n public role: string = \"\";\r\n public isAdmin: boolean = false;\r\n public rank: number = 0;\r\n public isExternalUser = true;\r\n constructor() { }\r\n}\r\n","import { environment } from '../../environments/environment';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError, map, retry } from 'rxjs/operators';\r\n\r\n\r\n@Injectable()\r\nexport class UserService {\r\n constructor(private http: HttpClient) {\r\n }\r\n\r\n GetUserList(): Observable {\r\n return this.http.get(environment.APIEndpoint + 'api/User/GetUserList'\r\n // , { headers: this.getHeader.getHttpHeaders() }\r\n )\r\n .pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n getUserListByRoleId(roleId): Observable {\r\n return this.http.get(environment.APIEndpoint + 'api/User/GetUserListByRoleId?roleId=' + roleId).pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n checkPublicUser(): Observable {\r\n return this.http.get(environment.APIEndpoint + 'api/Publicuser/UpdateInactiveUsers').pipe(map((data) => data),\r\n catchError(this.handleError));\r\n }\r\n\r\n\r\n getUserRole(email): Observable {\r\n return this.http.get(environment.APIEndpoint + \"api/User/GetAdminPermissions?email=\" + email)\r\n .pipe(\r\n retry(1),\r\n catchError(this.handleError)\r\n )\r\n }\r\n\r\n addSessionInfo(sessionReq: any) { \r\n return this.http.post(environment.APIEndpoint + 'api/UserSessionManagement/addSessionInfo', sessionReq)\r\n .map((res: Response) => res);\r\n }\r\n \r\n getSessionInfo(SessionId: any): Observable { \r\n\r\n return this.http.get(environment.APIEndpoint + 'api/UserSessionManagement/getSessionInfo?SessionId='+ SessionId)\r\n .map((res: Response) => res);\r\n }\r\n \r\n updateSessionInfo(sessionReq: any) { \r\n \r\n return this.http.post(environment.APIEndpoint + 'api/UserSessionManagement/updateSessionInfo', sessionReq)\r\n .map((res: Response) => res); \r\n }\r\n \r\n endSessionInfo(sessionReq:any) { \r\n \r\n return this.http.post(environment.APIEndpoint + 'api/UserSessionManagement/endSessionInfo', sessionReq)\r\n .map((res: Response) => res);\r\n \r\n }\r\n\r\n endOtherActiveSession(sessionReq:any) { \r\n \r\n return this.http.post(environment.APIEndpoint + 'api/UserSessionManagement/endOtherActiveSession', sessionReq)\r\n .map((res: Response) => res);\r\n \r\n }\r\n\r\n load() {\r\n return this.http.get('../../assets/config.json')\r\n }\r\n\r\n logout():Observable{\r\n return this.http.get(\"https://login.microsoftonline.com/common/oauth2/v2.0/logout?post_logout_redirect_uri=http%3A%2F%2Flocalhost%3A4200\").pipe(\r\n retry(1),\r\n catchError(this.handleError)\r\n )\r\n }\r\n\r\n\r\n private handleError(error: Response) {\r\n console.error(error);\r\n return throwError(error || 'Server error');\r\n }\r\n}\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\nimport { Component, OnInit, HostListener, Inject } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n trigger,\r\n state,\r\n transition,\r\n style,\r\n animate\r\n} from '@angular/animations';\r\n\r\nexport function getBaseUrl() {\r\n return document.getElementsByTagName('base')[0].href;\r\n}\r\n\r\nconst providers = [\r\n { provide: 'BASE_URL', useFactory: getBaseUrl, deps: [] }\r\n];\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic(providers).bootstrapModule(AppModule)\r\n .catch(err => console.log(err));\r\n\r\n @Component({\r\n selector: \"app-sticky\",\r\n templateUrl: \"./index.html\",\r\n // styleUrls: [\"./styles.css\"],\r\n animations: [\r\n trigger(\"fade\", [\r\n state(\"void\", style({ opacity: 0 })),\r\n transition(\":enter\", [animate(300)]),\r\n transition(\":leave\", [animate(500)])\r\n ])\r\n ]\r\n })\r\n export class HomeComponent implements OnInit {\r\n constructor(@Inject(DOCUMENT) document) {}\r\n \r\n ngOnInit() {}\r\n \r\n // @HostListener(\"window:scroll\", [\"$event\"])\r\n // onWindowScroll(e) {\r\n // if (window.pageYOffset > 250) {\r\n // let element = document.getElementById(\"sticky-navbar\");\r\n // element.classList.add(\"sticky\");\r\n // } else {\r\n // let element = document.getElementById(\"sticky-navbar\");\r\n // element.classList.remove(\"sticky\");\r\n // }\r\n // }\r\n } \r\n declare module \"@angular/core\" {\r\n interface ModuleWithProviders {\r\n ngModule: Type;\r\n providers?: Provider[];\r\n }\r\n}\r\ndeclare global{\r\n interface Navigator {\r\n msSaveOrOpenBlob?: (blob: any, defaultName?: string) => boolean\r\n }\r\n}"],"names":[],"sourceRoot":"webpack:///"}