{"version":3,"file":"main.js","mappings":"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AEyY,MAAO,qBAAsBzY,MAAO,MACtC,CAAEyY,MAAO,WAAYzY,MAAO,MAC5B,CAAEyY,MAAO,iBAAkBzY,MAAO,MAClC,CAAEyY,MAAO,oBAAqBzY,MAAO,MACrC,CAAEyY,MAAO,kBAAmBzY,MAAO,OAG7B,IAAK4yD,EAGX,MAHD,OAAYA,QAAS,KACnBA,mDACAA,+CAFUA,EAAZ,IAAYA,GAGX,GAEWt4D,EAgFX,MAhFD,OAAYA,QAAK,KACfA,iCACAA,mCACAA,iDACAA,qCACAA,mCACAA,mCACAA,8BACAA,2BACAA,2BACAA,iCACAA,iEACAA,sEACAA,+DACAA,oEACAA,8CACAA,wCACAA,oDACAA,mCACAA,gDACAA,wCACAA,0CACAA,2BACAA,6CACAA,mCACAA,8BACAA,kCACAA,uCACAA,iCACAA,iCACAA,kCACAA,kDACAA,2CACAA,yCACAA,iCACAA,2CACAA,6CACAA,uCACAA,sCACAA,+BACAA,sDACAA,mCACAA,2CACAA,wDACAA,0DACAA,oDACAA,2CACAA,+CACAA,0DACAA,0DACAA,sCACAA,sDACAA,qCACAA,+CACAA,iCACAA,6CACAA,qDACAA,uCACAA,0CACAA,6CACAA,qCACAA,qCACAA,mCACAA,kCACAA,yCACAA,gDACAA,iCACAA,qCACAA,+CACAA,mDACDA,uCACAA,iDACAA,uCACAA,yCACCA,gEACAA,+CACAA,oCACAA,sCACAA,qCACAA,kCA/EUA,EAAZ,IAAYA,GAgFX,GACWu4D,EAGX,MAHD,OAAYA,QAAO,KACjBA,+CACAA,2BAFUA,EAAZ,IAAYA,GAGX,GACWC,EAQX,MARD,OAAYA,QAAuB,KACjCA,YACAA,oBACAA,sBACAA,wBACAA,0BACAA,kBANUA,EAAZ,IAAYA,GAQX,GACWC,GAEX,OAFWA,QAAc,KACxBA,gFADUA,IAEX,GAEW1hD,GA0BX,MA1BD,OAAYA,UAAY,KACtBA,oEACAA,4DACAA,wDACAA,qEACAA,uCACAA,4FACAA,uCACAA,wLACAA,2MACAA,uJACAA,0FACAA,yEACAA,kDACAA,8DACAA,6LACAA,8FACAA,2JACAA,wLACAA,4DACAA,qGACAA,6EACAA,qFACAA,yFACAA,6CACAA,2CAzBUA,GAAZ,IAAYA,GA0BX,GAEW2hD,EAEX,OAFWA,MAAc,KACxBA,sDADUA,GAEX,GAEWC,GAcX,MAdD,OAAYA,UAAkB,KAC5BA,qBACAA,uCACAA,uCACAA,qCACAA,mCACAA,yCACAA,wBACAA,oBACAA,uCACAA,2CACAA,qBACAA,gCACAA,8BAbUA,GAAZ,IAAYA,GAcX,GACWC,GAoBX,MApBD,OAAYA,UAAiB,KAC3BA,2BACAA,2CACAA,oDACAA,0CACAA,iDACAA,qCACAA,0CACAA,+CACAA,iCACAA,kCACAA,mDACAA,wDACAA,mEACAA,mDACAA,kCACAA,wCACAA,mCACAA,8CACAA,yCAnBUA,GAAZ,IAAYA,GAoBX,GAEWC,GA0DX,MA1DD,OAAYA,UAAiB,KAC3BA,qBACAA,yCACAA,4BACAA,uCACAA,mCACAA,mCACAA,6CACAA,iDACAA,oDACAA,8CACAA,+CACAA,gDACAA,+CACAA,gDACAA,qDACAA,qDACAA,yCACAA,2CACAA,+CACAA,sCACAA,wCACAA,qDACAA,4CACAA,wCACAA,0DACAA,kEACAA,oDACAA,4DACAA,0EACAA,2DACAA,mEACAA,iEACAA,6DACAA,0EACAA,4CACAA,4CACAA,sDACAA,2DACAA,mEACAA,qDACAA,sDACAA,iDACAA,6CACAA,2DACAA,4CACAA,4DACAA,qDACAA,4DACAA,8DACAA,gFACAA,0DACAA,+BACAA,sCACAA,gCACAA,uDACAA,yDACAA,kEAzDUA,GAAZ,IAAYA,GA0DX,GAEW1iC,GAIX,MAJD,OAAYA,UAAY,KACtBA,iBACAA,sBACAA,6CAHUA,GAAZ,IAAYA,GAIX,GAEW5B,GAmDX,MAnDD,OAAYA,UAAS,KACnBA,cACAA,4BACAA,oCACAA,cACAA,kBACAA,gCACAA,cACAA,YACAA,wBACAA,4BACAA,4BACAA,8BACAA,wBACAA,YACAA,oBACAA,oCACAA,wCACAA,UACAA,kBACAA,0BACAA,sBACAA,8BACAA,sCACAA,gCACAA,8BACAA,0BACAA,oBACAA,4BACAA,kCACAA,oCACAA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","names":["SortOrder","PagerService","getPager","totalItems","currentPage","pageSize","totalPages","Math","ceil","startPage","endPage","startEndObj","this","getCurrentPage","startIndex","endIndex","min","pages","_","I","factory","KngDataTableModule","KngDataTableService","imports","CommonModule","MatCheckboxModule","FormsModule","NgxPaginationModule","Icons","DataTableConst","i0","ctx_r11","oxw","ctx_r16","ctx_r24","ctx_r41","ctx_r43","ctx_r49","ctx_r61","KngDataTableComponent","constructor","service","pagerService","headers","checkboxRequired","checkboxState","paginationRequired","tableData","headerCheckboxdisabled","mobileSelectAllDisable","EventEmitter","state","length","icon","iconPath","altText","messageBold","message","handleItemCheckBoxChange","item","itemIndex","pager","checkboxClickedEvent","emit","handleHeaderCheckboxChange","isChecked","headerCheckboxClickedEvent","setPage","e","pageLoad","setTimeout","pageNumber","sortColumn","sortField","index","sortOrder","activeIndex","headerSortable","sortGridData","selectors","array","sort","a","b","sortedA","sortedB","sortGridDataAsc","sortGridDataDesc","toLowerCase","ErrorMessageSubHeading","ErrorMessageHeading","LibIcons","DnDDirectiveDirective","onDragOver","evt","stopPropagation","preventDefault","fileOver","onDragLeave","onDrop","files","C","f","dataTransfer","_a","K","_b","fileDropped","ctx","ctx_r12","_r8","MAs","ctx_r15","ctx_r18","ctx_r20","KngUploadFileComponent","Subscription","imagePath","value","updateState","ngOnInit","initSubscriptions","ngOnDestroy","destroySubscriptions","stateChangeSubs","stateChanged","subscribe","next","subscriptions","add","unsubscribe","onFileDropped","filedropped","fileUpdateHandle","Array","from","fileBrowseHandler","event","target","isError","fileValidationCheck","onReplaceFileBtnClick","isSuccessClient","isSuccessServer","replaceFileEventEmitter","onTryAgainBtnClick","tryAgainEventEmitter","static","isLoading","dragDropSection","or","uploadButtons","chooseFile","replaceFile","tryAgain","errorHeading","errorSubHeading","successMessage","dragDropImage","errorImage","successImage","fileUploadLoader","fileUploadProgressText","SharedService","formatAddress","address","formatCompleteAddress","addressLine1","addressLine2","city","zipCode","filter","Boolean","join","SharedModuleLib","KngLoaderService","BehaviorSubject","KngLoaderFactory","state$","asObservable","KngLoaderModule","KngUploadFileModule","KngUploadFileService","KngUploadFileFactory","ctx_r5","browserRefresh","AppComponent","environmentRef","loggerService","router","localStorageService","titleService","activatedRoute","apiService","sharedUtilService","shell","ShellFactory","AppFactory","zendeskChatBot","canceledNavigationResolution","events","NavigationStart","isCancelButtonError","navigated","url","includes","showPageLoader","clearStorage","navigate","currentUrl","Z","Y","location","_platformLocation","_c","href","searchParams","URLSearchParams","_t","tt","Q","_d","_e","_f","search","St","ft","W","_g","_h","_j","origin","zt","Et","ut","_k","_l","_m","pathname","skipAuthUrls","originValue","get","localStorage","setItem","at","Yt","Jt","_o","_p","_q","emailValue","decodedEmail","decodeURIComponent","atob","checkNewimpersonation","setRedirectedUser","pt","et","Ct","_r","_s","isLandingPage","loadWalkMeScript","loadZendeskChat","log","env","toUpperCase","pipe","NavigationEnd","getChild","data","setTitle","title","window","scrollTo","getUnreadMessages","firstChild","email","redirectedUser","getImpersonateUser","parsedData","JSON","parse","setCustomerToDashboard","isCustomerSupportSession$","removeImpersonateUser","setUserName","renderExternalScript","id","src","appWalkmeUrl","type","requiredWalkMeScriptDetails","zendeskChatbotUrl","requiredZendeskScriptDetails","externalScript","script","document","createElement","async","head","appendChild","getZendeskToken","response","zentoken","zE","callback","token","error","openChatBot","unreadMessageCount","err","that","count","unreadEventInitiationTry","updateCount","expEnvironmentRef","tncUpdated","privacyPolicyUpdated","userId","firstName","lastName","adminEmailId","contactGRID","contactID","phoneNumber","roles","customerIds","locations","topLevelGrid","ApiServiceModule","ApiService","HttpClientModule","LoggerServiceModule","LocalStorageServiceModule","AuthModule","AuthService","sharedApiService","sharedService","appConstantsRef","AuthFactory","redirectBasedOnUserRegistrationStatus","responseObject","T","getUserRegistrationStatus","registrationStatus","isPendingBusinessAccountApproval","routingFunction","getRoutingFunction","handleUserBasedOnStatus","redirectOnError","isTmhCustomerSupportRole","getCustomerToDashboard","handleCustomerNavigation","isTmhCorporateAdminUser","handleTmhCorporateAdminUser","isCustomerSupportUser","handleCustomerSupportUser","isNonTmhCorporateAdmin","handleNonTmhCorporateAdminUser","undefined","handleRoutingFunction","setItems","isTmhCorporateAdmin","getLoggedInTmhCorporateAdminDetails","getLoggedInTmhCustomerSupportDetails","getLoggedInUserDetails","isLoggedInUserPresent","handlePendingAndNotApprovedState","hasOwnProperty","orgAdminPending","errorMessage","r","statusCode","u","messages","x","category","tags","triggerErrorService","navigateMethod","ApplicationPath","forkJoin","getLoggedInUserObs","handleRequest","bind","getLoggedInUserLocations","res","user","setLoggedInUser","striginifyJSON","setLoggedInUserLocation","getLoggedInUser","getLoggedInUserLocation","handleCommonError","ErrorMessage","mapTmhCorporateAdminUserSession","getTmhCorporateAdminDetails","mapTmhCustomerSupportUserSession","getTmhCustomerSupportDetails","observable","map","result","catchError","of","status","isInSession","expAppConstants","AuthComponent","q","CommonErrorComponent","analyticsService","isValidUser","trackByEvent","page","name","Promise","all","getItems","then","values","image","CommonErrorService","CommonErrorFactory","CommonErrorModule","InviteUserModule","InviteUsersService","KngButtonModule","ReactiveFormsModule","ModalModule","ToastrModule","timeOut","positionClass","toastClass","enableHtml","closeButton","tapToDismiss","preventDuplicates","ctx_r4","ctx_r6","ctx_r7","InviteUsersComponent","uploadLimitText","uploadLimit","downloadButtonState","sendInviteButtonState","linkButtonState","submitButtonState","cancelButtonState","disabled","getInviteUsersLabelState","isBulkUsers","castFileUploadStatus","fileUploadStatus","resetUploadForm","fileUploadComponent","responseMessage","messageTitle","messageDescription","link","downloadButton","downloadLocationTemplate","getInviteUserLocationDownload","linkDownloadTemplate","linkXLXSDownload","submitLocationTemplate","getInviteUserSubmitButton","fileToUpload","uploadFileServerValidation","checkServerValidationUploadFile","fileNameArr","split","extension","pop","setIsDirty","fileName","trim","exec","uploadFileState","emptyUploadFilesArray","checkOtherFileValidation","fileSize","round","size","file","reader","FileReader","onload","Uint8Array","workbook","XLSX","jsonData","Sheets","SheetNames","header","readAsArrayBuffer","v","l","goBackToUserManagement","InviteUserConfig","successCount","failedCount","toaster","pageHeading","bulkInvite","description","downloadReport","download","sendInvite","cancel","externalLink","label","submit","uploadFile","onLoadIcon","errorIcon","successIcon","dragDropLabel","progressLabel","orLabel","success","inviteSuccess","bulkMessage","InviteUsersFactory","getFileUploadStatus","getButtonState","ButtonSize","ButtonStyle","ButtonPosition","isBulkUser","getInviteUsersAemLabels","nullValueHandler","mapUploadFilePopup","N","R","userUrl","getFileStatus","newUser","ele","getElementById","setAttribute","getInviteUserSubmit","isUploadSuccess","removeAttribute","handleUploadLocationError","complete","U","bulkUser","downloadExcel","FileName","downloadTemplateError","submitResponse","totalCount","findCountDetails","warning","i","isValid","processedData","errors","locationID","Object","portalApprovedCustomerID","lastLogin","stringify","Date","toLocaleString","portalApproveUserDate","tcDate","privacyDate","downloadTableData","InvoiceStatusLabel","InvoiceStatusHeader","EquipmentQuoteHeader","StatusPayload","MyQuotesComponent","utilService","getMyQuotesLabelState","downloadMyQuotesTableData","downloadMyQuotesData","subscriptionDesktop","subscriptionMobile","sectionTop","heading","sectionMiddle","placeholder","invalidSearchText","filterIcon","filterText","clearAll","selectedFilters","filteringPanelSection","filterIconAltText","filterLabel","selectedFilterLabel","filterState","buildSectionMiddleFilter","searchController","formControl","FormControl","style","position","downloadPdfPayload","documentURL","invoiceStatusUpdated","gridData","quoteId","creationDate","model","quantity","billingAddress","dealerContact","dealership","orderID","accordionIconExpanded","accordionIconCollapsed","noResult","noResultFoundText","noResultFoundSubText","noResultFoundTableIcon","sectionBottom","sectionPromoBanner","displaySubscription","subscriptionBanner","subscriptionsDesktop","subscriptionsMobile","SharedFactoryDataService","selectedStatus","buildCount","amount","dealerName","country","postalCode","TruncatePipe","transform","maxLength","slice","pure","ctx_r10","ctx_r14","ctx_r17","EquipmentQuotesComponent","filterService","dateService","myQuotesUtilService","key","FilterOptions","DateRange","isInvalidLength","searchData","initializePayload","hidden","sortingEvent","getHeaderObjectState","myQuotesPayload","checkTableSort","initializeStructure","ngAfterViewInit","myQuotesFilterComponent","getBillingAddress","subscribeSearchText","originalDataLoaded","myQuotesTableStateObject","MyQuotesFactory","checkCardState","cardState","getQuotesTable","applySearch","searchText$","trimLeft","searched","getOriginalData","resetPage","pageChanged","j","paginated","openFilter","closeFilter","updateBillingAddressSection","billingAddressFilterControls","appliedAddressIds","getCountOfFilterPanel","filterData","sections","setDateFilterCloseFilter","selectedFilterObj","filterStateChanged","ctaList","filterHasAtLeastOneSelectedControl","filterApplied","btnIndex","findIndex","cta","buttonClicked","updateAddressPayload","updateDatePayload","controls","getTableDataAndUpdateState","trackAnalyticsOnApplyFilter","clearAllFilterPanel","setDateFilterLabelCheck","setDefaultToFromDate","salesProspectAddress","initializeDatePayload","forEach","control","ControlType","options","opt","checked","setDefaultCustomDate","defaultFilter","addSelectedFilter","fromToDate","dateCalculation","fromDate","toDate","endDate","startDate","getUnixTimeStamp","section","removeFilter","removeFilterForDateRange","resetFilterPanel","removeFilterForBillingAddress","obj","mapSelectedFilter","resetBillingAddressFilter","addressSelected","removeFromSelectedFilter","loc","splice","removeSearchtextfromInputAfterClear","resetFilterPanelForBillingAddress","ctl","setValue","removeAllFilter","showHideFromToDate","debounceTime","searchTerm","replace","distinctUntilChanged","switchMap","val","searchValue","defaultPage","checkSortEvent","resetPageProperties","applyStatusFilterToCount","selectedStatusFilter","getMyQuotesStatus","ot","push","billingAddressSearchSubscription","billingAddressSearchControl","valueChanges","findAssignedBillingAddress","updateFilterPanelOptions","subscriptions$","selectedBillingAddress","updatedBillingAddress","gt","processSelectedAddress","downloadQuotePdf","redirectRoute","getdownloadQuotePdf","KngFilterPanelComponent","$event","TruncateModule","ctx_r8","ctx_r13","QuotePromoBannersComponent","utilservice","getquotePromoBanner","openLink","subscription","isCustomerSupportSession","ByParts","navigateWithCustomerSupport","open","route","path","component","MyQuotesRoutingModule","RouterModule","MyQuotesModule","MyQuotesService","KngFilterPanelModule","MatChipsModule","MatIconModule","MatFormFieldModule","KngCardListModule","KngStatusSelectorModule","AccordionModule","t","getDefaultPayload","updateCardState","getMyQuotesAemLabels","getMyQuotesMiddleLabelState","resSectionMiddle","myQuotesTableLabels","noQuotesAvailble","mapMyQuotesFilterLabels","sectionMiddleFilter","filterForm","formLabel","dateRange","noResultsFoundText","noResultsFoundLabel","inputPlaceholderText","searchPlaceholder","clearAllButtonLabel","applyButtonLabel","mapDateRangeValues","selectedValue","currentDate","getFromDate","myQuotesCardListObject","loading","list","skip","toISOString","substring","getEquipmentQuotesTableData","payload","getLoggedInUseLocationsIdsObs","tap","locationIds","concatMap","getEquipmentQuoteTableData","mapEquipmentQuotesData","records","trackAnalytics","pageInfo","getHeader","handleError","quoteApiError","messageSubText","trackErrorByEvent","headerList","isSort","view","innerWidth","ScreenView","cardListOrangeIcon","getCardListOrangeIcon","cardListGrayIcon","getCardListGreyIcon","cardListAccordionIcon","getCardListAccordionIcon","isFilterApplied","checkForFilterApplied","getGridData","getMyQuotesStatusCount","checkForActiveIndex","parseInt","quoteDataOrderObj","assign","deleteObjectProperties","getGridDataMap","collapsed","gridObj","entries","getLabel","valueState","labelValue","cssClass","checkCategory","FieldName","getDealerShipDetail","checkStatus","invoiceStatusCount","inProcessCount","acceptedCount","orderedCount","expiredCount","readyForReviewCount","getMyQuotesStatusAmount","limit","downloadMyQuotesTableList","date","toString","tranformDate","trackSuccessByEvent","fileType","handleDownloadError","errormessage","text","downloadPdfpayload","pdfFileName","downloadQuotePDF","downloadPDF","handlePDFDownloadError","MyQuotesUtilService","sharedFilterService","aemBaseUrl","DefaultValue","field","order","eventData","keyword","nullAddressHandler","MyQuotesStatusHeader","getBillingAddressFilterControls","billingAddresses","getBillingAddressValues","element","assignedBillingAddress","initialiseFilterControl","dealerDetails","every","formattedAddress","dealerShipDetails","nullCheckValue","selectedCat","FieldType","getFieldType","numberOfResults","totalStatusLength","keys","hasValidSearchValue","hasBillingAddress","hasMismatchedStatusLength","hasDateRangeFilterApplied","checkForDateRageFilterApplied","defaultStartDate","defaultEndDate","billingAddressListState","searchKey","findSearchedAddress","sectionControls","quoteContentBlock","handleSubscriptions","bannerFlag","assignSubscriptionItems","bannerImage","MyFleetHeadrNames","ChangeRequestHeader","FleetStatusHeader","FleetStatusLabel","FleetStatusPayload","EquipmentLabels","ctx_r21","NotificationComponent","Notifications","tabs","portalUserID","getUserId","notificationType","getNotificationLabels","getNotificationData","notificationList","pushAnalyticsEvent","updateCurrentPageChanged","isChanged","startIndexBuffer","endIndexBuffer","updateCurrentPageState","activateTab","tab","previousTab","selectedIndex","tabName","notificationOrignalDataOffer","notificationOrignalDataAction","notificationOrignalDataUpdate","notificationOrignalData","flag","firstTab","notificationCheck","unreadCountData","checkUnreadNotifications","getNotificationId","deleteNotification","markAllRead","unreadNotifications","updateNotification","pageNameCheck","notificationData","startIndexBufferFunction","countUpdate","readStatusUpdate","unreadNotification","toLocaleLowerCase","unreadValue","unreadCount","updatedUnreadNotificationState","countOffer","countAction","countAll","ctx_r9","NotificationContentComponent","notificationService","navigation","notificationLink","notificationId","routes","NotificationRoutingModule","NotificationModule","NotificationService","AnalyticsModule","i4","offer","action","update","notifications","messageID","customerGRID","bulkReadInput","getPageInfo","isNewIcon","notificationIcon","notificationTitle","notificationDescription","closeIcon","dateCreated","systemNotificationID","getNotificationContentByType","markAsRead","noNotification","iconPathValue","altTextValue","NotificationFactory","updateCurrentPage","updateCurrentPage$","getNotificationsAemLabels","notification","userData","responseObjectData","notificationCount","Intl","DateTimeFormat","LanguageCode","month","day","format","filterArray","bulkInput","el","arrayInputs","unreadCountForfirstPage","checkIfNotificationsPresent","checkForUnreadNotifications","updateNotificationData","getUnreadNotificationsCount","deletePayload","removeNotification","getUpdatedNotificationData","markAllread","updatePayload","readNotification","messageId","updateNotificationListAfterDelete","updateNotificationList","itm","indexOf","tabIndex","OrderHeaderName","EquipmentOrderTablelHeaderName","KngShellFactory","bannerIcon","bannerMessage","tokenData","alertBanner","closeHidden","buttons","tooltip","content","updatedTerms","agreeButtonLabel","disagreeButtonLabel","infoIcon","checkboxText","alertNote","updatedPrivacy","Map","minimumAccess","congratulationsImage","mainText","subText","modal","username","warningNote","readOnly","endSession","endSessionNote","inativityMessage","inactivityConfirmation","ModalButtonId","ShellService","routerservice","aemApiService","logger","Subject","company","adminLocationList","requestServiceUrl","stateObservable$","updateActionFooterPresent","isPresent","footer","changeRoute","catch","updateBannerState","banner","getAdminLocationList","adminId","bannerState","getLoggedInUserAdminLocationIdObs","adminLocID","adminLocations","accountName","localeCompare","locationGRID","switchAccount","switchAccountPayload","clearLocalStorageExceptAlertBanner","btoa","baseUrl","urlPaths","removeCached","removeItem","getHeaderNavState","hideServiceHistory","checkHeaderNav","getHeaderNavValues","globalHeader","handleGlobalHeader","mobileHeader","items","handleMobileHeader","portalHeader","hideMenu","shellStateHeaderNavMapperObject","elem","CssClass","menu","checkIfMinimumAccessProvided","isMyInSights","notificationPath","isBusinessAccountHeader","getuserNameObs","updatedUserNameState","customerSupportData","dropdownArrow","notClickable","getFooterData","footercontent","logoImagePath","ribbonImage","footermenu","getAEMdetailsTerms","termsAndCondition","termsAndConditionAEMlabels","TermsAndConditionPrivacyPolicyInfoBannerText","submitTnC","unixTimestamp","floor","getTime","getLoggedInUserCompanyObs","companyId","userProfile","parseJSON","getAEMdetailsPolicy","policyState","policyAEMlabels","submitPolicy","getGoogleTranslatePanel","renderer","selectRootElement","performFirstTimeTranslation","selection","googleTranslateMenuLink","click","iframeElList","querySelectorAll","foundLink","find","links","contentWindow","thisLink","lodashGet","performSubsequetTranslation","panelAfterFirstTranslation","buttonRestore","buttonTranslate","getBusinessAccountSuccessLabels","getBusinessAccountSuccessPopupLabels","responseObj","businessAccountRegistrationSuccess","closeButtonLabel","getHeaderAlertBanner","storedBanner","getItem","isArray","updateStateAlertBanner","alertBannerList","endDisplay","display","updateHeaderAlertBanner","hasTokenInMessage","tokenDataList","updateServiceCampaignBannerDataValue","resetToDefaultAccount","selectedLocation","getDefaultGrid","Observable","observer","getCustomerAemLabels","customerLabel","labels","mapCustomerlabels","getCustomerSupportLabels","setCustomerAemLabels","emptyStringHandler","endSessionModalState","endSessionCta","continueSessionCta","inactiveSessionModalState","inActivityAlert","continueSession","inActivityConfirmation","inActivityMessage","endImpersonationSession","getServiceCount","firstValueFrom","getServiceHistoryCount","totalRecords","Control","inputIcon","locationHeirarchyObject","isParentCompany","companyName","locationId","locationName","divisionFilterList","divisionName","groups","groupName","groupsList","divisionsList","messages$","InjectionToken","providedIn","AppConstants","LocationAccessGuard","errorService","canActivate","resolve","setImageBasedOnStatusCode","updateGetAdminEmail","getMessage","PendingChangesGuard","canDeactivate","PermissionGuard","authenticationService","subscriber","group","getRoutePermissions","actions","hasAccess","setRoutePermissions","lodashNoop","isAccountManagerRole","getRoleId","accountManagerRoleId","roleId","contactMessage","individualUserRoleId","individualUserPermissionMessage","isIE","navigator","userAgent","b2cPolicies","environment","msalConfig","auth","clientId","authority","authorities","signUpSignIn","knownAuthorities","authorityDomain","redirectUri","postLogoutRedirectUri","navigateToLoginRequestUrl","cache","cacheLocation","BrowserCacheLocation","storeAuthStateInCookie","system","loggerOptions","loggerCallback","logLevel","LogLevel","piiLoggingEnabled","protectedResources","endpoint","scopes","loginRequest","configRef","pB2cPolicies","pMsalConfig","pProtectedResources","pLoginRequest","AuthConfig","envRef","production","azureMapsApiKey","endpoints","scope","buyPartsUrl","manageFinancingUrl","analytics","openContactFormUrl","requestServiceEquipmentDetails","warrantyPromoBannerUrl","buyPartsPromoBannerUrl","shopDeliveryAddressUrl","Environment","headingSub","stay","leave","ConfirmLeavePageService","toastr","ConfirmLeavePageFactory","setModalSelectionObservable","confirmLeave","modalConfirmation$","getModalSelectionObservable","getConfirmLeavePageAemData","getConfirmLeavePageLabels","leaveConfirmModalState","SafeHtmlPipeModule","SafeHtmlPipe","sanitized","bypassSecurityTrustHtml","ScriptInjectorModule","ScriptInjectorService","AnalyticsService","windowInjectionToken","defaultView","inject","DOCUMENT","Error","windowRef","scriptInjectorService","initDataLayer","dl","AnalyticsFactory","pushData","injectAdobeLaunchScript","load","scripts","launch","pageBottom","getEmailAddress","site","viewport","language","documentElement","getAttribute","trackRegistrationByEvent","lodashHasIn","adobeDataLayerName","warn","AemApiService","httpClient","headerendpoints","aembusinessaccountheader","aemheaders","getEquipmentLables","getPendingApprovalLabels","jsonPaths","getLandingPageLabels","storage","KngCardListFactory","requestObservable","validUser","lastValueFrom","getRolesPermissionsData","post","getRoles","saveCustomRole","role","addRoles","updateCustomRole","patch","getRemoveRoleState","removeRole","delete","downloadInvoicePdf","invoiceNumber","getAverageAgeCardData","getCountFinancedCardData","getNumberOfUnitsData","applySearchOrFilter","getCachedItem","cachedItem","applySearchOrFilterFromCachedData","applySearchOrFilterOnLoad","cached","updateCache","itemClone","responseData","fleetData","isTelematicsStatus","locationLabelUpdate","locationLabel","checkForFleetData","filterDropdown","filterType","myFleetApplySearchOrFilterPredicate","myFleetApplySorting","myFleetDownloadData","setCached","hasFleetEquipment","some","DropDownOption","hasFleetData$","selectedFilter","filteredresponse","cardStateMapperObject","updatedPayload","initialSortpayload","assignedLocation","equipmentType","responseUploadData","changeRequest","updateMyFleetLocationData","updateLocationLabelInStorage","parsedLocations","checkForSortFieldNames","sortedArray","assignedLocationFieldCheck","checkEqpTypeFilter","checkAssignedLocFilter","checkDateFilter","checkTelematicsStatusFilter","checkForSearch2","checkForSearchWithEqp","checkForSearch3","checkForSearchWithLoc","checkForSearch4","checkForSearchWithDate","checkForSearch5","checkForSearchWithTelematics","checkForSearchWithEqpLoc","checkForSearch6","checkForSearchWithEqpDate","checkForSearch7","checkForSearchWithEqpTel","checkForSearch8","checkForSearchWithEqpLocDate","checkForSearch9","checkForSearchWithEqpDateTel","checkForSearch10","checkForSearchWithEqpLocTel","checkForSearch11","checkForSearchWithLocDate","checkForSearch12","checkForSearchWithLocDateTel","checkForSearch13","checkForSearchWithLocTel","checkForSearch14","checkForSearchWithDateTel","checkForSearch15","checkForSearchWithEqpLocDateTel","checkAllSearchParameters","getpayloadEquipment","getdataEquipment","getpayloadTelematics","getdataTelematics","getpayloadAssignedLocation","getdataAssignedLocation","getpayloadStartDate","getpayloadEndDate","getdataDateFirstUse","payloadArrayEq","datArrayEq","payloadArrayLoc","datArrayLoc","payloadArrayTel","datArrayTel","payloadStartDate","payloadEndDate","datArray","downloadSearchOrFilter","responseType","getEquipmentTypeFilterValues","locationIDs","getRepairTypeFilterValues","equipmentID","getMyFleetAemLabels","myfleetlabels","myfleet","getRemoveEquipmentAemLabels","removeEquipment","getEquipmentData","equipmentVIN","getEquipmentImage","getEquipmentFinanceData","getEquipmentServiceHistoryData","getUserManagementRolesStatus","getAddUserHeaders","getUserDetailsHeaders","getUserDetails","isApproveUserScreen","params","HttpParams","set","saveUserData","submitRegistrationReviewOrCancel","saveGeneralUser","saveIndividualUser","getRegistrationFormLabels","getPendingUserRequests","userMangementListTable","getOrderManagementHeaders","getEquipmentOrderDetailHeaders","getDashboardHeaders","getMyInsightsTabAemLabels","getDashboardDetails","getAccountSettingsHeaders","getCompanyDetails","updatePrimaryLocation","getCompanyLocation","getAddNewLocationHeaders","userMangementListStatusChange","getLatestUserStatus","getUserManagementAEMHeaders","getCurrentLocation","getEquipmentOrderDetails","getAddMoveEquipmentLabel","getAddBulkEquipmentLabel","equipmentMoveTruck","equipmentNotFound","equipmentMyfleetAddTruck","downloadUserManagement","downloadEquipmentOrderList","downloadServiceManagementServiceHistoryTableList","downloadManualsInfo","rejectUsersAccess","approveUsersAccess","getRepairCodeWidgetData","widgetPayload","serviceManagement","getRepairCodeData","getSpendBreakdownWidgetData","getSpendBreakdownData","getPaymentStatusWidgetData","getPaymentStatusData","getNumberOfUnitsWidgetData","dashboard","getFinancedEquipmentData","getAverageAgeEquipment","getAverageAgeEquipmentData","getNewEquipmentOrders","getServiceManagementAemLabel","updateUserLocation","getServiceOrderDetailHeader","getOrderManagementTableData","getServiceManagementServiceHistoryData","getAssignedUsersData","saveUserDetailsData","saveUserDetails","validateRemoveCompanyLocation","getServiceOrderDetailData","getPrefilledUserData","permissions","HttpHeaders","getServiceManagementEquipmentType","getRemoveLocationModalsAEMLabels","removeCompanyLocation","body","updateLocationLabel","getLocationInformation","getAssignedUsersList","saveUserProfileDetails","addCompanyLocation","updateUnassignUsersData","getCorporateConvert","getChangeRequestList","updateAssignUsersData","getUnreadNotificationCount","addNewUser","getChangeRequestAemLabels","getBusinessAccountRequestAemLabel","getServerValidationUploadFile","form","FormData","append","getBusinessAccountRequestData","rejectBusinessAccount","getEditAdminCompanyDetailsAemLabels","getAdditionalLocations","getBAUploadLocation","submitAdditionalLocation","getBusinessRegistrationFlowSubmitModalLabels","saveBusinessUser","getConnectedDeviceData","downloadLocationList","tempUserID","updateAdminCompanyDetails","getBusinessRegistrationLocationDownload","getBusinessRegistrationUploadListModalLabels","getAddBulkEquipmentDownload","getAddBulkEquipmentSubmit","getmyInsightsAEMLabels","getVehicleUtilization","getLatestKeyHours","approveBusinessAdminAccount","getImpactDetectionWidgetData","getCoordinatesOfAssignedLoc","getEquipTelematicsVehicleData","getLastTenErrorCodesDataList","getDealerByZipCode","getMyInsightsPromoBanners","getMyInsightsListData","downloadMyInsightsTableList","getShippingLocationList","getServiceManagementFilterList","getEquipmentOrderFilterList","domainListData","updateDomainDetails","assignDomainDetails","getContactUsLabels","startImpersonationSession","contactUsTicket","getValidImpersonateUserDetails","getLocationLabels","getUnassignedLocations","setLocationAccessManagement","verifyDomain","getContactForm","getEquipmentOptions","verifyEquipment","submitUser","moveBulkEquipment","removeBulkEquipment","numberOfUnits","averageAgeOfEquipment","countFinancedData","myFleetList","fleetListAEMHeaders","myfleetSearch","aemFooterData","equipmentData","equipmentImage","myfleetDownload","equipmentTypes","equipmentFinanceData","repairTypeData","saveUser","registrationFormLabels","startPageLabels","pendingUserRequest","UserMangementTableData","userManagementListStatus","equipmentLabels","moveTruck","addMyFleetEquipmentTruck","userManagementAEMHeaders","dashboardDetails","notificationsList","downloadUserList","rejectUsers","approveUsers","loggedUser","loggedUserLocations","OrderManagementTableData","serviceHistoryTable","getApproveScreenUserDetails","getPrefilledUserDetails","userManagementRolesStatus","orderDetails","serviceManagementEquipmentTypes","serviceOrderData","assignedUsersData","companyDetails","locationDetails","companyAssignedUsers","changeRequestList","aemTnCdata","aemPolicyData","unassignUsersData","assignUsersData","corporateConvert","unreadNotificationsCount","getAddNewUser","verifyInformation","businessAccountRequestData","uploadNewLocationFile","rejectBaUser","submitAdditionalLocations","connectedDeviceData","vehicleUtilization","latestKeyHours","uploadNewLocationFileReg","updateAdminDetails","tmhCorporateAdminDetails","businessRegistrationLocationDownload","inviteUserLocationDownload","inviteUserSubmit","tmhCustomerSupportDetails","approveBusinessAdmin","landingPageLabels","equipTelematicsVehicleData","gtsAddressConversionToCoordinates","weeklyImpactDetectionWidget","lastTenErrorCodesDataList","equipmentQuotesTableEILData","billingAddressList","headerAlertBanner","myQuotesListDownload","myQuotesPdfDownload","quotepromoBanner","myinsightsPromobanner","myinsightsTable","myinsightsTableListDownload","shippingLocationList","serviceManagementFilterList","equipmentOrderFilterList","triggerEmailToTmhCustomerSupport","startImpersonation","validateImpersonation","customerSupportLabel","unassignedLocations","accessLocationManagement","locationLabels","serviceHistoryCount","contactUsLabel","zendeskToken","contactForm","bulkUserInvite","bulkUserTemplate","equipmentOptions","addBulkEquipment","reportTruckIssue","submituser","addBulkEquipmentDownload","addBulkEquipmentUpload","userDetailsAemLabels","orderManagementHeaders","dashboardHeaders","myQuotesAemLabels","myInsightsTabAemLabels","inviteUsersAemLabels","equipmentOrderDetailHeaders","accountSettingsHeaders","removeEquipmentAemLabels","addNewLocationHeaders","addMoveEquipmentLabel","addBulkEquipmentLabel","currentLocation","confirmLeavePageLabels","addEquipmentDuplicateVINNumber","addEquipmentExistingVINNumber","addEquipmentSuccess","serviceOrderDetails","removeLocationModalsAEMLabels","addUserAemLabels","serviceMangementAemLabels","changeRequestTableAemlabels","notificationsPageLabel","pendingApprovalPageLabel","businessAccountRequestAemLabel","editAdminCompanyDetailsAemLabels","businessAccountSuccessRegistrationLabels","businessRegistrationFlowSubmitModalLabels","businessRegistrationDownloadModalLabels","myInsightsAEMLabels","AuthenticationService","msalService","msalBroadcastService","shellService","inProgress$","InteractionStatus","takeUntil","pDestroying","setLoginDisplay","msalSubject$","msg","eventType","EventType","instance","setActiveAccount","account","checkAndSetActiveAccount","getClaims","getActiveAccount","idTokenClaims","isLoggedIn","getAllAccounts","getFetchedPermission","getKeyFromPermissionGroup","permissionsMap","fetchedPermissions$","login","loginRedirect","logout","attempts","shouldLoadPage$","register","request","accounts","claims","dataSource","claim","given_name","family_name","oid","jobTitle","defaultPermissions","extractPermissionsFromRoute","lodashCloneDep","DateConverterService","datepipe","getUnitTimeInAmPm","hour","minute","hour12","getDateWithUnitTimeInAmPm","formatUnixDate","days","setDate","getDate","getMonth","dateRes","getFullYear","calculateDate","commonDate","calculateDateOnQuaterly","filterComponent","showToFromInput","provide","DEFAULT_CONFIG","useValue","driver","Driver","LocalStorageService","ngf","isTokenCreated","getCached","hasData","expired","cacheTime","setLoggedInCorporateFlag","setTmhCorporateAdminDetails","setTmhCustomerSupportDetails","setLanguage","getLanguage","setImpersonateUser","getRedirectedUser","removeRedirectedUser","setRegistrationStatus","getRegistrationStatus","getUserName","userName","clear","sessionStorage","setAssignedUserRedirect","getAssignedUserRedirect","removeAssignedUserRedirect","setAssignedLocationFromRedirect","getAssignedLocationFromRedirect","removeAssignedLocationFromRedirect","getCompanyLocationList","setCompanyLocationList","removeCompanyLocationList","LoggerService","LoggerModule","level","NgxLoggerLevel","checkToDisplayLogs","trace","traceMsg","traceObj","debug","debugMsg","debugObj","info","infoMsg","infoObj","logMsg","logObj","warnMsg","warnObj","errorMsg","errorObj","zone","scriptElement","y","buildScriptElement","responsePromise","addEventListenersToScriptElement","addScriptElementToDocument","reject","addEventListener","runOutsideAngular","appendedScriptElement","TextAreaAutoSizeDirective","elementRef","ngModelChange","resizeTextArea","windowResize","nativeElement","scrollHeight","ngAfterViewChecked","ngAfterContentChecked","setStyle","TextAreaAutoSizeDirectiveModule","SharedApiService","tnc","policyFlag","flagObservable$","flagValue$","flagValue","isUnreadNotificationObservable$","isUnreadNotification$","isUnreadNotification","updateLoggedInUserDetails","mapUserSession","loggedInUser","userProfileFlag","mapUserLocations","updateUserSession","userDetails","isEmptyObject","mandatoryPermissionIds","customerServiceEmail","companyAdminRoleId","tmhCorporateAdminRoleId","tmhCustomerSupportRoleId","permissionRequired","canadaZipFormat","batteryStateOfChargeNullValue","removePermissionIdsforCustomRole","idValuePairs","CommonIcons","UserStatus","DateFormat","CountryCode","RemovalReasons","CancelEquipmentButtons","RemovalSubmissionButton","ConfirmRemovalButton","ConfirmLeavePageButtons","OrderStatus","ExpansionCondition","BulkEquipmentTabLabels","SuccessFailureBtn","countries","states","provinces","UserRoles","AltText","BusinessAccountCategory","SuccessMessage","WarningMessage","PermissionCategory","PermissionDefault","PermissionActions","OrderStatusHeader","ToolTipMessages","BreadCrumb","FleetListTabHeader","CompanyLocationsTableHeader","AssignedUserTableHeader","BulkEquipmentHeader","AddBulkEquipmentDownloadReportTemplate","AddBulkEquipmentNonToyotaDownloadReportTemplate","RemoveBulkEquipmentHeader","UseVerifiedOrEditAddress","PortalRole","MyFleetTableLabels","TermsAndPrivacy","RegistrationStatus","RegistrationRequestType","serviceCampaignClass","HeaderStateField","FormattingName","ChangeRequestType","UserType","MyFleetTelematicsStatus","MyFleetStatusHeader","EllipsisOptions","ApiResponseStatus","MyInsightsAccordionType","SubscriptionType","IsRequestSubmittedForReview","BooleanValues","IdleUserTimes","MaxDeviceWidth","InviteUserheader","InviteBulkUserheader","DashboardCardTooltip","VerifyEquipmentCodes","UserDetailsConstant","UserFilterConstants","className","alt","actionOpsList","hideSort","roleName","searchIcon","showMore","showLess","customDateFromLabel","customDateToLabel","showMoreText","showLessText","accordionCollapsedIcon","getAccordionCollapsedIcon","accordionExpandedIcon","getAccordionExpandedIcon","getSearchIcon","crossIcon","getSearchCrossIcon","getInputControlTypeInputOne","getInputControlTypeRadioOne","SharedFilterFactory","getKngFilterStateForEquipmentOrder","phone","isSelected","submenu","AprRejBtnType","getTableHeader","tooltipMessage","serviceCampaignAltText","moreIconAltText","activeFlag","rolesList","roleDescription","isStatusUpdatePending","statusUpdatePendingMessage","isStatusUpdateError","statusUpdateErrorState","buildImage","descriptionBold","descriptionCompanyAdmin","assignNewLocation","helpText","grid","locationid","unassignlocation","noLocationFoundTableLabel","noLocationFoundTableMsg","noLocationFoundTableIcon","filterDropdownState","filterOptions","selectedOption","isCollapsed","isShowMorePresent","showMoreShowLess","isDisabled","isShowMoreClicked","SharedFilterService","checkIfControlIsMarkedAsSelected","checkRes","sectionWithSelectedControl","selectedOptions","ctrl","removeFromSelectedOption","option","setCountOfFilterPanel","sec","to","checkForPreviousYears","findBillingServiceLocation","existingControls","searchFullAddress","filteredResult","findAssignedLocation","filterValue","selectedFilterList","J","updateAllCheckboxValues","getFilterControls","selectedLocations","getLocationValues","getShippingBillingLocationFilterControls","shippingLocations","selectedShippingLocation","getShippingLocationValues","assignedShippingLocation","zip","findEquipmentRepairType","equipmentControls","O","updateFilterSection","newOptions","oldOptions","setDateFilterIdCheck","valueId","addressString","getSelectedCheckbox","getCheckboxIds","getSelectedCheckboxByIds","setfilterCollapsedState","ControlName","SharedUtilService","routeToPortalFromOutside","isTmhCorporateAdmin$","isTmhCustomerSupportRole$","isEquipmentDetailsRedirectedFromMyInsights","isEquipmentDetailsRedirectedFromMyInsights$","currentPath","fieldName","fieldMap","has","getOrderStatus","orderStatusMap","myQuotesStatusMap","inboundUrlPathName","checkTheRegistrationStatusAndRoute","headerObjectState","tokens","hideModalBackdrop","classList","remove","backdrop","querySelector","orderNumberMapping","orderId","locationIdMapping","formatValue","valueType","characterFormat","formatZipCode","formattedZip","zipCodeLength","getDefaultErrorObject","getLastTenErrorObject","getStateOnRemoveReason","selectedReason","commentAdded","removeReasons","soldExportSelected","commentRequiredRemoveReasons","userResponse","checkAccountManager","getCustomerSupportRoutingFunction","getCorporateAdminRoutingFunction","getCustomerSupportRoleRoutingFunction","getStatusBasedRoutingFunction","isAccountManager","isAccountManagerCredential","statusValueToRedirectsMap","isTmhCorporateAdminRole","isCustomerSupportRole","checkLocalStorage","isAnyUserPresent","updateUserRoles","succeeded","updateIsMobileView","isLastLocation","identifiedUsers","userNameObservable$","userName$","truncate","input","charactersToTruncate","nullLocationHandler","nullDateHandler","myfleetDownloadNullValueHandler","notApplicableValueHandler","numericNullValueHandler","tokenArray","isLink","updateBoldText","validatorPredicate","validatePrimitiveValue","primitiveTypes","lodashForIn","itemIsPrimitiveType","typeName","hasOneValidPrimitiveType","isValidString","isValidNumber","Number","isNaN","capitalizeFirstLetter","capitalizeFirstLetterOfEachWord","str","createDownloadLink","blob","filename","objectUrl","URL","createObjectURL","revokeObjectURL","downloadTable","Blob","csvData","convertToCSVFile","objArray","tableHeader","companyLocationsHeader","convertToCSV","bulkEquipmentHeader","removeBulkEquipmentHeader","rest","addBulkEquipmentDownloadReportTemplate","addBulkEquipmentNonToyotaDownloadReportTemplate","assignedUserTableHeader","inviteBulkUserheader","inviteUserheader","row","concat","line","getMyFleetHeaderForDownload","tableValues","getMyFleetTableValues","getMyFleetTableDataString","TelematicsStatus","equipmentVin","modelID","assetNumber","make","dateOfFirstUse","telematicsStatus","fleetType","checkForFleetLabels","arrayValues","checkForNewFleetLabels","formatAddressWithPostalCode","address1","address2","stateCode","getAssignedLocationFormatted","assignedLocations","assignedLocationSearch","locationData","checkIfLocationExists","locationArray","getCustomerId","defaultGRID","getLocalstorageItems","loggedinUser","coperateConvertFlag","corporateAccountRequestFlag","getLocalstorageUserProfile","getUserEmail","getPhoneNumber","getPrivacyDate","getTcDate","requiredLength","requiredLen","alphaSpecialCharValidation","test","alphaSpclCharValidationError","nonNumericSpaceRestriction","characterValidationWithNumerics","invalidCharacterError","characterValidationWithoutNumerics","zipCodeLengthCheck","minLengthError","zipCodeCanadaValidCheck","canadaPostalCodeFormatError","noWhitespaceValidator","whitespace","updateMessage","replaceText","validatePhoneSequence","seq","letter","sequence","minLength","formatString","getRequestServicePath","currencyFormatter","currency","NumberFormat","maximumFractionDigits","concatenateLocation","concateLocation","precision","pow","toFixed","processCompanyId","adminLocationId","adminLocationID","processAdminLocationId","processAdminEmailId","loggedInLocations","getUserProfile","constructUserName","userObs","getUserObservable","processUserName","parsedProfile","loggedInLocationIds","process","getLoggedInUserLocationWithPrimaryGridObs","loggedInLocationPrimaryGrid","primaryGridId","primaryLocationGRID","processPrimaryGridId","loggedInPrimaryGrid","assignedLocationArr","locationNames","locationNamesArr","getBillingLocationValues","isLocation","initialiseServiceFilterControl","displayRepairLines","valueKeys","repairtypeArr","repaircodeArr","repairLine","repairType","repairCode","uniqueRepairtypeArr","Set","uniqueRepaircodeArr","setRepairtype","setRepaircode","dataKey","repairtypelabel","setRepairLine","setRepairLineMultiple","repaircodelabel","getadminEmail","checkRouteParams","querParams","getLoggedInUserRole","loggedInRoleName","processRoleName","getLoggedInUserRoleFromSession","processRole","getErrorState","checkForIndividualUserRole","roleList","indexOfIndividualRole","formatPhoneNumber","phoneNumberLength","handlePhoneInputCursor","cursorPosition","formattedNumberLength","inputEvent","isCursorAtFormattedValues","inputType","isSequentialInput","getRoleIdArrObs","roleIDArr","processRoleIDArr","processLoggedInUser","getLoggedInUserLocationsObservable","isEmptyAddress","isStateCityPresent","checkCountryCode","countryCode","toLocaleUpperCase","formatUserName","validateStringUnique","firstNum","uniq","unique","headerName","labelValues","getStateProvinceValues","getValidateRemoveLocResponse","removeLocResponse","validateRemoveLocResponse","validateRemoveLocResponse$","validateRemoveLocError","nullHandlerCheck","updatedVal","scrollToTopOfPage","scroll","top","left","behavior","portalUser","corporateAdmin","customerServiceMail","mail","apiBaseUrl","buildRoutes","AuthEndpointFactory","RolesEndpointFactory","ShellEndpointFactory","MyFleetEndpointFactory","ServiceManagementEndpointFactory","DashboardEndpointFactory","names","editProfile","read","DateConverteServiceModule","DatePipe","foo","locked","roleListLabel","permissionLabel","detailHeading","addRole","copyRole","saveChangesBtnText","unselectAllText","duplicateRoleNameErrorText","customRoleDefaultDescription","customRoleDefaultName","unSelectAllLabel","duplicateRoleErrorText","defaultRoleName","defaultRoleDescription","roleNameValidationError","toggleOffAltText","toggleOnAltText","toggleOffDisabledAltText","toggleOnDisabledAltText","deleteConfirmation","headingMain","manageLabel","users","ellipsesIcon","addRoleIcon","removeRoleIcon","userIcon","permissionLabels","sectionHeader","categoryGroup","permissionArr","permissionKey","permissionDescription","permissionShortDescription","permissionId","RolesPermissionsService","RolesPermissionsFactory","selectedRoleIndex","selectedRoleIndex$","roleToRemove","roleToBeRemoved","addRowActive","addRowActive$","copyRoleActive","copyRoleActive$","contentUpdated","contentUpdated$","currentUserRole","contentUpdatedObservable$","updatedContent","trackSaveRoleAnalyticsEvent","trackLeaveUnsavedChangesAnalyticsEvent","trackStayOnPageAnalyticsEvent","initAnalyticsData","updateSelectedRoleIndex","updateRoleToBeRemoved","updateAddRowActiveStatus","updateCopyRoleActiveStatus","updateExistingRoleNameList","roleNameList","roleDetailsLoader","rolesData","selectCurrentRole","aemPageLabels","permission","arr","addButtonState","saveButtonState","filterPermissionsForMyInsights","permissionsList","isViewMyInsightsMain","selectedRoleId","addCustomRole","newRole","copyCustomRole","roleIndex","copiedRole","roleToAdd","isInvalidText","actionPerformed","updateMandatoryPermissions","M","isSaveSucess$","V","roleAdded","indexOfRoleToAdd","roleToUpdate","p","indexOfRoleToBeRemoved","roleRemoved","removeRoleModalState","removeModalState","userCount","manageUserText","updateShell","getPermissions","RolesPermissionsComponent","leavePageService","footerService","isDirty","isDirty$","saveChangesEvent","editPermissions","ctx_r19","RolesPermissionsListComponent","roleService","screenWidth","isActiveRole","usersAssignedToRoleToBeRemoved","countOfUserstoRemove","roleClick","isNameTooLong","longWordIndex","word","removeRoleState","removeModalEvent","modalComponent","closePopup","removeRoleModalClosed","highlightDefaultRoleName","defaultUserRole","RegExp","match","redirectToUserManagement","ModalComponent","ctx_r22","ctx_r25","ctx_r28","RolesPermissionsDetailsComponent","rolesService","selectedRole","roleNames","ngDoCheck","disableSave","updated","textAreaAutoSize","setPermissonStatus","updatePermissonStatus","unSelectAll","indexOfEl","onChangingDescription","isAllPermissionFalse","permissionArrLength","roleNameValidation","textData","isDuplicateName","indexOfMatch","isPermissionConfigured","checkSelectedRole","saveRole","textArea","height","RolesPermissionsModule","KngFooterService","KngToasterModule","KngFooterModule","i2","mockLandingPageLabels","bannerImageDesktopView","bannerImageMobileView","bulletPoints","registerButton","iconsDeskTopView","iconsMobileView","fixed","copyright","labelUrl","MainEntryService","metaService","MainEntryFactory","getLandingPageAemLabels","setSectionTopLabels","setSectionMiddleLabels","setSectionBottomLabels","addTag","footerMenuObj","countryLanguage","countryLanguageOptions","MainEntryComponent","onResize","loginRegisterEvent","navigateToShop","PublicClientApplication","interactionType","InteractionType","protectedResourceMap","AuthenticationServiceModule","MsalService","MsalGuard","MsalBroadcastService","MSAL_INSTANCE","useFactory","AuthenticationServiceFactory","MSAL_GUARD_CONFIG","HTTP_INTERCEPTORS","useClass","MsalInterceptor","multi","MSAL_INTERCEPTOR_CONFIG","MsalModule","MainEntryModule","SharedModule","registrationPageData","logo","logoutLabel","stepLabel","pageDescription","profileInfo","stepNumber","emailAddress","jobTitleAltText","requestedRole","requestedRoleAltText","address2OptionalLabel","stateAltText","companyNotFoundErrorModalDescription","companyNotFoundErrorModalHeader","termsConditions","terms","agreedButtonLabel","privacy","privacypolicy","accountType","individualAccount","description1","description2","businessAccount","additionalLocation","locationPageDescription","heading1","headingOr","heading2","primaryLocationHeading","selectLocationTableHeader","selectAll","uploadSuccessText","uploadSuccessSubtext","submitButton","companyError","messageMain","messageSub","actionMessage","customerServiceName","contactDealer","domainInfo","subHeading","labelPrefix","labelSuffix","tempFlag","tempIsPrefilled","crmPrefill","addressDetails","profileInformation","verifyInformationButton","modifyDetailsButton","continueButton","termsAgreeButton","policyAgreeButton","termsModal","policyModal","disagreeButton","contactDealerButton","registrationPage","dealerInfo","vertexAPIValidationLabels","editAddressLabel","useVerifiedLabel","mapVertexAddressFailedLabels","errorText","invalidCharacterWithNumericErrorMessage","requiredErrorMessage","requiredDropdownErrorMessage","minLengthZipCodeError","phoneLength","phoneSameNumber","phoneSequenceNumber","additionalLocationList","primaryLocationInfo","locationList","pendingLocationDetails","originalFileName","updatedFileName","additionalLocationGridHeaderDesktop","additionalLocationGrid","additionalLocationError","ribbonClearButton","additionalLocationSubmitButton","proceed","uploadFileSection","businessRegistrationUploadListLabel","upload","close","errorState","selectedGrids","selectedLocationList","selectionMethod","claimDomain","RegistrationUtilService","getSelectedLocations","getLocationsByGrids","isBusinessAccountRegistration","requestType","isPrimaryLocationAddressPresent","displayCountry","countryToDisplay","displayState","isValidCountry","isPrimaryLocationAvailable","showContactDealer","focus","mapAdditionalLocationList","X","st","dt","mt","xt","bt","Mt","ht","kt","formatLocationList","trackAnalyticsForRegistrationError","trackAnalyticsEvent","mapAddress","getUploadFileLabel","handleDownloadCommonError","submitLocationPayload","additionalLocations","selectedLocationGrids","submitPayload","RegistrationFactory","RegistrationService","fb","registrationUtilService","eventCallback","isSavingIndividualUser","isIndividualUser","profileInformationForm","Validators","job","companyDetailsForm","c","markAsDirty","pageLoadHandler","validUserSuccess","prefillDetailsSuccess","getUserData","preFilledCompanyDetails","statesOrProvinces$","parsedVal","lodashHas","lodashSet","extension_CompanyName","emails","checkForCompanyDetailsChange","addressSuggestion","companyInfoNotFound","vertexFailedWithNoSuggestedAddress","successVerifyScenario","showModifyButton","isModifyButtonClicked","isTCSection","isAccountTypeSection","vertexApiValidation","checkForCompanyDetailsMandatoryFields","isPostalCodeUpdated","checkForPostalCodeUpdate","payloadPostalCode","preFilledPostalCode","useVerifiedAddress","disable","emitEvent","onlySelf","userType","displayTCSectionWithSubmitButton","isContinueButton","isSubmitRegistrationButton","handleVerifyInfoError","enable","verifiedAddress","verifiedLocation","formattedPostalCode","patchValue","reset","addressState","addLabelsToForm","mapRegistrationPageCompanyDetails","mapRegistrationPageCompanyError","mapRegistrationPageProfileInfo","mapRegistrationPageTermsAndConditions","mapRegistrationPagePrivacyPolicy","mapRegistrationPageAccountType","mapRegistrationPageAdditionalLocation","mapDomainAemLabels","mapAdditionalAemLabels","At","Dt","Ut","Rt","Nt","infoBanner","Xt","Wt","Gt","$t","_u","_v","_w","_x","ie","ne","ee","te","_y","_z","_0","_1","be","xe","oe","_2","_3","_4","Me","ye","Ce","_5","_6","_7","dn","cn","ln","_8","_9","_10","un","gn","pn","_11","_12","_13","hn","_n","mn","_14","_15","_16","vn","fn","_17","_18","bn","xn","_19","_20","Cn","_21","Mn","yn","_22","_23","kn","On","Pn","_24","_25","_26","wn","Sn","_27","_28","Ln","Tn","_29","_30","Dn","An","In","_31","_32","_33","Rn","Un","En","Fn","_34","_35","_36","_37","ti","Xn","Wn","an","_38","_39","_40","_41","Zn","Nn","Ke","_42","_43","_44","Kn","qn","Bn","_45","_46","_47","Je","ze","zn","_48","_49","_50","Ft","ni","ei","_51","_52","_53","ii","Aa","Qe","_54","_55","_56","ae","qt","_57","_58","Zo","No","_59","_60","RegistrationMappingFactory","canActivatePortal","redirectBasedOnRegistrationStatus","isRegistrationStatusPresent","isContinueSuccess","getAdditionalLocationList","checkForSelectAll","isPrimaryLocationPresent","trackAnalyticsOnListFailure","checkAll","trackAnalyticsDataOnSubmit","handleSuccessForBusinessAccount","handleSuccessForSaveBusinessUser","isStatusInProgress","businessRegistrationFlowSubmitModalState","resetFileStateModel","businessRegistrationUploadListModalState","verifyDomainClaimed","domainData","disableDomainClaim","RegistrationComponent","authService","renderer2","onBackButtonClick","notifyLanguageChange","translationValues","selectionId","isTermsandPrivacyAgreed","termsandPrivacyAgreed","displayContinueButton","onSubmitRegistration","trackAnalyticsOnSubmit","onContinue","trackAnalyticsOnContinue","ctx_r46","ctx_r53","ctx_r55","ctx_r56","ctx_r58","ctx_r60","ctx_r62","RegistrationProfileCompanyInformationComponent","registatrationUtilService","eventCallback$","errorResponse","noCompanyOrEmailDetailsInCRM","statesValue","verifyAddressModal","verifyAddressState","companyNotFoundErrorModal","getRoleDescription","showUserInfosNotFound","validateProfileInformation","invalid","dirty","touched","verifyInformationButtonClicked","validateCompanyDetails","validateZipCodeLength","validateCanadaZipCode","isCanadianPostalCode","inputFormatterCompanyInfo","controlName","phoneNumberHandler","inputElement","selectionStart","setSelectionRange","newValue","trimmedValue","accountNameMaxLengthMessage","updateCountrySelection","validateZipcode","postalCodeValue","proceedInputedAddress","proceedWithInputtedAddress","companyInfo","initialAddressInput","verifyInfopayload","getRequiredErrorMessage","isDropdown","onAddressOptionChange","cancelModalWithFormEnable","isCompanySectionDisabled","isProfileSectionDisabled","handleModifyDetailsButtonClick","proceedWithAddressOrCancel","closeModalOnCancelandProceedActions","closeSubmitReviewModal","verifyAddressModalClosed","submitReviewModalClosed","RegistrationAccountTypeComponent","onOptionChange","showContinueButton","RegistrationTermsAndConditionsComponent","isCheckBox","onScrollTandC","isAtBottomTandC","scrollTop","clientHeight","termsAndConditions","checkBoxDisabledFlagTandC","onScrollPrivacy","isAtBottomPrivacy","privacyPolicy","checkBoxDisabledFlagPrivacy","checkBoxTermsData","checkBoxTerms","checkBoxPrivacyData","checkBoxPrivacy","agreeToConditionsOrPolicyAgreement","privacyPolicyLinkElement","checkBoxTickedFlagTandC","checkBoxTickedFlagPrivacy","checkIfBothTnCAndPrivacyPolicyAgreed","termsAndPolicyConditionAgreed","checkIfTermsAgreed","termsChecked","checkIfPrivacyAgreed","privacyChecked","handleCheckboxClick","openModal","closeModal","ctx_r29","ctx_r37","ctx_r38","ctx_r40","ctx_r50","ctx_r52","ctx_r54","RegistrationAdditionalLocationsComponent","userDomain","setAll","completed","allSelected","selectedGridData","countOfSelectedRequests","cancelSelection","partiallySelected","updateAllSelected","proceedWithoutLocation","isLocationSelected","openModalLocationNotSelected","confirmRemovalModalEvent","confirmSubmit","uploadListLocation","openUploadModal","closeModalUpload","confirmUserListModalEvent","RegistrationModule","MatSelectModule","MatRadioModule","IdleUserService","initListener","clearTimeout","timeoutId","countdownId","startIdleTimer","userInactive","startCountdown","countdownValue","setInterval","clearInterval","KngBannerService","KngBannerFactory","KngBannerComponent","hideBanner","bannerClickHandler","bannerClickEvent","headerBannerCloseHandler","bannerClosed","alertBannerClosed","handleBannerStyle","ctx_r26","ctx_r27","ctx_r34","ctx_r36","ctx_r47","ctx_r51","ctx_r57","ctx_r65","ShellComponent","idleUserService","breadcrumbs","buildBreadCrumb","root","customerState","confirmLeavePagestate","handleRoleChange","isIdle","isTmhSupportRole","checkIfNewBusinessAccount","checkForUnsavedChanges","detectNavigationChange","isSupportFlag","handleTmhCorporateAdminProfileDetails","handleProfileDetails","unread","updateNotificationIcon","adminLocationList$","updateLocationList","filteredHeader","observeDomChanges","adjustHeaderPosition","targetNode","MutationObserver","mutations","mutation","addedNodes","addedNode","nodeType","contains","shellBannerAdded","removedNodes","removedNode","observe","childList","subtree","config","checkIfAdjustPosition","headerAlert","sessionBanner","headerAlertHeight","portalHeaderHeight","sessionHeaderHeight","adjustMainContentMargin","mainContent","leavePageStateChangeSubs","leavePagestateChanged","unreadNotificationPath","handleBrowserRefresh","isCustomerSupport","routeConfig","breadcrumb","nextUrl","queryParams","newBreadcrumbs","bottomClickEventSubscription","headerComponent","clickEventBottom","subscription$","redirectToSection","isSignOutClicked","roleBasedSignOut","endCustomerSession","logOut","accountManagerSelectedCompany","NavigationCancel","NavigationError","routerLink","newUrl","modalPolicyState","modalTerms","confirmTcEvent","checkBoxDisabledFlag","confirmPolicyEvent","updateApplicationLanguage","confirmLeaveEvent","confirmLeavePage","closeModalPopup","showTooltip","showTermsAndConditionsTooltip","showPrivacyPolicyTooltip","closeCongratulatoryModal","headerBannerClosed","confirmEndSessionEvent","confirmEndSession","confirmInactiveSessionEvent","inactiveSession","KngBannerModule","ShellModule","ngModule","providers","KngShellModule","MatTooltipModule","ConfirmRegistrationService","refreshPageButton","pageLabels","pendingApproval","buildPageLabels","pendingBusinessAccountApproval","submittedRegistrationForReview","refreshButton","ConfirmRegistrationFactory","navigateForUserRegistrationStatus","getPageLabels","updatePageLabels","ConfirmRegistrationComponent","registrationService","confirmReg","analyticsData","refreshPage","AccessGuard","handleTmhCustomerSupportRouting","handleTmhCorporateAdminRouting","handleTmhNonCorporateAdminRouting","handlePendingAndNotApproved","isRouteMatchingPath","applicationPath","getCorporateAdminDetails","getCustomerSupportDetails","AuthGuard","setUserStatusInStorage","checkRegistrationStatus","LoginGuard","navigateByUrl","LandingPageGuard","mockedState","tableHeading","accept","companyGridLabel","uploadFileLabels","modelButtons","tableState","gridHeaders","isTooltipPresent","ribbon","cancelButton","isCheckbox","isRibbon","itemsSelected","businessAccountData","invalidCharacterWithoutNumericErrorMessage","pageButtons","save","AccountGrid","BusinessAccountRequestUtilService","truncateFileName","extensionIndex","lastIndexOf","fileNameWithoutExtension","checkIfValuePresent","value1","value2","value3","setDefaultValues","portalUserId","updateHeaderObj","isTooltip","formatZipcode","buildForm","getCtaList","showActionBtn","acceptLabel","rejectLabel","selectedRowIndex","locationLinkStatusChecked","getErrorResponse","mapRemainAccessGridData","valueListState","firstLineValue","locationListReviewed","thirdLineValue","primaryGridOnly","getHeaderLabel","updateAccessGridData","requestedOn","secondLineValue","buttonStatusChecked","mapUploadModelState","uploadModelState","resetUploadFileModelFlags","BusinessAccountRequestService","businessAccountUtilService","BusinessAccountRequestFactory","editAdminCompanyDetailsAemLabelsState","editAdminCompanyDetailsAemLabelsState$","updateEditAdminCompanyDetailsState","getBusinessAccountRequestPageAemLabel","mapBusinessAccountRequestLabel","getBusinessAccountRequestGridData","uploadModelSubheading","tempUserId","modifiedFileName","mapToTableState","rowValue","resources","valueObj","usersList","mapEditAdminCompanyDetailsLabels","editAdminCompanyDetailsModalState","patchEditDetailsForm","buildEditDetailsForm","countryValue","updateAdminDetailsErrorMessage","isAdminDetailsUpdated$","ctx_r35","ctx_r39","ctx_r44","ctx_r48","BusinessAccountRequestComponent","dialog","overlay","removeValidators","addValidators","updateValueAndValidity","trackAnalyticsOnLoad","dialogRef","KngDialogTooltipComponent","width","positionRelativeToElement","restoreFocus","scrollStrategy","scrollStrategies","noop","panelClass","afterClosed","approveRejectUser","selectedUserData","approveBusinessAdminPayload","selectedUserDataForApprove","openEditAdminCompanyDetailsModal","editAdminCompanyDetailsModalEvent","isEditAdminFormValid","getUpdateAdminCompanyDetailsPayload","validateEditForm","validateEditAdminCompanyDetailsForm","isFormFieldCheck","editAdminCompanyDetailsModal","countryChange","downloadLocationListData","uploadFileModalBtnEvent","openUploadSection","startCTA","startSession","modalNote","emailErrorMessage","isInvalid","CustomerSupportService","CustomerSupportFactory","getCustomerSupportState","mapCustomerSupportState","confirmSession","inboudUrl","validateImpersonationSession","CustomerSupportComponent","checkEmail","handleValidation","confirmModalEvent","confirmSessionState","CustomerPortalComponent","endCorpSession","activeTab","customerSupport","updateTabView","textLabel","BusinessAccountRequestModule","KngTableModule","KngDialogTooltipModule","CustomerSupportModule","KngTableLoaderModule","CustomerPortalModule","MatTabsModule","SubReasonLables","FormState","SubReasonLabel","sectionTopHeading","sectionTopData","isRequired","pageSubHeading","sectionBottomHeading","dropdownLabel","dropDownData","subMenu","isOpen","comments","toasterSuccess","toasterFailure","subreasonLabelData","partInformation","partsOrder","equipmentOrder","manualInformation","myToyotaStoreEquipmentOrder","toyotaDealerEquipmentOrder","crmRecordExists","customerType","ContactUsService","ContactUsFactory","updateContactForm","contactFormData$","contactFormData","getContactUsState","mapContactUsState","indx","getContactFormData","userEmail","requiredFields","ctx_r45","ContactUsComponent","mainEntryservice","USA","CAN","userForm","reason","reasonInput","mainState","numbersOnlyValidator","updateStateOptions","valid","deviceBasedDropDownData","metaData","checkNavValue","disableFormValue","isMobileView","navValue","respValue","filteredStates","toggleMenu","dropDown","toggleSubMenu","dropDownitem","clickFlag","selectedMainReason","selectedSubReason","setDeviceBasedFuntionality","displayReasonInput","subReasonLables","specificInputFunction","selectSubmenu","sub","onSubmit","formData","subject","requestorFirstName","requestorLastName","roleOfUser","adminLocationGRID","urlOfOrigin","onScroll","isScrollHappend","scrollPosition","getElementsByClassName","onCancel","back","subReason","extraInputCheck","ContactUsModule","BrowserModule","children","redirectTo","pathMatch","loadChildren","m","DashboardModule","module","MyfleetModule","g","MyInsightsModule","ServiceManagementModule","UserManagementModule","OrderManagementModule","AccountSettingsModule","LocationManagementModule","AppRoutingModule","anchorScrolling","TimeZoneInterceptor","intercept","timeZone","resolvedOptions","clone","setHeaders","ClientTimeZone","lang","isImpersonatedUser","impersonateuser","handle","serviceInjectionPromise","AppModule","bootstrap","MsalRedirectComponent","Title","APP_INITIALIZER","analyticsInitializerFactory","deps","OverlayModule","MatMenuModule","BrowserAnimationsModule","MatDialogModule","MatInputModule","MatDatepickerModule","MatNativeDateModule","NgCircleProgressModule","lazy","enableProdMode","__NgCli_bootstrap_1","bootstrapModule","console","ActionButtonsComponent","onEditClick","buttonAction","expActionButtons","onDeleteClick","onViewClick","move","directives","i1","encapsulation","KngGridComponent","totalArrayLength","displayedColumns","arrowIconGray","arrowIconOrange","isSortable","pagedItems","columnsToDisplay","matsortColumn","direction","onTableAction","MatSort","GridPagerService","n","KngGridModule","MatTableModule","MatPaginatorModule","MatSortModule","MatButtonModule","KngButtonComponent","pSvgIconName","build","svgIconName","handleClick","clicked","styles","mobilePanelIsOpen","DealerPage","HeaderNav","HeaderUrl","KngHeaderNavComponent","scroller","s","h","showSettingsMenu","subMenuSelected","subLocationMenuSelected","showLocationDropdown","showellipsis","unSelectNav","unSelectHeader","unSelectMobileHeader","currentRoute","userSelected","navTabIndex","skipNavText","KngHeaderNavFactory","buildState","locationListArray","accountNameEllipsis","buildheaderCustomerState","selectedAccordion","unlistener","listen","getHeaderData","onKeyPress","locationListDropdown","clickDropdownArrow","checkCurrentRoute","S","global","shouldShowAccountNameEllipsis","getInitials","words","charAt","headerTop","lt","G","toggleHelper","accordion","panel","toggle","userManagement","rolesPermissions","accountSetting","locationManagment","subOptionArray","updateSelectionState","isMainNavSelected","headerBottom","updateSubSelectionState","orderMangement","myQuotes","myInsights","portal","mobileHeaderMenu","mobile","getSubOptionAndHeaderArray","yt","setIsSelectedHeaderBottom","routUrl","isMyQuotesOrMyInsights","setIsSelectedSubOptionCategories","setIsSelectedForDashboard","setIsSelectedHeader","setIsSelectedSubOption","selectHeaderMenu","resetNavIndex","clickEventTop","closeMenu","displayMenu","closeLocationMenu","displayLocationMenu","selectNavMenu","tag","selectSubLocationOption","clickEventLocationTop","selectSubLocationOptionMobile","selectSubOption","subOption","selectMobileMenu","sidenav","logoClicked","skipNavigation","scrollToAnchor","headerlogos","logos","showEllipsis","customerSessionEvent","i3","pipes","KngHeaderNavModule","MatSidenavModule","getFooterMenu","getLabelUrl","footerObj","windowed","KngFooterFactory","KngContentComponent","KngContentFactory","hasFixedFooter","KngBreadcrumbService","breadcrumbData","breadcrumbIcon","removeBreadcrumbs","addBreadcrumbs","KngBreadcrumbModule","Icon","Fa","Ea","ButtonLabel","arrowLeft","editNewLocation","checkBoxTickedFlag","checBoxDisabledFlag","navBtnRequired","btnRequired","btnLabel","stateChangeHandler","modalState","stateChangedSubscription","closed","opened","emitCtaClickEvent","eventEmitted","ctaClickedOn","openTooltip","eleRef","closeTooTip","showMobileTooltip","tooltipClicked","checkBoxClickEvent","checkBoxClicked","navBtnclick","navBtnClicked","ModalService","KngContentModule","FooterLabel","Ua","isActionFooterPresent","isActionFooterPresent$","KngFooterComponent","footerLabel","footerdata","dropdown","languageCheck","ctaLinkClick","updateLanguageSelection","languageSelectionChanged","navigateTologo","navigateto","currentData","i1.KngFooterService","ElementRef","le","pi","Ra","DateRangeId","super","controlOptions$","none","isHidden","quoteKeys","radio","checkbox","KngFilterPanelFactory","toDateError","fromDateError","isFilterLoad","setToFromDate","checkboxClicked","checkboxClickEvent","custom","initializeFilterCount","closeFilterEvent","clearSearch","checkSelectedValue","indexctrl","indexsec","selectedFilterData","onKeyUp","checkDateValidator","toDateUnix","fromDateUnix","targetElement","showError","displayRecordsHandler","handleViewOnLoad","isSearchFieldPresent","handleDynamicDisplayOfShowMoreShowLess","btnClicked","noResultsFound","sectioncontrol","isErrorMessage","isAPIError","isShowMoreDisabled","isSectionWithSearchInput","expanded","updateCheckedStateForAccessibility","KngFilterPanelService","MatExpansionModule","i1.KngBannerService","KngShellService","KngShellComponent","buildCustomerState","emitPath","labelRedirection","emitLocation","locationSelected","notifyAboutLanguageSelection","i1.KngShellService","i2.KngHeaderNavComponent","chart","widgetType","summaryUnits","datasets","responsive","maintainAspectRatio","plugins","backgroundColor","borderColor","titleColor","bodyColor","cornerRadius","padding","borderWidth","displayColors","legend","elements","tension","scales","offset","suggestedMin","suggestedMax","color","drawBorder","ticks","stepSize","barThickness","hoverBackgroundColor","pointBackgroundColor","pointHoverBorderColor","getPlugin","hoverBorderColor","align","maxWidth","boxHeight","boxWidth","font","getTooltip","getScales","caretSize","Zt","Za","Bo","KeyEvent","Jn","sn","NullCheck","KngChartsComponent","KngChartsFactory","widgetLoader","imageText","ctaLinkClicked","BaseChartDirective","KngChartsService","KngLoaderComponent","i1.KngLoaderService","KngChartsModule","NgChartsModule","CountOfItemsCardTypes","qa","cardType","unit","KngCountOfItemCardComponent","KngCountOfItemCardFactory","KngCountOfItemCardModule","gi","Ka","InvoiceStatus","za","ChangeRequestIndicator","qo","EquipmentOrderStatus","Ja","MyQuoteStatus","me","oi","Qa","InvoiceCheck","tableDesktop","asc","toastMessage","KngCardListService","KngCardListComponent","openCard","dataList","showAccordionView","accordionIcon","indicatorFlag","connected","notConnected","View","invoiceCheck","positionOptions","userStatusIcon","orderStatus","crStatus","myQuoteStatus","headerValues","nonheaderValues","sortingtext","isCheckBoxRequired","ngOnChanges","changes","currentValue","previousValue","capitalize","capitalizeWord","openCollapseAccordion","listIndex","sortNonHeaderValue","capitalizeNonHeaderValue","tableMobile","totalImpact","batteryStateOfCharge","diffHeaderNonHeaderLabel","headerFlag","createHeaderLabelMap","dataValue","listEntry","accordionMobile","rearrangedValArr","removeActionBtn","getMobileHeaderCount","headerCount","indicator","updateHeaderStructure","deviceSupport","desktop","accordionDeskTop","checkSortOrder","sortColumnEvent","sortColumnByKey","enter","desc","pageIndex","pageClick","tableInput","scrollIntoView","block","onActionClick","actionEve","convertStringToNumber","convertStringToDate","useDisplayType","displayValue","displayType","separator","styleChange","updateStatus","statusItems","userListStatus","linkToRedirectionEquipment","fieldValue","fieldLabel","customerId","fieldValueCheck","linkToRedirection","nullValue","linktoDownloadPDF","linkToQuotesPDF","downloadInvoicePDF","downloadInvoice","isTelematicsResponse","getTelematicsTooltipValue","tooltipContent","columnIndex","rowIndex","updatePendingOrErrorState","record","removeTooltipSeparator","i1.KngCardListService","AccordionService","AccordionComponent","formBuilder","isValidZipCode","handleHeaderClick","accordionClicked","isAccordionClicked","clearSearchInput","searchForm","searchDataChange","applysearch","inputValue","updatedValue","newPosition","zipCodeValidator","pattern","isValidUSPostalCode","isValidCanadianPostalCode","isValidLength","isUSCode","strippedValue","i1.AccordionService","ngContentSelectors","KngToasterService","showToaster","KngStatusSelectorService","KngStatusSelectorComponent","selectedStatusValue","screenView","onSelectionChange","selectedData","selectionChanged","i1.KngStatusSelectorService","TableCategory","Va","Ko","KngTableService","approveUserLimitIndicatorText","KngTableComponent","tableCategory","aprRejBtnType","isLinkEnabled","selectedCount","rejectSingleUser","selectedRowDataArr","rejectMultipleUser","selectedRowEntry","approveSingleUser","approveMultipleUser","emitClickEvent","btnType","selectedActionData","singleReject","bulkReject","singleApprove","bulkApprove","btnClickEvent","redirectToApproveNewUserPage","navigateToApproveNewUser","openEditCompanyDetailsModal","editButtonClicked","getLocationList","locationListButton","openUploadFileModal","uploadFileLinkClicked","i1.KngTableService","i2.KngButtonComponent","i6","KngMydealerService","myDealer","getPhoneEmail","isButton","button","iconValue","KngMydealerComponent","sharedservice","addressView","loaderState","parentPage","i1.KngMydealerService","i3.KngButtonComponent","KngMydealerModule","KngTableLoaderComponent","noOfColumns","noOfRows","numSequence","MatDialogConfig","updateTooltipPosition","rect","getBoundingClientRect","matDialogConfig","bottom","updatePosition","closeTooltip","i1$5","MAT_DIALOG_DATA","Ha","ja","fileUploadLoaderState","loaderWithOutText","i1.KngUploadFileService","Ya","noresult","dataTableConst","i1.KngDataTableService"],"sourceRoot":"webpack:///","sources":["./projects/kinetic-angular/src/lib/components/card-list/definitions/kng-card-list.interface.ts","./projects/kinetic-angular/src/lib/components/card-list/kng-card-list.service.ts","./projects/kinetic-angular/src/lib/components/data-table/kng-data-table.module.ts","./projects/kinetic-angular/src/lib/components/data-table/definitions/kng-data-table.interface.ts","./projects/kinetic-angular/src/lib/components/data-table/definitions/kng-data-table.enums.ts","./projects/kinetic-angular/src/lib/components/data-table/template/kng-data-table.component.html","./projects/kinetic-angular/src/lib/components/data-table/kng-data-table.component.ts","./projects/kinetic-angular/src/lib/components/data-table/kng-data-table.service.ts","./projects/kinetic-angular/src/lib/components/upload-file/definitions/kng-upload-file.interface.ts","./projects/kinetic-angular/src/lib/constants/global.constant.ts","./projects/kinetic-angular/src/lib/shared/directives/dn-ddirective.directive.ts","./projects/kinetic-angular/src/lib/components/upload-file/template/kng-upload-file.component.html","./projects/kinetic-angular/src/lib/components/upload-file/kng-upload-file.component.ts","./projects/kinetic-angular/src/lib/components/upload-file/kng-upload-file.factory.ts","./projects/kinetic-angular/src/lib/shared/shared.service.ts","./projects/kinetic-angular/src/lib/shared/shared.module.ts","./projects/kinetic-angular/src/lib/components/loader/kng-loader.service.ts","./projects/kinetic-angular/src/lib/components/loader/kng-loader.factory.ts","./projects/kinetic-angular/src/lib/components/loader/kng-loader.module.ts","./projects/kinetic-angular/src/lib/components/upload-file/kng-upload-file.module.ts","./projects/kinetic-angular/src/lib/components/upload-file/kng-upload-file.service.ts","./projects/tmhna-portal/src/app/template/app.component.html","./projects/tmhna-portal/src/app/app.component.ts","./projects/tmhna-portal/src/app/app.factory.ts","./projects/tmhna-portal/src/app/components/auth/auth.factory.ts","./projects/tmhna-portal/src/app/services/api/api.module.ts","./projects/tmhna-portal/src/app/components/auth/auth.module.ts","./projects/tmhna-portal/src/app/components/auth/auth.service.ts","./projects/tmhna-portal/src/app/components/auth/auth.component.ts","./projects/tmhna-portal/src/app/components/auth/template/auth.component.html","./projects/tmhna-portal/src/app/components/common-error/template/common-error.component.html","./projects/tmhna-portal/src/app/components/common-error/common-error.component.ts","./projects/tmhna-portal/src/app/components/common-error/common-error.factory.ts","./projects/tmhna-portal/src/app/components/common-error/common-error.service.ts","./projects/tmhna-portal/src/app/components/common-error/common-error.module.ts","./projects/tmhna-portal/src/app/components/invite-users/invite-users.module.ts","./projects/tmhna-portal/src/app/components/invite-users/invite-users.component.html","./projects/tmhna-portal/src/app/components/invite-users/invite-users.component.ts","./projects/tmhna-portal/src/app/components/invite-users/invite-users.config.ts","./projects/tmhna-portal/src/app/components/invite-users/invite-users.service.ts","./projects/tmhna-portal/src/app/components/invite-users/invite-users.factory.ts","./projects/tmhna-portal/src/app/components/my-quotes/definitions/my-quotes.interface.ts","./projects/tmhna-portal/src/app/components/my-quotes/my-quotes.component.ts","./projects/tmhna-portal/src/app/components/my-quotes/template/my-quotes.component.html","./projects/tmhna-portal/src/app/components/my-quotes/my-quotes.factory.ts","./projects/tmhna-portal/src/app/pipes/truncate/truncate.pipe.ts","./projects/tmhna-portal/src/app/components/my-quotes/equipment-quotes/equipment-quotes.component.html","./projects/tmhna-portal/src/app/components/my-quotes/equipment-quotes/equipment-quotes.component.ts","./projects/tmhna-portal/src/app/pipes/truncate/truncate.module.ts","./projects/tmhna-portal/src/app/components/my-quotes/quote-promo-banners/quote-promo-banners.component.html","./projects/tmhna-portal/src/app/components/my-quotes/quote-promo-banners/quote-promo-banners.component.ts","./projects/tmhna-portal/src/app/components/my-quotes/my-quotes.module.ts","./projects/tmhna-portal/src/app/components/my-quotes/my-quotes.service.ts","./projects/tmhna-portal/src/app/components/my-quotes/my-quotes.util.service.ts","./projects/tmhna-portal/src/app/components/myfleet/definitions/myfleet.interface.ts","./projects/tmhna-portal/src/app/components/notifications/template/notifications.component.html","./projects/tmhna-portal/src/app/components/notifications/notification.component.ts","./projects/tmhna-portal/src/app/components/notifications/notification-content/notification-content.component.html","./projects/tmhna-portal/src/app/components/notifications/notification-content/notification-content.component.ts","./projects/tmhna-portal/src/app/components/notifications/notification.module.ts","./projects/tmhna-portal/src/app/components/notifications/notification.service.ts","./projects/tmhna-portal/src/app/components/notifications/notification.factory.ts","./projects/tmhna-portal/src/app/components/order-management/definitions/order-management.interface.ts","./projects/tmhna-portal/src/app/components/shell/shell.factory.ts","./projects/tmhna-portal/src/app/components/shell/shell.service.ts","./projects/tmhna-portal/src/app/constants/location-heirarchy-mock.ts","./projects/tmhna-portal/src/app/constants/mock-auth-data.ts","./projects/tmhna-portal/src/app/constants/portal-constants.ts","./projects/tmhna-portal/src/app/guards/location-access.guard.service.ts","./projects/tmhna-portal/src/app/guards/pending-changes.guard.service.ts","./projects/tmhna-portal/src/app/guards/permission/permission.guard.service.ts","./projects/tmhna-portal/src/app/injection-tokens/auth-config.injection-token.ts","./projects/tmhna-portal/src/app/injection-tokens/environment.injection-token.ts","./projects/tmhna-portal/src/app/leave-page-confirm-popup/leave-page-confirm-popup-factory.ts","./projects/tmhna-portal/src/app/leave-page-confirm-popup/leave-page-confirm-popup.service.ts","./projects/tmhna-portal/src/app/pipes/safehtml/safehtml.pipe.module.ts","./projects/tmhna-portal/src/app/pipes/safehtml/safehtml.pipe.ts","./projects/tmhna-portal/src/app/services/script-injector/script-injector.module.ts","./projects/tmhna-portal/src/app/services/analytics/analytics.module.ts","./projects/tmhna-portal/src/app/injection-tokens/window.injection-token.ts","./projects/tmhna-portal/src/app/services/analytics/analytics.service.ts","./projects/tmhna-portal/src/app/services/analytics/analytics.factory.ts","./projects/tmhna-portal/src/app/services/api/api.aem.service.ts","./projects/tmhna-portal/src/app/services/api/api.service.ts","./projects/tmhna-portal/src/app/services/api/api.url.ts","./projects/tmhna-portal/src/app/services/authentication/authentication.service.ts","./projects/tmhna-portal/src/app/services/date-converter/date-converter.service.ts","./projects/tmhna-portal/src/app/services/local-storage/local-storage.module.ts","./projects/tmhna-portal/src/app/services/local-storage/local-storage.service.ts","./projects/tmhna-portal/src/app/services/logger/logger.module.ts","./projects/tmhna-portal/src/app/services/logger/logger.service.ts","./projects/tmhna-portal/src/app/services/script-injector/script-injector.service.ts","./projects/tmhna-portal/src/app/services/shared/directives/text-area-auto-size.directive.ts","./projects/tmhna-portal/src/app/services/shared/shared-api-call.service.ts","./projects/tmhna-portal/src/app/services/shared/shared-constants.ts","./projects/tmhna-portal/src/app/services/shared/shared-enums.ts","./projects/tmhna-portal/src/app/services/shared/shared-factory-data.service.ts","./projects/tmhna-portal/src/app/services/shared/shared-filter.factory.ts","./projects/tmhna-portal/src/app/services/shared/shared-filter.service.ts","./projects/tmhna-portal/src/app/services/shared/shared-mapping.ts","./projects/tmhna-portal/src/app/services/shared/shared-util.service.ts","./projects/tmhna-portal/src/app/services/shared/shared.service.ts","./projects/tmhna-portal/src/environments/environment.qa.ts","./projects/tmhna-portal/src/environments/interfaces/endpoints/auth/auth.endpoint.factory.ts","./projects/tmhna-portal/src/environments/interfaces/endpoints/roles-permissions/roles-permissions.endpoint.factory.ts","./projects/tmhna-portal/src/app/components/shell/shell.endpoints.factory.ts","./projects/tmhna-portal/src/app/components/myfleet/myfleet.endpoint.factory.ts","./projects/tmhna-portal/src/environments/interfaces/endpoints/service-management/service-management.endpoint.factory.ts","./projects/tmhna-portal/src/environments/interfaces/endpoints/dashboard/dashboard.endpoint.factory.ts","./projects/tmhna-portal/src/app/services/date-converter/date-converter.module.ts","./projects/tmhna-portal/src/app/components/roles-permissions/roles-permissions.factory.ts","./projects/tmhna-portal/src/app/components/roles-permissions/roles-permissions.service.ts","./projects/tmhna-portal/src/app/components/roles-permissions/template/roles-permissions.component.html","./projects/tmhna-portal/src/app/components/roles-permissions/roles-permissions.component.ts","./projects/tmhna-portal/src/app/components/roles-permissions/roles-permissions-list/roles-permissions-list.component.html","./projects/tmhna-portal/src/app/components/roles-permissions/roles-permissions-list/roles-permissions-list.component.ts","./projects/tmhna-portal/src/app/components/roles-permissions/roles-permissions-details/roles-permissions-details.component.html","./projects/tmhna-portal/src/app/components/roles-permissions/roles-permissions-details/roles-permissions-details.component.ts","./projects/tmhna-portal/src/app/components/roles-permissions/roles-permissions.module.ts","./projects/tmhna-portal/src/app/constants/main-entry-data.ts","./projects/tmhna-portal/src/app/components/main-entry/main-entry.service.ts","./projects/tmhna-portal/src/app/components/main-entry/main-entry.factory.ts","./projects/tmhna-portal/src/app/components/main-entry/template/main-entry.component.html","./projects/tmhna-portal/src/app/components/main-entry/main-entry.component.ts","./projects/tmhna-portal/src/app/services/authentication/authentication-service.factory.ts","./projects/tmhna-portal/src/app/services/authentication/authentication.module.ts","./projects/tmhna-portal/src/app/components/main-entry/main-entry.module.ts","./projects/tmhna-portal/src/app/services/shared/shared.module.ts","./projects/tmhna-portal/src/app/constants/registration.ts","./projects/tmhna-portal/src/app/components/registration/registration.factory.ts","./projects/tmhna-portal/src/app/components/registration/registration-mapping-factory.ts","./projects/tmhna-portal/src/app/components/registration/registration-util.service.ts","./projects/tmhna-portal/src/app/components/registration/registration.service.ts","./projects/tmhna-portal/src/app/components/registration/template/registration.component.html","./projects/tmhna-portal/src/app/components/registration/registration.component.ts","./projects/tmhna-portal/src/app/components/registration/sub-modules/registration-profile-company-information/registration-profile-company-information.component.html","./projects/tmhna-portal/src/app/components/registration/sub-modules/registration-profile-company-information/registration-profile-company-information.component.ts","./projects/tmhna-portal/src/app/components/registration/sub-modules/registration-account-type/registration-account-type.component.ts","./projects/tmhna-portal/src/app/components/registration/sub-modules/registration-account-type/registration-account-type.component.html","./projects/tmhna-portal/src/app/components/registration/sub-modules/registration-terms-and-conditions/registration-terms-and-conditions.component.html","./projects/tmhna-portal/src/app/components/registration/sub-modules/registration-terms-and-conditions/registration-terms-and-conditions.component.ts","./projects/tmhna-portal/src/app/components/registration/sub-modules/registration-additional-locations/registration-additional-locations.component.html","./projects/tmhna-portal/src/app/components/registration/sub-modules/registration-additional-locations/registration-additional-locations.component.ts","./projects/tmhna-portal/src/app/components/registration/registration.module.ts","./projects/tmhna-portal/src/app/components/shell/idle-user.service.ts","./projects/kinetic-angular/src/lib/components/banner/kng-banner.service.ts","./projects/kinetic-angular/src/lib/components/banner/kng-banner.factory.ts","./projects/kinetic-angular/src/lib/components/banner/template/kng-banner.component.html","./projects/kinetic-angular/src/lib/components/banner/kng-banner.component.ts","./projects/tmhna-portal/src/app/components/shell/template/shell.component.html","./projects/tmhna-portal/src/app/components/shell/shell.component.ts","./projects/kinetic-angular/src/lib/components/banner/kng-banner.module.ts","./projects/tmhna-portal/src/app/components/shell/shell.module.ts","./projects/tmhna-portal/src/app/components/registration/sub-modules/confirm-registration/confirm-registration.service.ts","./projects/tmhna-portal/src/app/components/registration/sub-modules/confirm-registration/confirm-registration.factory.ts","./projects/tmhna-portal/src/app/components/registration/sub-modules/confirm-registration/template/confirm-registration.component.html","./projects/tmhna-portal/src/app/components/registration/sub-modules/confirm-registration/confirm-registration.component.ts","./projects/tmhna-portal/src/app/guards/access.guard.service.ts","./projects/tmhna-portal/src/app/guards/auth/auth.guard.ts","./projects/tmhna-portal/src/app/guards/login.guard.service.ts","./projects/tmhna-portal/src/app/guards/landing-page.guard.service.ts","./projects/tmhna-portal/src/app/constants/business-account-request-data.ts","./projects/tmhna-portal/src/app/constants/business-account-request-upload-data.ts","./projects/tmhna-portal/src/app/components/business-account-request/business-account-request.factory.ts","./projects/tmhna-portal/src/app/components/business-account-request/definitions/business-account-request.interface.ts","./projects/tmhna-portal/src/app/components/business-account-request/business-account-request-util.service.ts","./projects/tmhna-portal/src/app/components/business-account-request/business-account-request.service.ts","./projects/tmhna-portal/src/app/components/business-account-request/template/business-account-request.component.html","./projects/tmhna-portal/src/app/components/business-account-request/business-account-request.component.ts","./projects/tmhna-portal/src/app/components/customer-support/customer-support.factory.ts","./projects/tmhna-portal/src/app/components/customer-support/customer-support.service.ts","./projects/tmhna-portal/src/app/components/customer-support/template/customer-support.component.html","./projects/tmhna-portal/src/app/components/customer-support/customer-support.component.ts","./projects/tmhna-portal/src/app/components/customer-portal/customer-portal.component.html","./projects/tmhna-portal/src/app/components/customer-portal/customer-portal.component.ts","./projects/tmhna-portal/src/app/components/business-account-request/business-account-request.module.ts","./projects/tmhna-portal/src/app/components/customer-support/customer-support.module.ts","./projects/tmhna-portal/src/app/components/customer-portal/customer-portal.module.ts","./projects/tmhna-portal/src/app/components/contact-us/definitions/contact-us.interface.ts","./projects/tmhna-portal/src/app/components/contact-us/contact-us.factory.ts","./projects/tmhna-portal/src/app/components/contact-us/contact-us.service.ts","./projects/tmhna-portal/src/app/components/contact-us/template/contact-us.component.html","./projects/tmhna-portal/src/app/components/contact-us/contact-us.component.ts","./projects/tmhna-portal/src/app/components/contact-us/contact-us.module.ts","./projects/tmhna-portal/src/app/components/routing/app-routing.module.ts","./projects/tmhna-portal/src/app/interceptors/date-timezone.interceptor.ts","./projects/tmhna-portal/src/app/app.module.ts","./projects/tmhna-portal/src/main.ts","./projects/kinetic-angular/src/lib/components/grid/template/kng-grid.component.html","./projects/kinetic-angular/src/lib/components/button/template/kng-button.component.html","./projects/kinetic-angular/src/lib/components/nav/header-nav/template/kng-header-nav.component.html","./projects/kinetic-angular/src/lib/components/modal/template/modal.component.html","./projects/kinetic-angular/src/lib/components/footer/template/kng-footer.component.html","./projects/kinetic-angular/src/lib/components/filter-panel/template/kng-filter-panel.component.html","./projects/kinetic-angular/src/lib/components/shell/template/kng-shell.component.html","./projects/kinetic-angular/src/lib/components/charts/template/kng-charts.component.html","./projects/kinetic-angular/src/lib/components/count-of-item-card/template/kng-count-of-item-card.component.html","./projects/kinetic-angular/src/lib/components/card-list/template/kng-card-list.component.html","./projects/kinetic-angular/src/lib/components/accordion/template/accordion.component.html","./projects/kinetic-angular/src/lib/components/status-selector/template/kng-status-selector.component.html","./projects/kinetic-angular/src/lib/components/table/template/kng-table.component.html","./projects/kinetic-angular/src/lib/components/mydealer/template/kng-mydealer.component.html","./projects/kinetic-angular/src/lib/components/table-loader/template/kng-table-loader.component.html","./projects/kinetic-angular/src/lib/components/grid/definitions/kng-grid.interface.ts","./projects/kinetic-angular/src/lib/components/grid/action-buttons.component.ts","./projects/kinetic-angular/src/lib/components/grid/template/action-buttons.component.html","./projects/kinetic-angular/src/lib/components/grid/kng-grid.component.ts","./projects/kinetic-angular/src/lib/components/grid/kng-grid.service.ts","./projects/kinetic-angular/src/lib/components/grid/kng-grid.module.ts","./projects/kinetic-angular/src/lib/components/button/kng-button.component.ts","./projects/kinetic-angular/src/lib/components/button/kng-button.factory.ts","./projects/kinetic-angular/src/lib/components/button/kng-button.module.ts","./projects/kinetic-angular/src/lib/components/nav/header-nav/definitions/kng-header-nav.interface.ts","./projects/kinetic-angular/src/lib/components/nav/header-nav/kng-header-nav.factory.ts","./projects/kinetic-angular/src/lib/shared/shared.interface.ts","./projects/kinetic-angular/src/lib/components/nav/header-nav/kng-header-nav.component.ts","./projects/kinetic-angular/src/lib/components/nav/header-nav/kng-header-nav.module.ts","./projects/kinetic-angular/src/lib/components/footer/kng-footer.factory.ts","./projects/kinetic-angular/src/lib/components/content/kng-content.factory.ts","./projects/kinetic-angular/src/lib/components/content/kng-content.component.ts","./projects/kinetic-angular/src/lib/components/content/template/kng-content.component.html","./projects/kinetic-angular/src/lib/components/breadcrumb/kng-breadcrumb.service.ts","./projects/kinetic-angular/src/lib/components/breadcrumb/kng-breadcrumb.factory.ts","./projects/kinetic-angular/src/lib/components/breadcrumb/kng-breadcrumb.module.ts","./projects/kinetic-angular/src/lib/components/modal/definitions/modal.interface.ts","./projects/kinetic-angular/src/lib/components/modal/modal.component.ts","./projects/kinetic-angular/src/lib/components/modal/modal.factory.ts","./projects/kinetic-angular/src/lib/components/modal/modal.service.ts","./projects/kinetic-angular/src/lib/components/modal/modal.module.ts","./projects/kinetic-angular/src/lib/components/content/kng-content.module.ts","./projects/kinetic-angular/src/lib/components/footer/definitions/footer.interface.ts","./projects/kinetic-angular/src/lib/components/footer/kng-footer.service.ts","./projects/kinetic-angular/src/lib/components/footer/kng-footer.component.ts","./projects/kinetic-angular/src/lib/components/footer/kng-footer.module.ts","./projects/kinetic-angular/src/lib/components/filter-panel/definitions/kng-filter-panel.interface.ts","./projects/kinetic-angular/src/lib/components/filter-panel/kng-filter-panel.factory.ts","./projects/kinetic-angular/src/lib/components/filter-panel/kng-filter-panel.component.ts","./projects/kinetic-angular/src/lib/components/filter-panel/kng-filter-panel.service.ts","./projects/kinetic-angular/src/lib/components/filter-panel/kng-filter-panel.module.ts","./projects/kinetic-angular/src/lib/components/shell/kng-shell.factory.ts","./projects/kinetic-angular/src/lib/components/shell/kng-shell.service.ts","./projects/kinetic-angular/src/lib/components/shell/kng-shell.component.ts","./projects/kinetic-angular/src/lib/components/shell/kng-shell.module.ts","./projects/kinetic-angular/src/lib/components/charts/kng-charts.factory.ts","./projects/kinetic-angular/src/lib/components/charts/kng-charts.component.ts","./projects/kinetic-angular/src/lib/components/charts/kng-charts.service.ts","./projects/kinetic-angular/src/lib/components/loader/kng-loader.component.ts","./projects/kinetic-angular/src/lib/components/loader/template/kng-loader.component.html","./projects/kinetic-angular/src/lib/components/charts/kng-charts.module.ts","./projects/kinetic-angular/src/lib/components/count-of-item-card/definitions/kng-count-of-item-card.interface.ts","./projects/kinetic-angular/src/lib/components/count-of-item-card/kng-count-of-item-card.factory.ts","./projects/kinetic-angular/src/lib/components/count-of-item-card/kng-count-of-item-card.component.ts","./projects/kinetic-angular/src/lib/components/count-of-item-card/kng-count-of-item-card.module.ts","./projects/kinetic-angular/src/lib/components/card-list/kng-card-list.factory.ts","./projects/kinetic-angular/src/lib/components/card-list/kng-card-list.component.ts","./projects/kinetic-angular/src/lib/components/card-list/kng-card-list.module.ts","./projects/kinetic-angular/src/lib/components/accordion/accordion.service.ts","./projects/kinetic-angular/src/lib/components/accordion/accordion.factory.ts","./projects/kinetic-angular/src/lib/components/accordion/accordion.component.ts","./projects/kinetic-angular/src/lib/components/accordion/accordion.module.ts","./projects/kinetic-angular/src/lib/components/toaster/kng-toaster.service.ts","./projects/kinetic-angular/src/lib/components/toaster/kng-toaster.factory.ts","./projects/kinetic-angular/src/lib/components/toaster/kng-toaster.module.ts","./projects/kinetic-angular/src/lib/components/status-selector/kng-status-selector.service.ts","./projects/kinetic-angular/src/lib/components/status-selector/kng-status-selector.factory.ts","./projects/kinetic-angular/src/lib/components/status-selector/kng-status-selector.component.ts","./projects/kinetic-angular/src/lib/components/status-selector/kng-status-selector.module.ts","./projects/kinetic-angular/src/lib/components/table/definitions/kng-table.interface.ts","./projects/kinetic-angular/src/lib/components/table/kng-table.service.ts","./projects/kinetic-angular/src/lib/components/table/kng-table.factory.ts","./projects/kinetic-angular/src/lib/components/table/kng-table.component.ts","./projects/kinetic-angular/src/lib/components/table/kng-table.module.ts","./projects/kinetic-angular/src/lib/components/mydealer/kng-mydealer.service.ts","./projects/kinetic-angular/src/lib/components/mydealer/kng-mydealer.factory.ts","./projects/kinetic-angular/src/lib/components/mydealer/kng-mydealer.component.ts","./projects/kinetic-angular/src/lib/components/mydealer/kng-mydealer.module.ts","./projects/kinetic-angular/src/lib/components/table-loader/kng-table-loader.component.ts","./projects/kinetic-angular/src/lib/components/table-loader/kng-table-loader.factory.ts","./projects/kinetic-angular/src/lib/components/table-loader/kng-table-loader.module.ts","./projects/kinetic-angular/src/lib/components/dialog-tooltip/kng-dialog-tooltip.component.ts","./projects/kinetic-angular/src/lib/components/dialog-tooltip/template/kng-dialog-tooltip.component.html","./projects/kinetic-angular/src/lib/components/dialog-tooltip/kng-dialog-tooltip.module.ts"],"sourcesContent":["import { ScreenView } from '../../../constants/global.constant';\nimport { Address, Image, TooltipContent } from '../../../shared/shared.interface';\n\nexport interface KngCardList {\n state: KngCardListState;\n}\nexport interface KngCardListState {\n view:\n | ScreenView.accordionMobile\n | ScreenView.accordionDeskTop\n | ScreenView.tableDesktop\n | ScreenView.tableMobile;\n header: Array;\n list: Array;\n cardListGrayIcon?: { url: string; alt: string };\n cardListOrangeIcon?: { url: string; alt: string };\n cardListAccordionIcon?: { url: string; alt: string };\n actionOpsList?: Array;\n userStatusOption?: Array;\n pageInfo: PageInfo;\n error?: ErrorMessage;\n tooltipMessage?: string;\n serviceCampaignAltText?:string;\n moreIconAltText?:string;\n loading: boolean;\n activeIndex?: number;\n hideSort?: boolean;\n hidePagination?: boolean;\n activeFlag?:string|undefined;\n connectedIcon?: Image | undefined;\n errorIcon?: Image | undefined;\n}\nexport interface ErrorMessage {\n message: string | undefined;\n messageSubText: string | undefined;\n icon: string;\n}\n\nexport interface KngHeaderObjState {\n label: string;\n isSort: boolean;\n isTooltipPresent?: boolean;\n tooltip?: TooltipContent;\n tooltipClass?: string;\n sortOrder: SortOrder;\n hideSort?:boolean;\n category?: string;\n}\n\nexport interface KngValueObjState {\n collapsed: boolean;\n values: Array;\n id?:string;\n customerId?:string;\n locationObj?: Address;\n orderId?: string;\n locationId? : string;\n documentURL? : string | undefined;\n locationLabel?: string | undefined;\n isLabelEditable?: boolean;\n techinicalObjectType?: string;\n managedBy?: string;\n serialNumber?: string;\n checked?: boolean;\n changeRequest?: {\n display: string;\n tooltip: string;\n toastMessage: string;\n bannerMessage: string;\n };\n}\n\nexport interface KngValueListState {\n id?:string;\n label: string;\n labelValue: string | boolean | number;\n icon?: string;\n cssClass: string;\n href?: string;\n category?: string;\n serviceCampaign?: boolean;\n currency?: string;\n isTooltipPresent?: boolean;\n tooltip?: TooltipContent;\n tooltipClass?: string;\n isError?: boolean;\n errorIcon?: Image;\n isStatusUpdatePending?: boolean;\n statusUpdatePendingMessage?: string;\n displayType?: {\n separator: string;\n styleChange?: string;\n };\n}\nexport interface KngGridPager {\n totalItems: number;\n currentPage: number;\n pageSize: number;\n totalPages: number;\n startPage: number;\n endPage: number;\n startIndex: number;\n endIndex: number;\n}\n\nexport interface ActionOpsList {\n actionLabel?: string;\n disabled?: boolean;\n}\nexport interface StatusOptionList {\n id: number;\n label: string;\n}\nexport interface StatusChangeOptionList {\n id?: string;\n userStatus: string | number | boolean;\n}\n\n\nexport interface TableButtonAction {\n category?: KngValueObjState;\n action?: ActionOpsList;\n}\n\n\nexport enum FieldType {\n action = 'action',\n indicator = 'indicator',\n text = 'text',\n link = 'link',\n currency = 'currency',\n primaryText = 'primary-text',\n date = 'date',\n dateString = 'dateString',\n invoice = 'invoice',\n userStatus = 'userStatus',\n orderStatus='primaryStatus',\n restrictedLink = 'restricted-link',\n crStatus = 'status',\n image = 'image',\n address='address',\n myQuoteStatus='myQuoteStatus',\n dealershipInfo='dealershipInfo',\n pdf='pdf',\n serviceCampaign='serviceCampaign',\n telematicsStatus = 'telematicsStatus'\n}\n\nexport enum InvoiceStatus {\n pastDue = 'Past Due',\n open = 'Open',\n upcoming = 'Upcoming',\n paid = 'Paid'\n}\nexport enum ChangeRequestIndicator {\n awaitingApproval = 'Awaiting Approval',\n approved = 'Approved',\n cancelled = 'Cancelled'\n}\nexport enum EquipmentOrderStatus {\n orderInProcess = 'In Process',\n inProduction = 'In Production',\n shipped = 'Shipped',\n delivered = 'Delivered',\n cancelled='Cancelled'\n}\nexport enum MyQuoteStatus {\n quoteinProcess = 'In Process',\n quoteAccepted = 'Accepted',\n ordered = 'Ordered',\n expired = 'Expired',\n readyForReview = 'Ready for Review'\n}\nexport interface PageInfo {\n pageSize: number;\n totalCount: number;\n}\n\nexport enum SortOrder {\n desc = 'desc',\n asc = 'asc',\n}\n\nexport interface TelematicsResponse {\n connected: boolean;\n notConnected: boolean;\n error: boolean;\n}\n\nexport enum TelematicsStatus {\n connected = 'connected',\n notConnected = 'notConnected',\n error = 'error'\n}\nexport enum InvoiceCheck {\n invoice = 'Invoice'\n}\n\nexport interface CheckboxChangeEvent {\n item: KngValueObjState;\n isChecked: boolean;\n index: number;\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { KngCardListFactory } from './kng-card-list.factory';\nimport { KngCardListState } from './definitions';\nimport * as _ from 'lodash';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class KngCardListService \n{\n\tprivate state$: BehaviorSubject =\n\t\tnew BehaviorSubject(KngCardListFactory.build());\n\tget state(): KngCardListState \n\t{\n\t\treturn this.state$.value;\n\t}\n\tget stateChanged(): Observable \n\t{\n\t\treturn this.state$.asObservable();\n\t}\n\n\tpublic updateState(value: KngCardListState): void \n\t{\n\t\tthis.state$.next(value);\n\t}\n}\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class PagerService \n{\n\tgetPager(totalItems: number, currentPage: number, pageSize: number) \n\t{\n\t\tconst totalPages = Math.ceil(totalItems / pageSize);\n\t\tlet startPage: number, endPage: number;\n\t\tif (totalPages <= 5) \n\t\t{\n\t\t\tstartPage = 1;\n\t\t\tendPage = totalPages > 0 ? totalPages : 1;\n\t\t}\n\t\telse \n\t\t{\n\t\t\tconst startEndObj=this.getCurrentPage( currentPage, totalPages);\n\t\t\tstartPage=startEndObj.startPage;\n\t\t\tendPage=startEndObj.endPage;\n\t\t\t\n\t\t}\n\n\t\tconst startIndex = (currentPage - 1) * pageSize;\n\t\tconst endIndex = Math.min(\n\t\t\tstartIndex + pageSize - 1,\n\t\t\ttotalItems > 1 ? totalItems - 1 : 1\n\t\t);\n \n\t\t\n\t\tconst pages = _.range(startPage, endPage + 1);\n\t\treturn {\n\t\t\ttotalPages: totalPages,\n\t\t\tcurrentPage: currentPage,\n\t\t\tendIndex: endIndex,\n\t\t\tendPage: endPage,\n\t\t\tpages: pages,\n\t\t\tpageSize: pageSize,\n\t\t\tstartIndex: startIndex,\n\t\t\tstartPage: startPage,\n\t\t\ttotalItems: totalItems\n\t\t};\n\t}\n\n\tgetCurrentPage(currentPage:number, totalPages:number )\n\t{\n\t\tlet startPage: number, endPage: number;\n\t\tif (currentPage <= 3) \n\t\t{\n\t\t\tstartPage = 1;\n\t\t\tendPage = 5;\n\t\t}\n\t\telse if (currentPage + 1 >= totalPages) \n\t\t{\n\t\t\tstartPage = totalPages - 4;\n\t\t\tendPage = totalPages;\n\t\t}\n\t\telse \n\t\t{\n\t\t\tstartPage = currentPage - 2;\n\t\t\tendPage = currentPage + 2;\n\t\t}\n\t\treturn { startPage: startPage, endPage: endPage };\n\t}\t\n\t\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { KngDataTableComponent } from './kng-data-table.component';\nimport { KngDataTableService } from './kng-data-table.service';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { FormsModule } from '@angular/forms';\nimport { NgxPaginationModule } from 'ngx-pagination';\n\n@NgModule({\n\tdeclarations: [\n\t\tKngDataTableComponent\n\t],\n\timports: [ CommonModule, MatCheckboxModule, FormsModule, NgxPaginationModule ],\n\texports: [\n\t\tKngDataTableComponent\n\t],\n\tproviders: [\n\t\tKngDataTableService\n\t]\n})\nexport class KngDataTableModule {}\n","export interface KngDataTable {\n headers: HeaderDataTable[];\n checkboxRequired: boolean;\n checkboxState: boolean;\n paginationRequired: boolean;\n headerCheckboxdisabled?: boolean;\n mobileSelectAllDisable: boolean;\n tableData: TableData[];\n}\nexport interface HeaderDataTable {\n key: string;\n label: string;\n sort: boolean;\n}\nexport interface TableData {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n}\n\nexport interface CheckboxData {\n itemIndex: number; \n checked: boolean;\n itemData: TableData;\n}\n\nexport interface NoResultData {\n icon: Image;\n messageBold: string;\n message: string;\n}\n\nexport interface Image {\n iconPath: string;\n altText: string;\n}\n\nexport enum Icons {\n noResult = '/assets/noresults.svg'\n}\n","export enum DataTableConst {\n location = 'location',\n noresult = 'No results found'\n}\n","
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n Loading... \n
\n \n \n \n {{header.label}}\n
\n
\n
\n \n \n \n \n \n {{ item['locationLabel'] }}\n
{{ item[header.key] }}
\n
\n \n {{ item[header.key] }}\n \n
\n
\n
\n \"\"\n
{{noResult.messageBold}}
\n
\n
\n
\n Showing {{ pager.startIndex + 1 | number }}-{{ state.tableData.length >\n pager.pageSize *\n (pager.currentPage) ? pager.pageSize *\n (pager.currentPage): state.tableData.length | number }} of\n {{ state.tableData.length | number }}\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n \n \n
\n
\n
{{header.label}}
\n
\n \n \n \n {{item[header.key] }}
\n
\n
\n
\n\n
\n \"\"/\n
{{noResult.messageBold}}
\n
\n
\n
\n Showing {{ pager.startIndex + 1 | number }}-{{ state.tableData.length > pager.pageSize *\n (pager.currentPage) ? pager.pageSize *\n (pager.currentPage): state.tableData.length | number }} of\n {{ state.tableData.length | number }}\n
\n \n
\n
","/* eslint-disable no-console */\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { KngDataTableService } from './kng-data-table.service';\nimport { CheckboxData, Icons, KngDataTable, NoResultData } from './definitions';\nimport { KngGridPager, SortOrder } from '../card-list/definitions';\nimport { PagerService } from '../card-list/kng-card-list.service';\nimport { DataTableConst } from './definitions/kng-data-table.enums';\n\n@Component({\n\tselector: 'kng-data-table',\n\ttemplateUrl: './template/kng-data-table.component.html',\n\tstyleUrls: ['./template/kng-data-table.component.scss']\n})\nexport class KngDataTableComponent \n{\t\n\t@Input() state :KngDataTable = {\n\t\theaders: [],\n\t\tcheckboxRequired: false,\n\t\tcheckboxState: false,\n\t\tpaginationRequired: false,\n\t\ttableData: [],\n\t\theaderCheckboxdisabled: false,\n\t\tmobileSelectAllDisable: true\n\t};\n\t\n\t@Output() checkboxClickedEvent: EventEmitter = new EventEmitter();\n\t@Output() headerCheckboxClickedEvent: EventEmitter = new EventEmitter();\n\t@Output() stateChanged: EventEmitter = new EventEmitter();\n\n\theaderSortable: string = SortOrder.asc;\n\tactiveIndex: number = -1;\n\tcurrentPage: number = 1;\n\tpageLoad: boolean = false;\n\tpageNumber: number = 1;\n\tpager: KngGridPager = {\n\t\ttotalPages: 1,\n\t\tcurrentPage: this.currentPage,\n\t\tendIndex: 0,\n\t\tendPage: 1,\n\t\tpageSize: 50,\n\t\tstartIndex: 0,\n\t\tstartPage: 1,\n\t\ttotalItems: this.state.tableData.length\n\t};\n\tnoResult: NoResultData = {\n\t\ticon: {\n\t\t\ticonPath: Icons.noResult,\n \t\t\taltText: ''\n\t\t},\n\t\tmessageBold: DataTableConst.noresult,\n\t\tmessage: ''\n\t};\n\tdataTableConst = DataTableConst;\n\tconstructor(private readonly service: KngDataTableService, private readonly pagerService: PagerService) {}\n\t\n\thandleItemCheckBoxChange(item: CheckboxData)\n\t{\n\t\tconst computedIndex = item.itemIndex + ((this.currentPage-1) * this.pager.pageSize);\n\t\titem.itemIndex = computedIndex;\n\t\tthis.checkboxClickedEvent.emit(item);\n\t}\n\thandleHeaderCheckboxChange(isChecked: boolean)\n\t{\n\t\tthis.state.checkboxState = isChecked;\n\t\tthis.headerCheckboxClickedEvent.emit(isChecked);\n\t}\n\n\tsetPage(e: number)\n\t{\n\t\tthis.pager.totalPages = Math.ceil(this.state.tableData.length / this.pager.pageSize);\n\t\tthis.pageLoad = true;\n\t\tsetTimeout(() => \n\t\t{\n\t\t\tthis.pageLoad = false;\n\t\t\t\n\t\t}, 500);\n\t\tthis.pageNumber = e;\n\t\tif (e < 1 || e > this.pager.totalPages) \n\t\t{\n\t\t\treturn;\n\t\t}\n\t\telse \n\t\t{\n\t\t\tthis.pager.currentPage = e;\n\t\t}\n\t\tthis.currentPage = e;\n\t\tthis.pager = this.pagerService.getPager(this.state.tableData.length, e, this.pager.pageSize);\n\t}\n\n\tsortColumn(sortField: string, index: number, sortOrder: string)\n\t{\n\t\tif(sortOrder && this.state.tableData.length > 0)\n\t\t{\n\t\t\tthis.activeIndex = index;\n\t\t\tthis.headerSortable = (sortOrder === SortOrder.asc) ? SortOrder.desc : SortOrder.asc;\n\t\t\tthis.state.tableData = this.service.sortGridData(this.state.tableData, this.headerSortable, sortField);\n\t\t}\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { TableData } from './definitions';\nimport { SortOrder } from '../card-list/definitions';\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class KngDataTableService \n{\n\tsortGridData(array: TableData[], sortOrder: string, sortField: string): TableData[] \n\t{\n\t\tarray.sort((a: TableData, b: TableData) =>\n\t\t{\n\t\t\tconst sortedA = a[sortField as keyof TableData];\n\t\t\tconst sortedB = b[sortField as keyof TableData];\n\t\t\tif(sortedA && sortedB && typeof(sortedA) === 'string' && typeof(sortedB) === 'string')\n\t\t\t{\n\t\t\t\tif(sortOrder === SortOrder.asc)\n\t\t\t\t{\n\t\t\t\t\treturn this.sortGridDataAsc(sortedA, sortedB);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\treturn this.sortGridDataDesc(sortedA, sortedB);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t\treturn 0;\n\t\t});\n\t\treturn array;\n\t}\n\tsortGridDataAsc(sortedA: string, sortedB: string)\n\t{\n\t\tif (sortedA.toLowerCase() < sortedB.toLowerCase()) \n\t\t\treturn -1;\n\t\telse if (sortedA.toLowerCase() > sortedB.toLowerCase())\n\t\t\treturn 1;\n\t\telse\n\t\t\treturn 0;\n\t}\n\tsortGridDataDesc(sortedA: string, sortedB: string)\n\t{\n\t\tif (sortedA.toLowerCase() > sortedB.toLowerCase()) \n\t\t\treturn -1;\n\t\telse if (sortedA.toLowerCase() < sortedB.toLowerCase())\n\t\t\treturn 1;\n\t\telse\n\t\t\treturn 0;\n\t}\n}\n","import { Image } from '../../../shared/shared.interface';\n\nexport interface KngUploadFile {\n state: KngUploadFileState;\n}\nexport interface KngUploadFileState {\n isLoading: boolean;\n dragDropSection: string;\n or: string;\n uploadButtons: UploadButtons;\n isError: boolean;\n isSuccessClient: boolean;\n isSuccessServer: boolean;\n errorHeading: string;\n errorSubHeading: string;\n successMessage: string;\n dragDropImage: Image;\n errorImage: Image;\n successImage: Image;\n fileUploadLoader: boolean;\n fileUploadProgressText: string;\n}\n\nexport interface UploadFileSection {\n onLoadIcon: Image;\n errorIcon: Image;\n successIcon: Image;\n dragDropLabel: string;\n orLabel: string;\n uploadButtons: UploadButtons;\n success: string;\n}\nexport interface UploadButtons {\n chooseFile: string;\n replaceFile: string;\n tryAgain: string;\n}\n\nexport enum ErrorMessageSubHeading {\n wrongFormat = 'Check to ensure file is in .XLSX format. Please check format and try again.',\n sizeExceed = 'File size must not exceed 100 MB. Please check the file and try again.',\n apiFailure = 'API failure, try again later.',\n wrongData = 'Please ensure the data in the file is in the correct format and try again, and at a minimum the Location GRID and TopLevel GRID must be entered.',\n apiError = 'Something went wrong, please try again.',\n templateMismatch = 'Your file does not match the template. Please replace the file and try again.',\n incorrectSize = 'File size must not exceed 100 MB. Please check the file and try again.',\n emptyFile = 'It looks like the file you uploaded is empty. Please check the file and try again.'\n}\n\nexport enum ErrorMessageHeading {\n uploadFailed = 'Upload Failed',\n sizeExceed = 'File Size Exceeded',\n emptyFile = 'Empty File Uploaded',\n wrongData = 'Uploaded with No Locations or Incorrect Data Format'\n}\n","export enum ScreenView {\n tableMobile = 'tableMobile',\n tableDesktop = 'tableDesktop',\n accordionDeskTop = 'accordionDesktop',\n accordionMobile = 'accordionMobile',\n desktop = 'desktop',\n mobile = 'mobile',\n}\nexport enum UserStatus {\n active = 'active',\n inactive = 'inactive',\n}\n\nexport enum KeyEvent {\n tab = 'Tab',\n enter = 'Enter',\n shift = 'Shift'\n}\n\nexport enum LibIcons {\n loaderWhite = 'assets/Loader2.gif',\n widgetLoader = 'assets/widgetloader.gif',\n loaderWithOutText = 'assets/loader-without-text.gif'\n}\n\nexport enum NullCheck{\n nullValue= '—'\n}\n","import { Directive, EventEmitter, HostBinding, HostListener, Output } from '@angular/core';\n\n@Directive({\n\tselector: '[kngDnDDirective]'\n})\nexport class DnDDirectiveDirective \n{\n\n @HostBinding('class.fileover') fileOver: boolean = false;\n\n @Output() fileDropped: EventEmitter = new EventEmitter();\n\n @HostListener('dragover', ['$event'])\n onDragOver(evt: DragEvent) \n {\n \tevt.stopPropagation();\n \tevt.preventDefault();\n \tthis.fileOver = true;\n }\n\n @HostListener('dragleave', ['$event'])\n onDragLeave(evt: DragEvent) \n {\n \tevt.stopPropagation();\n \tevt.preventDefault();\n }\n\n @HostListener('drop', ['$event'])\n onDrop(evt: DragEvent) \n {\n \tevt.preventDefault();\n \tconst files = evt?.dataTransfer?.files;\n \tif(evt?.dataTransfer?.files.length) \n \t{\n \t\tthis.fileDropped.emit(files);\n \t}\n }\n\n}\n","
\n
\n

\n \"loader\"\n

\n
\n
\n
\n
\n {{state.dragDropImage.altText}}\n

{{state.dragDropSection}}

\n

{{state.or}}

\n \n
\n
{{ file.name }}
\n
\n
\n
\n {{state.errorImage.altText}}\n

{{state.errorHeading}}

\n

{{state.errorSubHeading}}

\n \n \n
\n
\n
\n {{state.successImage.altText}}\n

{{state.successMessage}}

\n
\n
\n
\n \n
\n
\n \n
\n
\n

{{state.fileUploadProgressText}}

\n
\n
\n
\n
\n
","import { Component, Input, OnDestroy, OnInit, Output, EventEmitter } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { KngUploadFile, KngUploadFileState } from './definitions';\nimport { KngUploadFileService } from './kng-upload-file.service';\nimport { KngLoaderState } from '../loader';\nimport { LibIcons } from '../../constants/global.constant';\n\n@Component({\n\tselector: 'kng-upload-file',\n\ttemplateUrl: './template/kng-upload-file.component.html',\n\tstyleUrls: ['./template/kng-upload-file.component.scss']\n})\nexport class KngUploadFileComponent implements KngUploadFile, OnInit, OnDestroy \n{\n\n\tprivate subscriptions: Subscription = new Subscription();\n\tfiles: File[] = [];\n\tloaderState: KngLoaderState = { imagePath: LibIcons.widgetLoader };\n\tfileUploadLoaderState : KngLoaderState = { imagePath: LibIcons.loaderWithOutText };\n\n\t@Input() set state(value: KngUploadFileState) \n\t{\n\t\tthis.service.updateState(value);\n\t}\n\tget state(): KngUploadFileState \n\t{\n\t\treturn this.service.state;\n\t}\n\t\n\t@Output() stateChanged: EventEmitter = new EventEmitter();\n\t@Output() fileValidationCheck: EventEmitter = new EventEmitter();\n\t@Output() tryAgainEventEmitter: EventEmitter = new EventEmitter();\n\t@Output() replaceFileEventEmitter: EventEmitter = new EventEmitter();\n\n\tconstructor(private service: KngUploadFileService) { }\n\n\tngOnInit(): void \n\t{\n\t\tthis.initSubscriptions();\n\t}\n\tngOnDestroy(): void \n\t{\n\t\tthis.destroySubscriptions();\n\t}\n\tprivate initSubscriptions(): void \n\t{\n\t\tconst stateChangeSubs: Subscription = this.service.stateChanged.subscribe((next: KngUploadFileState) => this.stateChanged.emit(next));\n\t\tthis.subscriptions.add(stateChangeSubs);\n\t}\n\tprivate destroySubscriptions(): void \n\t{\n\t\tthis.subscriptions.unsubscribe();\n\t}\n\tonFileDropped(filedropped: FileList) \n\t{\n\t\tthis.fileUpdateHandle(Array.from(filedropped));\n\t}\n\tfileBrowseHandler(event: Event) \n\t{\n\t\tthis.fileUpdateHandle(Array.from((event.target as HTMLInputElement).files as FileList));\n\t}\n\tfileUpdateHandle(files: Array) \n\t{\n\t\tthis.state.isError = false;\t\n\t\tthis.fileValidationCheck.emit(files[0]);\n\t}\n\tonReplaceFileBtnClick()\n\t{\n\t\tthis.state.isError = false;\n\t\tthis.state.isSuccessClient = true;\n\t\tthis.state.isSuccessServer = false;\n\t\tthis.replaceFileEventEmitter.emit();\n\t}\n\tonTryAgainBtnClick()\n\t{\n\t\tthis.tryAgainEventEmitter.emit(this.files[0]);\n\t}\n\t\n}\n","\nimport { KngUploadFileState, UploadButtons } from './definitions';\n\nexport class KngUploadFileFactory\n{\n\tpublic static build(): KngUploadFileState\n\t{\n\t\treturn {\n\t\t\tisLoading: false,\n\t\t\tdragDropSection: '',\n\t\t\tor: '',\n\t\t\tuploadButtons: {\n\t\t\t\tchooseFile: 'Choose File',\n\t\t\t\treplaceFile: 'Replace File',\n\t\t\t\ttryAgain: 'Try Again'\n\t\t\t},\n\t\t\tisError: false,\n\t\t\tisSuccessClient: true,\n\t\t\tisSuccessServer: false,\n\t\t\terrorHeading: '',\n\t\t\terrorSubHeading: '',\n\t\t\tsuccessMessage: '',\n\t\t\tdragDropImage: { iconPath: '', altText: '' },\n\t\t\terrorImage: { iconPath: '', altText: '' },\n\t\t\tsuccessImage: { iconPath: '', altText: '' },\n\t\t\tfileUploadLoader: false,\n\t\t\tfileUploadProgressText: ''\n\t\t};\n\t}\n\tpublic static buildUploadButtons(): UploadButtons\n\t{\n\t\treturn {\n\t\t\tchooseFile: '',\n \t\treplaceFile: '',\n \t\ttryAgain: ''\n\t\t};\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { Address } from './shared.interface';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class SharedService \n{\n\t\n\tpublic formatAddress(address: Address, formatCompleteAddress: boolean) \n\t{\n\t\tif (formatCompleteAddress) \n\t\t{\n\t\t\treturn [ address.addressLine1, address.addressLine2, address.city, address.state, address.zipCode ].filter(Boolean).join(', ');\n\t\t}\n\t\telse \n\t\t{\n\t\t\treturn [ address.city, address.state, address.zipCode ].filter(Boolean).join(', ');\n\t\t}\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { DnDDirectiveDirective } from './directives/dn-ddirective.directive';\nimport { CommonModule } from '@angular/common';\nimport { SharedService } from './shared.service';\n\n@NgModule({\n\tdeclarations: [DnDDirectiveDirective],\n\timports: [CommonModule],\n\texports: [DnDDirectiveDirective],\n\tproviders: [SharedService]\n})\n\nexport class SharedModuleLib {}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { KngLoaderFactory } from './kng-loader.factory';\nimport { KngLoaderState } from './definitions';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class KngLoaderService \n{\n\tprivate state$: BehaviorSubject =\n\t\tnew BehaviorSubject(KngLoaderFactory.build());\n\tget state(): KngLoaderState \n\t{\n\t\treturn this.state$.value;\n\t}\n\tget stateChanged(): Observable \n\t{\n\t\treturn this.state$.asObservable();\n\t}\n\n\tpublic updateState(value: KngLoaderState): void \n\t{\n\t\tthis.state$.next(value);\n\t}\n}\n","import { KngLoaderState } from './definitions';\n\nexport class KngLoaderFactory \n{\n\tpublic static build(): KngLoaderState \n\t{\n\t\treturn {\n\t\t\timagePath: ''\n\t\t};\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { KngLoaderComponent } from './kng-loader.component';\nimport { KngLoaderService } from './kng-loader.service';\n\n@NgModule({\n\tdeclarations: [KngLoaderComponent],\n\timports: [CommonModule],\n\texports: [KngLoaderComponent],\n\tproviders: [KngLoaderService]\n})\nexport class KngLoaderModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { KngUploadFileComponent } from './kng-upload-file.component';\nimport { KngUploadFileService } from './kng-upload-file.service';\nimport { SharedModuleLib } from '../../shared/shared.module';\nimport { KngLoaderModule } from '../loader';\n\n@NgModule({\n\tdeclarations: [KngUploadFileComponent],\n\timports: [ CommonModule, SharedModuleLib, KngLoaderModule ],\n\texports: [KngUploadFileComponent],\n\tproviders: [KngUploadFileService]\n})\nexport class KngUploadFileModule {}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { KngUploadFileFactory } from './kng-upload-file.factory';\nimport { KngUploadFileState } from './definitions';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class KngUploadFileService \n{\n\tprivate state$: BehaviorSubject = new BehaviorSubject(\n\t\tKngUploadFileFactory.build()\n\t);\n\tget state(): KngUploadFileState \n\t{\n\t\treturn this.state$.value;\n\t}\n\tget stateChanged(): Observable \n\t{\n\t\treturn this.state$.asObservable();\n\t}\n\n\tpublic updateState(value: KngUploadFileState): void \n\t{\n\t\tthis.state$.next(value);\n\t}\n}\n","\n
\n
\n 0\" class=\"message\">\n New Message Arrived\n \n \n 0\" class=\"unreadCount\">{{ unreadMessageCount }}\n \n
\n
\n \n
\n
\n
\n \n
\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, OnInit, Inject } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { ActivatedRoute, Data, NavigationEnd, NavigationStart, Router } from '@angular/router';\nimport { BehaviorSubject, filter } from 'rxjs';\nimport { EnvironmentRef } from '../environments/interfaces';\nimport { AppFactory } from './app.factory';\nimport { App, AppState } from './definitions/app.interface';\nimport { expEnvironmentRef } from './injection-tokens/environment.injection-token';\nimport { LoggerService } from './services/logger/logger.service';\nimport { Icons, skipAuthUrls } from './services/shared/shared-enums';\nimport { KngLoaderState } from 'kinetic-angular';\nimport { LocalStorageService } from './services/local-storage/local-storage.service';\nimport { ApiService } from './services/api/api.service';\nimport { SharedUtilService } from './services/shared/shared-util.service';\ndeclare global {\n\tinterface Window {\n\t\t_walkmeConfig: {smartLoad: boolean};\n\t}\n}\n\nexport interface ZendeskToken {\n\ttoken: string;\n }\n\nexport let browserRefresh = false;\n\n@Component({\n\tselector: 'tmhna-portal-root',\n\ttemplateUrl: './template/app.component.html',\n\tstyleUrls: ['./template/app.component.scss']\n})\nexport class AppComponent implements OnInit, App\n{\n\tprivate state$: BehaviorSubject = new BehaviorSubject(\n\t\tAppFactory.buildAppState()\n\t);\n\tisLandingPage!: boolean;\n\tget state(): AppState\n\t{\n\t\treturn this.state$.value;\n\t}\n\tshowPageLoader: boolean = false;\n\tloaderState: KngLoaderState = {\n\t\timagePath: Icons.loaderOrange\n\t};\n \tunreadMessageCount: number = 0;\n\tunreadEventInitiationTry: number = 0;\n\tconstructor(\n @Inject(expEnvironmentRef) readonly environmentRef: EnvironmentRef,\n private loggerService: LoggerService,\n public router: Router,\n public localStorageService: LocalStorageService,\n private titleService: Title,\n\tprivate readonly activatedRoute: ActivatedRoute,\n\tprivate readonly apiService: ApiService,\n\tprivate readonly sharedUtilService : SharedUtilService\n\t)\n\t{\n\t\tthis.zendeskChatBot();\n\t\trouter.canceledNavigationResolution = 'computed';\n\t\tthis.router.events.subscribe((event) =>\n\t\t{\n\t\t\tif (event instanceof NavigationStart)\n\t\t\t{\n\t\t\t\tthis.isCancelButtonError(event, '/auth#error=access_denied');\n\t\t\t\tbrowserRefresh = !this.router.navigated;\n\t\t\t}\n\t\t});\n\t}\n\tisCancelButtonError(event: NavigationStart, url: string)\n\t{\n\t\tif(event.url.includes(url))\n\t\t{\n\t\t\tthis.showPageLoader = true;\n\t\t\tsetTimeout(() => \n\t\t\t{\n\t\t\t\tthis.showPageLoader = false;\n\t\t\t}, 500);\n\t\t\tthis.localStorageService.clearStorage();\n\t\t\tthis.router.navigate(['/']);\n\t\t}\n\t}\n\tasync ngOnInit(): Promise\n\t{\n\t\tconst currentUrl = this.router['location']?._platformLocation?.location?.href;\n\t\tconst searchParams = new URLSearchParams(this.router['location']?._platformLocation?.location?.search);\n\t\tif (currentUrl !== `${this.router['location']?._platformLocation?.location?.origin}/`)\n\t\t{\n\t\t\tif(this.router['location']?._platformLocation?.location?.pathname.includes(skipAuthUrls) ) \n\t\t\t{\n\t\t\t\tconst originValue = searchParams.get('metadata'); \n\t\t\t\tif(originValue)\n\t\t\t\t{\n\t\t\t\t\tlocalStorage.setItem('queryData', originValue );\n\t\t\t\t}\n\t\t\t\tthis.router.navigate([this.router['location']?._platformLocation?.location?.pathname]);\n\t\t\t}\n\t\t\telse \n\t\t\t{\n\t\t\t\tconst emailValue = searchParams.get('email');\n\t\t\t\tif(emailValue) \n\t\t\t\t{\n\t\t\t\t\tconst decodedEmail = decodeURIComponent(atob(emailValue));\n\t\t\t\t\tthis.checkNewimpersonation(decodedEmail);\n\t\t\t\t\tthis.localStorageService.setRedirectedUser(decodedEmail);\n\t\t\t\t}\n\n\t\t\t\tlocalStorage.setItem('inboudUrl', this.router['location']?._platformLocation?.location?.pathname);\n\t\t\t this.router.navigate(['auth']);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.isLandingPage = true;\n\t\t}\n\t\tthis.loadWalkMeScript();\n\t\tif(this.isLandingPage)\n\t\t{\n\t\t\tthis.loadZendeskChat();\n\t\t}\n\n\t\tthis.loggerService.log(\n\t\t\t`App initialized @ ${this.environmentRef.env.toUpperCase()}`\n\t\t);\n\n\t\tthis.router.events.pipe(\n\t\t\tfilter(event => event instanceof NavigationEnd)\n\t\t).subscribe(() =>\n\t\t{\n\t\t\tconst route = this.getChild(this.activatedRoute);\n\t\t\troute.data.subscribe(((data: Data) =>\n\t\t\t {\n\t\t\t\tthis.titleService.setTitle(data['title']);\n\t\t\t}));\n\t\t});\n\t\tthis.router.events.subscribe((event) => \n\t\t{\n\t\t\tif (!(event instanceof NavigationEnd)) \n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\twindow.scrollTo(0, 0);\n\t\t});\n\t\tthis.getUnreadMessages();\t\t\n\t}\n\tgetChild(activatedRoute: ActivatedRoute): ActivatedRoute\n\t{\n\t\tif (activatedRoute.firstChild)\n\t\t{\n\t\t\treturn this.getChild(activatedRoute.firstChild);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn activatedRoute;\n\t\t}\n\n\t}\n\n\tcheckNewimpersonation(email:string)\n\t{\n\t\tconst redirectedUser = this.localStorageService.getImpersonateUser();\n\t\tconst parsedData = JSON.parse(redirectedUser as string);\n\t\tif(parsedData?.email as string !== email)\n\t\t{\n\t\t\tthis.localStorageService.setCustomerToDashboard('false');\n\t\t\tthis.sharedUtilService.isCustomerSupportSession$.next(false);\n\t\t\tthis.localStorageService.removeImpersonateUser();\n\t\t\tthis.localStorageService.setUserName('');\n\t\t}\n\t}\n\tloadWalkMeScript() \n\t{\n\t\tconst requiredWalkMeScriptDetails = {\n\t\t\tid: 'walkme',\n\t\t\tsrc: this.environmentRef.appWalkmeUrl,\n\t\t\ttype: 'text/javascript'\n\t\t};\n\t\tthis.renderExternalScript(requiredWalkMeScriptDetails);\n\t}\n\n\tzendeskChatBot() \n\t{\n\t\tconst requiredZendeskScriptDetails = {\n\t\t\tid: 'ze-snippet',\n\t\t\tsrc: this.environmentRef.zendeskChatbotUrl\n\t\t};\n\t\tthis.renderExternalScript(requiredZendeskScriptDetails);\n\t}\n\n\trenderExternalScript(externalScript : any) \n\t{\n\t\tconst script = document.createElement('script');\n\t\tscript.src = externalScript.src;\n\t\tscript.id = externalScript.id;\n\t\tscript.type = 'text/javascript';\n\t\tscript.async = true;\n\t\tdocument.head.appendChild(script);\n\t}\n\n\tloadZendeskChat(): void \n\t{\n\t\ttry\n\t\t{\n\t\t\tthis.apiService.getZendeskToken().subscribe(response => \n\t\t\t{\n\t\t\t const zentoken = response.data;\n\t\t\t\t(window as any)['zE']('messenger', 'loginUser',\n\t\t\t\t\tfunction(callback: any) \n\t\t\t\t\t{\n\t\t\t\t\t\tcallback(zentoken.token);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\t\tcatch (error)\n\t\t{\n\t\t\tthis.loggerService.log('error while logging in user', error);\n\t\t}\n\t }\n\n\topenChatBot() \n\t{\n\t\ttry \n\t\t{\n\t\t\t(window as any)['zE']('messenger', 'open');\n\t\t\tthis.unreadMessageCount = 0;\n\t\t} \n\t\tcatch (err) \n\t\t{\n\t\t\tthis.loggerService.log('error in opening the chatbot', err);\n\t\t}\n\t\tthis.getUnreadMessages();\n\t}\n\tgetUnreadMessages () \n\t{\n\t\tconst that = this;\n\t\ttry \n\t\t{\n\t\t \t(window as any)['zE']('messenger:on', 'unreadMessages', (count: number) =>\n\t\t\t{\n\t\t\t\tthat.unreadEventInitiationTry = 0;\n\t\t\t\tthis.updateCount(count);\n\t\t \t});\n\t\t}\n\t\tcatch (err) \n\t\t{\n\t\t \tthis.unreadEventInitiationTry = this.unreadEventInitiationTry + 1;\n\t\t \tif (this.unreadEventInitiationTry < 5) \n\t\t\t{\n\t\t\t\tsetTimeout(this.getUnreadMessages, 1000);\n\t\t \t}\n\t\t}\n\t}\n\n\tupdateCount(count: number) \n\t{\n\t\tthis.unreadMessageCount = count;\n\t}\n\n}\n\n\n","import { ShellFactory } from './components/shell/shell.factory';\nimport { AppState } from './definitions/app.interface';\n\nexport class AppFactory \n{\n\tpublic static buildAppState(): AppState \n\t{\n\t\treturn {\n\t\t\tshell: ShellFactory.buildState()\n\t\t};\n\t}\n}\n","import { AuthState } from './definitions';\n\nexport class AuthFactory\n{\n\tpublic static buildState(): AuthState\n\t{\n\t\treturn {\n\t\t\ttncUpdated: false,\n\t\t\tprivacyPolicyUpdated: false,\n\t\t\tuserId: '',\n\t\t\tfirstName: '',\n\t\t\tlastName: '',\n\t\t\tadminEmailId: '',\n\t\t\temail: '',\n\t\t\tcontactGRID: '',\n\t\t\tcontactID: '',\n\t\t\tphoneNumber: '',\n\t\t\troles: [\n\t\t\t\t''\n\t\t\t],\n\t\t\tcustomerIds: [\n\t\t\t\t'',\n\t\t\t\t''\n\t\t\t],\n\t\t\tlocations: [],\n\t\t\ttopLevelGrid: ''\n\t\t\t\n\t\t};\n\t};\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ApiService } from './api.service';\nimport { HttpClientModule } from '@angular/common/http';\nimport { LoggerServiceModule } from '../logger/logger.module';\nimport { LocalStorageServiceModule } from '../local-storage/local-storage.module';\n\n@NgModule({\n\tdeclarations: [],\n\timports: [ CommonModule, HttpClientModule, LoggerServiceModule, LocalStorageServiceModule ],\n\texports: [],\n\tproviders: [ApiService]\n})\nexport class ApiServiceModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AuthComponent } from './auth.component';\nimport { AuthService } from './auth.service';\nimport { ApiServiceModule } from '../../services/api/api.module';\nimport { KngLoaderModule } from 'kinetic-angular';\nimport { LoggerServiceModule } from '../../services/logger/logger.module';\n\n@NgModule({\n\tdeclarations: [AuthComponent],\n\timports: [ CommonModule, ApiServiceModule, KngLoaderModule, LoggerServiceModule ],\n\texports: [AuthComponent],\n\tproviders: [AuthService]\n})\nexport class AuthModule {}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { BehaviorSubject, Observable, catchError, forkJoin, map, of } from 'rxjs';\nimport {\n\tAppConstants,\n\texpAppConstants\n} from '../../constants/portal-constants';\nimport { ApiResponse } from '../../definitions/api-response.interface';\nimport { ApiService } from '../../services/api/api.service';\nimport {\n\tUserRegistrationStatus\n} from '../../services/api/definitions';\nimport { LocalStorageService } from '../../services/local-storage/local-storage.service';\nimport { LoggerService } from '../../services/logger/logger.service';\nimport { ApplicationPath, ErrorMessage } from '../../services/shared/shared-enums';\nimport { SharedUtilService } from '../../services/shared/shared-util.service';\nimport { SharedService } from '../../services/shared/shared.service';\nimport { AuthFactory } from './auth.factory';\nimport {\n\tAuthState, ProfileLocation, RoutingFunction, TMHCorporateAdminAuthState } from './definitions';\nimport { SharedApiService } from '../../services/shared/shared-api-call.service';\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class AuthService\n{\n\ttnc: boolean = false;\n\tprivate state$: BehaviorSubject = new BehaviorSubject(\n\t\tAuthFactory.buildState()\n\t);\n\tget state(): AuthState\n\t{\n\t\treturn this.state$.value;\n\t}\n\tget stateChanged(): Observable\n\t{\n\t\treturn this.state$.asObservable();\n\t}\n\tuserName = '';\n\tuser:AuthState= AuthFactory.buildState();\n\tconstructor(\n\t\tprivate apiService: ApiService,\n\t\tprivate router: Router,\n\t\tprivate sharedApiService: SharedApiService,\n\t\tprivate loggerService: LoggerService,\n\t\tprivate localStorageService: LocalStorageService,\n\t\tprivate sharedService: SharedService,\n\t\t\n\t\t@Inject(expAppConstants) readonly appConstantsRef: AppConstants,\n\t\tprivate sharedUtilService: SharedUtilService\n\t) \n\t{ }\n\n\tpublic updateState(value: AuthState): void\n\t{\n\t\tthis.state$.next(value);\n\t}\n\n\tpublic async redirectBasedOnUserRegistrationStatus(): Promise\n\t{\n\t\ttry\n\t\t{\n\t\t\tconst status: ApiResponse = await this.getUserRegistrationStatus();\n\n\t\t\tconst responseObject = status.data;\n\t\t\tresponseObject.registrationStatus = this.isPendingBusinessAccountApproval(responseObject) ? 'pending_business_approval' : responseObject.registrationStatus;\n\t\t\tconst routingFunction: RoutingFunction | undefined = this.sharedUtilService.getRoutingFunction(responseObject);\n\t\t\tthis.handleUserBasedOnStatus(responseObject, routingFunction);\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tcatch (error: any)\n\t\t{\n\t\t\tthis.redirectOnError(error);\n\t\t}\n\t}\n\n\tprivate handleUserBasedOnStatus(responseObject: UserRegistrationStatus, routingFunction: RoutingFunction | undefined): void \n\t{\n\t\tconst isTmhCustomerSupportRole = this.localStorageService.getCustomerToDashboard();\n\t\tthis.sharedUtilService.isCustomerSupportSession$.next(isTmhCustomerSupportRole);\n\t\tthis.handleCustomerNavigation(responseObject, isTmhCustomerSupportRole);\n\t\tif (this.sharedUtilService.isTmhCorporateAdminUser(responseObject, isTmhCustomerSupportRole)) \n\t\t{\n\t\t\tthis.handleTmhCorporateAdminUser(routingFunction);\n\t\t}\n\t\telse if (this.sharedUtilService.isCustomerSupportUser(responseObject, isTmhCustomerSupportRole) ) \n\t\t{\n\t\t\tthis.handleCustomerSupportUser(routingFunction);\n\t\t}\n\t\telse if (this.isNonTmhCorporateAdmin(responseObject) || isTmhCustomerSupportRole ) \n\t\t{\n\t\t\tthis.handleNonTmhCorporateAdminUser(routingFunction);\n\t\t}\n\t\telse if (routingFunction !== undefined) \n\t\t{\n\t\t\tthis.handleRoutingFunction(responseObject, routingFunction);\n\t\t}\n\t}\n\n\tprivate handleTmhCorporateAdminUser(routingFunction: RoutingFunction | undefined): void \n\t{\n\t\tthis.localStorageService.setItems('isTmhCorporateAdmin', 'true');\n\t\tthis.sharedUtilService.isTmhCorporateAdmin = true;\n\t\tthis.getLoggedInTmhCorporateAdminDetails(routingFunction);\n\t}\n\t\n\tprivate handleCustomerSupportUser(routingFunction: RoutingFunction | undefined): void \n\t{\n\t\tthis.localStorageService.setItems('isTmhCustomerSupportRole', 'true');\n\t\tthis.sharedUtilService.isTmhCustomerSupportRole = true;\n\t\tthis.getLoggedInTmhCustomerSupportDetails(routingFunction);\n\t}\n\t\n\tprivate handleNonTmhCorporateAdminUser(routingFunction: RoutingFunction | undefined): void \n\t{\n\t\tthis.localStorageService.setItems('isPortalUser', 'true');\n\t\tthis.getLoggedInUserDetails(routingFunction);\n\t\tthis.sharedUtilService.isLoggedInUserPresent();\n\t}\n\t\n\tprivate handleRoutingFunction(responseObject: UserRegistrationStatus, routingFunction: RoutingFunction): void \n\t{\n\t\tthis.sharedUtilService.handlePendingAndNotApprovedState(responseObject);\n\t\tthis.sharedUtilService.handleRoutingFunction(routingFunction, this.router);\n\t}\n\n\tisPendingBusinessAccountApproval(responseObject: UserRegistrationStatus)\n\t{\n\t\treturn (responseObject.hasOwnProperty('registrationStatus') && responseObject.registrationStatus === 'pending_approval' && responseObject.orgAdminPending);\n\t}\n\n\tisNonTmhCorporateAdmin(responseObject: UserRegistrationStatus)\n\t{\n\t\treturn (responseObject.hasOwnProperty('registrationStatus') && responseObject.registrationStatus === 'approved' && !this.sharedUtilService.isTmhCorporateAdminUser(responseObject));\n\t}\n\n\tprivate redirectOnError(error: HttpErrorResponse)\n\t{\n\t\tconst errorMessage =\n\t\t\terror?.error?.statusCode === 401\n\t\t\t\t? error.error.message\n\t\t\t\t: this.appConstantsRef.messages.filter(\n\t\t\t\t\t(x) => x.category === 'Error' && x.tags.includes('default')\n\t\t\t\t)[0]?.value;\n\t\tthis.sharedUtilService.triggerErrorService(errorMessage, error?.error?.statusCode, error?.error?.id);\n\t\tthis.sharedService.navigateMethod(this.router, ApplicationPath.unAuthError);\n\t}\n\n\tprivate async getUserRegistrationStatus(): Promise\n\t{\n\t\ttry\n\t\t{\n\t\t\treturn await this.apiService.getUserRegistrationStatus();\n\t\t}\n\t\tcatch (error)\n\t\t{\n\t\t\tthis.loggerService.log('Error redirecting to logout', error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tgetLoggedInUserDetails(routingFunction : RoutingFunction | undefined)\n\t{\n\t\tforkJoin([ this.apiService.getLoggedInUserObs().pipe(this.handleRequest().bind(this)), this.apiService.getLoggedInUserLocations().pipe(this.handleRequest().bind(this)) ]).subscribe({ next: (res)=>\n\t\t{\n\t\t\tif(res[0] && res[1])\n\t\t\t{\n\t\t\t\tconst user = (res[0]?.data);\n\t\t\t\tthis.user = user;\n\t\t\t\tthis.localStorageService.setLoggedInUser(this.localStorageService.striginifyJSON(user));\n\n\t\t\t\tconst locations:ProfileLocation = (res[1]?.data);\n\t\t\t\tthis.localStorageService.setLoggedInUserLocation(this.localStorageService.striginifyJSON(locations));\n\n\t\t\t\tif(this.localStorageService.getLoggedInUser() && this.localStorageService.getLoggedInUserLocation())\n\t\t\t\t{\n\t\t\t\t\tthis.sharedUtilService.handleRoutingFunction(routingFunction, this.router);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.handleCommonError(ErrorMessage.commonError, 100, '401');\n\t\t\t}\n\t\t}\n\t\t});\n\t}\n\n\tgetLoggedInTmhCorporateAdminDetails(routingFunction : RoutingFunction | undefined)\n\t{\n\t\tthis.apiService.getLoggedInTmhCorporateAdminDetails().pipe(this.handleRequest().bind(this)).subscribe({ next: (res)=>\n\t\t{\n\t\t\tif(res)\n\t\t\t{\n\t\t\t\tconst user = (res.data);\n\t\t\t\tthis.sharedApiService.mapTmhCorporateAdminUserSession(user);\n\n\t\t\t\tif(this.localStorageService.getTmhCorporateAdminDetails())\n\t\t\t\t{\n\t\t\t\t\tthis.sharedUtilService.handleRoutingFunction(routingFunction, this.router);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.handleCommonError(ErrorMessage.commonError, 100, '401');\n\t\t\t}\n\t\t}\n\t\t});\n\t}\n\tgetLoggedInTmhCustomerSupportDetails(routingFunction : RoutingFunction | undefined)\n\t{\n\t\tthis.apiService.getLoggedInTmhCustomerSupportDetails().pipe(this.handleRequest().bind(this)).subscribe({ next: (res)=>\n\t\t{\n\t\t\tif(res)\n\t\t\t{\n\t\t\t\tconst user = (res.data);\n\t\t\t\tthis.sharedApiService.mapTmhCustomerSupportUserSession(user);\n\n\t\t\t\tif(this.localStorageService.getTmhCustomerSupportDetails())\n\t\t\t\t{\n\t\t\t\t\tthis.sharedUtilService.handleRoutingFunction(routingFunction, this.router);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.handleCommonError(ErrorMessage.commonError, 100, '401');\n\t\t\t}\n\t\t}\n\t\t});\n\t}\n\n\thandleRequest() \n\t{\n\t\treturn function (observable: Observable) \n\t\t{\n\t\t\treturn observable.pipe(\n\t\t\t map((result) => \n\t\t\t\t{\n\t\t\t\t\treturn result;\n\t\t\t }),\n\t\t\t catchError(() => \n\t\t\t\t{\n\t\t\t\t\treturn of(null);\n\t\t\t\t})\n\t\t\t);\n\t\t };\n\t}\n\thandleCommonError(status: string, statusCode: number, id:string)\n\t{\n\t\tthis.sharedUtilService.triggerErrorService(status, statusCode, id);\n\t\tthis.sharedService.navigateMethod(this.router, ApplicationPath.authError);\n\t}\n\n\thandleCustomerNavigation(responseObject: UserRegistrationStatus, isInSession: boolean)\n\t{\n\t\tif(this.sharedUtilService.isCustomerSupportUser(responseObject, false) && isInSession)\n\t\t{\n\t\t const impersonateUser = this.localStorageService.getImpersonateUser();\n\t\t\tif(impersonateUser === null || impersonateUser === undefined)\n\t\t\t{\n\t\t\t\tthis.localStorageService.setCustomerToDashboard('false');\n\t\t\t\tthis.localStorageService.removeImpersonateUser();\n\t\t\t\tthis.localStorageService.setUserName('');\n\t\t\t\tthis.sharedService.navigateMethod(this.router, 'app/customer-support');\n\t\t\t\tthis.sharedUtilService.isCustomerSupportSession$.next(false);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n}\n","import {\n\tComponent,\n\tInput,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tEventEmitter\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { Auth, AuthState } from './definitions';\nimport { AuthService } from './auth.service';\nimport { KngLoaderState } from 'kinetic-angular';\nimport { LoggerService } from '../../services/logger/logger.service';\nimport { Icons } from '../../services/shared/shared-enums';\n\n@Component({\n\tselector: 'tmhna-portal-auth',\n\ttemplateUrl: './template/auth.component.html'\n})\nexport class AuthComponent implements Auth, OnInit, OnDestroy \n{\n\tprivate subscriptions: Subscription = new Subscription();\n\tloaderState: KngLoaderState = {\n\t\timagePath: Icons.loaderOrange\n\t};\n @Input() set state(value: AuthState) \n\t{\n\t\tthis.service.updateState(value);\n\t}\n get state(): AuthState \n {\n \treturn this.service.state;\n }\n\n @Output() stateChanged: EventEmitter =\n \tnew EventEmitter();\n\n constructor(private service: AuthService, private loggerService: LoggerService) {}\n\n async ngOnInit(): Promise \n {\n \tthis.initSubscriptions();\n \ttry \n \t{\n \t\tawait this.service.redirectBasedOnUserRegistrationStatus();\n \t}\n \tcatch (error) \n \t{\n \t\tthis.loggerService.log('Error redirecting based on status', error);\n \t\tthrow error;\n \t}\n }\n\n private initSubscriptions(): void \n {\n \tconst stateChangeSubs: Subscription = this.service.stateChanged.subscribe(\n \t\t(next: AuthState) => this.stateChanged.emit(next)\n \t);\n \tthis.subscriptions.add(stateChangeSubs);\n }\n\n private destroySubscriptions(): void \n {\n \tthis.subscriptions.unsubscribe();\n }\n\n ngOnDestroy(): void \n {\n \tthis.destroySubscriptions();\n }\n}\n","
\n \n
\n","
\n {{state?.image?.altText}}\n

\n {{ message.message }}\n

\n \n
\n","import {\n\tComponent,\n\tInput,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tEventEmitter\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { CommonError, CommonErrorState } from './definitions';\nimport { CommonErrorService } from './common-error.service';\nimport { AnalyticsService } from '../../services/analytics/analytics.service';\nimport { LocalStorageService } from '../../services/local-storage/local-storage.service';\nimport { Router } from '@angular/router';\nimport { ApplicationPath } from '../../services/shared/shared-enums';\n\n@Component({\n\tselector: 'tmhna-portal-common-error',\n\ttemplateUrl: './template/common-error.component.html',\n\tstyleUrls: ['./template/common-error.component.scss']\n})\nexport class CommonErrorComponent implements CommonError, OnInit, OnDestroy \n{\n\tprivate subscriptions: Subscription = new Subscription();\n\terrorMessage: string = '';\n @Input() set state(value: CommonErrorState) \n\t{\n\t\tthis.service.updateState(value);\n\t}\n get state(): CommonErrorState \n {\n \treturn this.service.state;\n }\n get isTmhCorporateAdmin(): boolean\n {\n \treturn this.localStorageService.getTmhCorporateAdminDetails() !== null;\n }\n @Output() stateChanged: EventEmitter =\n \tnew EventEmitter();\n\n constructor(private service: CommonErrorService, private analyticsService: AnalyticsService, private localStorageService: LocalStorageService, private router: Router) \n {\n \tthis.isValidUser();\n }\n\n ngOnInit(): void \n {\n \tthis.initSubscriptions();\n \tthis.analyticsService.trackByEvent({\n \t\tevent: 'errorPage',\n \t\tpage: {\n \t\t\tname: 'error'\n \t\t},\n \t\terror: {\n \t\t\tmessage: this.state.messages.map(message => message.message).join('. ')\n \t\t}\n \t});\n }\n ngOnDestroy(): void \n {\n \tthis.destroySubscriptions();\n }\n\n private initSubscriptions(): void \n {\n \tconst stateChangeSubs: Subscription = this.service.stateChanged.subscribe(\n \t\t(next: CommonErrorState) =>\n \t\t{\n \t\t\tthis.stateChanged.emit(next);\n \t\t} \n \t);\n \tthis.subscriptions.add(stateChangeSubs);\n }\n private destroySubscriptions(): void \n {\n \tthis.subscriptions.unsubscribe();\n }\n isValidUser()\n {\n \tif(this.router.url.includes(ApplicationPath.authError))\n \t{\n \t\tPromise.all([ this.localStorageService.getItems('isTmhCorporateAdmin'), this.localStorageService.getItems('isPortalUser') ]).then((values) => \n \t\t{\n \t\t\tif(values[0] !== 'true' && values[1] !== 'true')\n \t\t\t{\n \t\t\t\tthis.router.navigate([ApplicationPath.authentication]);\n \t\t\t}\n \t\t});\n \t}\n }\n}\n","import { CommonErrorState } from './definitions';\n\nexport class CommonErrorFactory \n{\n\tpublic static build(): CommonErrorState \n\t{\n\t\treturn {\n\t\t\tmessages: [{ message: '401 Unauthorized' }],\n\t\t\tid: '9e42775d-7ea0-4dc0-ab16-7fb9d013ac31',\n\t\t\tstatusCode: 401,\n\t\t\timage: {\n\t\t\t\ticonPath: '/assets/401_Unauthorized.png',\n\t\t\t\taltText: '401 Unauthorized'\n\t\t\t}\n\t\t};\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { CommonErrorFactory } from './common-error.factory';\nimport { CommonErrorState } from './definitions';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class CommonErrorService \n{\n\tprivate state$: BehaviorSubject =\n\t\tnew BehaviorSubject(CommonErrorFactory.build());\n\tget state(): CommonErrorState \n\t{\n\t\treturn this.state$.value;\n\t}\n\tget stateChanged(): Observable \n\t{\n\t\treturn this.state$.asObservable();\n\t}\n\n\tpublic updateState(value: CommonErrorState): void \n\t{\n\t\tthis.state$.next(value);\n\t}\n}\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CommonErrorComponent } from './common-error.component';\nimport { CommonErrorService } from './common-error.service';\n\n@NgModule({\n\tdeclarations: [CommonErrorComponent],\n\timports: [CommonModule],\n\texports: [CommonErrorComponent],\n\tproviders: [CommonErrorService]\n})\nexport class CommonErrorModule {}\n","import { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { InviteUsersComponent } from './invite-users.component';\nimport { KngLoaderModule, ModalModule, KngButtonModule } from 'kinetic-angular';\nimport { KngUploadFileModule } from 'projects/kinetic-angular/src/lib/components/upload-file';\nimport { ToastrModule } from 'ngx-toastr';\nimport { InviteUsersService } from './invite-users.service';\nimport { CommonModule } from '@angular/common';\n@NgModule({\n\tdeclarations: [\n\t\tInviteUsersComponent\n\t],\n\timports: [ \n\t\tCommonModule,\n\t\tFormsModule,\n\t\tKngButtonModule,\n\t\tReactiveFormsModule,\n\t\tModalModule,\n\t\tKngLoaderModule,\n\t\tKngUploadFileModule,\n\t\tToastrModule.forRoot({\n\t\t\ttimeOut: 3000,\n\t\t\tpositionClass: 'toast-top-right',\n\t\t\ttoastClass: 'kng-toast toast-container ngx-toastr',\n\t\t\tenableHtml: true,\n\t\t\tcloseButton: true,\n\t\t\ttapToDismiss: true,\n\t\t\tpreventDuplicates: true\n\t\t})\n\t],\n\texports: [\n\t\tInviteUsersComponent\n\t],\n\tproviders: [\n\t\tInviteUsersService\n\t]\n})\nexport class InviteUserModule {}\n","
\n
\n
\n

\n {{ !isBulkUsers ? state.pageHeading : state.bulkInvite }}\n

\n
\n\n
\n
{{state.description}} {{state.externalLink.label}}
\n
\n \n \n
\n
\n
\n
{{state.messageTitle}}
\n
{{state.messageDescription}}
\n {{state.link.downloadButton}}\n
\n\n \n\n
\n
\n

{{uploadLimit}}\n {{uploadLimitText}}\n

\n
\n\n
\n \n
\n \n
\n \n \n
\n
\n\n
\n
","import { Component, ViewChild, Input, OnInit, Output, EventEmitter } from '@angular/core';\nimport { KngButtonState } from 'kinetic-angular';\nimport { KngUploadFileComponent, ErrorMessageHeading, ErrorMessageSubHeading } from 'projects/kinetic-angular/src/lib/components';\nimport { InviteUsersService } from './invite-users.service';\nimport { InviteUserState } from './definitions';\nimport { ApplicationPath } from '../../services/shared/shared-enums';\nimport { SharedService } from '../../services/shared/shared.service';\nimport { Router } from '@angular/router';\nimport { uploadLimitText, uploadLimit } from '../../services/shared/shared-constants';\nimport * as XLSX from 'xlsx';\n\n@Component({\n\tselector: 'tmhna-portal-invite-users',\n\ttemplateUrl: './invite-users.component.html',\n\tstyleUrls: ['./invite-users.component.scss']\n})\n\nexport class InviteUsersComponent implements OnInit\n{\t\n\t\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tfileToUpload: File | any = null;\n\t@Input() isBulkUsers: boolean = false;\n\t@ViewChild(KngUploadFileComponent, { static: false }) fileUploadComponent: | KngUploadFileComponent | undefined;\n\tfileUploadLoader!: boolean;\n\tuploadLimitText:string = uploadLimitText;\n\tuploadLimit:string = uploadLimit;\n\t@Output() setIsDirty: EventEmitter = new EventEmitter();\n\t@Input() set state(value: InviteUserState)\n\t{\n\t\tthis.service.updateState(value);\n\t}\n\tget state(): InviteUserState\n\t{\n\t\treturn this.service.state;\n\t}\n\tget downloadButtonState(): KngButtonState \n\t{\n\t\treturn this.service.downloadButtonState;\n\t}\n\tget sendInviteButtonState(): KngButtonState \n\t{\n\t\treturn this.service.sendInviteButtonState;\n\t}\n\tget linkButtonState():KngButtonState\n\t{\n\t\treturn this.service.linkButtonState;\n\t}\n\tget submitButtonState(): KngButtonState \n\t{\n\t\treturn this.service.submitButtonState;\n\t}\n\tget cancelButtonState(): KngButtonState \n\t{\n\t\treturn this.service.cancelButtonState;\n\t}\n\tconstructor(public service: InviteUsersService, private readonly sharedService:SharedService, private readonly router: Router) \n\t{}\n\t\n\tngOnInit(): void \n \t{\n\t\tthis.service.submitButtonState.disabled = true;\n\t\tthis.service.sendInviteButtonState.disabled = true;\n\t\t\n \tthis.service.getInviteUsersLabelState(this.isBulkUsers);\n\t\tthis.service.castFileUploadStatus.subscribe((fileUploadStatus : string) => \n\t\t{\n\t\t\tif(fileUploadStatus !== '' || fileUploadStatus !== undefined) \n\t\t\t{\n\t\t\t\tthis.replaceFileEventEmitter();\n\t\t\t\tthis.fileUploadLoader = false;\n\t\t\t}\n\t\t});\n\t\tthis.resetUploadForm();\n\t}\n\tresetUploadForm()\n\t{\n\t\tif(this.fileUploadComponent)\n\t\t\tthis.fileUploadComponent.files = [];\n\t\tthis.state.responseMessage = '';\n\t\tthis.service.submitButtonState.disabled = true;\n\t\tthis.state.messageTitle = '';\n\t\tthis.state.messageDescription = '';\n\t\tthis.state.link.downloadButton = '';\n\t}\n\n\tdownloadLocationTemplate()\n\t{\n\t\tthis.service.getInviteUserLocationDownload(this.isBulkUsers);\n\t}\n\tlinkDownloadTemplate()\n\t{\t\n\t\tthis.service.linkXLXSDownload(this.isBulkUsers);\n\t}\n\tsubmitLocationTemplate()\n\t{\n\t\tthis.fileUploadLoader = true;\n\t\tthis.service.getInviteUserSubmitButton(this.fileToUpload, this.isBulkUsers);\n\t}\n\tuploadFileServerValidation(item: File)\n\t{\t\n\t\tthis.service.checkServerValidationUploadFile(item, this.isBulkUsers);\n\t}\n\treplaceFileEventEmitter()\n\t{\n\t\tif(this.fileUploadComponent)\n\t\t\tthis.fileUploadComponent.files = [];\n\t}\n\tfileValidationCheck(item: File)\n\t{\n\t\tconst fileNameArr = item.name.split('.');\n \tconst extension = fileNameArr.pop();\n\t\tthis.setIsDirty.emit(true);\n \tconst fileName = fileNameArr.join('.');\n\t\tif(fileNameArr.length !== 1 || fileName.trim().length === 0 || fileName.includes('/') || /\\\\/.exec(fileName) || extension !=='xlsx') \n\t\t{\n\t\t\tthis.service.uploadFileState.errorHeading = ErrorMessageHeading.uploadFailed;\n\t\t\tthis.service.uploadFileState.errorSubHeading = ErrorMessageSubHeading.wrongFormat;\n\t\t\tthis.service.sendInviteButtonState.disabled = true;\n\t\t\tthis.service.submitButtonState.disabled = true;\n\t\t\tthis.emptyUploadFilesArray();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.checkOtherFileValidation(item);\n\t\t}\n\t}\n\tcheckOtherFileValidation(item: File)\n\t{\n\t\tconst fileSize = Math.round((item.size / 1024));\n\t\tvar file = item;\n\t\tvar reader = new FileReader();\n\t\treader.onload = (e) => \n\t\t{\n\t\t\tthis.service.uploadFileState.fileUploadLoader = true;\n\t\t\tconst target = e.target as FileReader;\n\t\t\tconst data = new Uint8Array(target.result as ArrayBuffer || []);\n\t\t\tconst workbook = XLSX.read(data, { type: 'array' });\n\t\t\tconst firstSheetName = workbook.SheetNames[0];\n\t\t\tconst worksheet = workbook.Sheets[firstSheetName];\n\t\t\tconst jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1 }) as unknown[][];\n\n\t\t\tif (jsonData.length === 0 || (jsonData.length === 1 && jsonData[0].length === 0)) \n\t\t\t{\n\t\t\t\tthis.service.uploadFileState.errorHeading = ErrorMessageHeading.emptyFile;\n\t\t\t\tthis.service.uploadFileState.errorSubHeading = ErrorMessageSubHeading.emptyFile;\n\t\t\t\tthis.emptyUploadFilesArray();\n\t\t\t\tthis.service.submitButtonState.disabled = true;\n\t\t\t\tthis.service.sendInviteButtonState.disabled = true;\n\t\t\t\tthis.service.uploadFileState.fileUploadLoader = false;\n\t\t\t\treturn;\n\t\t\t} \n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.service.uploadFileState.fileUploadLoader = false;\n\t\t\t\treturn;\n\t\t\t}\n\t\t};\n\t\treader.readAsArrayBuffer(file);\n\t\tif(fileSize > 102400) \n\t\t{\n\t\t\tthis.service.uploadFileState.errorHeading = ErrorMessageHeading.sizeExceed;\n\t\t\tthis.service.uploadFileState.errorSubHeading = ErrorMessageSubHeading.incorrectSize;\n\t\t\tthis.emptyUploadFilesArray();\n\t\t\tthis.service.submitButtonState.disabled = true;\n\t\t\tthis.service.sendInviteButtonState.disabled = true;\n\t\t}\n\t\telse \n\t\t{\n\t\t\tif(this.fileUploadComponent)\n\t\t\t\tthis.fileUploadComponent.files[0] = item;\n\t\t\tthis.service.submitButtonState.disabled = false;\n\t\t\tthis.service.sendInviteButtonState.disabled = false;\n\t\t\tthis.service.uploadFileState.isSuccessClient = true;\n\t\t\tthis.service.uploadFileState.isSuccessServer = false;\n\t\t\tthis.fileToUpload = this.fileUploadComponent?.files[0];\n\t\t}\n\t}\n\temptyUploadFilesArray()\n\t{\n\t\tthis.service.uploadFileState.isError = true;\n\t\tthis.service.uploadFileState.isSuccessClient = false;\n\t\tthis.service.uploadFileState.isSuccessServer = false;\n\t\tif(this.fileUploadComponent)\n\t\t\tthis.fileUploadComponent.files = [];\n\t}\n\tgoBackToUserManagement(): void \n\t{\n\t\tthis.sharedService.navigateMethod(this.router, ApplicationPath.userManagement);\n\t}\n}\n\n","// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const InviteUserConfig = {\n\tmessages: {\n\t\tpartialSuccess: 'Your bulk invite is partially successful',\n\t\tcompleteSuccess: 'Invite sent successfully.',\n\t\tfailure: 'Invites could not be sent for review.',\n\t\tdownloadReport: 'Download Report',\n\t\tpartialSuccessDescription: (successCount: number, res: number, failedCount: number) => \n\t\t\t`${successCount} out of ${res} users have been invited, while ${failedCount} entries had issues. Please review and re-upload the updated file.`,\n\t\tcompleteSuccessDescription: (res: number) => \n\t\t\t`${res} out of ${res} users have been sent for review. Please download the report for details.`,\n\t\tcompleteSuccessDescriptionTMHCorp: (res: number) => \n\t\t\t`${res} out of ${res} users have been invited as per provided. Please download the report for details.`,\n\t\tfailureDescription: 'Invites were not sent due to some errors. Please review and re-upload the updated file.',\n\t\ttoasterSuccessMsg: 'Bulk user invite sent successfully.',\n\t\ttoasterPartialMsg: 'Some invitations failed',\n\t\ttoasterFailMsg: 'User Invite failed',\n\t\tTMHCorpFailure: 'Your bulk user invite has failed',\n\t\tTMHCorpNote: 'Invites failed due to some errors. Please review and re-upload the updated file.'\n\n\t}\n};\n","/* eslint-disable quote-props */\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { ButtonPosition, ButtonSize, ButtonStyle, FileName, Icons } from '../../services/shared/shared-enums';\nimport { SharedUtilService } from '../../services/shared/shared-util.service';\nimport { ErrorMessageHeading, ErrorMessageSubHeading } from 'projects/kinetic-angular/src/lib/components';\nimport { ApiResponse } from '../../definitions/api-response.interface';\nimport { KngUploadFileFactory, KngUploadFileState } from 'projects/kinetic-angular/src/lib/components/upload-file';\nimport { ApiService } from '../../services/api/api.service';\nimport { InviteUserState, UploadFile, UserData } from './definitions';\nimport { InviteUserConfig } from '../invite-users/invite-users.config';\nimport { SharedService } from '../../services/shared/shared.service';\nimport { InviteUsersFactory } from './invite-users.factory';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ToastrService } from 'ngx-toastr';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class InviteUsersService\n{\n\tstate$: BehaviorSubject = new BehaviorSubject(InviteUsersFactory.build());\n\tuploadFileState: KngUploadFileState = KngUploadFileFactory.build();\n\n\tgetFileUploadStatus = new BehaviorSubject('');\n\tcastFileUploadStatus = this.getFileUploadStatus.asObservable();\n\n\tisUploadSuccess: boolean = false;\n\tdownloadTemplateError: boolean = false;\n\n\tfailedCount = 0;\n\ttotalCount = 0;\n\tsubmitButtonState = this.sharedUtilService.getButtonState(ButtonSize.medium, ButtonStyle.primary, '', false, { altText: '', iconPath: '' }, ButtonPosition.right);\n\tsendInviteButtonState = this.sharedUtilService.getButtonState(ButtonSize.medium, ButtonStyle.primary, '', false, { altText: '', iconPath: '' }, ButtonPosition.right);\n\tcancelButtonState = this.sharedUtilService.getButtonState(ButtonSize.medium, ButtonStyle.secondary, '', false, { altText: '', iconPath: '' }, ButtonPosition.left);\n\tdownloadButtonState = this.sharedUtilService.getButtonState(ButtonSize.medium, ButtonStyle.secondary, '', false, { altText: '', iconPath: '' }, ButtonPosition.right);\n\tlinkButtonState= this.sharedUtilService.getButtonState(ButtonSize.medium, ButtonStyle.link, '', false, { altText: '', iconPath: '' }, ButtonPosition.left);\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tsubmitResponse: any;\n\tconstructor(public apiService: ApiService, private readonly toaster: ToastrService, private readonly sharedUtilService: SharedUtilService, public sharedService: SharedService) { }\n\n\tget state(): InviteUserState\n\t{\n\t\treturn this.state$.value;\n\t}\n\tpublic updateState(value: InviteUserState): void\n\t{\n\t\tthis.state$.next(value);\n\t}\n\tpublic getInviteUsersLabelState(isBulkUser:boolean = false): void\n\t{\n\t\tthis.apiService.getInviteUsersAemLabels().subscribe((res) =>\n\t\t{\n\t\t\tif (res)\n\t\t\t{\n\t\t\t\tthis.state.pageHeading = res.pageHeading;\n\t\t\t\tthis.state.bulkInvite = res.bulkInvite;\n\t\t\t\tthis.state.description = res.description;\n\t\t\t\tthis.state.downloadReport = res.downloadReport;\n\t\t\t\tthis.submitButtonState.label =this.sharedService.nullValueHandler(res.submit.downloadButton);\n\t\t\t\tthis.sendInviteButtonState.label =this.sharedService.nullValueHandler(res.sendInvite.downloadButton);\n\t\t\t\tthis.cancelButtonState.label =this.sharedService.nullValueHandler(res.cancel);\n\t\t\t\tthis.downloadButtonState.label =this.sharedService.nullValueHandler(res.download.downloadButton);\n\t\t\t\tthis.mapUploadFilePopup(res.uploadFile, this.uploadFileState);\n\t\t\t\tthis.state.uploadFile.uploadButtons.chooseFile=res.uploadFile.uploadButtons.chooseFile;\n\t\t\t\tthis.state.uploadFile.success.bulkMessage=res.uploadFile.success.bulkMessage;\n\t\t\t\tthis.state.uploadFile.success.inviteSuccess=res.uploadFile.success.inviteSuccess;\n\t\t\t\tthis.state.externalLink.label = this.sharedService.nullValueHandler(res.externalLink.label);\n\t\t\t\tthis.state.externalLink.url = !isBulkUser ? this.sharedService.nullValueHandler(res.externalLink.url) : this.sharedService.nullValueHandler(res.externalLink.userUrl ?? '');\n\t\t\t}\n\t\t});\n\t}\n\tgetFileStatus(newUser: string)\n\t{\n\t\tthis.getFileUploadStatus.next(newUser);\n\t\tthis.uploadFileState.fileUploadLoader = false;\n\t}\n\tcheckServerValidationUploadFile(item: File, isBulkUsers: boolean)\n\t{\n\t\tthis.uploadFileState.isLoading = true;\n\t\tthis.downloadButtonState.disabled = true;\n\t\tconst ele = document.getElementById('kng-modal-close');\n\t\tif (ele)\n\t\t\tele.setAttribute('disabled', 'true');\n\t\tthis.apiService.getInviteUserSubmit(item, isBulkUsers).subscribe({\n\t\t\tnext: (res: ApiResponse) =>\n\t\t\t{\n\t\t\t\tif (res?.data)\n\t\t\t\t{\n\t\t\t\t\tthis.uploadFileState.isLoading = false;\n\t\t\t\t\tthis.isUploadSuccess = true;\n\t\t\t\t\tthis.uploadFileState.isError = false;\n\t\t\t\t\tthis.uploadFileState.isSuccessClient = true;\n\t\t\t\t\tthis.uploadFileState.isSuccessServer = true;\n\t\t\t\t\tif (ele)\n\t\t\t\t\t\tele.removeAttribute('disabled');\n\t\t\t\t\tthis.downloadButtonState.disabled = false;\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: (error: HttpErrorResponse): void =>\n\t\t\t{\n\t\t\t\tthis.handleUploadLocationError(ele, error);\n\t\t\t},\n\t\t\tcomplete: () =>\n\t\t\t{\n\t\t\t\tsetTimeout(() =>\n\t\t\t\t{\n\t\t\t\t\tthis.uploadFileState.isLoading = false;\n\t\t\t\t\tthis.isUploadSuccess = true;\n\t\t\t\t}, 1000);\n\t\t\t}\n\t\t});\n\t}\n\thandleUploadLocationError(ele: HTMLElement | null, error: HttpErrorResponse)\n\t{\n\t\tthis.uploadFileState.isLoading = false;\n\t\tthis.isUploadSuccess = false;\n\t\tthis.uploadFileState.isError = true;\n\t\tthis.uploadFileState.isSuccessClient = true;\n\t\tthis.uploadFileState.isSuccessServer = false;\n\t\tif (ele)\n\t\t\tele.removeAttribute('disabled');\n\t\tthis.downloadButtonState.disabled = false;\n\t\tif (error.error.statusCode === 400)\n\t\t{\n\t\t\tthis.uploadFileState.isSuccessClient = false;\n\t\t\tthis.uploadFileState.errorHeading = ErrorMessageHeading.uploadFailed;\n\t\t\tthis.uploadFileState.errorSubHeading = ErrorMessageSubHeading.templateMismatch;\n\t\t}\n\t\telse if (error.error.statusCode === 403 || 500)\n\t\t{\n\t\t\tthis.uploadFileState.errorHeading = ErrorMessageHeading.uploadFailed;\n\t\t\tthis.uploadFileState.errorSubHeading = ErrorMessageSubHeading.apiError;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.uploadFileState.errorHeading = ErrorMessageHeading.uploadFailed;\n\t\t\tthis.uploadFileState.errorSubHeading = error.error.message;\n\t\t}\n\t}\n\tgetInviteUserLocationDownload(bulkUser: boolean)\n\t{\n\t\tthis.downloadButtonState.disabled = true;\n\t\tthis.apiService.getInviteUserLocationDownload(bulkUser).subscribe({\n\t\t\tnext: (res) =>\n\t\t\t{\n\t\t\t\tthis.sharedService.downloadExcel(FileName.inviteUserTemplate, res);\n\t\t\t\tthis.downloadButtonState.disabled = false;\n\t\t\t\tthis.downloadTemplateError = false;\n\t\t\t},\n\t\t\terror: (error: HttpErrorResponse) =>\n\t\t\t{\n\t\t\t\tthis.downloadTemplateError = true;\n\t\t\t\treturn error;\n\t\t\t}\n\t\t});\n\t}\n\tgetInviteUserSubmitButton(item: File, isBulkUsers: boolean)\n\t{\n\t\tthis.submitButtonState.disabled = true;\n\t\tthis.sendInviteButtonState.disabled = true;\n\t\tthis.uploadFileState.fileUploadLoader = true;\n\t\tthis.state.responseMessage = '';\n\t\tthis.state.messageTitle = '';\n\t\tthis.state.messageDescription = '';\n\t\tthis.state.link.downloadButton = '';\n\t\tthis.apiService.getInviteUserSubmit(item, isBulkUsers).subscribe({\n\t\t\t// eslint-disable-next-line complexity\n\t\t\tnext: (res : ApiResponse) => \n\t\t\t{ \n\t\t\t\tthis.submitResponse= res.data; \n\t\t\t\tif(isBulkUsers){ this.submitResponse.data = res.data; }\n\t\t\t\tthis.state.responseMessage = res.message;\n\t\t\t\tthis.totalCount = this.submitResponse.data.length;\n\t\t\t\tthis.failedCount = 0;\n\t\t\t\tconst successCount:number = this.findCountDetails(this.submitResponse.data, isBulkUsers);\n\t\t\t\tif(this.totalCount > 0 && res.statusCode === 206)\n\t\t\t\t{\n\t\t\t\t\tthis.state.link.downloadButton = InviteUserConfig.messages.downloadReport;\n\t\t\t\t\tthis.state.messageDescription = InviteUserConfig.messages.partialSuccessDescription(successCount, this.totalCount, this.failedCount);\n\t\t\t\t\tthis.state.messageTitle = InviteUserConfig.messages.partialSuccess;\n\t\t\t\t\tthis.toaster.warning(InviteUserConfig.messages.toasterPartialMsg, '', {\n\t\t\t\t\t\ttimeOut: 3000\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(!isBulkUsers && this.totalCount > 0 && res.statusCode === 407)\n\t\t\t\t{\n\t\t\t\t\tthis.state.link.downloadButton = InviteUserConfig.messages.downloadReport;\n\t\t\t\t\tthis.state.messageDescription = InviteUserConfig.messages.partialSuccessDescription(successCount, this.totalCount, this.failedCount);\n\t\t\t\t\tthis.state.messageTitle = InviteUserConfig.messages.partialSuccess;\n\t\t\t\t\tthis.toaster.warning(InviteUserConfig.messages.toasterPartialMsg, '', {\n\t\t\t\t\t\ttimeOut: 3000\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse if(isBulkUsers && this.totalCount > 0 && res.statusCode === 200)\n\t\t\t\t{\n\t\t\t\t\tthis.state.link.downloadButton = InviteUserConfig.messages.downloadReport;\n\t\t\t\t\tthis.state.messageDescription = InviteUserConfig.messages.completeSuccessDescription(successCount);\n\t\t\t\t\tthis.state.messageTitle = InviteUserConfig.messages.completeSuccess;\n\t\t\t\t\tthis.toaster.success(InviteUserConfig.messages.toasterSuccessMsg, '', {\n\t\t\t\t\t\ttimeOut: 3000\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse if(!isBulkUsers && this.totalCount > 0 && res.statusCode === 200)\n\t\t\t\t{\n\t\t\t\t\tthis.state.link.downloadButton = InviteUserConfig.messages.downloadReport;\n\t\t\t\t\tthis.state.messageDescription = InviteUserConfig.messages.completeSuccessDescriptionTMHCorp(successCount);\n\t\t\t\t\tthis.state.messageTitle = InviteUserConfig.messages.completeSuccess;\n\t\t\t\t\tthis.toaster.success(InviteUserConfig.messages.toasterSuccessMsg, '', {\n\t\t\t\t\t\ttimeOut: 3000\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse if(!isBulkUsers)\n\t\t\t\t{\n\t\t\t\t\tthis.state.link.downloadButton = InviteUserConfig.messages.downloadReport;\n\t\t\t\t\tthis.state.messageDescription = InviteUserConfig.messages.TMHCorpNote;\n\t\t\t\t\tthis.state.messageTitle = InviteUserConfig.messages.TMHCorpFailure;\n\t\t\t\t\tthis.toaster.error(InviteUserConfig.messages.toasterFailMsg, '', {\n\t\t\t\t\t\ttimeOut: 3000\n\t\t\t\t\t});\n\t\t\t\t\tthis.uploadFileState.isLoading = false;\n\t\t\t\t}\n\t\t\t\telse if(res.statusCode === 207)\n\t\t\t\t{\n\t\t\t\t\tthis.state.link.downloadButton = InviteUserConfig.messages.downloadReport;\n\t\t\t\t\tthis.state.messageDescription = InviteUserConfig.messages.failureDescription;\n\t\t\t\t\tthis.state.messageTitle = InviteUserConfig.messages.failure;\n\t\t\t\t\tthis.toaster.error(InviteUserConfig.messages.toasterFailMsg, '', {\n\t\t\t\t\t\ttimeOut: 3000\n\t\t\t\t\t});\n\t\t\t\t\tthis.uploadFileState.isLoading = false;\n\t\t\t\t}\n\t\t\t\tthis.getFileStatus(this.state.responseMessage);\n\t\t\t},\n\t\t\terror: (error: HttpErrorResponse) =>\n\t\t\t{\n\t\t\t\tthis.downloadTemplateError = true;\n\t\t\t\tthis.toaster.error(error.error.message, '', {\n\t\t\t\t\ttimeOut: 3000\n\t\t\t\t});\n\t\t\t\tthis.uploadFileState.isLoading = false;\n\t\t\t\tthis.getFileStatus(error.error.message);\n\t\t\t}\n\t\t});\n\t}\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tfindCountDetails(response: any, isBulkUsers: boolean)\n\t{\n\t\tfor(let i = 0; i< response.length; i++)\n\t\t{\n\t\t\tif(!response[i].success && !isBulkUsers)\n\t\t\t{\n\t\t\t\tthis.failedCount += 1;\n\t\t\t}\n\t\t\telse if(!response[i].isValid && isBulkUsers)\n\t\t\t{\n\t\t\t\tthis.failedCount += 1;\n\t\t\t}\n\t\t}\n\t\treturn (response.length - this.failedCount);\n\t}\n\tmapUploadFilePopup(data: UploadFile, uploadFileState: KngUploadFileState)\n\t{\n\t\tuploadFileState.dragDropSection = data.dragDropLabel;\n\t\tuploadFileState.or = data.orLabel;\n\t\tuploadFileState.uploadButtons.chooseFile= data.uploadButtons.chooseFile;\n\t\tuploadFileState.errorImage.altText = data.errorIcon.altText;\n\t\tuploadFileState.successImage.altText = data.successIcon.altText;\n\t\tuploadFileState.dragDropImage.altText = data.onLoadIcon.altText;\n\t\tuploadFileState.errorImage.iconPath = Icons.actionRed;\n\t\tuploadFileState.successImage.iconPath = Icons.checkGreen;\n\t\tuploadFileState.dragDropImage.iconPath = Icons.dragDropIcon;\n\t\tuploadFileState.fileUploadProgressText = data.progressLabel;\n\t}\n\n\tlinkXLXSDownload(bulkUser: boolean)\n\t{\n\t\tlet processedData = this.submitResponse.data ;\n\t\tif(bulkUser)\n\t\t{\n\t\t\tprocessedData = this.submitResponse.data.map((item: UserData) => ({\n\t\t\t\t...item,\n\t\t\t\terrors: item.errors.join('; '),\n\t\t\t\tlocationID: item.locationID?.join('; ')\n\t\t\t }));\n\t\t}\n\t\telse\n\t\t{\n\t\t\t processedData = this.submitResponse.data.map((item: UserData) => ({\n\t\t\t\t...item,\n\t\t\t\terrors: item.errors.join('; '),\n\t\t\t\troles: item.roles.join('; '),\n\t\t\t\tportalApprovedCustomerID: item.portalApprovedCustomerID.join('; '),\n\t\t\t\tlastLogin: JSON.stringify(new Date(item.lastLogin).toLocaleString()),\n\t\t\t\tportalApproveUserDate: JSON.stringify(new Date(item.portalApproveUserDate).toLocaleString()),\n\t\t\t\ttcDate: JSON.stringify(new Date(item?.tcDate as number).toLocaleString()),\n\t\t\t\tprivacyDate: JSON.stringify(new Date(item?.privacyDate as number).toLocaleString())\n\t\t\t }));\n\t\t}\n\t\t\n\t\tthis.sharedService.downloadTableData(FileName.inviteUserTemplate, processedData, bulkUser ? 'bulk' : 'individual');\n\t }\n\n}\n","import { InviteUserState } from './definitions';\nexport class InviteUsersFactory \n{\n\tpublic static build(): InviteUserState \n\t{\n\t\treturn {\n\t\t\tpageHeading: '',\n\t\t\tbulkInvite: '',\n\t\t\tdescription: '',\n\t\t\tdownloadReport: '',\n\t\t\tdownload:\n\t\t\t{\n\t\t\t\tdownloadButton: '',\n\t\t\t\terrorMessage: ''\n\t\t\t},\n\t\t\tsendInvite:\n\t\t\t{\n\t\t\t\tdownloadButton: '',\n\t\t\t\terrorMessage: ''\n\t\t\t},\n\t\t\tcancel: '',\n\t\t\texternalLink: {\n\t\t\t\tlabel: '',\n\t\t\t\turl: ''\n\t\t\t},\n\t\t\tsubmit:\n\t\t\t{\n\t\t\t\tdownloadButton: '',\n\t\t\t\terrorMessage: ''\n\t\t\t},\n\t\t\tlink:\n\t\t\t{\n\t\t\t\tdownloadButton: '',\n\t\t\t\terrorMessage: ''\n\t\t\t},\n\t\t\tmessageDescription: '',\n\t\t\tmessageTitle: '',\n\t\t\tuploadFile: {\n\t\t\t\tonLoadIcon: { iconPath: '', altText: '' },\n\t\t\t\terrorIcon: { iconPath: '', altText: '' },\n\t\t\t\tsuccessIcon: { iconPath: '', altText: '' },\n\t\t\t\tdragDropLabel: '',\n\t\t\t\tprogressLabel: '',\n\t\t\t\torLabel: '',\n\t\t\t\tuploadButtons: {\n\t\t\t\t\tchooseFile: ''\n\t\t\t\t},\n\t\t\t\tsuccess: {\n\t\t\t\t\tinviteSuccess: '',\n\t\t\t\t\tbulkMessage: ''\n\t\t\t\t}\n\t\t\t},\n\t\t\tresponseMessage: ''\n\t\t};\n\t}\n}\n\n","import { Address, KngButtonState, PageInfo, SortOrder } from 'kinetic-angular';\nimport { FilterData, FilterPanelSection, Image, LocationAddress, NoResultModel, PromoBannerApiResponse } from '../../../services/shared/shared-interface';\n\nexport interface MyQuotes {\n state: MyQuotesState;\n}\nexport interface MyQuotesState {\n sectionTop: MyQuotesSectionTop;\n sectionMiddle: MyQuotesSectionMiddle;\n sectionBottom: MyQuotesSectionBottom;\n}\nexport interface MyQuotesSectionTop {\n heading: string;\n}\nexport interface MyQuotesSectionMiddle {\n heading: string;\n search: {\n placeholder: string;\n icon: Image;\n invalidSearchText:string;\n };\n filter: FilterData;\n filteringPanelSection: FilterPanelSection;\n download: KngButtonState;\n downloadPdfPayload : DownloadPDFPayload;\n invoiceStatusUpdated: boolean;\n gridData:MyQuotesGridListLabel;\n noResult: NoResultModel;\n}\nexport interface DownloadPDFPayload {\n documentURL : string | undefined;\n}\nexport interface MyQuotesSectionBottom {\n sectionPromoBanner : PromoBannerApiResponse;\n}\n\nexport interface MyQuotesLabelState {\n sectionTop: MyQuotesSectionTop;\n sectionMiddle: MyQuotesSectionMiddleLabel;\n sectionBottom: MyQuotesSectionBottomLabel;\n}\nexport interface MyQuotesSectionMiddleLabel {\n heading: string;\n search: {\n placeholder: string;\n icon: Image;\n invalidSearchText: string;\n };\n filter: FilterData;\n filterForm: FilterFormData;\n download: string;\n invalidSearchText: string;\n gridData:MyQuotesGridListLabel;\n noResult: NoResultModel;\n}\nexport interface FilterFormData {\n formLabel: string;\n dateRange: {\n accordionIconExpanded: Image;\n accordionIconCollapsed: Image;\n label: string;\n values: string[];\n };\n billingAddress: {\n accordionIconExpanded: Image;\n accordionIconCollapsed: Image;\n label: string;\n searchPlaceholder: string;\n searchIcon: Image;\n noResultsFoundLabel: string;\n };\n clearAllButtonLabel: string;\n applyButtonLabel: string;\n}\nexport interface MyQuotesSectionBottomLabel {\n}\n\nexport interface MyQuotesPayload {\n skip: number;\n limit: number;\n locations: string[];\n sort: QuotesSort;\n searchValue?: string;\n endDate?: number | string;\n startDate?: number | string;\n status?: string[];\n salesProspectAddress?: LocationAddress[];\n}\nexport interface QuotesSort {\n field: string;\n order: SortOrder;\n}\n\nexport enum InvoiceStatusLabel {\n all = 'All',\n quoteinProcess = 'In Process',\n quoteAccepted = 'Accepted',\n readyForReview = 'Ready for Review',\n ordered = 'Ordered',\n expired = 'Expired'\n}\nexport enum InvoiceStatusHeader {\n all = 'all',\n quoteinProcess = 'quoteinProcess',\n quoteAccepted = 'quoteAccepted',\n readyForReview = 'readyForReview',\n ordered = 'ordered',\n expired = 'expired'\n}\nexport interface EquipmentQuoteListResponse {\n records: MyQuotesGridListObj[];\n pageInfo: PageInfo;\n inProcessCount: number;\n acceptedCount: number;\n orderedCount: number;\n expiredCount:number;\n readyForReviewCount:number;\n}\nexport interface MyQuotesGridListObj {\n quoteId: string;\n creationDate: string;\n model: string;\n quantity: string;\n billingAddress: Address;\n status: string;\n dealerContact: string;\n dealership: Dealership;\n orderID?: string;\n accordionIconExpanded?: Image;\n accordionIconCollapsed?: Image;\n documentURL?: string | undefined;\n}\nexport interface Dealership{\n dealerName:string;\n addressLine1: string;\n addressLine2?: string;\n city: string;\n zipCode: string;\n state: string;\n}\nexport enum EquipmentQuoteHeader {\n quoteId = 'Quote #',\n creationDate = 'Date Created',\n model = 'Model',\n quantity = 'Quantity',\n billingAddress = 'Billing Address',\n status = 'Status'\n}\nexport interface MyQuotesGridListLabel {\n quoteId: string;\n creationDate: string;\n model: string;\n quantity: string;\n billingAddress: string;\n status: string;\n dealerContact: string;\n dealership: string;\n orderID: string;\n accordionIconExpanded: Image;\n accordionIconCollapsed: Image;\n}\nexport enum StatusPayload {\n quoteinProcess = 'Quote in Process',\n quoteAccepted = 'Quote Accepted',\n ordered = 'Ordered',\n expired = 'Expired',\n readyForReview = 'Ready for Review'\n}\nexport interface BillingAddressPayload {\n locations: string[];\n searchValue?: string;\n}\nexport interface BillingAddressResponse {\n records: LocationAddress[];\n}\n","import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';\nimport { MyQuotes, MyQuotesState } from './definitions';\nimport { MyQuotesService } from './my-quotes.service';\nimport { AnalyticsService } from '../../services/analytics/analytics.service';\nimport { MyQuotesUtilService } from './my-quotes.util.service';\n\n\n@Component({\n\tselector: 'tmhna-portal-my-quotes',\n\ttemplateUrl: './template/my-quotes.component.html',\n\tstyleUrls: ['./template/my-quotes.component.scss']\n})\nexport class MyQuotesComponent implements MyQuotes, OnInit \n{\n @Input() set state(value: MyQuotesState) \n\t{\n\t\tthis.service.updateState(value);\n\t}\n get state(): MyQuotesState \n {\n \treturn this.service.state;\n }\n\n @Output() stateChanged: EventEmitter = new EventEmitter();\n\n constructor( public service: MyQuotesService, private readonly analyticsService: AnalyticsService, public utilService: MyQuotesUtilService) { }\n\n ngOnInit(): void \n {\n \tthis.service.getMyQuotesLabelState();\n \tthis.analyticsService.trackByEvent({\n \t\tevent: 'pageView',\n \t\tpage: {\n \t\t\tname: 'My Quotes'\n \t\t}\n \t});\n }\n downloadMyQuotesTableData()\n {\n \tthis.service.downloadMyQuotesData(0);\n }\n}\n","
\n
\n
\n

{{ state.sectionTop.heading }}

\n
\n
\n
\n
\n

\n {{ state.sectionMiddle.heading }}\n

\n
\n \n \n
\n
\n
\n \n
\n
\n \n \n \n
\n
\n","import { FormControl } from '@angular/forms';\nimport { Icons } from '../../services/shared/shared-enums';\nimport { InvoiceStatusHeader, InvoiceStatusLabel, MyQuotesGridListLabel, MyQuotesGridListObj, MyQuotesState } from './definitions';\nimport { Count, KngButtonState, KngCardListState, KngFilterState, KngStatusSelectorState } from 'kinetic-angular';\nimport { SharedFactoryDataService } from '../../services/shared/shared-factory-data.service';\nimport { LocationAddress, PromoBannerData } from '../../services/shared/shared-interface';\nconst subscriptionDesktop : PromoBannerData[] = [];\nconst subscriptionMobile : PromoBannerData[] = [];\nexport class MyQuotesFactory \n{\n\tpublic static build(): MyQuotesState \n\t{\n\t\treturn {\n\t\t\tsectionTop: {\n\t\t\t\theading: ''\n\t\t\t},\n\t\t\tsectionMiddle: {\n\t\t\t\theading: '',\n\t\t\t\tsearch: {\n\t\t\t\t\tplaceholder: '',\n\t\t\t\t\ticon: { iconPath: '', altText: '' },\n\t\t\t\t\tinvalidSearchText: ''\n\t\t\t\t},\n\t\t\t\tfilter: {\n\t\t\t\t\tfilterIcon: { iconPath: '', altText: '' },\n\t\t\t\t\tfilterText: '',\n\t\t\t\t\tclearAll: '',\n\t\t\t\t\tselectedFilters: ''\n\t\t\t\t},\n\t\t\t\tfilteringPanelSection: {\n\t\t\t\t\tfilterIcon: Icons.filter,\n\t\t\t\t\tfilterIconAltText: '',\n\t\t\t\t\tfilterLabel: '',\n\t\t\t\t\tselectedFilterLabel: '',\n\t\t\t\t\tfilterState: this.buildSectionMiddleFilter(),\n\t\t\t\t\tsearchController: {\n\t\t\t\t\t\tplaceholder: '',\n\t\t\t\t\t\ticon: '',\n\t\t\t\t\t\tformControl: new FormControl()\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tdownload: {\n\t\t\t\t\tsize: 'medium',\n\t\t\t\t\tstyle: 'tertiary',\n\t\t\t\t\tdisabled: false,\n\t\t\t\t\tlabel: '',\n\t\t\t\t\ticon: {\n\t\t\t\t\t\taltText: '',\n\t\t\t\t\t\ticonPath: ''\n\t\t\t\t\t},\n\t\t\t\t\tposition: 'none'\n\t\t\t\t} as KngButtonState,\n\t\t\t\tdownloadPdfPayload: {\n\t\t\t\t\tdocumentURL: ''\n\t\t\t\t},\n\t\t\t\tinvoiceStatusUpdated: true,\n\n\t\t\t\tgridData: {\n\t\t\t\t\tquoteId: '',\n\t\t\t\t\tcreationDate: '',\n\t\t\t\t\tmodel: '',\n\t\t\t\t\tquantity: '',\n\t\t\t\t\tbillingAddress: '',\n\t\t\t\t\tstatus: '',\n\t\t\t\t\tdealerContact: '',\n\t\t\t\t\tdealership: '',\n\t\t\t\t\torderID: '',\n\t\t\t\t\taccordionIconExpanded: {\n\t\t\t\t\t\ticonPath: '',\n\t\t\t\t\t\taltText: 'invoice $token details'\n\t\t\t\t\t},\n\t\t\t\t\taccordionIconCollapsed: {\n\t\t\t\t\t\ticonPath: '',\n\t\t\t\t\t\taltText: 'invoice $token details'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tnoResult: {\n\t\t\t\t\tnoResultFoundText: '',\n\t\t\t\t\tnoResultFoundSubText: '',\n\t\t\t\t\tnoResultFoundTableIcon: {\n\t\t\t\t\t\ticonPath: '',\n\t\t\t\t\t\taltText: ''\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tsectionBottom: {\n\t\t\t\tsectionPromoBanner: {\n\t\t\t\t\tdisplaySubscription: true,\n\t\t\t\t\tsubscriptionBanner:\n\t\t\t\t\t{\n\t\t\t\t\t\t subscriptionsDesktop: subscriptionDesktop, subscriptionsMobile: subscriptionMobile \n\t\t\t\t\t}\n\t\t\t }\n\t\t\t}\t\t\n\t\t};\n\t}\n\tprivate static buildSectionMiddleFilter(): KngFilterState \n\t{\n\t\treturn SharedFactoryDataService.getKngFilterState('input');\n\t}\n\tpublic static buildInvoiceStatusCount(): KngStatusSelectorState\n\t{\n\t\treturn {\n\t\t\theader: 'Status',\n\t\t\tselectedStatus: 'all',\n\t\t\tcount: this.buildCount()\n\t\t};\n\t}\n\tpublic static buildCount(): Count[] \n\t{\n\t\treturn [{\n\t\t\theader: InvoiceStatusHeader.all,\n\t\t\tlabel: InvoiceStatusLabel.all,\n\t\t\tamount: 0\n\t\t},\n\t\t{\n\t\t\theader: InvoiceStatusHeader.readyForReview,\n\t\t\tlabel: InvoiceStatusLabel.readyForReview,\n\t\t\tamount: 0\n\t\t},\n\t\t{\n\t\t\theader: InvoiceStatusHeader.quoteinProcess,\n\t\t\tlabel: InvoiceStatusLabel.quoteinProcess,\n\t\t\tamount: 0\n\t\t},\n\t\t{\n\t\t\theader: InvoiceStatusHeader.quoteAccepted,\n\t\t\tlabel: InvoiceStatusLabel.quoteAccepted,\n\t\t\tamount: 0\n\t\t},\n\t\t{\n\t\t\theader: InvoiceStatusHeader.ordered,\n\t\t\tlabel: InvoiceStatusLabel.ordered,\n\t\t\tamount: 0\n\t\t},\n\t\t{\n\t\t\theader: InvoiceStatusHeader.expired,\n\t\t\tlabel: InvoiceStatusLabel.expired,\n\t\t\tamount: 0\n\t\t}];\n\t}\n\tpublic static myQuoteTabelData():MyQuotesGridListObj\n\t{\n\t\treturn {\n\t\t\tquoteId: '', \n\t\t\tcreationDate: '',\n\t\t\tmodel: '', \n\t\t\tquantity: '', \n\t\t\tbillingAddress: { \n\t\t\t addressLine1: '',\n\t\t\t addressLine2: '',\n\t\t\t city: '',\n\t\t\t zipCode: '',\n\t\t\t state: ''\n\t\t\t},\n\t\t\tstatus: '', \n\t\t\tdealerContact: '',\n\t\t\tdealership: { \n\t\t\t dealerName: '',\n\t\t\t addressLine1: '',\n\t\t\t city: '',\n\t\t\t zipCode: '',\n\t\t\t state: ''\n\t\t\t},\n\t\t\torderID: '' \n\t\t }; \n\t}\n\tpublic static buildTableData(): KngCardListState \n\t{\n\t\treturn SharedFactoryDataService.buildTableDataAccordion();\n\t}\n\tpublic static buildMyQuotesTableLabels(): MyQuotesGridListLabel\n\t{\n\t\treturn {\n\t\t\tquoteId: '', \n\t\t\tcreationDate: '',\n\t\t\tmodel: '', \n\t\t\tquantity: '', \n\t\t\tbillingAddress: '',\n\t\t\tstatus: '', \n\t\t\tdealerContact: '',\n\t\t\tdealership: '',\n\t\t\torderID: '',\n\t\t\taccordionIconExpanded: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t},\n \t\taccordionIconCollapsed: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t}\n\t\t};\n\t}\n\tpublic static buildMyQuotetList() : KngCardListState\n\t{\n\t\treturn SharedFactoryDataService.buildTableList('MyQuotes');\n\t\t\n\t}\n\tpublic static billingAddressData(): LocationAddress[]\n\t{\n\t\treturn [{\n\t\t\taddressLine1: '',\n\t\t\taddressLine2: '',\n\t\t\tcity: '',\n\t\t\tstate: '',\n\t\t\tcountry: '',\n\t\t\tpostalCode: ''\n\t\t}];\n\t}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n@Pipe({\n\tname: 'truncate'\n})\nexport class TruncatePipe implements PipeTransform\n{\n\n\ttransform(value: string, maxLength: number = 21): string\n\t{\n\t\tif (value.length <= maxLength)\n\t\t{\n\t\t\treturn value;\n\t\t}\n\t\treturn value.slice(0, maxLength) + '...';\n\t}\n}\n","
\n
\n
\n
\n \n \n
\n
\n {{ state.sectionMiddle.search.invalidSearchText }}\n
\n
\n
\n \n \n \n
\n
\n
\n {{ state.sectionMiddle.filteringPanelSection.selectedFilterLabel}}:\n \n \n \n \n {{ filter.key !== billingAddressKey ? filter.value : filter.value | truncate: 21 }}\n \n \n \n \n
\n
\n
0 && state.sectionMiddle.invoiceStatusUpdated\">\n
\n \n
\n
\n
\n
\n
\n
\n \n
\n Loading... \n
\n
\n","/* eslint-disable max-lines */\nimport { AfterViewInit, Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { MyQuotesService } from '../my-quotes.service';\nimport { EquipmentQuoteHeader, MyQuotesState, StatusPayload } from '../definitions';\nimport { BehaviorSubject, Subscription, debounceTime, distinctUntilChanged, filter, switchMap } from 'rxjs';\nimport { SharedService } from '../../../services/shared/shared.service';\nimport { Control, ControlType, Cta, CtaClickEvent, DateRange, KngCardListState, KngFilterPanelComponent, KngFilterState, KngHeaderObjState, KngSelectionData, Section, Option } from 'kinetic-angular';\nimport { Address, KeyValuePair, LocationAddress } from '../../../services/shared/shared-interface';\nimport { FilterOptions, SortOrder } from '../../../services/shared/shared-enums';\nimport { SharedFilterService } from '../../../services/shared/shared-filter.service';\nimport { DateConverterService } from '../../../services/date-converter/date-converter.service';\nimport { MyQuotesFactory } from '../my-quotes.factory';\nimport { defaultPage } from '../../../services/shared/shared-constants';\nimport { SharedUtilService } from '../../../services/shared/shared-util.service';\nimport { AnalyticsService } from '../../../services/analytics/analytics.service';\nimport { RedirectRoute } from 'projects/kinetic-angular/src/lib/shared/shared.interface';\nimport { MyQuotesUtilService } from '../my-quotes.util.service';\n\n@Component({\n\tselector: 'tmhna-portal-equipment-quotes',\n\ttemplateUrl: './equipment-quotes.component.html',\n\tstyleUrls: ['./equipment-quotes.component.scss']\n})\nexport class EquipmentQuotesComponent implements OnInit, AfterViewInit\n{\n\tcardState!: KngCardListState;\n\tprivate readonly searchText$ = new BehaviorSubject('');\n\tsearched: boolean = false;\n\tcurrentPage = 0;\n\tresetPage: number = 0;\n\toriginalDataLoaded: boolean = false;\n\tpaginated:boolean=false;\n\t@ViewChild(KngFilterPanelComponent, { static: true }) myQuotesFilterComponent: | KngFilterPanelComponent | undefined;\n\tselectedFilterObj: KeyValuePair[] = [{ key: FilterOptions.dateRange, value: DateRange.lastSixtyDays, id: '',\tdisabled: true }];\n\tdefaultFilter: boolean = true;\n\ttoDate: number = 0;\n\tfromDate: number = 0;\n\tselectedStatusFilter: string = '';\n\taddressSelected: LocationAddress[] = [];\n\tprivate readonly subscriptions$: Subscription = new Subscription();\n\tbillingAddressKey = FilterOptions.billingAddress;\n\tappliedAddressIds: string[] = [];\n\n\tconstructor(public service: MyQuotesService, public sharedService: SharedService, public filterService: SharedFilterService, public dateService: DateConverterService, public sharedUtilService: SharedUtilService,\n\t\tpublic analyticsService:AnalyticsService, private readonly myQuotesUtilService: MyQuotesUtilService) { }\n\n\t@Input() set state(value: MyQuotesState) \n\t{\n\t\tthis.service.updateState(value);\n\t}\n\tget state(): MyQuotesState \n\t{\n\t\treturn this.service.state;\n\t}\n\tget isInvalidLength() \n\t{\n\t\treturn this.sharedService.isInvalidLength(this.service.searchData);\n\t}\n\tget filterState(): KngFilterState \n\t{\n\t\treturn this.state.sectionMiddle.filteringPanelSection.filterState;\n\t}\n\tngOnInit(): void \n\t{\n\t\tthis.service.initializePayload();\n\t\tthis.filterState.hidden = true;\n\t\tthis.service.searchData='';\n\t\tthis.service.sortingEvent = this.sharedUtilService.getHeaderObjectState(true, EquipmentQuoteHeader.creationDate, SortOrder.desc);\n\t\tthis.service.myQuotesPayload.sort = this.sharedService.checkTableSort(this.service.sortingEvent, EquipmentQuoteHeader);\n\t\tthis.initializeStructure(0);\n\t}\n\tngAfterViewInit(): void\n\t{\n\t\tif (this.myQuotesFilterComponent)\n\t\t\tthis.getBillingAddress();\n\t\tthis.subscribeSearchText();\n\t}\n\tpublic initializeStructure(page: number): void\n\t{\n\t\tthis.originalDataLoaded = true;\n\t\tthis.service.myQuotesTableStateObject.next(MyQuotesFactory.buildMyQuotetList());\n\t\tthis.sharedUtilService.checkCardState(this.cardState);\n\t\tthis.service.getQuotesTable(page);\n\t\tthis.myQuotesUtilService.getBillingAddress();\n\t}\n\tapplySearch()\n\t{\n\t\tthis.sharedUtilService.checkCardState(this.cardState);\n\t\tthis.searchText$.next(this.service.searchData.trimLeft());\n\t\tthis.searched= true;\n\t}\n\tgetOriginalData() \n\t{\n\t\tthis.resetPage--;\n\t\tthis.searchText$.next('');\n\t\tthis.service.searchData = '';\n\t\tthis.applySearch();\n\t}\n\tpageChanged(page: number)\n\t{\n \tthis.currentPage = page;\n\t\tif(page !== 0)\n\t\t{\n\t\t\tthis.paginated = true;\n\t\t\tthis.initializeStructure(page);\n\t\t}\n\t\telse if(page === 0 && this.paginated)\n\t\t\tthis.initializeStructure(0);\n\t}\n\topenFilter() \n\t{\n\t\tif (this.myQuotesFilterComponent !== undefined)\n\t\t\tthis.state.sectionMiddle.filteringPanelSection.filterState.hidden = false;\n\t}\n\tcloseFilter() \n\t{\n\t\tthis.myQuotesUtilService.updateBillingAddressSection(this.myQuotesUtilService.billingAddressFilterControls, this.appliedAddressIds);\n\t\tthis.getCountOfFilterPanel(this.filterState.filterData.sections[1]);\n\t\tthis.filterState.filterData.sections[0] = this.filterService.setDateFilterCloseFilter(this.selectedFilterObj, this.filterState.filterData.sections[0], this.myQuotesFilterComponent);\n\t}\n\tfilterStateChanged() \n\t{\n\t\tthis.filterState.filterData.ctaList[0].disabled = !this.filterService.filterHasAtLeastOneSelectedControl(this.filterState);\n\t}\n\tfilterApplied(event: CtaClickEvent) \n\t{\n\t\tconst btnIndex = event.state.filterData.ctaList.findIndex((cta: Cta) => cta.label === event.buttonClicked.label);\n\t\tif (btnIndex === 1) \n\t\t{\n\t\t\tthis.resetPage++;\n\t\t\tthis.selectedFilterObj = [];\n\t\t\tthis.updateAddressPayload();\n\t\t\tthis.updateDatePayload(event.state.filterData.sections[0].controls);\n\t\t\tthis.getTableDataAndUpdateState();\n\t\t\tthis.state.sectionMiddle.filteringPanelSection.filterState.hidden = true;\n\t\t\tthis.trackAnalyticsOnApplyFilter();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.resetPage--;\n\t\t\tthis.clearAllFilterPanel();\n\t\t}\n\t}\n\tclearAllFilterPanel()\n\t{\n\t\tlet sections = this.filterState.filterData.sections;\n\t\tsections = this.filterService.clearAllFilterPanel(sections);\n\t\tsections[0] = this.filterService.setDateFilterLabelCheck(sections[0], DateRange.lastSixtyDays);\n\t\tif(this.myQuotesFilterComponent)\n\t\t\tthis.myQuotesFilterComponent.setDefaultToFromDate();\n\t\tthis.service.myQuotesPayload.locations = [];\n\t\tthis.service.myQuotesPayload.salesProspectAddress = [];\n\t\tthis.service.initializeDatePayload();\n\t\tthis.analyticsService.trackByEvent({\n\t\t\tevent: 'Filter Cleared',\n\t\t\tlink: {\n\t\t\t\tname: 'Filter Cleared'\n\t\t\t}\n\t\t});\n\t}\n\tupdateDatePayload(controls: Control[]) \n\t{\n\t\tcontrols.forEach((control: Control) => \n\t\t{\n\t\t\tif (control.type === ControlType.radio && control.options.length > 0) \n\t\t\t{\n\t\t\t\tcontrol.options.forEach((opt) => \n\t\t\t\t{\n\t\t\t\t\tif (opt.checked && opt.checked === true) \n\t\t\t\t\t{\n\t\t\t\t\t\tthis.setDefaultCustomDate(opt);\n\t\t\t\t\t\tthis.defaultFilter = false;\n\t\t\t\t\t\tthis.selectedFilterObj = this.filterService.addSelectedFilter(opt.label, FilterOptions.dateRange, this.selectedFilterObj, opt.value);\n\t\t\t\t\t\tconst fromToDate = this.dateService.dateCalculation(this.filterState.filterData.sections[0].controls[0].options, opt.label);\n\t\t\t\t\t\tthis.fromDate = fromToDate[0];\n\t\t\t\t\t\tthis.toDate = fromToDate[1];\n\t\t\t\t\t\tif (opt.label === DateRange.lastSixtyDays && this.selectedFilterObj.length === 1)\n\t\t\t\t\t\t\tthis.defaultFilter = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tif (this.fromDate !== 0) \n\t\t{\n\t\t\tthis.service.myQuotesPayload.endDate = this.toDate;\n\t\t\tthis.service.myQuotesPayload.startDate = this.dateService.getUnixTimeStamp(new Date(this.fromDate));\n\t\t}\n\t}\n\tpublic getCountOfFilterPanel(section: Section): void\n\t{\n\t\tlet control: Control[] = [];\n\t\tif (section.label === FilterOptions.billingAddress)\n\t\t\tcontrol = this.myQuotesUtilService.billingAddressFilterControls;\n\t\tthis.filterState.filterData.sections = this.filterService.getCountOfFilterPanel(control, section.label, this.filterState.filterData.sections, this.myQuotesFilterComponent);\n\t}\n\tremoveFilter(filter: KeyValuePair): void \n\t{\n\t\tthis.removeFilterForDateRange(filter);\n\t\tthis.resetFilterPanel(filter);\n\t\tthis.removeFilterForBillingAddress(filter);\n\t\tthis.getTableDataAndUpdateState();\n\t}\n\tremoveFilterForDateRange(filter: KeyValuePair): void\n\t{\n\t\tif (filter.key === FilterOptions.dateRange) \n\t\t{\n\t\t\tthis.selectedFilterObj.forEach((obj) => \n\t\t\t{\n\t\t\t\tif (obj.key === filter.key) \n\t\t\t\t{\n\t\t\t\t\tobj.value = DateRange.lastSixtyDays;\n\t\t\t\t\tif (this.selectedFilterObj.length === 1)\n\t\t\t\t\t\tthis.defaultFilter = true;\n\t\t\t\t\tthis.filterService.mapSelectedFilter(this.selectedFilterObj);\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.service.initializeDatePayload();\n\t\t}\n\t}\n\tremoveFilterForBillingAddress(filter: KeyValuePair): void\n\t{\n\t\tif (filter.key === FilterOptions.billingAddress) \n\t\t{\n\t\t\tthis.selectedFilterObj.forEach((obj) => \n\t\t\t{\n\t\t\t\tif (obj.id === filter.id && filter.id !== undefined)\n\t\t\t\t\tthis.resetBillingAddressFilter(filter.id, filter.key);\n\t\t\t});\n\t\t}\n\t}\n\tresetBillingAddressFilter(id: string, key: string): void \n\t{\n\t\tconst salesProspectAddress = this.addressSelected;\n\t\tlet index = -1;\n\t\tif (salesProspectAddress) \n\t\t{\n\t\t\tthis.defaultFilter = false;\n\t\t\tthis.selectedFilterObj = this.filterService.removeFromSelectedFilter(id, salesProspectAddress, this.selectedFilterObj);\n\t\t\tif (this.selectedFilterObj.length === 1 && this.selectedFilterObj[0].value === DateRange.lastSixtyDays) \n\t\t\t{\n\t\t\t\tthis.defaultFilter = true;\n\t\t\t\tthis.selectedFilterObj[0].disabled = true;\n\t\t\t}\n\t\t\tindex = salesProspectAddress.findIndex(loc => loc.id === id);\n\t\t\tsalesProspectAddress.splice(index, 1);\n\t\t\tthis.state.sectionMiddle.filteringPanelSection.filterState.filterData.sections = this.filterService.removeSearchtextfromInputAfterClear(salesProspectAddress, key, this.state.sectionMiddle.filteringPanelSection.filterState.filterData.sections);\n\t\t\tthis.service.myQuotesPayload.salesProspectAddress = salesProspectAddress;\n\t\t\tthis.service.myQuotesPayload.salesProspectAddress.forEach(loc => delete loc.id);\t\n\n\t\t}\n\t}\n\tresetFilterPanel(filter: KeyValuePair)\n\t{\n\t\tif (filter.key === FilterOptions.dateRange) \n\t\t\tthis.filterState.filterData.sections[0] = this.filterService.setDateFilterLabelCheck(this.filterState.filterData.sections[0], DateRange.lastSixtyDays);\n\t\telse if (filter.key === FilterOptions.billingAddress)\n\t\t\tthis.resetFilterPanelForBillingAddress(filter);\n\t}\n\tresetFilterPanelForBillingAddress(filter: KeyValuePair): void\n\t{\t\t\n\t\tconst control = this.myQuotesUtilService.billingAddressFilterControls;\n\t\tcontrol.forEach((ctl) => \n\t\t{\n\t\t\tif (ctl.id === filter.id && ctl.id) \n\t\t\t{\n\t\t\t\tctl.setValue(false);\n\t\t\t\tthis.getCountOfFilterPanel(this.filterState.filterData.sections[1]);\n\t\t\t}\n\t\t});\n\t\tthis.myQuotesUtilService.billingAddressFilterControls = control;\n\t}\n\tsetDefaultCustomDate(opt: Option)\n\t{\n\t\tif(opt.label !== FilterOptions.customDateRange && this.myQuotesFilterComponent)\n\t\t\tthis.myQuotesFilterComponent.setDefaultToFromDate();\n\t}\n\tremoveAllFilter() \n\t{\n\t\tthis.clearAllFilterPanel();\n\t\tthis.selectedFilterObj = [{ key: FilterOptions.dateRange, value: DateRange.lastSixtyDays, id: '',\tdisabled: true }];\n\t\tthis.defaultFilter = true;\n\t\tthis.getTableDataAndUpdateState();\n\t\tthis.dateService.showHideFromToDate(this.myQuotesFilterComponent);\n\t}\n\tsubscribeSearchText()\n\t{\n\t\tthis.searchText$\n\t\t\t.pipe(debounceTime(500), filter(searchTerm => (searchTerm.replace(/\\s/g, '').trim().length === 0 || searchTerm.replace(/\\s/g, '').trim().length > 3)), distinctUntilChanged(),\n\t\t\t\tswitchMap((val) => \n\t\t\t\t{\n\t\t\t\t\tthis.resetPage++;\n\t\t\t\t\tthis.originalDataLoaded = false;\n\t\t\t\t\tthis.service.myQuotesTableStateObject.next(MyQuotesFactory.buildMyQuotetList());\n\t\t\t\t\tthis.service.myQuotesPayload.searchValue = val.trimLeft();\n\t\t\t\t\tif (this.searched) \n\t\t\t\t\t{\n\t\t\t\t\t\tthis.service.getQuotesTable(defaultPage);\n\t\t\t\t\t}\n\t\t\t\t\treturn this.service.myQuotesTableStateObject;\n\t\t\t\t})).subscribe((res) => \n\t\t\t{\n\t\t\t\tthis.cardState = res;\n\t\t\t });\n\t}\n\tcheckSortEvent(event: KngHeaderObjState) \n\t{\n\t\tthis.service.sortingEvent = event;\n\t\tthis.service.myQuotesPayload.sort = this.sharedService.checkTableSort(event, EquipmentQuoteHeader);\n\t\tthis.service.getQuotesTable(this.currentPage);\n\t}\n\tresetPageProperties() \n\t{\n\t\tthis.currentPage = 0;\n\t\tthis.resetPage--;\n\t}\n\tapplyStatusFilterToCount(data: KngSelectionData): void\n\t{\n\t\tthis.resetPageProperties();\n\t\tthis.selectedStatusFilter = this.sharedUtilService.getMyQuotesStatus(data.selectedStatus);\n\t\tthis.service.myQuotesPayload.status = [];\n\t\tif (this.selectedStatusFilter === '')\n\t\t{\n\t\t\tthis.service.myQuotesPayload.status = [ StatusPayload.ordered, StatusPayload.expired, StatusPayload.quoteAccepted, StatusPayload.quoteinProcess, StatusPayload.readyForReview ];\n\t\t}\n\t\telse \n\t\t{\n\t\t\tthis.service.myQuotesPayload.status?.push(this.selectedStatusFilter);\n\t\t}\n\t\tthis.getTableDataAndUpdateState();\n\t}\n\n\tgetTableDataAndUpdateState()\n\t{\n\t\tthis.service.myQuotesTableStateObject.next(MyQuotesFactory.buildMyQuotetList());\n\t\tthis.service.getQuotesTable(this.currentPage);\n\t\tthis.service.myQuotesTableStateObject.subscribe((res) => \n\t\t{\n\t\t\tthis.cardState = res;\n\t\t});\n\t}\n\tgetBillingAddress(): void\n\t{\n\t\tconst billingAddressFilterControls: Control[] = this.state.sectionMiddle.filteringPanelSection.filterState.filterData.sections[1].controls;\n\t\tconst billingAddressSearchControl: Control = billingAddressFilterControls[0];\n\t\tconst billingAddressSearchSubscription: Subscription =\n\t\t\tbillingAddressSearchControl.valueChanges\n\t\t\t\t.pipe(filter((value: string) => value.length > 2 || billingAddressFilterControls.length > 1),\n\t\t\t\t\tdebounceTime(500),\n\t\t\t\t\tdistinctUntilChanged(),\n\t\t\t\t\tswitchMap(async (value: string) => this.myQuotesUtilService.findAssignedBillingAddress(value)))\n\t\t\t\t.subscribe((result: Control[]) => this.filterService.updateFilterPanelOptions(result, billingAddressFilterControls, this.myQuotesFilterComponent, this.filterState));\n\t\tthis.subscriptions$.add(billingAddressSearchSubscription);\n\t}\n\tupdateAddressPayload(): void\n\t{\n\t\tconst selectedBillingAddress: LocationAddress[] = [];\n\t\tthis.addressSelected = [];\n\t\tthis.myQuotesUtilService.billingAddressFilterControls.forEach((control: Control) => \n\t\t{\n\t\t\tif (control.type === ControlType.checkbox && control.value && control.address) \n\t\t\t{\n\t\t\t\tthis.defaultFilter = false;\n\t\t\t\tconst updatedBillingAddress: LocationAddress = {\n\t\t\t\t\taddressLine1: control.address.addressLine1,\n\t\t\t\t\taddressLine2: control.address.addressLine2,\n\t\t\t\t\tcity: control.address.city,\n\t\t\t\t\tstate: control.address.state,\n\t\t\t\t\tcountry: control.address.country ?? '',\n\t\t\t\t\tpostalCode: control.address.zipCode\n\t\t\t\t};\n\t\t\t\tthis.addressSelected.push({\n\t\t\t\t\t...updatedBillingAddress,\n\t\t\t\t\tid: control.id });\n\t\t\t\tselectedBillingAddress.push(updatedBillingAddress);\n\t\t\t\tconst label = this.myQuotesUtilService.formatAddress(control.address as Address);\n\t\t\t\tthis.selectedFilterObj = this.filterService.addSelectedFilter(label, FilterOptions.billingAddress, this.selectedFilterObj, undefined, control.id);\n\t\t\t}\n\t\t});\n\t\tthis.processSelectedAddress(selectedBillingAddress);\n\t}\n\tprocessSelectedAddress(selectedBillingAddress: LocationAddress[]): void\n\t{\n\t\tif (!selectedBillingAddress.length) \t\t\n\t\t\tthis.service.myQuotesPayload.salesProspectAddress = [];\n\t\telse \n\t\t{\n\t\t\tthis.service.myQuotesPayload.salesProspectAddress = selectedBillingAddress;\n\t\t}\n\t}\n\tdownloadQuotePdf(redirectRoute: RedirectRoute)\n\t{\n\t\tif (redirectRoute?.value || redirectRoute?.documentURL) \n\t\t\tthis.service.getdownloadQuotePdf(redirectRoute.documentURL);\n\t}\n\ttrackAnalyticsOnApplyFilter()\n\t{\n\t\tthis.analyticsService.trackByEvent({\n\t\t\tevent: 'MyQuotes Filter Applied',\n\t\t\tlink: { name: 'MyQuotes Filter' },\n\t\t\tfilter: this.selectedFilterObj.map(item => ({\n\t\t\t\tlabel: item.key,\n\t\t\t\tvalue: item.value,\n\t\t\t\ttype: 'MyQuotes Table'\n\t\t\t}))\n\t\t});\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TruncatePipe } from './truncate.pipe';\n\n@NgModule({\n\tdeclarations: [\n\t\tTruncatePipe\n\t],\n\timports: [\n\t\tCommonModule\n\t],\n\texports: [TruncatePipe]\n})\nexport class TruncateModule { }\n","
\n 0\" >\n
\n
\n \"{{subscriptions.bannerImage.altText}}\"\n
{{subscriptions.heading}}
\n \n
\n
\n
\n 0\">\n
\n \"{{subscriptionsMobile.bannerImage.altText}}\"\n
{{subscriptionsMobile.heading}}
\n \n
\n
\n
","import { Component, Input, OnInit } from '@angular/core';\nimport { AnalyticsService } from '../../../services/analytics/analytics.service';\nimport { MyQuotesState } from '../definitions/my-quotes.interface';\nimport { MyQuotesService } from '../my-quotes.service';\nimport { PromoBannerData } from '../../../services/shared/shared-interface';\nimport { MyQuotesUtilService } from '../my-quotes.util.service';\nimport { SharedUtilService } from '../../../services/shared/shared-util.service';\nimport { LocalStorageService } from '../../../services/local-storage/local-storage.service';\nimport { ByParts } from '../../../services/shared/shared-enums';\n@Component({\n\tselector: 'tmhna-portal-quote-promo-banners',\n\ttemplateUrl: './quote-promo-banners.component.html',\n\tstyleUrls: ['./quote-promo-banners.component.scss']\n})\nexport class QuotePromoBannersComponent implements OnInit\n{\n\t@Input() set state(value: MyQuotesState) \n\t{\n\t\tthis.utilservice.updateState(value);\n\t}\n\tget state(): MyQuotesState \n\t{\n \treturn this.utilservice.state;\n\t}\n\tconstructor(private readonly analyticsService: AnalyticsService, public utilservice : MyQuotesUtilService, public service : MyQuotesService, public sharedUtilService: SharedUtilService, public localStorageService: LocalStorageService) { }\n\tngOnInit(): void \n\t{\n\t\tthis.utilservice.getquotePromoBanner();\n\t}\n\topenLink(subscription: PromoBannerData)\n\t{\n\t\tthis.analyticsService.trackByEvent({\n\t\t\tevent: 'Promotional Content',\n\t\t\tlink: {\n\t\t\t\tname: 'Learn More'\n\t\t\t}\n\t\t});\n\t\tif(this.sharedUtilService.isCustomerSupportSession)\n\t\t{\n\t\t\tif(subscription.link.label===ByParts.buyParts) \n\t\t\t{\n\t\t\t\tthis.sharedUtilService.navigateWithCustomerSupport(subscription.link.url);\n\t\t\t}\n\t\t}\n\t\telse \n\t\t{\n\t\t\twindow.open(subscription.link.url, '_blank');\n\t\t}\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MyQuotesComponent } from './my-quotes.component';\nimport { MyQuotesService } from './my-quotes.service';\nimport { RouterModule, Routes } from '@angular/router';\nimport { FormsModule } from '@angular/forms';\nimport { EquipmentQuotesComponent } from './equipment-quotes/equipment-quotes.component';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { KngButtonModule, KngFilterPanelModule, KngCardListModule, KngStatusSelectorModule, AccordionModule } from 'kinetic-angular';\nimport { TruncateModule } from '../../pipes/truncate/truncate.module';\nimport { QuotePromoBannersComponent } from './quote-promo-banners/quote-promo-banners.component';\nconst route: Routes = [\n\t{ path: '', component: MyQuotesComponent, data: { title: 'MyQuotes' } }\n];\n@NgModule({\n\timports: [RouterModule.forChild(route)],\n\texports: [RouterModule]\n})\n\nexport class MyQuotesRoutingModule {}\n\n@NgModule({\n\tdeclarations: [ MyQuotesComponent, EquipmentQuotesComponent, QuotePromoBannersComponent ],\n\timports: [ CommonModule, MyQuotesRoutingModule, KngButtonModule, KngFilterPanelModule, MatChipsModule,\n\t\tMatIconModule, MatFormFieldModule, KngCardListModule, KngStatusSelectorModule, FormsModule, AccordionModule, TruncateModule ],\n\texports: [MyQuotesComponent],\n\tproviders: [MyQuotesService]\n})\nexport class MyQuotesModule {}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, concatMap, tap } from 'rxjs';\nimport { MyQuotesFactory } from './my-quotes.factory';\nimport { DownloadPDFPayload, EquipmentQuoteHeader, EquipmentQuoteListResponse, MyQuotesGridListLabel, MyQuotesGridListObj, MyQuotesLabelState, MyQuotesPayload, MyQuotesSectionMiddleLabel, MyQuotesState, StatusPayload } from './definitions';\nimport { ApiService } from '../../services/api/api.service';\nimport { DateRange, KngCardListState, KngHeaderObjState, KngStatusSelectorState, KngValueListState, KngValueObjState, Option, ScreenView, SortOrder } from 'kinetic-angular';\nimport { FieldName, FileName, Icons } from '../../services/shared/shared-enums';\nimport { DateConverterService } from '../../services/date-converter/date-converter.service';\nimport { SharedUtilService } from '../../services/shared/shared-util.service';\nimport { SharedService } from '../../services/shared/shared.service';\nimport { ApiResponse } from '../../definitions/api-response.interface';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ToastrService } from 'ngx-toastr';\nimport { LoggerService } from '../../services/logger/logger.service';\nimport { MyQuotesUtilService } from './my-quotes.util.service';\nimport { TrackFileDownload } from '../../services/analytics/definitions';\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class MyQuotesService \n{\n\tprivate readonly state$: BehaviorSubject = new BehaviorSubject(MyQuotesFactory.build());\n\tinvoiceStatusCount: KngStatusSelectorState = MyQuotesFactory.buildInvoiceStatusCount();\n\tmyQuotesTableLabels: MyQuotesGridListLabel = MyQuotesFactory.buildMyQuotesTableLabels();\n\tmyQuotesCardListObject: KngCardListState = MyQuotesFactory.buildMyQuotetList();\n\tmyQuotesTableStateObject: BehaviorSubject = new BehaviorSubject(MyQuotesFactory.buildMyQuotetList());\n\ttotalCount: number = 0;\n\tsearchData: string = '';\n\tshowStatusFilters: boolean = false;\n\tmyQuotesPayload: MyQuotesPayload = this.myQuotesUtilService.getDefaultPayload();\n\tsortingEvent = this.sharedUtilService.getHeaderObjectState(true, EquipmentQuoteHeader.creationDate, SortOrder.desc);\n\tcurrentDate = new Date();\n\tget state(): MyQuotesState \n\t{\n\t\treturn this.state$.value;\n\t}\n\tset updateCardState(value: KngCardListState)\n\t{\n\t\tthis.myQuotesTableStateObject.next(value);\n\t}\n\tconstructor(public apiService: ApiService, public dateService: DateConverterService, public sharedUtilService: SharedUtilService, public sharedService: SharedService, private readonly loggerService: LoggerService,\n\t\tprivate readonly toaster: ToastrService, private readonly myQuotesUtilService: MyQuotesUtilService){}\n\n\tpublic updateState(value: MyQuotesState): void \n\t{\n\t\tthis.state$.next(value);\n\t}\n\tpublic getMyQuotesLabelState(): void \n\t{\n\t\tthis.apiService.getMyQuotesAemLabels().subscribe((res: MyQuotesLabelState) => \n\t\t{\n\t\t\tif (res) \n\t\t\t{\n\t\t\t\tthis.state.sectionTop.heading = res.sectionTop.heading;\n\t\t\t\tthis.getMyQuotesMiddleLabelState(res.sectionMiddle);\n\t\t\t}\n\t\t});\n\t}\n\tpublic getMyQuotesMiddleLabelState(resSectionMiddle: MyQuotesSectionMiddleLabel)\n\t{\n\t\tconst sectionMiddle = this.state.sectionMiddle;\n\t\tsectionMiddle.heading = resSectionMiddle.heading;\n\t\tsectionMiddle.search = resSectionMiddle.search;\n\t\tsectionMiddle.search.invalidSearchText= resSectionMiddle.search.invalidSearchText;\n\t\tsectionMiddle.download.label = resSectionMiddle.download;\n\t\tthis.myQuotesTableLabels = resSectionMiddle.gridData;\n\t\tsectionMiddle.noResult.noResultFoundText=resSectionMiddle.noResult.noResultFoundText;\n\t\tthis.state.sectionMiddle.noResult.noQuotesAvailble=resSectionMiddle.noResult.noQuotesAvailble;\n\t\tsectionMiddle.noResult.noResultFoundSubText=resSectionMiddle.noResult.noResultFoundSubText;\n\t\tthis.mapMyQuotesFilterLabels(resSectionMiddle);\n\t}\n\tpublic mapMyQuotesFilterLabels(resSectionMiddle: MyQuotesSectionMiddleLabel): void \n\t{\n\t\tconst sectionMiddleFilter = this.state.sectionMiddle.filteringPanelSection;\n\t\tsectionMiddleFilter.filterLabel = resSectionMiddle.filter.filterText;\n\t\tsectionMiddleFilter.filterIconAltText = resSectionMiddle.filter.filterIcon.altText;\n\t\tsectionMiddleFilter.selectedFilterLabel = resSectionMiddle.filter.selectedFilters;\n\t\tsectionMiddleFilter.clearAll = resSectionMiddle.filter.clearAll;\n\t\tsectionMiddleFilter.invalidSearchText = resSectionMiddle.invalidSearchText;\n\t\tsectionMiddleFilter.filterState.filterData.heading.label = resSectionMiddle.filterForm.formLabel;\n\t\tsectionMiddleFilter.filterState.filterData.sections[0].label = resSectionMiddle.filterForm.dateRange.label;\n\t\tsectionMiddleFilter.filterState.filterData.sections[1].label = resSectionMiddle.filterForm.billingAddress.label;\n\t\tsectionMiddleFilter.filterState.filterData.sections[1].noResultsFoundText =\tresSectionMiddle.filterForm.billingAddress.noResultsFoundLabel;\n\t\tsectionMiddleFilter.filterState.filterData.sections[1].controls[0].inputPlaceholderText = resSectionMiddle.filterForm.billingAddress.searchPlaceholder;\n\t\tsectionMiddleFilter.filterState.filterData.ctaList[0].label = resSectionMiddle.filterForm.clearAllButtonLabel;\n\t\tsectionMiddleFilter.filterState.filterData.ctaList[1].label = resSectionMiddle.filterForm.applyButtonLabel;\n\t\tthis.mapDateRangeValues(resSectionMiddle.filterForm.dateRange.values);\n\t}\n\tpublic mapDateRangeValues(data: string[]): void \n\t{\n\t\tconst dateRange: Option[] = [];\n\t\tconst dateResponse = data;\n\t\tdateResponse.forEach((type) => \n\t\t{\n\t\t\tdateRange.push({ label: type, value: type, checked: false });\n\t\t});\n\t\tconst sectionMiddle = this.state.sectionMiddle;\n\t\tconst filterData = sectionMiddle.filteringPanelSection.filterState.filterData;\n\t\tif (filterData) \n\t\t{\n\t\t\tfilterData.sections[0].controls[0].options = dateRange;\n\t\t\tfilterData.sections[0].selectedValue = [DateRange.lastSixtyDays];\n\t\t}\n\t\tconst control = filterData.sections[0].controls;\n\t\tconst index = control[0].options.findIndex(opt => opt.label === DateRange.lastSixtyDays);\n\t\tif (index !== 0) \n\t\t\tcontrol[0].options[index].checked = true;\n\t}\n\tinitializePayload() \n\t{\n\t\tthis.initializeDatePayload();\n\t\tthis.myQuotesPayload.status = [ StatusPayload.ordered, StatusPayload.expired, StatusPayload.quoteAccepted, StatusPayload.quoteinProcess, StatusPayload.readyForReview ];\n\t\tthis.myQuotesPayload.searchValue = '';\n\t\tthis.myQuotesPayload.locations = [];\n\t}\n\tinitializeDatePayload()\n\t{\n\t\tthis.myQuotesPayload.endDate = this.dateService.getUnixTimeStamp(this.currentDate);\n\t\tthis.myQuotesPayload.startDate = this.dateService.getFromDate(new Date(), 60);\n\t}\n\tgetQuotesTable(page: number): void\n\t{\n\t\tthis.myQuotesCardListObject.loading = true;\n\t\tif (this.myQuotesTableStateObject)\n\t\t{\n\t\t\tthis.myQuotesCardListObject = MyQuotesFactory.buildMyQuotetList();\n\t\t\tthis.myQuotesCardListObject.list = [];\n\t\t\tthis.myQuotesPayload.skip = page;\n\t\t\tif(this.myQuotesPayload.endDate)\n\t\t\t{\n\t\t\t\tthis.myQuotesPayload.endDate = new Date(this.myQuotesPayload.endDate).toISOString().substring(0, 10);\n\t\t\t}\n\t\t\tif(this.myQuotesPayload.startDate)\n\t\t\t{\n\t\t\t\tthis.myQuotesPayload.startDate = new Date(this.myQuotesPayload.startDate).toISOString().substring(0, 10);\n\t\t\t}\n\t\t\tthis.getEquipmentQuotesTableData(this.myQuotesPayload);\n\t\t}\n\t}\n\tgetEquipmentQuotesTableData(payload: MyQuotesPayload): void\n\t{\n\t\tthis.sharedService\n\t\t\t.getLoggedInUseLocationsIdsObs()\n\t\t\t.pipe(\n\t\t\t\ttap((locationIds: string[]) =>\n\t\t\t\t{\n\t\t\t\t\tpayload.locations = this.myQuotesPayload.locations.length > 0 ? this.myQuotesPayload.locations:locationIds;\n\t\t\t\t}),\n\t\t\t\tconcatMap(() => this.apiService.getEquipmentQuoteTableData(payload))\n\t\t\t)\n\t\t\t.subscribe({\n\t\t\t\tnext: (res: ApiResponse) =>\n\t\t\t\t{\n\t\t\t\t\tif (res?.data)\n\t\t\t\t\t{\n\t\t\t\t\t\tconst data = res.data;\n\t\t\t\t\t\tthis.mapEquipmentQuotesData(data);\n\t\t\t\t\t\tif(payload.searchValue && payload.searchValue.length >= 4 && data.records)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.myQuotesUtilService.trackAnalytics(data.records, this.searchData, this.myQuotesCardListObject.pageInfo?.totalCount);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: (error) =>\n\t\t\t\t{\n\t\t\t\t\tthis.getHeader();\n\t\t\t\t\tthis.handleError(error);\n\t\t\t\t},\n\t\t\t\tcomplete: () =>\n\t\t\t\t{\n\t\t\t\t\tsetTimeout(() =>\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.myQuotesCardListObject.loading = false;\n\t\t\t\t\t\tthis.myQuotesTableStateObject.next(this.myQuotesCardListObject);\n\t\t\t\t\t}, 1000);\n\t\t\t\t}\n\t\t\t});\n\t}\n\thandleError(error: HttpErrorResponse): void\n\t{\n\t\tif(error.error.statusCode === 500)\n\t\t{\n\t\t\tconst quoteApiError = error.error.message?.split('.');\n\t\t\tthis.state.sectionMiddle.noResult.noResultFoundText=quoteApiError[0];\n\t\t\tthis.state.sectionMiddle.noResult.noResultFoundSubText=quoteApiError[1];\n\t\t\tthis.myQuotesCardListObject.loading = false;\n\t\t\tthis.myQuotesCardListObject.error = {\n\t\t\t\tmessage: this.state.sectionMiddle.noResult.noResultFoundText,\n\t\t\t\tmessageSubText: this.state.sectionMiddle.noResult.noResultFoundSubText,\n\t\t\t\ticon: Icons.noResult\n\t\t\t};\n\t\t\tthis.myQuotesUtilService.trackErrorByEvent('MyQuote List API Error', error.error.message);\n\t\t}\n\t}\n\tgetHeader()\n\t{\n\t\tthis.myQuotesCardListObject.header = [];\n\t\tconst headerList = Object.values(this.myQuotesTableLabels);\n\t\theaderList.slice(0, 6).forEach((val) => \n\t\t{\n\t\t\tconst header: KngHeaderObjState = {\n\t\t\t\tlabel: val,\n\t\t\t\tisSort: true,\n\t\t\t\tsortOrder: SortOrder.desc\n\t\t\t};\n\t\t\tif (header.label === this.sortingEvent.label) \n\t\t\t{\n\t\t\t\theader.sortOrder = this.sortingEvent.sortOrder;\n\t\t\t}\n\t\t\tthis.myQuotesCardListObject.header.push(header);\n\t\t});\n\t}\n\tmapEquipmentQuotesData(data: EquipmentQuoteListResponse)\n\t{\n\t\tthis.updateCardState = MyQuotesFactory.buildMyQuotetList();\n\t\tthis.myQuotesCardListObject = MyQuotesFactory.buildTableData();\n\t\tthis.myQuotesCardListObject.view = window.innerWidth >= 768 ? ScreenView.accordionDeskTop : ScreenView.accordionMobile;\n\t\tthis.myQuotesCardListObject.cardListOrangeIcon = this.sharedUtilService.getCardListOrangeIcon();\n\t\tthis.myQuotesCardListObject.cardListGrayIcon = this.sharedUtilService.getCardListGreyIcon();\n\t\tthis.myQuotesCardListObject.cardListAccordionIcon = this.sharedUtilService.getCardListAccordionIcon();\n\t\tthis.myQuotesCardListObject.pageInfo = data?.pageInfo;\n\t\tthis.getHeader();\t \n\t\tthis.totalCount = data?.pageInfo?.totalCount;\n\t\tconst isFilterApplied = this.myQuotesUtilService.checkForFilterApplied(this.myQuotesPayload);\n\t\tif (data?.records?.length > 0)\n\t\t{\n\t\t\tthis.getGridData(data);\n\t\t\tthis.getMyQuotesStatusCount(data);\n\t\t\tthis.checkForActiveIndex();\n\t\t}\n\t\telse if (data?.records?.length === 0 && isFilterApplied) \n\t\t{\n\t\t\tthis.myQuotesCardListObject.error = {\n\t\t\t\tmessage: this.state.sectionMiddle.noResult.noResultFoundText,\n\t\t\t\tmessageSubText: this.state.sectionMiddle.noResult.noResultFoundSubText,\n\t\t\t\ticon: Icons.noResult\n\t\t\t};\n\t\t\tthis.getMyQuotesStatusCount(data);\n\t\t}\n\t\telse \n\t\t{\n\t\t\tthis.myQuotesCardListObject.error = {\n\t\t\t\tmessage: this.state.sectionMiddle.noResult.noQuotesAvailble,\n\t\t\t\tmessageSubText: this.state.sectionMiddle.noResult.noResultFoundSubText,\n\t\t\t\ticon: Icons.noResult\n\t\t\t};\n\t\t\tthis.getMyQuotesStatusCount(data);\n\t\t}\n\t}\n\tcheckForActiveIndex()\n\t{\n\t\tif (this.sortingEvent.label)\n\t\t{\n\t\t\tconst headers = this.myQuotesCardListObject.header;\n\t\t\tfor (const index in headers)\n\t\t\t{\n\t\t\t\tif (this.sortingEvent.label === headers[index].label)\n\t\t\t\t\tthis.myQuotesCardListObject.activeIndex = parseInt(index);\n\t\t\t}\n\t\t}\n\t}\n\tpublic getGridData(data: EquipmentQuoteListResponse)\n\t{\n\t\tdata.records.forEach((obj) =>\n\t\t{\n\t\t\tconst quoteDataOrderObj=MyQuotesFactory.myQuoteTabelData();\n\t\t\tobj = Object.assign(quoteDataOrderObj, obj);\n\t\t\tthis.deleteObjectProperties(obj);\n\t\t\tconst gridObj: KngValueObjState = {\n\t\t\t\tcollapsed: false,\n\t\t\t\tvalues: []\n\t\t\t};\n\t\t\tthis.getGridDataMap(obj, gridObj);\n\t\t});\n\t\tthis.updateCardState = this.myQuotesCardListObject;\n\t}\n\tgetGridDataMap(obj: MyQuotesGridListObj, gridObj:KngValueObjState)\n\t{\n\t\tObject.entries(obj).forEach(([ key, value ]) =>\n\t\t{\n\t\t\tconst label = this.sharedService.getLabel(key, this.myQuotesTableLabels);\n\t\t\tif (label !== '')\n\t\t\t{\n\t\t\t\tconst valueState: KngValueListState = {\n\t\t\t\t\tlabel: label,\n\t\t\t\t\tlabelValue: value,\n\t\t\t\t\ticon: '',\n\t\t\t\t\tcssClass: '',\n\t\t\t\t\tcategory: this.myQuotesUtilService.checkCategory(key)\n\t\t\t\t};\n\t\t\t\tif (key === FieldName.billingAddress) \n\t\t\t\t{\n\t\t\t\t\tvalueState.labelValue = this.myQuotesUtilService.formatAddress(value);\n\t\t\t\t}\n\t\t\t\tif (key === FieldName.dealership) \n\t\t\t\t{\n\t\t\t\t\tvalueState.labelValue = this.myQuotesUtilService.getDealerShipDetail(value);\n\t\t\t\t}\n\t\t\t\tif(key === FieldName.status)\n\t\t\t\t{\n\t\t\t\t\tvalueState.labelValue = this.myQuotesUtilService.checkStatus(value);\n\t\t\t\t}\n\t\t\t\tgridObj.documentURL = obj.documentURL;\n\t\t\t\tgridObj.values.push(valueState);\n\t\t\t}\n\t\t});\n\t\tthis.myQuotesCardListObject.list.push(gridObj);\n\t}\n\tdeleteObjectProperties(obj: MyQuotesGridListObj) \n\t{\n\t\tif (obj.status !== StatusPayload.ordered && obj.status !== StatusPayload.quoteAccepted) \n\t\t\tdelete obj.orderID;\n\t}\n\tgetMyQuotesStatusCount(data: EquipmentQuoteListResponse): void\n\t{\n\t\tthis.state.sectionMiddle.invoiceStatusUpdated = false;\n\t\tif (this.invoiceStatusCount)\n\t\t{\n\t\t\tthis.invoiceStatusCount.count.forEach((status) => \n\t\t\t{\n\t\t\t\tstatus.amount = data.inProcessCount + data.acceptedCount + data.orderedCount + data.expiredCount + data.readyForReviewCount;\n\t\t\t\tstatus.amount = this.myQuotesUtilService.getMyQuotesStatusAmount(status, data);\n\t\t\t});\n\t\t}\n\t\tsetTimeout(() =>\n\t\t{\n\t\t\tthis.state.sectionMiddle.invoiceStatusUpdated = true;\n\t\t});\n\t}\n\tdownloadMyQuotesData(page: number): void\n\t{\n\t\tthis.myQuotesPayload.skip = page;\n\t\tconst payload = this.myQuotesPayload;\n\t\tpayload.limit = this.totalCount;\n\t\tthis.state.sectionMiddle.download.disabled= true;\n\t\tthis.apiService.downloadMyQuotesTableList(payload).subscribe({ next: (res) =>\n\t\t{\n\t\t\tconst date = new Date().toString();\n\t\t\tconst fileName = FileName.myQuotesList + '_' + this.dateService.tranformDate(date, 'MMddyyyyhhmmss');\n\t\t\tthis.sharedService.downloadExcel(fileName, res);\n\t\t\tthis.state.sectionMiddle.download.disabled= false;\n\t\t\tconst download: TrackFileDownload = { fileName, fileType: 'My Quotes' };\n\t\t\tthis.myQuotesUtilService.trackSuccessByEvent('Download Success', 'MyQuotes - Download Button', undefined, download);\n\t\t},\n\t\terror: (error: HttpErrorResponse): void =>\n\t\t{\n\t\t\tif(error)\n\t\t\t{\n\t\t\t\tthis.handleDownloadError(error);\n\t\t\t}\n\t\t},\n\t\tcomplete: () =>\n\t\t{\n\t\t\tsetTimeout(() =>\n\t\t\t{\n\t\t\t\tthis.myQuotesCardListObject.loading = false;\n\t\t\t\tthis.state.sectionMiddle.download.disabled= false;\n\t\t\t}, 1000);\n\t\t}\n\t\t});\n\t}\n\tasync handleDownloadError(error: HttpErrorResponse): Promise\n\t{\n\t\tconst errormessage = JSON.parse(await error.error.text()).message;\n\t\tthis.loggerService.error( 'error in My Quotes Table Data download', error );\n\t\tthis.state.sectionMiddle.download.disabled= false;\n\t\tthis.toaster.error(errormessage);\n\t\tthis.myQuotesUtilService.trackErrorByEvent('Download Failed', errormessage, 'MyQuotes - Download Button');\n\t\tthrow error;\n\t}\n\tgetdownloadQuotePdf( documentURL: string | undefined)\n\t{\n\t\tconst downloadPdfpayload : DownloadPDFPayload = {\n\t\t\tdocumentURL: documentURL\n\t\t};\n\t\tconst pdfFileName = (documentURL?.split('=') ?? [])[1];\n\t\tthis.apiService.downloadQuotePDF(downloadPdfpayload).subscribe({ next: (res) =>\n\t\t{\n\t\t\tthis.sharedService.downloadPDF(pdfFileName, res);\n\t\t\tconst download: TrackFileDownload = { pdfFileName, fileType: 'My Quotes' };\n\t\t\tthis.myQuotesUtilService.trackSuccessByEvent('Download Success', 'MyQuotes - Download Button', undefined, download);\n\t\t},\n\t\terror: (error: HttpErrorResponse): void =>\n\t\t{\n\t\t\tif(error)\n\t\t\t{\n\t\t\t\tthis.handlePDFDownloadError(error);\n\t\t\t}\n\t\t}\n\t\t});\n\t}\n\tasync handlePDFDownloadError(error: HttpErrorResponse)\n\t{\n\t\tconst errormessage = JSON.parse(await error.error.text()).message;\n\t\tthis.loggerService.error( 'error in My Quotes PDF Download', error );\n\t\tthis.toaster.error(errormessage);\n\t\tthis.myQuotesUtilService.trackErrorByEvent('Download Failed', errormessage, 'MyQuotes Download Button');\n\t\tthrow error;\n\t}\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { DefaultValue, FieldName, MyQuotesStatusHeader, SortOrder } from '../../services/shared/shared-enums';\nimport { BillingAddressPayload, BillingAddressResponse, Dealership, EquipmentQuoteListResponse, MyQuotesGridListObj, MyQuotesPayload, MyQuotesState, StatusPayload, InvoiceStatusLabel } from './definitions';\nimport { AnalyticsService } from '../../services/analytics/analytics.service';\nimport { AnalyticsDataLayer, TrackFileDownload, TrackSearch } from '../../services/analytics/definitions';\nimport { Address, LocationAddress, PromoBannerApiResponse, PromoBannerData } from '../../services/shared/shared-interface';\nimport { SharedService } from '../../services/shared/shared.service';\nimport { Control, ControlType, Count, FieldType } from 'kinetic-angular';\nimport { nullCheckValue } from '../../services/shared/shared-constants';\nimport { SharedUtilService } from '../../services/shared/shared-util.service';\nimport { DateConverterService } from '../../services/date-converter/date-converter.service';\nimport { BehaviorSubject, concatMap, tap } from 'rxjs';\nimport { ApiResponse } from '../../definitions/api-response.interface';\nimport { MyQuotesFactory } from './my-quotes.factory';\nimport { LoggerService } from '../../services/logger/logger.service';\nimport { ApiService } from '../../services/api/api.service';\nimport { SharedFilterService } from '../../services/shared/shared-filter.service';\nimport { expEnvironmentRef } from '../../injection-tokens/environment.injection-token';\nimport { EnvironmentRef } from 'projects/tmhna-portal/src/environments/interfaces';\nimport { HttpErrorResponse } from '@angular/common/http';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class MyQuotesUtilService \n{\n\tprivate readonly state$: BehaviorSubject = new BehaviorSubject(MyQuotesFactory.build());\n\tbillingAddressListState: BehaviorSubject = new BehaviorSubject(MyQuotesFactory.billingAddressData());\n\tbillingAddressFilterControls: Control[] = [];\n\taemBaseUrl: string = this.environmentRef.aemBaseUrl;\n\tbannerFlag: boolean = false;\n\tget state(): MyQuotesState \n\t{\n\t\treturn this.state$.value;\n\t}\n\tpublic updateState(value: MyQuotesState): void \n\t{\n\t\tthis.state$.next(value);\n\t}\n\tconstructor(public analyticsService: AnalyticsService, public sharedService: SharedService, public sharedUtilService: SharedUtilService, public dateService: DateConverterService,\n\t\tpublic apiService: ApiService, private readonly loggerService: LoggerService, public sharedFilterService: SharedFilterService, @Inject(expEnvironmentRef) readonly environmentRef: EnvironmentRef) { }\n\n\tgetDefaultPayload(): MyQuotesPayload \n\t{\n\t\treturn {\n\t\t\tskip: DefaultValue.skip,\n\t\t\tlimit: DefaultValue.limit,\n\t\t\tlocations: [],\n\t\t\tsearchValue: '',\n\t\t\tstatus: [],\n\t\t\tsalesProspectAddress: [],\n\t\t\tsort: { field: 'creationDate', order: SortOrder.desc }\n\t\t};\n\t}\n\ttrackSuccessByEvent(event: AnalyticsDataLayer['event'], link: string, search?: TrackSearch, download?: TrackFileDownload): void\n\t{\n\t\tconst eventData: AnalyticsDataLayer = {\n\t\t\tevent,\n\t\t\tlink: {\n\t\t\t\tname: link\n\t\t\t}\n\t\t};\n\t\tif(download)\n\t\t{\n\t\t\teventData['download'] = download;\n\t\t}\n\t\tif(search)\n\t\t{\n\t\t\teventData['search'] = search;\n\t\t}\n\t\tthis.analyticsService.trackByEvent(eventData);\n\t}\n\ttrackErrorByEvent(event: AnalyticsDataLayer['event'], errorMessage: string, link?: string, search?: string): void\n\t{\n\t\tconst eventData: AnalyticsDataLayer = {\n\t\t\tevent,\n\t\t\terror: {\n\t\t\t\tmessage: errorMessage\n\t\t\t}\n\t\t};\n\t\tif(link)\n\t\t{\n\t\t\teventData['link'] = { name: link };\n\t\t}\n\t\tif(search)\n\t\t{\n\t\t\teventData['search'] = { keyword: search };\n\t\t}\n\t\tthis.analyticsService.trackByEvent(eventData);\n\t}\n\tformatAddress(address: Address): string\n\t{\n\t\taddress = this.sharedService.nullAddressHandler(address);\n\t\treturn this.sharedService.formatAddress(address, true);\n\t}\n\tgetMyQuotesStatusAmount(status: Count, data: EquipmentQuoteListResponse): number\n\t{\n\t\tswitch (status.header)\n\t\t{\n\t\tcase MyQuotesStatusHeader.readyForReview:\n\t\t\tstatus.amount = data.readyForReviewCount;\n\t\t\tbreak;\n\t\tcase MyQuotesStatusHeader.quoteinProcess:\n\t\t\tstatus.amount = data.inProcessCount;\n\t\t\tbreak;\n\t\tcase MyQuotesStatusHeader.quoteAccepted:\n\t\t\tstatus.amount = data.acceptedCount;\n\t\t\tbreak;\n\t\tcase MyQuotesStatusHeader.ordered:\n\t\t\tstatus.amount = data.orderedCount;\n\t\t\tbreak;\n\t\tcase MyQuotesStatusHeader.expired:\n\t\t\tstatus.amount = data.expiredCount;\n\t\t\tbreak;\n\t\t}\n\t\treturn status.amount;\n\t}\n\tgetBillingAddressFilterControls(controls: Control[], billingAddresses: LocationAddress[]): Control[] \n\t{\n\t\tconst selectedBillingAddress: Control[] = [];\n\t\tcontrols.forEach(address => \n\t\t{\n\t\t\tif (address.value)\n\t\t\t\tselectedBillingAddress.push(address);\n\t\t});\n\t\tcontrols = this.getBillingAddressValues(billingAddresses);\n\t\tcontrols.forEach(address => \n\t\t{\n\t\t\tselectedBillingAddress.forEach(element => \n\t\t\t{\n\t\t\t\tif (element.id === address.id)\n\t\t\t\t\taddress.setValue(true);\n\t\t\t});\n\t\t});\n\t\treturn controls;\n\t}\n\tgetBillingAddressValues(billingAddresses: LocationAddress[]): Control[]\n\t{\n\t\tconst assignedBillingAddress: Control[] = [];\n\t\tbillingAddresses?.forEach((element, index) =>\n\t\t{\n\t\t\tconst address = {\n\t\t\t\taddressLine1: element.addressLine1,\n\t\t\t\taddressLine2: element.addressLine2,\n\t\t\t\tcity: element.city,\n\t\t\t\tstate: element.state,\n\t\t\t\tcountry: element.country,\n\t\t\t\tzipCode: element.postalCode\n\t\t\t};\n\t\t\tconst data = { name: element.label || '', id: index.toString(), address };\n\t\t\tassignedBillingAddress.push(this.sharedService.initialiseFilterControl(data.id, data.name, ControlType.checkbox, data.address));\n\t\t});\n\t\treturn assignedBillingAddress;\n\t}\n\tgetDealerShipDetail(dealerDetails: Dealership): string \n\t{\n\t\tif(dealerDetails && !Object.values(dealerDetails).every(value => value === null))\n\t\t{\n\t\t\tconst dealerName = this.sharedService.nullValueHandler(dealerDetails.dealerName);\n\t\t\tconst formattedAddress = this.sharedService.formatAddress(dealerDetails, true);\n\t\t\tif(!dealerDetails.dealerName && formattedAddress)\n\t\t\t{\n\t\t\t\treturn this.sharedService.nullValueHandler(formattedAddress);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst dealerShipDetails = formattedAddress ? dealerName + ',' + '\\n' + formattedAddress : dealerName;\n\t\t\t\treturn this.sharedService.nullValueHandler(dealerShipDetails);\n\n\t\t\t}\n\t\t}\n\t\telse \n\t\t{\n\t\t\treturn nullCheckValue;\n\t\t}\n\t}\n\tcheckCategory(key: string): string\n\t{\n\t\tlet selectedCat: string = FieldType.text;\n\t\tselectedCat = (key === FieldName.status) ? FieldType.myQuoteStatus : this.sharedUtilService.getFieldType(key);\n\t\treturn selectedCat;\n\t}\n\tcheckStatus(value: string): string\n\t{\n\t\tif(value === StatusPayload.quoteinProcess)\n\t\t{\n\t\t\tvalue = InvoiceStatusLabel.quoteinProcess;\n\t\t}\n\t\tif(value === StatusPayload.quoteAccepted)\n\t\t{\n\t\t\tvalue = InvoiceStatusLabel.quoteAccepted;\n\t\t}\n\t\treturn value;\n\t}\n\ttrackAnalytics(data: MyQuotesGridListObj[], searchData: string, totalCount: number)\n\t{\n\t\tif(data.length > 0)\n\t\t{\n\t\t\tconst search: TrackSearch = {\n\t\t\t\tkeyword: searchData,\n\t\t\t\tnumberOfResults: totalCount,\n\t\t\t\ttype: 'Equipment Quotes'\n\t\t\t};\n\t\t\tthis.trackSuccessByEvent('search results', 'search results', search);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.trackErrorByEvent('search results', 'No Results Found.', 'search results', searchData);\n\t\t}\n\t}\n\tcheckForFilterApplied(myQuotesPayload: MyQuotesPayload): boolean\n\t{\n\t\tconst totalStatusLength = Object.keys(StatusPayload).length;\n\t\tconst hasValidSearchValue = myQuotesPayload.searchValue && myQuotesPayload.searchValue.length >= 4;\n\t\tconst hasBillingAddress = myQuotesPayload.salesProspectAddress?.length;\n\t\tconst hasMismatchedStatusLength = myQuotesPayload.status?.length !== totalStatusLength;\n\t\tconst hasDateRangeFilterApplied = this.checkForDateRageFilterApplied(myQuotesPayload);\n\t\tif(hasValidSearchValue || hasBillingAddress || hasMismatchedStatusLength || hasDateRangeFilterApplied)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tcheckForDateRageFilterApplied(myQuotesPayload: MyQuotesPayload): boolean\n\t{\n\t\tlet hasDateRangeFilterApplied = false;\n\t\tconst currentDate = new Date();\n\t\tconst defaultStartDate = new Date(this.dateService.getFromDate(new Date(), 60)).toISOString().substring(0, 10);\n\t\tconst defaultEndDate = new Date(this.dateService.getUnixTimeStamp(currentDate)).toISOString().substring(0, 10);\n\t\tif(myQuotesPayload.startDate !== defaultStartDate || myQuotesPayload.endDate !== defaultEndDate)\n\t\t{\n\t\t\thasDateRangeFilterApplied = true;\n\t\t}\n\t\treturn hasDateRangeFilterApplied;\n\t}\n\tgetBillingAddress(): void\n\t{\n\t\tconst payload: BillingAddressPayload = {\n\t\t\tlocations: []\n\t\t};\n\t\tthis.sharedService\n\t\t\t.getLoggedInUseLocationsIdsObs()\n\t\t\t.pipe(\n\t\t\t\ttap((locationIds: string[]) =>\n\t\t\t\t{\n\t\t\t\t\tpayload.locations = locationIds;\n\t\t\t\t}),\n\t\t\t\tconcatMap(() => this.apiService.getBillingAddress(payload))\n\t\t\t)\n\t\t\t.subscribe({\n\t\t\t\tnext: (res: ApiResponse) =>\n\t\t\t\t{\n\t\t\t\t\tif (res?.data)\n\t\t\t\t\t{\n\t\t\t\t\t\tconst data = res.data;\n\t\t\t\t\t\tthis.billingAddressListState.next(data.records);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: (error) =>\n\t\t\t\t{\n\t\t\t\t\tthis.loggerService.error('error in my quotes search billing address call', error);\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t});\n\t}\n\tpublic async findAssignedBillingAddress(searchKey: string): Promise \n\t{\n\t\tthis.billingAddressFilterControls = this.getBillingAddressFilterControls(this.billingAddressFilterControls, this.billingAddressListState.value);\n\n\t\treturn this.sharedFilterService.findSearchedAddress(searchKey, this.billingAddressFilterControls);\n\t}\n\tupdateBillingAddressSection(sectionControls: Control[], appliedAddressIds: string[]): void\n\t{\n\t\tif (appliedAddressIds && appliedAddressIds.length > 0) \n\t\t{\t\t\t\n\t\t\tsectionControls.forEach((control) => \n\t\t\t{\n\t\t\t\tif (control.type === ControlType.checkbox)\n\t\t\t\t{\n\t\t\t\t\tif(!appliedAddressIds.includes(control.id))\n\t\t\t\t\t\tcontrol.setValue(false);\n\t\t\t\t\telse\n\t\t\t\t\t\tcontrol.setValue(true);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\telse \n\t\t{\n\t\t\tsectionControls.forEach((control: Control) => \n\t\t\t{\n\t\t\t\tif (control.type === ControlType.checkbox)\n\t\t\t\t\tcontrol.setValue(false);\n\t\t\t});\n\t\t}\n\n\t}\n\tgetquotePromoBanner()\n\t{\n\t\tthis.apiService.quoteContentBlock().subscribe({ next: (res) =>\n\t\t{\n\t\t\tif (res?.data)\n\t\t\t{\n\t\t\t\tconst responseObj: PromoBannerApiResponse = (res.data);\n\t\t\t\tthis.handleSubscriptions(responseObj);\n\t\t\t\tthis.bannerFlag = true;\n\t\t\t}\n\t\t},\n\t\terror: (error: HttpErrorResponse): void =>\n\t\t{\n\t\t\tif(error)\n\t\t\t{\n\t\t\t\tthis.state.sectionBottom.sectionPromoBanner.subscriptionBanner.subscriptionsDesktop = [];\n\t\t\t\tthis.state.sectionBottom.sectionPromoBanner.subscriptionBanner.subscriptionsMobile = [];\n\t\t\t\tthis.bannerFlag = false;\n\t\t\t}\n\t\t}\n\t\t});\n\t}\n\thandleSubscriptions(res: PromoBannerApiResponse)\n\t{\n\t\tif(res.subscriptionBanner)\n\t\t{\n\t\t\tif(res.subscriptionBanner.subscriptionsDesktop.length > 0)\n\t\t\t{\n\t\t\t\t\t res.subscriptionBanner.subscriptionsDesktop.forEach((item) =>\n\t\t\t\t{\n\t\t\t\t\tthis.assignSubscriptionItems(item);\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis.state.sectionBottom.sectionPromoBanner.subscriptionBanner.subscriptionsDesktop = res.subscriptionBanner.subscriptionsDesktop? res.subscriptionBanner.subscriptionsDesktop: [];\n\t\t\tif(res.subscriptionBanner.subscriptionsMobile.length > 0)\n\t\t\t{\n\t\t\t\tres.subscriptionBanner.subscriptionsMobile.forEach( (item) =>\n\t\t\t\t{\n\t\t\t\t\tthis.assignSubscriptionItems(item);\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis.state.sectionBottom.sectionPromoBanner.subscriptionBanner.subscriptionsMobile = res.subscriptionBanner.subscriptionsMobile? res.subscriptionBanner.subscriptionsMobile : [];\n\t\t}\n\t}\n\t\n\tassignSubscriptionItems(item : PromoBannerData)\n\t{\n\t\tif(item)\n\t\t{\n\t\t\titem.heading= item?.heading ? item?.heading : '';\n\t\t\titem.link.url= this.sharedService.nullValueHandler(item.link?.url);\n\t\t\titem.link.label= this.sharedService.nullValueHandler(item.link?.label);\n\t\t\titem.link.icon.iconPath= this.sharedService.nullValueHandler(item.link?.icon?.iconPath);\n\t\t\titem.link.icon.altText= this.sharedService.nullValueHandler(item.link?.icon?.altText);\n\t\t\titem.bannerImage= {\n\t\t\t\ticonPath: this.sharedService.nullValueHandler(this.aemBaseUrl + item.bannerImage?.iconPath),\n\t\t\t\taltText: this.sharedService.nullValueHandler(item.bannerImage?.altText)\n\t\t\t};\n\t\t}\n\t}\n\n}\n","/* eslint-disable max-lines */\nimport { FormControl } from '@angular/forms';\nimport { KngButtonState, KngCardListState, KngFilterState, ModalState, PageInfo, CardTypes, KngCountOfItemCardDataState, ConnectedCount, Address } from 'kinetic-angular';\nimport { Endpoint, EndpointRoutes } from 'projects/tmhna-portal/src/environments/interfaces';\nimport { AssignedLocation, BtnListLabel, SucessErrorModel, LinkData, IdLabelPair, Image, SearchLabels, TokenData, SortObj } from '../../../services/shared/shared-interface';\nimport { SortOrder } from '../../../services/shared/shared-enums';\nimport { UpdateLocationLabelInterface } from '../../account-settings/definitions/remove-locations.interface';\nexport interface Myfleet {\n state: MyfleetState;\n}\nexport interface MyfleetState {\n sectionTop: MyFleetSectionTop;\n sectionMiddle: MyFleetSectionMiddle;\n sectionBottom: MyFleetSectionBottom;\n}\nexport interface MyFleetSectionTop {\n heading: string;\n addNewEquipButton: KngButtonState;\n addNewEquipModel: AddEquipmentState;\n addNewLocationModel: AddNewLocationstate;\n}\nexport interface AddEquipmentState {\n state: ModalState;\n successModal: SucessErrorModel;\n failureModal: SucessErrorModel;\n successModalState: ModalState;\n failureModalState: ModalState;\n equipmentDetails: string;\n model: TextBoxLabel;\n serial: TextBoxLabel;\n make: TextBoxLabel;\n equipmentType: TextBoxLabel;\n manufacturerYear: TextBoxLabel;\n location: {\n label: string;\n value: string;\n placeholder: string;\n noLocationFound: string;\n };\n addNewLoaction: AddNewLocationLabel;\n viewEquipment: string;\n comments: TextBoxLabel;\n verify: KngButtonState;\n cancel: KngButtonState;\n submit: KngButtonState;\n modalFields : ModalFields[];\n description: string;\n currentLocation: string;\n newLocationLabel: string;\n noMatchFoundLabel: string;\n noMatch: {\n title : string;\n subheading: {\n toyota : {\n note : string;\n linkText: string;\n link: string;\n };\n nonToyota: {\n note : string;\n };\n };\n };\n}\nexport interface AddNewLocationstate {\n state: ModalState;\n}\nexport interface AddNewLocationModalLabel {\n heading: string;\n tokenData: TokenData[];\n\n cancel: string;\n confirm: string;\n}\nexport interface MyFleetFilteringPanelSection {\n filterIcon: string;\n filterIconAltText: string;\n filterLabel: string;\n selectedFilterLabel?: string;\n clearAll?: string;\n filterState: KngFilterState;\n searchController: {\n placeholder: string;\n icon: string;\n formControl: FormControl;\n } | null;\n invalidSearchText?: string;\n}\nexport interface MyFleetSectionMiddle {\n heading: string | null;\n filteringPanelSection: MyFleetFilteringPanelSection;\n unitWidgets: KngCountOfItemCardDataState;\n ticfWidgets: KngCountOfItemCardDataState;\n equipmentWidgets: KngCountOfItemCardDataState;\n\n}\nexport interface MyFleetSectionBottom {\n heading: string;\n downloadButton: KngButtonState;\n fleetList: KngCardListState;\n changeRequestList: KngCardListState;\n filteringPanelSection: MyFleetFilteringPanelSection;\n moveEquipment: MoveEquipment;\n moveBulkEquipment: BulkEquipmentLabel;\n removeBulkEquipment: BulkEquipmentLabel;\n loader?: boolean;\n fleetListTabHeader: string;\n changeRequestTabHeader: string;\n changeRequestAemLabels: ChangeRequest;\n errorText?: string;\n errorSubText?: string;\n bulkEquipmentDetails: BulkEquipmentDetails;\n filterDropdownState: FilterDropdown;\n}\n\nexport interface FilterDropdown {\n filterOptions: FilterOption[];\n selectedOption: string;\n}\nexport interface BulkEquipmentDetails {\n downloadReportLabel: string;\n toggleSwitchLabel: string;\n cancelbtnLabel: string;\n selectedCountLabel: string;\n searchPlaceholder: string;\n partialSuccess: BannerReport;\n failed: BannerReport;\n}\n\nexport interface BannerReport {\n heading: string;\n removeNote?: string;\n moveNote?: string;\n note: string;\n}\nexport interface ChangeRequest {\n search: SearchLabels;\n filter: FilterLabel;\n filterForm: FilterFormMiddle;\n changeRequestGrid: ChangeRequestHeaderLabel;\n noResult: NoResultModel;\n}\n\nexport interface FilterLabel {\n filterIcon: Image;\n filterText: string;\n selectedFilters: string;\n filterState: KngFilterState;\n clearAll: string;\n selectedFilterCloseIcon: Image;\n}\nexport interface FilterFormMiddle {\n formLabel: string;\n status: {\n accordionIconExpanded: Image;\n accordionIconCollapsed:Image;\n label: string;\n statusValues: IdLabelPair[];\n };\n dateRange: {\n label: string;\n accordionIconExpanded: Image;\n accordionIconCollapsed: Image;\n values: string[];\n customDateFromLabel: string;\n customDateToLabel: string;\n errorMessage?:string;\n };\n changeRequestType: CheckBoxFilter;\n resetButtonLabel: string;\n applyButtonLabel: string;\n}\nexport interface CheckBoxFilter {\n label: string;\n accordionIconExpanded: Image;\n accordionIconCollapsed: Image;\n changeRequestValues: IdLabelPair[];\n}\nexport interface ChangeRequestHeaderLabel {\n date: string;\n changeRequestID: string;\n vin: string;\n changeType: string;\n status: string;\n customerTo: string;\n customerFrom: string;\n reason: string;\n comments: string;\n userEmail:string;\n}\nexport interface NoResultModel {\n noResultFoundText: string;\n noResultFoundSubText:string;\n noResultFoundTableIcon: Image;\n}\nexport interface MyFleetCardDataState {\n cssClass: string;\n cardType: CardTypes;\n title: { label: string };\n image: { label: string; url: string; alt: string };\n unit: MyFleetCardUnitObject[];\n error?: string;\n loading?: boolean;\n}\nexport interface MyFleetCardUnitObject {\n label: string;\n description: { label: string };\n amount: string;\n connectedCount?: ConnectedCount;\n}\nexport interface MyFleetCardDataState {\n cssClass: string;\n cardType: CardTypes;\n title: { label: string };\n image: {\n label: string;\n url: string;\n alt: string;\n };\n unit: Array;\n}\nexport interface MyFleetCardObj {\n label: string;\n description: { label: string };\n amount: string;\n connectedCount?: ConnectedCount;\n}\nexport interface MyFleet {\n key: string;\n value: string;\n}\nexport interface MyFleetResponse {\n fleetData: MyFleet[];\n pageInfo: PageInfo;\n}\nexport interface MyFleetListRequest {\n skip: number;\n limit: number;\n customerIDs: string[];\n}\nexport interface MyFleetListHeader {\n exclamationIcon: string;\n vin: string;\n modelID: string;\n assetNumber: string;\n equipmentType: string;\n manufacturer: string;\n dateOfFirstUse: string;\n assignedLocation: string;\n moreIcon: string;\n}\nexport interface MyFleetTableSearchFilterPayload {\n skip: number;\n limit: number;\n equipmentVIN?: string;\n search?: string;\n customerIDs?: string[];\n assignedLocation?: string[];\n equipmentType?: string[];\n manufacturer?: string[];\n startDate?: number;\n endDate?: number;\n telematicStatus?: string;\n nodes?: string[];\n sort?: MyFleetSortObjectDTO;\n locations?: string[];\n locationLabelUpdate?: UpdateLocationLabelInterface;\n filterType?: string;\n}\nexport interface MyFleetWidgetFilterPayload {\n locations: string[];\n telematicsStatus?: string;\n equipmentType?: string[];\n startDate?: number;\n endDate?: number;\n}\n\nexport interface MyFleetWidgetApiPayload {\n locations: string[];\n telematicsStatus?: string;\n equipmentType?: string[];\n startDate? : string;\n endDate? : string;\n}\nexport interface MyFleetSortObjectDTO {\n field: string;\n order: SortOrder;\n}\n\nexport interface SearchFilterResponse {\n fleetData: MyFleet[];\n filterState: KngFilterState;\n pageInfo: PageInfo;\n}\n\nexport interface FleetFilterResponse {\n fleetData: FleetData[];\n filterState: KngFilterState;\n pageInfo: PageInfo;\n}\n\nexport interface FleetData {\n changeRequest?: {\n display: string;\n };\n}\nexport interface MyFleetAEMLabels {\n pageHeading: string;\n addNewEquipmentButton: string;\n overviewHeading: string;\n widget: MyFleetWidgetLabels;\n fleetListHeading: string;\n fleetList: MyFleetListLabels;\n}\nexport interface MyFleetWidgetLabels {\n filterIcon: Image;\n filterLabel: string;\n selectedFilterText: string;\n selectedFilterClearAll: string;\n selectedFilterCloseIcon: Image;\n filterForm: {\n formLabel: string;\n searchLocation: {\n accordionIconExpanded: Image;\n accordionIconCollapsed: Image;\n label: string;\n searchPlaceholder: string;\n searchIcon: Image;\n noResultsFoundLabel: string;\n showMore: string;\n showLess: string;\n };\n division: {\n accordionIconExpanded: Image;\n accordionIconCollapsed: Image;\n label: string;\n showMore: string;\n showLess: string;\n };\n group: {\n accordionIconExpanded: Image;\n accordionIconCollapsed: Image;\n label: string;\n showMore: string;\n showLess: string;\n noAssociatedGroupsText: string;\n };\n resetButtonLabel: string;\n applyButtonLabel: string;\n };\n}\nexport interface MyFleetListLabels {\n searchIcon: Image;\n filterIcon: Image;\n searchPlaceholder: string;\n invalidSearchText: string;\n filterLabel: string;\n selectedFilterLabel: string;\n clearAll: string;\n selectedFilterCloseIcon: Image;\n clearAllLabel: string;\n filterForm: {\n formLabel: string;\n searchLocation: SearchLocation;\n equipmentType: {\n accordionIconExpanded: Image;\n accordionIconCollapsed: Image;\n label: string;\n searchPlaceholder: string;\n searchIcon: Image;\n noResultsFoundLabel: string;\n };\n dateRange: {\n accordionIconExpanded: Image;\n accordionIconCollapsed: Image;\n label: string;\n values: string[];\n customDateFromLabel: string;\n customDateToLabel: string;\n };\n connected: {\n accordionIconExpanded: Image;\n accordionIconCollapsed: Image;\n label: string;\n values: IdLabelPair[];\n };\n division: {\n accordionIconExpanded: Image;\n accordionIconCollapsed: Image;\n label: string;\n showMore: string;\n showLess: string;\n };\n group: {\n accordionIconExpanded: Image;\n accordionIconCollapsed: Image;\n label: string;\n showMore: string;\n showLess: string;\n noAssociatedGroupsText: string;\n };\n clearallButtonLabel: string;\n applyButtonLabel: string;\n };\n downloadLabel: string;\n gridData: MyFleetGridLabels;\n errorText: string;\n errorSubText: string;\n noResultFoundTableLabel?: string;\n noResultFoundTableIcon?: Image;\n}\nexport interface GridDataObj {\n date: number;\n changeRequestId: string;\n status: string;\n customerTo: string;\n customerFrom: string;\n changeType: string;\n vin: string;\n reason?: string;\n comments?: string;\n userEmail:string;\n}\nexport interface MyFleetGridLabels {\n vinNumber: string;\n assetNumber: string;\n modelID: string;\n dateOfFirstUse: string;\n assignedLocation: string;\n equipmentType: string;\n manufacturer: string;\n serviceCampaignAltText: string;\n serviceCampaignToolTip: string;\n elipse: {\n altText: string;\n options: {\n move: string;\n remove: string;\n editLocation: string;\n };\n };\n connectedIcon: Image;\n notConnectedIcon: Image;\n errorIcon: Image;\n}\nexport interface SearchLocationObject {\n searchLocation: SearchLocation;\n}\nexport interface SearchLocation {\n accordionIconExpanded: Image;\n accordionIconCollapsed: Image;\n label: string;\n searchPlaceholder: string;\n searchIcon: Image;\n noResultsFoundLabel: string;\n showMore: string;\n showLess: string;\n}\nexport interface MyFleetAemEndPoint extends Endpoint {\n baseUrl: string;\n routes: MyFleetLabelsEndpointRoutes;\n}\nexport interface MyFleetLabelsEndpointRoutes extends EndpointRoutes {\n myfleet: {\n toString: () => string;\n myfleetlabels: {\n toString: () => string;\n };\n };\n}\nexport interface MoveEquipment {\n state: ModalState;\n successModal: SucessErrorModel;\n failureModal: SucessErrorModel;\n successModalState: ModalState;\n failureModalState: ModalState;\n currentLocation: {\n label: string;\n value: AssignedLocation;\n };\n description: string;\n comments: {\n label: string;\n value: string;\n placeholder: string;\n };\n newLocation: {\n label: string;\n value: string;\n placeholder: string;\n noLocationFound: string;\n };\n addNewLocation: AddNewLocationLabel;\n}\nexport interface MoveTruckPayload {\n vin: string | boolean | number | undefined;\n targetCustomerId: string;\n comment: string;\n technicalObjectType?: string | null;\n manufacturer: string;\n model?: string;\n serialNumber?: string;\n flow?: 'ADD' | 'MOVE';\n}\n\nexport interface ReportTruckIssue {\n comments: string;\n manufacturer: string;\n model?: string;\n serialNumber?: string;\n issueType: string;\n location: string;\n reason: string;\n customerId: string;\n}\nexport interface AddTruckPayload {\n model: string;\n serial: string;\n locationId: string;\n manufacturer: string;\n manufactureYear?: string;\n equipmentClassification?: string;\n}\nexport interface VerifyTruckPayload {\n model: string;\n serialNumber: string;\n locationId: string;\n manufacturer: string;\n}\nexport enum MyFleetHeadrNames {\n equipmentVin='VIN',\n modelID = 'Model Number',\n assetNumber = 'Asset',\n equipmentType = 'Equipment Classification',\n manufacturer = 'Make',\n dateOfFirstUse = 'Date of First Use',\n assignedLocation='Assigned Location',\n telematicsStatus = 'Connected',\n fleetType = 'Fleet Type',\n moreIcon = '',\n exclamationIcon = ''\n}\n\nexport interface ImgModel {\n imgPath: string;\n altText: string;\n}\nexport interface ToolTipContentLabel {\n topText: string;\n middleText: {\n boxText: string;\n img: ImgModel;\n };\n bottomText: {\n topContent: string;\n modelHeading: string;\n modelDescription: string;\n serialHeading: string;\n serialDescription: string;\n endContent: string;\n link: LinkData;\n };\n closeBtn: string;\n}\nexport interface ValidationLabel {\n clientSide: {\n invalid: string;\n requestExists: string;\n };\n serverSide: {\n equipmentFound: string;\n };\n}\nexport interface TextBoxLabel {\n label: string;\n placeholder: string;\n tooltipIcon?: Image;\n tooltipContent?: ToolTipContentLabel;\n validation?: ValidationLabel;\n}\nexport interface AddEquipmentLabel {\n heading: string;\n equipmentDetails: string;\n model: TextBoxLabel;\n serial: TextBoxLabel;\n newLocation: TextBoxLabel;\n viewEquipment: string;\n btnList: BtnListLabel;\n successModal: SucessErrorModel;\n errorModal: SucessErrorModel;\n make: TextBoxLabel;\n manufacturerYear: TextBoxLabel;\n equipmentType: TextBoxLabel;\n addNewLocationConfirmationModal: AddNewLocationModalLabel;\n comments: TextBoxLabel;\n verify: string;\n cancel: string;\n submit: string;\n currentLocation: string;\n modalFields : ModalFields[];\n description: string;\n newLocationLabel: string;\n noMatchFoundLabel: string;\n noMatch: {\n title : string;\n subheading: {\n toyota : {\n note : string;\n linkText: string;\n link: string;\n };\n nonToyota: {\n note : string;\n };\n };\n };\n\n}\nexport interface MoveEquipmentLabel {\n heading: string;\n currentLocation: string;\n description: string;\n newLocation: TextBoxLabel;\n comments: TextBoxLabel;\n btnList: BtnListLabel;\n successModal: SucessErrorModel;\n errorModal: SucessErrorModel;\n}\nexport interface LocationLabel {\n label: string;\n address: AssignedLocation;\n locationValidationServerSideBold: string;\n locationValidationServerSide: string;\n useVerifiedAddress: string;\n editAddress: string;\n}\nexport interface SearchLabel {\n icon: Image;\n nolocationFound: string;\n searchResultclose: Image;\n}\nexport interface AddNewLocationLabel {\n addNewlabel: string;\n selectExistingLabel: string;\n addNewicon: Image;\n}\nexport interface SuccessErrorLabel {\n label: string;\n message: string[];\n btnList: {\n close: string;\n add?: string;\n };\n}\nexport interface ModalLabel {\n success: SuccessErrorLabel;\n error: SuccessErrorLabel;\n close: Image;\n}\nexport interface AddMoveEquipmentLabel {\n addNewEquipment: AddEquipmentLabel;\n moveEquipment: MoveEquipmentLabel;\n moveBulkEquipment: BulkEquipmentLabel;\n removeBulkEquipment: BulkEquipmentLabel;\n close: Image;\n location: LocationLabel;\n search: SearchLabel;\n addNewLocation: AddNewLocationLabel;\n bulkEquipmentDetails: BulkEquipmentDetails;\n filterDropdownState: FilterDropdown;\n}\n\ninterface SelectMake {\n sectionHeading: string;\n options: string[];\n}\n\nexport interface AddBulkEquipmentLabel {\n heading: string;\n selectMake: SelectMake;\n uploadInfoText: string;\n downloadBtnText: string;\n uploadLimitText: string;\n uploadFileLimitTextHead: string;\n cancelBtnText: string;\n submitBtnText: string;\n uploadFile : UploadFile;\n responseBanner: UploadResponseBanner;\n externalLink: ExternalLink;\n}\n\nexport interface ExternalLink {\n label: string;\n url: string;\n}\n\nexport interface UploadFile {\n onLoadIcon: IconType;\n errorIcon: IconType;\n successIcon: IconType;\n dragDropLabel: string;\n progressLabel: string;\n orLabel: string;\n uploadButtons: ButtonType;\n success: SuccessType;\n}\n\nexport interface UploadResponseBanner {\n downloadButtonLink: string;\n messageDescription: string;\n messageTitle: string;\n}\nexport interface EquipmentData {\n Model:string;\n Serial: string;\t\n Make?: string;\t\n MakeYear?: string; \n EquipmentClassification?: string;\n LocationID: string;\n errors?: string;\n}\nexport interface SuccessType {\n inviteSuccess: string;\n bulkMessage: string;\n}\nexport interface IconType {\n iconPath: string;\n altText: string;\n}\nexport interface ButtonType {\n chooseFile: string;\n}\n\nexport interface UploadButtons {\n chooseFile: string;\n replaceFile: string;\n tryAgain: string;\n}\nexport interface AddEquipmentModelPayload {\n model: string;\n serial: string;\n location: AssignedLocation;\n}\nexport interface LocationResponse {\n location: AssignedLocation;\n}\nexport interface RemoveEquipmentPayload {\n comment: string;\n customerId: string;\n reason: string;\n vin: string | boolean | number | undefined;\n technicalObjectType?: string | null;\n model: string;\n serialNumber: string;\n manufacturer: string;\n}\n\nexport interface ChangeRequestListTablePayload {\n skip: number;\n limit: number;\n locations: string[];\n search:string;\n sort?: SortObj;\n startDate: number;\n endDate: number;\n status?: string[];\n changeType?: string[];\n}\n\nexport interface ChangeRequestListTableEILData {\n records: Array;\n pageInfo: PageInfo;\n awaitingApprovalCount: number;\n cancelledCount: number;\n approvedCount: number;\n}\n\nexport enum ChangeRequestHeader {\n date = 'Date',\n changeRequestID = 'Change Request ID',\n vin = 'VIN',\n changeType = 'Change Type',\n status = 'Status',\n customerTo = 'Location To',\n customerFrom = 'Location From',\n}\nexport interface MyFleetRecord{\n exclamationIcon: boolean;\n equipmentVin: string;\n modelID: string;\n assetNumber: string;\n equipmentType: string;\n manufacturer: string;\n dateOfFirstUse: string;\n assignedLocation: string;\n telematicsStatus: string;\n moreIcon: string;\n customerId: string;\n location: {\n addressLine1: string;\n addressLine2: string;\n city: string;\n state: string;\n zipcode: string;\n };\n locationId: string;\n locationLabel?: string;\n isLabelEditable?: boolean;\n serialNumber: string;\n techinicalObjectType: string;\n checked?: boolean;\n managedBy: string;\n changeRequest: {\n display: string;\n tooltip: string;\n toastMessage: string;\n bannerMessage: string;\n };\n}\n\nexport enum FleetStatusHeader {\n all = 'all',\n awaitingApproval = 'awaiting approval',\n cancelled = 'cancelled',\n approved = 'approved'\n}\n\nexport enum FleetStatusLabel {\n all = 'All',\n awaitingApproval = 'Awaiting Approval',\n cancelled = 'Cancelled',\n approved = 'Approved'\n}\n\nexport enum FleetStatusPayload {\n awaitingApproval = 'awaiting approval',\n cancelled = 'cancelled',\n approved = 'approved'\n}\n\nexport interface ManufacturersList {\n label: string;\n id: string;\n}\n\nexport interface EquipmentTypeList {\n title: string;\n note: string;\n}\n\nexport interface ModalFields {\n key: string;\n label: string;\n value: string;\n}\n\nexport interface EquipmentOption{\n manufacturers: ManufacturersList[];\n equipmentClassifications: ManufacturersList[];\n}\n\nexport interface CurrentLocation { \n address: Address;\n label: string;\n id: string;\n}\n\nexport interface BulkEquipmentLabel {\n navBtnLabel: string;\n heading: string;\n description: string;\n newLocation: string;\n comment: string;\n reviewDescription: string;\n reason: string;\n downloadReportLabel?: string;\n reasonValues: ManufacturersList[];\n reasonDefault: string;\n}\n\nexport enum EquipmentLabels {\n toyota = 'TOYOTA',\n other = 'OTHER',\n modelNumber = 'modelNumber',\n serialNumber = 'serialNumber',\n make = 'make',\n makeYear = 'makeYear',\n location = 'location',\n locationLabel = 'Location',\n}\n\nexport interface BulkEquipmentPayload {\n equipment: BulkEquipment[];\n targetCustomerId: string;\n comment: string;\n}\nexport interface RemoveBulkEquipmentPayload {\n equipment: BulkEquipment[];\n comment: string;\n reason: string;\n}\nexport interface BulkEquipment {\n make: string;\n vin: string;\n}\n\n\nexport interface DownloadReportTemp {\n make: string;\n serial: string;\n model: string;\n status: string;\n message: string;\n currentlocation?: string;\n targetlocation?: string;\n reason?: string;\n}\n\nexport interface BulkEquipmentDownloadReportTemplate {\n model: string;\n serial: string;\n location: string;\n status: string;\n additionalInformation: string; \n}\n\nexport interface BulkEquipmentNonToyotaDownloadReportTemplate {\n model: string;\n serial: string;\n location: string;\n make: string;\n makeYear: string;\n equipmentClassification: string;\n status: string;\n additionalInformation: string; \n}\n\nexport interface FilterOption {\n key: string;\n value: string;\n}\n","
\n
\n \n
\n
\n

{{state.pageHeading}}

\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n \n \n \n
\n
\n
\n
\n
\n Showing {{ pager.startIndex + 1 }}-{{ (state.tabs[selectedIndex].data.length) > pager.pageSize *\n (pager.currentPage) ? pager.pageSize *\n (pager.currentPage): (state.tabs[selectedIndex].data.length) | number }} of\n {{ (state.tabs[selectedIndex].data.length) | number }}\n
\n \n
\n
\n \"state.noNotification\"\n

{{ state.noNotification }}

\n
\n
\n","import { Component, Input, OnDestroy, OnInit, Output, EventEmitter, Inject } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { KngGridPager, KngLoaderState, Notification, NotificationList, NotificationState, ResponseNotification } from './definitions';\nimport { NotificationService } from './notification.service';\nimport { Icons, Notifications } from '../../services/shared/shared-enums';\nimport { EnvironmentRef } from 'projects/tmhna-portal/src/environments/interfaces';\nimport { expEnvironmentRef } from '../../injection-tokens/environment.injection-token';\nimport { SharedService } from '../../services/shared/shared.service';\nimport { PagerService } from 'kinetic-angular';\nimport { SharedApiService } from '../../services/shared/shared-api-call.service';\n\n\n@Component({\n\tselector: 'tmhna-portal-notifications',\n\ttemplateUrl: './template/notifications.component.html',\n\tstyleUrls: ['./template/notifications.component.scss']\n})\nexport class NotificationComponent implements Notification, OnInit, OnDestroy\n{\n\tprivate readonly subscriptions: Subscription = new Subscription();\n\t@Input() set state(value: NotificationState)\n\t{\n\t\tthis.service.updateState(value);\n\t\tthis.pager = this.pagerService.getPager(this.state.tabs[0].pageInfo.totalCount, this.currentPage, this.state.tabs[0].pageInfo.pageSize);\n\t}\n\tget state(): NotificationState\n\t{\n\t\treturn this.service.state;\n\t}\n\tnoMessageIcon = Icons.noMessage;\n\tloaderState: KngLoaderState = {\n\t\timagePath: Icons.loaderWhite\n\t};\n\ttabName: string = '';\n\tnotifications = Notifications;\n\tstartIndexBuffer: number = 0;\n\tendIndexBuffer: number = 0;\n\tpageNumber: number = 1;\n\ttotalCount: number = 0;\n\tcurrentPage: number = 1;\n\tunreadValue: string = Notifications.unread;\n\tall: string = Notifications.all;\n\tupdate: string = Notifications.update;\n\taction: string = Notifications.action;\n\toffer: string = Notifications.offer;\n\tpreviousTab: number = 0;\n\tpager: KngGridPager = {\n\t\ttotalPages: 1,\n\t\tcurrentPage: this.currentPage,\n\t\tendIndex: 0,\n\t\tendPage: 1,\n\t\tpageSize: 7,\n\t\tstartIndex: 0,\n\t\tstartPage: 1,\n\t\ttotalItems: this.state.tabs[0].data.length\n\t};\n\tnotificationList: NotificationList = {\n\t\tportalUserID: this.sharedService.getUserId(),\n\t\tnotificationType: 'all',\n\t\tcontactGRID: '',\n\t\troles: [],\n\t\tlocations: []\n\t};\n\t@Output() stateChanged: EventEmitter = new EventEmitter();\n\tflag: boolean = false;\n\tselectedIndex: number = 0;\n\tconstructor( public service: NotificationService, private readonly pagerService: PagerService, public sharedService: SharedService, public sharedApiService: SharedApiService,\n\t\t@Inject(expEnvironmentRef) readonly environmentRef: EnvironmentRef\n\t) { }\n\tngOnInit(): void\n\t{\n\t\tthis.initSubscriptions();\n\t\tthis.service.getNotificationLabels();\n\t\tthis.service.getNotificationData(this.notificationList);\n\t\tthis.service.pushAnalyticsEvent({\n\t\t\tevent: 'pageView',\n\t\t\tpage: {\n\t\t\t\tname: 'notifications',\n\t\t\t\ttype: 'notifications'\n\t\t\t}\n\t\t});\n\t\tthis.service.updateCurrentPageChanged.subscribe((isChanged: boolean) =>\n\t\t{\n\t\t\tif (isChanged)\n\t\t\t{\n\t\t\t\tthis.currentPage = this.currentPage > 1 ? this.currentPage - 1 : this.currentPage;\n\t\t\t\tthis.startIndexBuffer = this.pager.startIndex;\n\t\t\t\tthis.endIndexBuffer = this.pager.endIndex;\n\t\t\t\tthis.setPage(this.currentPage);\n\t\t\t\tthis.service.updateCurrentPageState(false);\n\t\t\t}\n\t\t});\n\t}\n\tngOnDestroy(): void\n\t{\n\t\tthis.destroySubscriptions();\n\t}\n\tprivate initSubscriptions(): void\n\t{\n\t\tconst stateChangeSubs: Subscription = this.service.stateChanged.subscribe(\n\t\t\t(next: NotificationState) => this.stateChanged.emit(next)\n\t\t);\n\t\tthis.subscriptions.add(stateChangeSubs);\n\t}\n\tprivate destroySubscriptions(): void\n\t{\n\t\tthis.subscriptions.unsubscribe();\n\t}\n\tactivateTab(index: number, tab: string)\n\t{\n\t\tthis.previousTab = this.selectedIndex;\n\t\tthis.pageNumber = 1;\n\t\tthis.pager.currentPage = 1;\n\t\tthis.pager = this.pagerService.getPager(this.state.tabs[index].data.length, this.pager.currentPage, this.state.tabs[index].pageInfo.pageSize);\n\t\tthis.tabName = tab;\n\t\tswitch (this.tabName)\n\t\t{\n\t\t case Notifications.offer:\n\t\n\t\t this.state.tabs[3].data = this.service.notificationOrignalDataOffer;\n\t\t break;\n\n\t\t case Notifications.action:\n\t\n\t\t this.state.tabs[2].data = this.service.notificationOrignalDataAction;\n\t\t break;\n\n\t\t case Notifications.update:\n\t\t this.state.tabs[1].data = this.service.notificationOrignalDataUpdate;\n\t\t break;\n\n\t\t default:\n\t\t this.state.tabs[0].data = this.service.notificationOrignalData;\n\t\t}\n\t\tthis.flag = true;\n\t\tthis.service.selectedIndex = index;\n\t\tthis.selectedIndex = index;\n\t\tthis.setPage(this.pageNumber, true);\n\t}\n\tsetPage(e: number, firstTab?: boolean)\n\t{\n\t\tthis.pageNumber = e;\n\t\tthis.pager.currentPage = e;\n\t\tthis.currentPage = e;\n\t\tthis.service.currentPage = e;\n\t\tthis.pager = this.pagerService.getPager(this.state.tabs[this.selectedIndex].data.length, e, this.state.tabs[this.selectedIndex].pageInfo.pageSize);\n\t\tthis.service.totalPages = this.pager.totalPages;\n\t\tif (!firstTab)\n\t\t{\n\t\t\tthis.notificationCheck(this.tabName);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tswitch (this.previousTab)\n\t\t\t{\n\n\t\t\tcase 3:\n\t\t\t\tthis.notificationCheck(Notifications.offer);\n\t\t\t\tthis.state.tabs[1].unreadCountData = this.checkUnreadNotifications(this.service.notificationOrignalDataUpdate);\n\t\t\t\tthis.state.tabs[2].unreadCountData = this.checkUnreadNotifications(this.service.notificationOrignalDataAction);\n\t\t this.state.tabs[0].unreadCountData = this.checkUnreadNotifications(this.service.notificationOrignalData);\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tthis.notificationCheck(Notifications.update);\n\t\t\t\tthis.state.tabs[0].unreadCountData = this.checkUnreadNotifications(this.service.notificationOrignalData);\n\t\t\t\tthis.state.tabs[2].unreadCountData = this.checkUnreadNotifications(this.service.notificationOrignalDataAction);\n\t\t this.state.tabs[3].unreadCountData = this.checkUnreadNotifications(this.service.notificationOrignalDataOffer);\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tthis.notificationCheck(Notifications.action);\n\t\t\t\tthis.state.tabs[1].unreadCountData = this.checkUnreadNotifications(this.service.notificationOrignalDataUpdate);\n\t\t\t\tthis.state.tabs[0].unreadCountData = this.checkUnreadNotifications(this.service.notificationOrignalData);\n\t\t this.state.tabs[3].unreadCountData = this.checkUnreadNotifications(this.service.notificationOrignalDataOffer);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.notificationCheck(Notifications.all);\n\t\t\t\tthis.state.tabs[1].unreadCountData = this.checkUnreadNotifications(this.service.notificationOrignalDataUpdate);\n\t\t\t\tthis.state.tabs[2].unreadCountData = this.checkUnreadNotifications(this.service.notificationOrignalDataAction);\n\t\t this.state.tabs[3].unreadCountData = this.checkUnreadNotifications(this.service.notificationOrignalDataOffer);\n\t\t\t}\n\t\t}\n\t}\n\tgetNotificationId(id: string)\n\t{\n\t\tif (id)\n\t\t{\n\t\t\tthis.service.deleteNotification(id);\n\t\t}\n\t}\n\tmarkAllRead() \n\t{\n\t\tconst unreadNotifications = this.service.notificationOrignalData.filter(data => data.status === Notifications.unread);\n\t\tthis.service.updateNotification(unreadNotifications, true);\n\t}\n\tpageNameCheck(notificationData: ResponseNotification[])\n\t{\n\t\tif ((this.currentPage > 1 || this.startIndexBuffer > 0 || this.flag) && notificationData.length > 0)\n\t\t{\n\t\t\tnotificationData = this.startIndexBufferFunction(notificationData);\t\n\t\t}\n\t\tconst count = this.countUpdate(notificationData);\n\t\tthis.startIndexBuffer = this.pager.startIndex;\n\t\tthis.endIndexBuffer = this.pager.endIndex;\n\t\tthis.readStatusUpdate(notificationData);\n\t\treturn {\n\t\t\tnotificationData: notificationData, count: count\n\t\t};\n\t}\n\treadStatusUpdate(notificationData: ResponseNotification[])\n\t{\n\t\tconst unreadNotification = [];\n\t\tfor (let i = this.startIndexBuffer; i < this.endIndexBuffer + 1; i++) \n\t\t{\n\t\t\tif (notificationData[i]?.status.toLocaleLowerCase() === this.unreadValue) \n\t\t\t{\n\t\t\t\tunreadNotification.push(notificationData[i]);\n\t\t\t}\n\t\t}\n\t\tif(unreadNotification.length > 0)\n\t\t{\n\t\t\tthis.service.updateNotification(unreadNotification);\n\t\t}\n\t}\n\tcountUpdate(notificationData: ResponseNotification[])\n\t{\n\t\tconst unreadCount = this.checkUnreadNotifications(this.service.notificationOrignalData);\n\t\tthis.sharedApiService.updatedUnreadNotificationState = unreadCount > 0;\n\t\treturn notificationData.filter(t => t.status !== 'read').length;\n\n\t}\n\tstartIndexBufferFunction(notificationData: ResponseNotification[])\n\t{\n\t\tfor (let i = this.startIndexBuffer; i < this.endIndexBuffer + 1 ; i++)\n\t\t{\n\t\t\tif (notificationData[i]?.status.toLocaleLowerCase() === this.unreadValue) \n\t\t\t{\n\t\t\t\tnotificationData[i].status = 'read';\n\t\t\t\tthis.state.tabs[0].unreadCountData = 0;\n\t\t\t\tthis.state.tabs[1].unreadCountData = 0;\n\t\t\t\tthis.state.tabs[2].unreadCountData = 0;\n\t\t\t\tthis.state.tabs[3].unreadCountData = 0;\n\t\t\t}\n\t\t} \n\t\treturn notificationData;\n\t}\n\tcheckUnreadNotifications(notificationData: ResponseNotification[])\n\t{\n\t\treturn notificationData.filter(t => t.status !== 'read').length;\n\t}\n\tnotificationCheck(tab: string) \n\t{\n\t\tlet notificationData: ResponseNotification[] = [];\n\t\tswitch (tab) \n\t\t{\n\t\tcase Notifications.offer:\n\t\t{\n\t\t\tnotificationData = this.service.notificationOrignalDataOffer;\n\t\t\tconst countOffer: { notificationData: ResponseNotification[]; count: number } = this.pageNameCheck(notificationData);\n\t\t\tthis.state.tabs[3].unreadCountData = countOffer.count;\n\t\t\tthis.state.tabs[3].data = countOffer.notificationData;\n\t\t\tbreak;\n\t\t}\n\t\tcase Notifications.action:\n\t\t{\n\t\t\tnotificationData = this.service.notificationOrignalDataAction;\n\t\t\tconst countAction: { notificationData: ResponseNotification[]; count: number } = this.pageNameCheck(notificationData);\n\t\t\tthis.state.tabs[2].unreadCountData = countAction.count;\n\t\t\tthis.state.tabs[2].data = countAction.notificationData;\n\t\t\tbreak;\n\t\t}\n\t\tcase Notifications.update:\n\t\t{\n\t\t\tnotificationData = this.service.notificationOrignalDataUpdate;\n\t\t\tconst countUpdate: { notificationData: ResponseNotification[]; count: number } = this.pageNameCheck(notificationData);\n\t\t\tthis.state.tabs[1].unreadCountData = countUpdate.count;\n\t\t\tthis.state.tabs[1].data = countUpdate.notificationData;\n\t\t\tbreak;\n\n\t\t}\n\t\tdefault:\n\t\t{\n\t\t\tnotificationData = this.service.notificationOrignalData;\n\t\t\tconst countAll: { notificationData: ResponseNotification[]; count: number } = this.pageNameCheck(notificationData);\n\t\t\tthis.state.tabs[0].unreadCountData = countAll.count;\n\t\t\tthis.state.tabs[0].data = countAll.notificationData;\n\t\t}\n\t\t}\n\t}\n}\n","
\n
\n
\n
\"isNewIcon\"\n
\n
\"notificationIcon\"
\n
\"activeIcon\"
\n
\"mactionIcon\"
\n\n
\n
\n {{values.notificationType.charAt(0).toUpperCase() + values.notificationType.slice(1)}}: {{values.notificationTitle}}\n

{{values.notificationType.charAt(0).toUpperCase() + values.notificationType.slice(1)}}: {{values.notificationTitle}}

\n

{{values.notificationDescription}}

\n
\n
\n \n
{{values.dateCreated}}
\n
\n
\n
\n
\n
\n \n \n\n
","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { PagerService } from 'kinetic-angular';\nimport { Icons } from '../../../services/shared/shared-enums';\nimport { Content } from '../definitions';\nimport { NotificationService } from '../notification.service';\nimport { SharedService } from '../../../services/shared/shared.service';\n\n\n@Component({\n\tselector: 'tmhna-portal-notification-content',\n\ttemplateUrl: './notification-content.component.html',\n\tstyleUrls: ['./notification-content.component.scss']\n})\nexport class NotificationContentComponent\n{\n\t@Input() state!: Array;\n\t@Input() currentPage: number = 1;\n\t@Input()\n\t\ttotalItems!: number;\n\t@Input() tabName: string = '';\n\t@Input() pageSize!: number;\n\n\t@Output() notificationId: EventEmitter =\n\n\t\tnew EventEmitter();\n\n\tcloseIcon = Icons.closePng;\n\tisNewIcon = Icons.greenDot;\n\tnotificationIcon = Icons.notificationoffer;\n\tactiveIcon = Icons.actionIcon;\n\tactionIcon = Icons.actionIcon;\n\t\n\tcomponent!: Content;\n\tconstructor(\n\t\tprivate readonly router: Router,\n\t\tpublic notificationService: NotificationService,\n\t\tpublic pagerService: PagerService,\n\t\tprivate readonly sharedService: SharedService\n\t\t\n\t) { }\n\n\tpublic navigation(i:number)\n\n\t{\n\t\tthis.sharedService.navigateMethod(this.router, this.state[i].notificationLink);\n\n\t}\n\n\tdeleteNotification(id: string) \n\t{\n\t\tif(id) \n\t\t{\n\t\t\tthis.notificationId.emit(id);\n\t\t}\n\t\t\t\n\t}\n\n}\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule, Routes } from '@angular/router';\nimport { NotificationComponent } from './notification.component';\nimport { NotificationService } from './notification.service';\nimport { NotificationContentComponent } from './notification-content/notification-content.component';\nimport { NgxPaginationModule } from 'ngx-pagination';\nimport { KngLoaderModule } from 'kinetic-angular';\nimport { AnalyticsModule } from '../../services/analytics/analytics.module';\nconst routes: Routes = [\n\t{ path: '', component: NotificationComponent, data: { title: 'Notification' } }\n];\n\n@NgModule({\n\timports: [RouterModule.forChild(routes)],\n\texports: [RouterModule]\n})\nexport class NotificationRoutingModule {}\n@NgModule({\n\tdeclarations: [\n\t\tNotificationComponent,\n\t\tNotificationContentComponent\n\t],\n\timports: [ CommonModule, NotificationRoutingModule, NgxPaginationModule, KngLoaderModule, AnalyticsModule ],\n\texports: [\n\t\tNotificationComponent\n\t],\n\tproviders: [\n\t\tNotificationService\n\t]\n})\nexport class NotificationModule { }\n","import { AnalyticsDataLayer } from './../../services/analytics/definitions/analytics.interface';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, concatMap, Observable, tap } from 'rxjs';\nimport { NotificationFactory } from './notification.factory';\nimport { BulkreadInput, DeletePayload, NotificationList, NotificationState, NotificationTab, ResponseData, ResponseNotification, SingleNotification, UnreadCountData, UpdateNotificationList } from './definitions';\nimport { ApiResponse } from '../../definitions/api-response.interface';\nimport { ApiService } from '../../services/api/api.service';\nimport { LoggerService } from '../../services/logger/logger.service';\nimport { SharedService } from '../../services/shared/shared.service';\nimport { AnalyticsService } from '../../services/analytics/analytics.service';\nimport { SharedApiService } from '../../services/shared/shared-api-call.service';\nimport { LoggedInUser } from '../../services/shared/shared-interface';\nimport { LanguageCode, Notifications } from '../../services/shared/shared-enums';\nimport { indexOf } from 'lodash';\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class NotificationService\n{\n\tconstructor( public apiService: ApiService, public loggerService: LoggerService, private readonly sharedService: SharedService, private readonly sharedApiService: SharedApiService, private readonly analyticsService: AnalyticsService) { }\n\tnotificationOrignalData : ResponseNotification[] = [];\n\tnotificationOrignalDataUpdate : ResponseNotification[] = [];\n\tnotificationOrignalDataAction : ResponseNotification[] = [];\n\tnotificationOrignalDataOffer :ResponseNotification[] = [];\n\tnotificationCount: UnreadCountData = { all: 0, offer: 0, action: 0, update: 0 };\n\tcurrentPage: number = 0;\n\ttotalPages: number = 1;\n\tselectedIndex: number = 0;\n\tdeletePayload: DeletePayload = {\n\t\tportalUserID: '',\n \tcontactGRID: '',\n \tstatus: 'archived',\n \tnotifications: [{\n\t\t\tmessageID: '',\n\t\t\tcustomerGRID: '',\n\t\t\tnotificationType: ''\n\t\t}]\n\t};\n\tupdatePayload: DeletePayload = {\n\t\tportalUserID: '',\n \tstatus: 'read',\n\t\tcontactGRID: '',\n \tnotifications: [{\n\t\t\tmessageID: '',\n\t\t\tcustomerGRID: '',\n\t\t\tnotificationType: ''\n\t\t}]\n\t};\n\tupdateNotificationList: BulkreadInput ={\n\t\tid: '',\n\t\tnotificationType: ''\n\t};\n\tbulkInput: UpdateNotificationList ={\n\t\tbulkReadInput: []\n\t};\n\tprivate readonly state$: BehaviorSubject = new BehaviorSubject(\n\t\tNotificationFactory.build()\n\t);\n\tget state(): NotificationState\n\t{\n\t\treturn this.state$.value;\n\t}\n\tprivate readonly updateCurrentPage$: BehaviorSubject = new BehaviorSubject(\n\t\tfalse\n\t);\n\tget updateCurrentPage(): boolean\n\t{\n\t\treturn this.updateCurrentPage$.value;\n\t}\n\tget updateCurrentPageChanged(): Observable\n\t{\n\t\treturn this.updateCurrentPage$.asObservable();\n\t}\n\tpublic updateCurrentPageState(value: boolean): void\n\t{\n\t\tthis.updateCurrentPage$.next(value);\n\t}\n\tget stateChanged(): Observable\n\t{\n\t\treturn this.state$.asObservable();\n\t}\n\tpublic pushAnalyticsEvent(data: AnalyticsDataLayer): void\n\t{\n\t\tthis.analyticsService.trackByEvent(data);\n\t}\n\tpublic updateState(value: NotificationState): void\n\t{\n\t\tthis.state$.next(value);\n\t}\n\tpublic getNotificationLabels()\n\t{\n\t\tthis.apiService.getNotificationsAemLabels().subscribe({\n\t\t\tnext: (res) =>\n\t\t\t{\n\t\t\t\tif (res)\n\t\t\t\t{\n\t\t\t\t\tthis.state.pageHeading = res.pageHeading;\n\t\t\t\t\tthis.state.tabs[0].label = res.tabs[0].label;\n\t\t\t\t\tthis.state.tabs[1].label = res.tabs[1].label;\n\t\t\t\t\tthis.state.tabs[2].label = res.tabs[2].label;\n\t\t\t\t\tthis.state.tabs[3].label = res.tabs[3].label;\n\t\t\t\t\tthis.state.markAsRead = res.markAsRead;\n\t\t\t\t\tthis.state.noNotification = res.noNotification;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tpublic getNotificationData(notification:NotificationList)\n\t{\n\t\tthis.state.loading = true;\n\t\tthis.sharedService.getLoggedInUserObs().pipe(tap((userData: LoggedInUser) =>\n\t\t{\n\t\t\tnotification.portalUserID = userData.userId;\n\t\t\tnotification.contactGRID = userData.contactGRID? userData.contactGRID : userData.contactID;\n\t\t\tnotification.roles = userData.roles;\t\t\t\n\t\t}),\n\t\tconcatMap(() => this.sharedService.getLoggedInUseLocationsIdsObs()),\n\t\ttap((locationIds: string[]) => \n\t\t{\n\t\t\tnotification.locations = locationIds;\n\t\t}),\n\t\tconcatMap(() => this.apiService.notificationList(notification))).subscribe({\n\t\t\tnext: (res: ApiResponse) =>\n\t\t\t{\n\t\t\t\tif (res?.data)\n\t\t\t\t{\n\t\t\t\t\tconst responseObject: ResponseData = res.data;\n\t\t\t\t\tconst responseObjectData: ResponseNotification[] = responseObject.notificationData;\n\t\t\t\t\tthis.notificationCount = responseObject.unreadCountData? responseObject.unreadCountData : { all: 0, offer: 0, action: 0, update: 0 };\n\t\t\t\t this.notificationOrignalData = responseObjectData || [];\n\t\t\t\t\tthis.state.tabs.forEach((key:NotificationTab) =>\n\t\t\t\t\t{\n\t\t\t\t\t\tkey.data = responseObjectData || [];\n\t\t\t\t\t\t\t\n\t\t\t\t\t});\n\t\t\t\t\tthis.state.tabs[0].data.forEach((value) =>\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue.dateCreated = (new Intl.DateTimeFormat(LanguageCode.default, { month: 'long', day: 'numeric' }).format(new Date()));\n\t\t\t\t\t});\n\n\t\t\t\t\tthis.notificationOrignalDataUpdate = this.filterArray(Notifications.update.toLocaleLowerCase());\n\t\t\t\t\tthis.notificationOrignalDataOffer= this.filterArray(Notifications.offer.toLocaleLowerCase());\n\t\t\t\t\tthis.notificationOrignalDataAction=this.filterArray(Notifications.action.toLocaleLowerCase());\n\n\t\t\t\t\tconst bulkInput:UpdateNotificationList= { bulkReadInput: [] };\n\t\t\t\t\tresponseObjectData?.forEach((el: ResponseNotification) =>\n\t\t\t\t\t{\n\t\t\t\t\t\tif(el.status === 'unread')\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconst arrayInputs={\n\t\t\t\t\t\t\t\tid: el.id,\n\t\t\t\t\t\t\t\tnotificationType: el.notificationType\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tbulkInput.bulkReadInput.push(arrayInputs);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tthis.unreadCountForfirstPage(bulkInput) ;\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: ()=>\n\t\t\t{\n\t\t\t\tthis.state.tabs.forEach((key:NotificationTab) =>\n\t\t\t\t{\n\t\t\t\t\tkey.data = [];\n\t\t\t\t\tkey.pageInfo.totalCount= 0;\n\t\t\t\t\tkey.unreadCountData= 0;\n\t\t\t\t\tkey.id= '';\n\n\t\t\t\t});\n\t\t\t\tthis.state.loading = false;\n\t\t\t},\n\t\t\tcomplete: () =>\n\t\t\t{\n\t\t\t\tsetTimeout(() =>\n\t\t\t\t{\n\t\t\t\t\tthis.state.loading = false;\n\t\t\t\t\tthis.updateCurrentPageState(true);\n\t\t\t\t}, 1000);\n\t\t\t}\n\t\t});\n\t}\n\tcheckIfNotificationsPresent(responseObject: NotificationTab)\n\t{\n\t\tif( responseObject.data.length === 0)\n\t\t{\n\t\t\tthis.updateCurrentPage$.next(true);\n\t\t}\n\t}\n\tcheckForUnreadNotifications(bulkInput: UpdateNotificationList)\n\t{\n\t\tbulkInput.bulkReadInput.length > 0? this.updateNotificationData(bulkInput) : this.sharedApiService.getUnreadNotificationsCount();\n\t}\n\tunreadCountForfirstPage(bulkInput: UpdateNotificationList)\n\t{\n\t\tthis.state.unreadCount = bulkInput.bulkReadInput.length > 0 ? this.state.tabs[0].unreadCountData-bulkInput.bulkReadInput.length: this.state.tabs[0].unreadCountData;\n\t}\n\tpublic deleteNotification(id: string)\n\t{\n\t\tthis.state.loading = true;\n\t\tthis.deletePayload.notifications[0].messageID = id;\n\t\tthis.notificationOrignalData?.forEach((val: ResponseNotification) =>\n\t\t{\n\t\t\tif(val.id === id)\n\t\t\t{\n\t\t\t\tthis.deletePayload.notifications[0].notificationType = val.notificationType;\t\t\t\t\n\t\t\t}\n\t\t});\n\t\tthis.deletePayload.notifications[0].customerGRID= '';\n\t\tthis.deletePayload.status = Notifications.archived;\n\t\tthis.sharedService.getLoggedInUserObs().pipe(tap((userData: LoggedInUser) =>\n\t\t{\n\t\t\tthis.deletePayload.portalUserID = userData.userId;\n\t\t\tthis.deletePayload.contactGRID = userData.contactGRID? userData.contactGRID : '';\n\t\t}),\n\t\tconcatMap(() => this.apiService.removeNotification(this.deletePayload))).subscribe({\n\t\t\tnext: (res: ApiResponse) =>\n\t\t\t{\n\t\t\t\tthis.loggerService.log(JSON.stringify(res));\n\t\t\t\tif(res?.success)\n\t\t\t\t{\n\t\t\t\t\tthis.getUpdatedNotificationData(id);\n\t\t\t\t}\n\t\t\t},\n\t\t\tcomplete: () =>\n\t\t\t{\n\t\t\t\tsetTimeout(() =>\n\t\t\t\t{\n\t\t\t\t\tthis.state.loading = false;\n\t\t\t\t}, 1000);\n\t\t\t} \n\t\t});\n\t}\n\tcheckUnreadNotifications(notificationData: ResponseNotification[]) \n\t{\n\t\treturn notificationData.filter(t => t.status !== 'read').length;\n\t}\n\tpublic updateNotification(notificationData: ResponseNotification[], markAllread: boolean = false)\n\t{\n\t\tif (markAllread === true)\n\t\t{\n\t\t\tthis.state.loading = true;\n\t\t}\n\t\tthis.updatePayload.status = Notifications.read;\n\t\tthis.updatePayload.notifications=[];\n\t\tnotificationData.forEach(ele => \n\t\t{\n\t\t\tconst readNotification:SingleNotification = { messageID: '', customerGRID: '', notificationType: '' };\n\t\t\treadNotification.messageID = ele.id;\n\t\t\treadNotification.customerGRID = ele.customerGRID? ele.customerGRID : '';\n\t\t\treadNotification.notificationType = ele.notificationType;\n\t\t\tthis.updatePayload.notifications.push(readNotification);\n\t\t});\n\t\tthis.sharedService.getLoggedInUserObs().pipe(tap((userData: LoggedInUser) => \n\t\t{\n\t\t\tthis.updatePayload.portalUserID = userData.userId;\n\t\t\tthis.updatePayload.contactGRID = userData.contactGRID? userData.contactGRID : '';\n\t\t}),\n\t\tconcatMap(() => this.apiService.removeNotification(this.updatePayload))).subscribe({\n\t\t\tnext: (res: ApiResponse) => \n\t\t\t{\n\t\t\t\tthis.state.loading = false;\n\t\t\t\tthis.loggerService.log(JSON.stringify(res));\n\t\t\t\tif (markAllread === true)\n\t\t\t\t{\n\t\t\t\t\tthis.sharedApiService.updatedUnreadNotificationState = false;\n\t\t\t\t\tthis.notificationOrignalData.forEach(data => data.status = Notifications.read);\n\t\t\t\t\tthis.state.tabs[1].unreadCountData = this.checkUnreadNotifications(this.notificationOrignalDataUpdate);\n\t\t\t\t\tthis.state.tabs[2].unreadCountData = this.checkUnreadNotifications(this.notificationOrignalDataAction);\n\t\t\t\t\tthis.state.tabs[3].unreadCountData = this.checkUnreadNotifications(this.notificationOrignalDataOffer);\n\t\t\t\t\tthis.state.tabs[0].unreadCountData = this.checkUnreadNotifications(this.notificationOrignalData);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tgetUpdatedNotificationData(id: string)\n\t{\n\t\tconst messageId = this.deletePayload.notifications[0].messageID;\n\t\tthis.notificationOrignalData?.forEach((val) =>\n\t\t{\n\t\t\tif(val.id === id)\n\t\t\t{\n\t\t\t\tthis.updateNotificationListAfterDelete(this.notificationOrignalData, val, 0);\n\t\t\t}\n\t\t});\n\t\tthis.notificationOrignalDataUpdate?.forEach((val) =>\n\t\t{\n\t\t\tif(val.id === messageId && val.notificationType === Notifications.update.toLocaleLowerCase())\n\t\t\t{\n\t\t\t\tthis.updateNotificationListAfterDelete(this.notificationOrignalDataUpdate, val, 1);\n\t\t\t}\n\t\t});\n\t\tthis.notificationOrignalDataAction?.forEach((val) =>\n\t\t{\n\t\t\tif(val.id === messageId && val.notificationType === Notifications.action.toLocaleLowerCase())\n\t\t\t{\n\t\t\t\tthis.updateNotificationListAfterDelete(this.notificationOrignalDataAction, val, 2);\n\t\t\t}\n\t\t});\n\t\tthis.notificationOrignalDataOffer?.forEach((val) =>\n\t\t{\n\t\t\tif(val.id === messageId && val.notificationType === Notifications.offer.toLocaleLowerCase())\n\t\t\t{\n\t\t\t\tthis.updateNotificationListAfterDelete(this.notificationOrignalDataOffer, val, 3);\n\t\t\t}\n\t\t});\n\t}\n\tpublic updateNotificationData(updateNotificationList:UpdateNotificationList)\n\t{\n\t\tthis.apiService.updateNotificationList(updateNotificationList).pipe(tap()).subscribe({\n\t\t\tnext: (res: ApiResponse) =>\n\t\t\t{\n\t\t\t\tconst response = res;\n\t\t\t\tthis.loggerService.log('updated request' + response);\n\t\t\t\tthis.sharedApiService.getUnreadNotificationsCount();\n\t\t\t}\n\t\t});\n\t}\n\tfilterArray( tabName : string)\n\t{\n\t\tconst filteredArray = this.notificationOrignalData.filter(function(itm)\n\t\t{\n\t\t\treturn tabName.indexOf(itm.notificationType) > -1;\n\t\t});\n\t return filteredArray;\n\t}\n\tupdateNotificationListAfterDelete(notificationData: ResponseNotification[], val: ResponseNotification, tabIndex: number)\n\t{\n\t\tconst index = indexOf(notificationData, val);\n\t\tnotificationData.splice(index, 1);\n\t\tthis.state.tabs[this.selectedIndex].data = notificationData;\n\t\tif((Math.ceil(notificationData.length / 7)< this.totalPages && this.currentPage> 0 && this.currentPage === this.totalPages) && this.selectedIndex === tabIndex)\n\t\t{\n\t\t\tthis.updateCurrentPage$.next(true);\n\t\t}\n\t\tthis.state.tabs[this.selectedIndex].unreadCountData = notificationData.filter(t=>t.status !== 'read').length;\n\t}\n}\n","import { PageInfo } from '../../services/shared/shared-interface';\nimport { NotificationState } from './definitions';\n\nexport class NotificationFactory\n{\n\tpublic static build(): NotificationState\n\t{\n\t\treturn {\n\n\t\t\tloading: true,\n\t\t\tpageHeading: 'Notifications',\n\t\t\ttabs: [\n\t\t\t\t{\n\t\t\t\t\tid: '',\n\t\t\t\t\tlabel: 'All',\n\t\t\t\t\tpageInfo: this.getPageInfo(),\n\t\t\t\t\tdata: [{\n\t\t\t\t\t\tid: '',\n\t\t\t\t\t\tisNewIcon: {\n\t\t\t\t\t\t\ticonPath: '/assets/green_dot.svg',\n\t\t\t\t\t\t\taltText: 'greenDot'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnotificationIcon: {\n\t\t\t\t\t\t\ticonPath: '/assets/active.svg',\n\t\t\t\t\t\t\taltText: 'active'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnotificationTitle: '',\n\t\t\t\t\t\tnotificationDescription: '',\n\t\t\t\t\t\tcloseIcon: {\n\t\t\t\t\t\t\ticonPath: '/assets/close.png',\n\t\t\t\t\t\t\taltText: 'delete'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdateCreated: '',\n\t\t\t\t\t\tportalUserID: '',\n\t\t\t\t\t\tstatus: 'read',\n\t\t\t\t\t\tsystemNotificationID: '',\n\t\t\t\t\t\tnotificationType: '',\n\t\t\t\t\t\tnotificationLink: ''\n\n\n\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\tunreadCountData: 0\n\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '',\n\t\t\t\t\tlabel: 'Update',\n\t\t\t\t\tpageInfo: this.getPageInfo(),\n\t\t\t\t\tunreadCountData: 0,\n\n\t\t\t\t\tdata: this.getNotificationContentByType('active')\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '',\n\t\t\t\t\tlabel: 'Action',\n\t\t\t\t\tpageInfo: this.getPageInfo(),\n\t\t\t\t\tunreadCountData: 0,\n\n\t\t\t\t\tdata: this.getNotificationContentByType('action')\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '',\n\t\t\t\t\tlabel: 'Offer',\n\t\t\t\t\tpageInfo: this.getPageInfo(),\n\t\t\t\t\tunreadCountData: 0,\n\n\t\t\t\t\tdata: this.getNotificationContentByType('offer')\n\t\t\t\t}\n\t\t\t],\n\t\t\tmarkAsRead: 'Mark all as read',\n\t\t\tnoNotification: 'No New Notification',\n\t\t\tunreadCount: 0\n\t\t};\n\t}\n\tpublic static getPageInfo(): PageInfo\n\t{\n\t\treturn {\n\t\t\tpageSize: 7,\n\t\t\ttotalCount: 0\n\t\t};\n\t}\n\tpublic static getUnCountData()\n\t{\n\t\treturn {\n\t\t\tall: 0,\n\t\t\toffer: 0,\n\t\t\taction: 0,\n\t\t\tupdate: 0\n\t\t};\n\n\t}\n\tpublic static getNotificationContentByType(type: string)\n\t{\n\t\tlet iconPathValue = '';\n\t\tlet altTextValue = '';\n\t\tswitch (type)\n\t\t{\n\t\tcase 'offer':\n\t\t\ticonPathValue = '/assets/offer.svg';\n\t\t\taltTextValue = 'offer';\n\t\t\tbreak;\n\t\tcase 'action':\n\t\t\ticonPathValue = '/assets/action.svg';\n\t\t\taltTextValue = 'action';\n\t\t\tbreak;\n\t\tcase 'active':\n\t\t\ticonPathValue = '/assets/active.svg';\n\t\t\taltTextValue = 'active';\n\t\t\tbreak;\n\t\t}\n\t\treturn [{\n\t\t\tid: '',\n\t\t\tisNewIcon: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t},\n\t\t\tnotificationIcon: {\n\t\t\t\ticonPath: iconPathValue,\n\t\t\t\taltText: altTextValue\n\t\t\t},\n\t\t\tnotificationTitle: '',\n\t\t\tnotificationDescription: '',\n\t\t\tcloseIcon: {\n\t\t\t\ticonPath: '/assets/close.png',\n\t\t\t\taltText: 'delete'\n\t\t\t},\n\t\t\tdateCreated: '',\n\t\t\tportalUserID: '',\n\t\t\tstatus: 'read',\n\t\t\tsystemNotificationID: '',\n\t\t\tnotificationType: '',\n\t\t\tnotificationLink: ''\n\n\t\t}\n\t\t];\n\n\t}\n}\n","import { PageInfo } from 'kinetic-angular';\nimport { FilterData, FilterPanelSection, Image, LocationAddress, SearchLabels } from '../../../services/shared/shared-interface';\nimport { SortOrder } from '../../../services/shared/shared-enums';\nimport { ResponseDealerAddress } from '../sub-modules/equipment-order-details/definitions/equipment-order-details.interface';\n\nexport interface OrderManagement {\n state: OrderManagementState;\n}\nexport interface OrderManagementState {\n sectionHeader: OrderManagementTop;\n sectionEquipmentOrder: OrderManagementMiddle;\n sectionOrderList: OrderManagementBottom;\n}\n\nexport interface OrderManagementStateLabel {\n sectionTop: { heading: string };\n sectionMiddle: OrderManagementSectionMiddle;\n sectionBottom: OrderManagementBottom;\n}\nexport interface OrderManagementTop {\n sectionTop : { heading: string | undefined };\n}\nexport interface OrderManagementMiddle {\n heading: string | null;\n subHeading: string;\n search: SearchLabels;\n filteringPanelSection: FilterPanelSection;\n download: string;\n invoiceStatusUpdated: boolean;\n}\nexport interface OrderManagementSectionMiddle {\n heading: string;\n subHeading: string;\n search: SearchLabels;\n filter: FilterData;\n filterForm: FilterFormData;\n download: string;\n invalidSearchText: string;\n}\nexport interface OrderManagementBottom {\n orderStatus: OrderStatusData[];\n gridData: EquipmentOrderListHeaderData;\n}\nexport interface EquipmentOrderListHeaderData {\n crmOppNumber: string;\n truckNumber: string;\n orderDate: string;\n status: string;\n billingLocation: string;\n shippingLocation: string;\n billingLocationAddress?: ResponseDealerAddress;\n shippingLocationAddress?: ResponseDealerAddress;\n model: string;\n}\nexport interface OrderStatusData {\n label: string;\n altText: string;\n}\nexport interface FilterFormData {\n formLabel: string;\n searchLocation: {\n accordionIconExpanded: Image;\n accordionIconCollapsed: Image;\n label: string;\n searchPlaceholder: string;\n searchIcon: Image;\n noResultsFoundLabel: string;\n };\n shippingLocation: {\n accordionIconExpanded: Image;\n accordionIconCollapsed: Image;\n label: string;\n searchPlaceholder: string;\n searchIcon: Image;\n noResultsFoundLabel: string; \n errorMessage: string;\n };\n dateRange: {\n accordionIconExpanded: Image;\n accordionIconCollapsed: Image;\n label: string;\n values: string[];\n customDateFromLabel: string;\n customDateToLabel: string;\n };\n division: CheckBoxFilter;\n group: CheckBoxFilter;\n clearAllButtonLabel: string;\n applyButtonLabel: string;\n}\n\nexport interface CheckBoxFilter {\n label: string;\n accordionIconExpanded: Image;\n accordionIconCollapsed: Image;\n search: SearchLabels;\n noResultsFoundLabel: string;\n noAssociatedGroupsFoundLabel?: string;\n showMoreText?: string;\n showLessText?: string;\n}\nexport interface OrderManagementSelectedFilter {\n key: string;\n value: string;\n id?: string;\n \n }\nexport interface OrderListPayload {\n skip: number;\n limit: number;\n startDate?: number;\n endDate?: number;\n locations?: string[];\n search?:string;\n sort?: OrderListSort;\n status: string;\n shippingLocations?: LocationAddress[]; \n}\nexport interface OrderListSort {\n field: string;\n order: SortOrder;\n}\nexport interface EquipmentOrderList {\n key: string;\n value: string;\n}\nexport interface OrderListResponse {\n equipmentOrders: EquipmentOrderListHeaderData[];\n pageInfo: PageInfo;\n deliveredCount: number;\n inProductionCount: number;\n orderinProcessCount:number;\n shippedCount: number;\n}\nexport interface OrderListHeader {\n crmOppNumber?: string;\n truckNumber: string;\n orderDate: string;\n status: string;\n location: string;\n vin: string;\n equipmentType: string;\n ETA: string;\n}\nexport enum OrderHeaderName {\n crmOppNumber = 'Order #',\n orderNumber = 'Order #',\n orderDate = 'Order Date',\n status = 'Status',\n location = 'Location',\n equipmentVin = 'Equipment VIN',\n equipmentType = 'Equipment Classification',\n // eslint-disable-next-line @typescript-eslint/naming-convention\n ETA = 'ETA',\n}\nexport enum EquipmentOrderTablelHeaderName {\n crmOppNumber = 'Order#',\n truckNumber = 'Truck#',\n orderDate = 'Order Date',\n location = 'Billing Address',\n shippingLocation = 'Shipping Address',\n model = 'Model',\n status = 'Status'\n}\n\nexport enum InvoiceStatusLabel {\n all = 'All',\n orderinProcess = 'In Process',\n inProduction = 'In Production',\n shipped = 'Shipped',\n delivered = 'Delivered'\n}\nexport enum InvoiceStatusHeader {\n all = 'all',\n orderinProcess = 'orderinProcess',\n inProduction = 'inProduction',\n shipped = 'shipped',\n delivered = 'delivered'\n}\n\nexport interface OrderDetailsPayload {\n locations: string[];\n truckNumber: string;\n}\nexport interface ShippingLocationPayload {\n locations: string[];\n}\nexport interface ShippingLocationListResponse {\n records: LocationAddress[];\n}\n","import { KngShellFactory, KngShellState, ModalState, KngHeaderNavStateItem } from 'kinetic-angular';\nimport { AemLabelsPolicy, AemLabelsTnC, BusinessAccountRegistrationSuccess, CustomerState } from './shell.interface';\nimport { Icons, ModalButtonId } from '../../services/shared/shared-enums';\nimport { SharedFactoryDataService } from '../../services/shared/shared-factory-data.service';\nimport { KngBannerState } from 'projects/kinetic-angular/src/lib/components/banner/definitions';\n\nexport class ShellFactory\n{\n\tpublic static buildState(): KngShellState\n\t{\n\t\tconst state: KngShellState = KngShellFactory.buildState();\n\t\treturn state;\n\t}\n\tpublic static buildBannerState(): KngBannerState\n\t{\n\t\treturn {\n \n\t\t\tbannerIcon: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t},\n\t\t\tbannerMessage: '',\n\t\t\ttokenData: [\n\t\t\t\t{\n\t\t\t\t\tlabel: '',\n\t\t\t\t\tvalue: '',\n\t\t\t\t\thref: ''\n\t\t\t\t}\n\t\t\t],\n\t\t\tcloseIcon: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t},\n\t\t\topen: false,\n\t\t\talertBanner: [],\n\t\t\tstartDate: new Date(),\n\t\t\tendDate: new Date()\n\t\t};\n\t}\n\tpublic static buildTnC(): ModalState\n\t{\n\t\treturn {\n\t\t\tcloseHidden: true,\n\t\t\thidden: false,\n\t\t\tlabel: '',\n\t\t\tbuttons: [\n\t\t\t\t{ label: '', disabled: false, cssClass: 'btn-secondary', iconPath: '' },\n\t\t\t\t{ label: '', iconPath: '', disabled: true, cssClass: 'btn-black' }\n\t\t\t],\n\t\t\ttooltip: {\n\t\t\t\tcloseIcon: {\n\t\t\t\t\ticonPath: Icons.toolTipCloseIcon,\n\t\t\t\t\taltText: ''\n\t\t\t\t},\n\t\t\t\tcontent: ''\n\t\t\t},\n\t\t\tcssClass: 'register-modal'\n\t\t};\n\t}\n\tpublic static buildAEMlist(): AemLabelsTnC\n\t{\n\t\treturn {\n\t\t\tupdatedTerms: {\n\t\t\t\tagreeButtonLabel: '',\n\t\t\t\theading: '',\n\t\t\t\tcontent: [],\n\t\t\t\tdisagreeButtonLabel: '',\n\t\t\t\tcreationDate: 0,\n\t\t\t\tinfoIcon: [{\n\t\t\t\t\ticonPath: '',\n\t\t\t\t\t altText: ''\n\t\t\t\t}],\n\t\t\t\tcheckboxText: '',\n\t\t\t\talertNote: ''\n\t\t\t}\n\n\n\t\t};\n\t};\n\tpublic static buildAEMlistPolicy(): AemLabelsPolicy\n\t{\n\t\treturn {\n\t\t\tupdatedPrivacy: {\n\t\t\t\tagreeButtonLabel: '',\n\t\t\t\theading: '',\n\t\t\t\tcontent: [],\n\t\t\t\tdisagreeButtonLabel: '',\n\t\t\t\tcreationDate: 0,\n\t\t\t\tinfoIcon: [{\n\t\t\t\t\ticonPath: '',\n\t\t\t\t\t altText: ''\n\t\t\t\t}],\n\t\t\t\tcheckboxText: '',\n\t\t\t\talertNote: ''\n\t\t\t}\n\n\n\t\t};\n\t};\n\tpublic static buildPolicy(): ModalState\n\t{\n\t\treturn {\n\t\t\tcloseHidden: true,\n\t\t\thidden: true,\n\t\t\tlabel: '',\n\t\t\tbuttons: [\n\t\t\t\t{ label: '', disabled: false, cssClass: 'btn-secondary', iconPath: '' },\n\t\t\t\t{ label: '', iconPath: '', disabled: true, cssClass: 'btn-black' }\n\t\t\t],\n\t\t\ttooltip: {\n\t\t\t\tcloseIcon: {\n\t\t\t\t\ticonPath: Icons.toolTipCloseIcon,\n\t\t\t\t\taltText: ''\n\t\t\t\t},\n\t\t\t\tcontent: ''\n\t\t\t},\n\t\t\tcssClass: 'register-modal'\n\t\t};\n\t}\n\tpublic static buildDefaultTranslationValuesMap(): Map\n\t{\n\t\treturn new Map([\n\t\t\t[ 'United States- English', 'en' ],\n\t\t\t[ 'États-Unis - anglais', 'en' ],\n\t\t\t[ 'French', 'fr' ],\n\t\t\t[ 'Français', 'fr' ]\n\t\t]);\n\t}\n\tpublic static buildMinimumAccessHaeder(): KngHeaderNavStateItem[]\n\t{\n\t\tconst state: KngHeaderNavStateItem[] = KngShellFactory.buildState().header;\n\t\tstate.forEach(section => \n\t\t{\n\t\t\tsection.minimumAccess = true;\n\t\t});\n\t\treturn state;\n\t}\n\tpublic static buildBusinessAccountRegistrationSuccessModal(): BusinessAccountRegistrationSuccess\n\t{\n\t\treturn { \n\t\t\tcongratulationsImage: SharedFactoryDataService.buildImage(Icons.congratulations, ''),\n\t\t\tmainText: '',\n\t\t\tsubText: '',\n\t\t\tmodal: {\n\t\t\t\tcloseHidden: false,\n\t\t\t\thidden: true,\n\t\t\t\tlabel: '',\n\t\t\t\tbuttons: [\n\t\t\t\t\t{ label: '', disabled: false, cssClass: 'btn-black', iconPath: '' }\n\t\t\t\t],\n\t\t\t\tcssClass: 'congratulatory-modal'\n\t\t\t}\n\t\t};\n\t}\n\tpublic static buildCustomerState(): CustomerState\n\t{\n\t\treturn {\n\t\t\thidden: true,\n\t\t\tusername: '',\n\t\t\twarningNote: '',\n\t\t\treadOnly: '',\n\t\t\tendSession: '',\n\t\t\tendSessionNote: '',\n\t\t\tinativityMessage: '',\n\t\t\tinactivityConfirmation: ''\n\t\t};\n\t}\n\tpublic static buildEndSessionModal(): ModalState\n\t{\n\t\treturn {\n\t\t\thidden: true,\n\t\t\tlabel: '',\n\t\t\tbuttons: [\n\t\t\t\t{ label: '', id: ModalButtonId.cancel, disabled: false, cssClass: 'btn-secondary', iconPath: '' },\n\t\t\t\t{ label: '', id: ModalButtonId.proceed, iconPath: '', disabled: false, cssClass: 'btn-black' }\n\t\t\t],\n\t\t\tcssClass: ''\n\t\t};\n\t}\n\tpublic static buildInactiveSessionModal(): ModalState\n\t{\n\t\treturn {\n\t\t\thidden: true,\n\t\t\tlabel: 'Inactivity Alert',\n\t\t\tbuttons: [\n\t\t\t\t{ label: '', id: ModalButtonId.proceed, disabled: false, cssClass: 'btn-secondary', iconPath: '' },\n\t\t\t\t{ label: '', id: ModalButtonId.cancel, iconPath: '', disabled: false, cssClass: 'btn-black' }\n\t\t\t],\n\t\t\tcssClass: ''\n\t\t};\n\t}\n}\n\n","/* eslint-disable max-lines */\nimport { Inject, Injectable, Renderer2 } from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport { CssClass, KngHeaderNavMenuOption, KngHeaderNavStateItem, ModalState, KngFooterState, KngShellState } from 'kinetic-angular';\nimport { EnvironmentRef } from '../../../../src/environments/interfaces';\nimport { BehaviorSubject, concatMap, Observable, Observer, Subject, tap, firstValueFrom } from 'rxjs';\nimport { ApiResponse } from '../../definitions/api-response.interface';\nimport { expEnvironmentRef } from '../../injection-tokens/environment.injection-token';\nimport { AemApiService } from '../../services/api/api.aem.service';\nimport { ApiService } from '../../services/api/api.service';\nimport { LoggerService } from '../../services/logger/logger.service';\nimport { SharedService } from '../../services/shared/shared.service';\nimport { Banner } from '../myfleet/sub-modules/equipment-detail';\nimport { ShellFactory } from './shell.factory';\nimport { AemLabelsPolicy, AemLabelsTnC, AlertBannerList, BusinessAccountRegistrationSuccess, BusinessAccountRegistrationSuccessLabels, CustomerState, HeaderAlertBanner, HeaderNavResponse, SubmitTnc, SwitchAccountPayload } from './shell.interface';\nimport { get as lodashGet } from 'lodash';\nimport { LoggedInUser, Image } from '../../services/shared/shared-interface';\nimport { Icons, ModalButtonId, TermsAndConditionPrivacyPolicyInfoBannerText } from '../../services/shared/shared-enums';\nimport { SharedApiService } from '../../services/shared/shared-api-call.service';\nimport { LocalStorageService } from '../../services/local-storage/local-storage.service';\nimport { SharedUtilService } from '../../services/shared/shared-util.service';\nimport { Location } from 'projects/kinetic-angular/src/lib/components/nav/header-nav/definitions/kng-header-nav.interface';\nimport { ToastrService } from 'ngx-toastr';\nimport { AlertBanner, KngBannerState } from 'projects/kinetic-angular/src/lib/components/banner/definitions';\nimport { CustomerSupportAemLabel } from '../customer-support/definition/customer-support.interface';\nimport { urlPaths } from '../../services/api/api.url';\n@Injectable({ providedIn: 'root' })\nexport class ShellService\n{\n\tprivate readonly state$: BehaviorSubject = new BehaviorSubject(ShellFactory.buildState());\n\tcustomerSupportData: CustomerState = ShellFactory.buildCustomerState();\n\tendSessionModalState: ModalState = ShellFactory.buildEndSessionModal();\n\tinactiveSessionModalState: ModalState = ShellFactory.buildInactiveSessionModal();\n\tbannerState: KngBannerState = ShellFactory.buildBannerState();\n\ttermsAndConditionAEMlabels: AemLabelsTnC = ShellFactory.buildAEMlist();\n\tpolicyAEMlabels: AemLabelsPolicy = ShellFactory.buildAEMlistPolicy();\n\ttermsAndCondition : ModalState = ShellFactory.buildTnC();\n\tpolicyState: ModalState = ShellFactory.buildPolicy();\n\tshouldLoadPage$ = new Subject();\n\tisDirty$ = new Subject();\n\taemBaseUrl: string = this.environmentRef.aemBaseUrl;\n\tshellStateHeaderNavMapperObject: Array = ShellFactory.buildState().header;\n\tnotificationPath: Image = { altText: '', iconPath: '' };\n\tunreadNotificationPath: Image = {\n\t\taltText: 'Unread Notifications',\n\t\ticonPath: Icons.unreadNotifications\n\t};\n\tuserName = '';\n\tpayload:SubmitTnc ={\n\t\tid: '',\n\t\tcreationDate: 0,\n\t\tcompany: ''\n\t};\n\tloading: boolean = false;\n\tbusinessAccountRegistrationSuccess : BusinessAccountRegistrationSuccess = ShellFactory.buildBusinessAccountRegistrationSuccessModal();\n\tadminLocations: Location[] = [];\n\tadminLocationList = new BehaviorSubject([]);\n\tadminLocationList$ = this.adminLocationList.asObservable();\n\trequestServiceUrl = new BehaviorSubject('');\n\trequestServiceUrl$ = this.requestServiceUrl.asObservable();\n\tget state(): KngShellState\n\t{\n\t\treturn this.state$.value;\n\t}\n\tget stateObservable$(): Observable\n\t{\n\t\treturn this.state$.asObservable();\n\t}\n\tconstructor( private readonly routerservice: Router, public apiService: ApiService, private readonly aemApiService: AemApiService, public sharedService:SharedService, public sharedUtilService:SharedUtilService, public sharedApiService:SharedApiService, public localStorageService: LocalStorageService,\n\t\t@Inject(expEnvironmentRef) readonly environmentRef: EnvironmentRef, private readonly logger: LoggerService, public toaster: ToastrService) { }\n\tpublic updateState(value: KngShellState): void\n\t{\n\t\tthis.state$.next(value);\n\t}\n\tpublic updateActionFooterPresent(isPresent: boolean): void\n\t{\n\t\tthis.state.footer.cssClass = isPresent ? 'shell--with-action-button' : '';\n\t\tthis.updateState(this.state);\n\t}\n\tpublic changeRoute(path: string)\n\t{\n\t\tthis.routerservice.navigate([path])?.catch(error =>\n\t\t{\n\t\t\tthis.logger.error(error);\n\t\t});\n\t}\n\tpublic updateBannerState(value: Banner)\n\t{\n\t\tthis.state.banner = value;\n\t}\n\tpublic getAdminLocationList()\n\t{\n\t\tlet adminId: string = '';\n\t\tthis.bannerState.alertBanner = [];\n\t\tthis.sharedService.getLoggedInUserAdminLocationIdObs().subscribe(adminLocID => adminId = adminLocID);\n\t\tthis.apiService.getAdminLocationList().subscribe(\n\t\t\t{\n\t\t\t\tnext: (res: ApiResponse) =>\n\t\t\t\t{\n\t\t\t\t\tif (res?.data)\n\t\t\t\t\t{\n\t\t\t\t\t\tconst adminLocations = res.data;\n\t\t\t\t\t\tif(adminLocations?.locations)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tadminLocations.locations.sort((a: { accountName: string }, b: { accountName: string }) => a.accountName?.localeCompare(b.accountName));\n\t\t\t\t\t\t\tadminLocations.locations.forEach(location =>\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (location.locationGRID === adminId)\n\t\t\t\t\t\t\t\t\tlocation.adminId = true;\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\tlocation.adminId = false;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tthis.adminLocations = [];\n\t\t\t\t\t\t\tadminLocations.locations.forEach(location =>\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (location.accountName)\n\t\t\t\t\t\t\t\t\tthis.adminLocations.push(location);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tthis.adminLocationList.next(this.adminLocations);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: (error) =>\n\t\t\t\t{\n\t\t\t\t\tthis.toaster.error(error.error.message);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\tpublic switchAccount(switchAccountPayload : SwitchAccountPayload)\n\t{\n\t\tthis.apiService.switchAccount(switchAccountPayload).subscribe(\n\t\t\t{\n\t\t\t\tnext: (res: ApiResponse) =>\n\t\t\t\t{\n\t\t\t\t\tif (res?.data)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.loading = false;\n\n\t\t\t\t\t\tthis.clearLocalStorageExceptAlertBanner();\n\t\t\t\t\t\tconst path: string = this.environmentRef.baseUrl + urlPaths.myfleetSearch;\n\t\t const key: string = btoa(JSON.stringify({ url: path }));\n\t\t \t\t\t\tthis.localStorageService.removeCached(key);\n\t\t\t\t\t\tthis.routerservice.navigate(['/auth']);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: (error) =>\n\t\t\t\t{\n\t\t\t\t\tthis.loading = false;\n\t\t\t\t\tthis.toaster.error(error.error.message);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\tclearLocalStorageExceptAlertBanner()\n\t{\n\t\tconst keys = Object.keys(localStorage);\n\t\tkeys.forEach((key) =>\n\t\t{\n\t\t\tif (key !== 'headerAlertBanner')\n\t\t\t{\n\t\t\t\tlocalStorage.removeItem(key);\n\t\t\t}\n\t\t});\n\t}\n\tpublic async getHeaderNavState(hideServiceHistory: boolean)\n\t{\n\t\tlet res: HeaderNavResponse;\n\t\tconst checkHeaderNav = (this.sharedUtilService.isTmhCustomerSupportRole || this.sharedUtilService.isTmhCorporateAdmin) && !this.localStorageService.getCustomerToDashboard() ;\n\t\tthis.aemApiService.getHeaderNavValues(checkHeaderNav).subscribe((response: ApiResponse) =>\n\t\t{\n\t\t\tif (response?.data)\n\t\t\t{\n\t\t\t\tres = response.data;\n\t\t\t\tthis.requestServiceUrl.next(res.requestServiceUrl);\n\t\t\t\tres?.globalHeader?.forEach((item: KngHeaderNavMenuOption) =>\n\t\t\t\t{\n\t\t\t\t\tif(item.iconPath)\n\t\t\t\t\t\titem.iconPath = this.aemBaseUrl + item.iconPath;\n\t\t\t\t\tthis.handleGlobalHeader(item);\n\t\t\t\t});\n\t\t\t\tres?.mobileHeader.items.forEach((item: KngHeaderNavMenuOption) =>\n\t\t\t\t{\n\t\t\t\t\tif(item.iconPath)\n\t\t\t\t\t\titem.iconPath = this.aemBaseUrl + item.iconPath;\n\t\t\t\t\tthis.handleMobileHeader(item, hideServiceHistory);\n\t\t\t\t});\n\t\t\t\tres?.portalHeader.forEach((item: KngHeaderNavMenuOption) =>\n\t\t\t\t{\n\t\t\t\t\tif(item.label === 'Service and Repairs')\n\t\t\t\t\t{\n\t\t\t\t\t\titem.hideMenu = hideServiceHistory;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.shellStateHeaderNavMapperObject.filter((elem) => elem.cssClass === CssClass.global)[0].menu = res?.globalHeader;\n\t\t\t\tthis.shellStateHeaderNavMapperObject.filter((elem) => elem.cssClass === CssClass.portal)[0].menu = res?.portalHeader;\n\t\t\t\tthis.shellStateHeaderNavMapperObject.filter((elem) => elem.cssClass === CssClass.mobile)[0].menu = res?.mobileHeader?.items;\n\t\t\t\tthis.checkIfMinimumAccessProvided();\n\t\t\t\tthis.state.header = this.shellStateHeaderNavMapperObject;\n\t\t\t\tthis.state.isMyInSights = res.isMyInSights;\n\t\t\t\tthis.updateState(this.state);\n\t\t\t\tif(!this.sharedUtilService.isTmhCorporateAdmin)\n\t\t\t\t{\n\t\t\t\t\tthis.sharedApiService.getUnreadNotificationsCount();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tprivate handleGlobalHeader(item: KngHeaderNavMenuOption)\n\t{\n\t\tif (/cart/i.exec(item.iconPath))\n\t\t{\n\t\t\titem.cssClass = CssClass.shop;\n\t\t}\n\t\telse if (/notify/i.exec(item.iconPath))\n\t\t{\n\t\t\tthis.notificationPath = {\n\t\t\t\taltText: item.altText,\n\t\t\t\ticonPath: item.iconPath\n\t\t\t};\n\t\t\titem.cssClass = CssClass.notification;\n\t\t}\n\t\telse if (/mytoyota/i.exec(item.iconPath))\n\t\t{\n\t\t\titem.cssClass = CssClass.logos;\n\t\t\titem.url = 'app/dashboard';\n\t\t\tthis.isBusinessAccountHeader(item);\n\t\t}\n\t\telse if (/settings/i.exec(item.iconPath))\n\t\t{\n\t\t\titem.cssClass = CssClass.user;\n\t\t\tthis.sharedService.getuserNameObs().subscribe((res:string) =>\n\t\t\t{\n\t\t\t\tthis.sharedService.updatedUserNameState = res;\n\t\t\t\tthis.customerSupportData.username = res;\n\t\t\t\titem.label = res;\n\t\t\t});\n\t\t}\n\t\telse if (/location/i.exec(item.iconPath))\n\t\t{\n\t\t\titem.cssClass = CssClass.locationListDropdown;\n\t\t\titem.dropdownArrow = { iconPath: Icons.chevronDownDesk, altText: '' };\n\t\t\titem.locations = this.adminLocations;\n\n\t\t}\n\t}\n\tprivate handleMobileHeader(item: KngHeaderNavMenuOption, hideMenu: boolean = false)\n\t{\n\t\tif (/shop-mobile/i.exec(item.iconPath))\n\t\t{\n\t\t\titem.cssClass = CssClass.shopMobile;\n\t\t}\n\t\tif (/mytoyota/i.exec(item.iconPath))\n\t\t{\n\t\t\titem.cssClass = CssClass.shopMobile;\n\t\t\titem.url = 'app/dashboard';\n\t\t\tthis.isBusinessAccountHeader(item);\n\t\t}\n\t\tif (/ACCOUNT MANAGER/i.exec(item.label))\n\t\t{\n\t\t\titem.cssClass = CssClass.locationListDropdown;\n\t\t\titem.dropdownArrow = { iconPath: Icons.chevronDown, altText: '' };\n\t\t\titem.locations = this.adminLocations;\n\t\t}\n\t\tif (/Service/i.exec(item.label))\n\t\t{\n\t\t\titem.hideMenu = hideMenu;\n\t\t}\n\t}\n\tisBusinessAccountHeader(item: KngHeaderNavMenuOption)\n\t{\n\t\tif(this.sharedUtilService.isTmhCorporateAdmin)\n\t\t{\n\t\t\titem.url = '';\n\t\t\titem.notClickable = true;\n\t\t}\n\t}\n\tcheckIfMinimumAccessProvided()\n\t{\n\t\t\n\t\t{\n\t\t\tthis.shellStateHeaderNavMapperObject.forEach(section =>\n\t\t\t{\n\t\t\t\tif(this.sharedUtilService.isTmhCorporateAdmin && !this.localStorageService.getCustomerToDashboard())\n\t\t\t\t{\n\t\t\t\t\tsection.minimumAccess = true;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tsection.minimumAccess = false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\tpublic getFooterData(): void\n\t{\n\t\tthis.aemApiService.getFooterData().subscribe((res: ApiResponse) =>\n\t\t{\n\t\t\tconst cssClass: string = this.state.footer.cssClass;\n\t\t\tthis.state.footer = res.data;\n\t\t\tthis.state.footer.footercontent.logoImagePath = this.environmentRef.aemBaseUrl + this.state.footer.footercontent.logoImagePath;\n\t\t\tthis.state.footer.ribbonImage = this.environmentRef.aemBaseUrl + this.state.footer.ribbonImage;\n\t\t\t\n\t\t\t\n\t\t\tthis.state.footer.footercontent.footermenu.forEach((element) =>\n\t\t\t{\n\t\t\t\tif (element.iconPath)\n\t\t\t\t{\n\t\t\t\t\telement.iconPath = this.environmentRef.aemBaseUrl + element.iconPath;\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.state.footer.cssClass = cssClass;\n\t\t\tthis.updateState(this.state);\n\t\t});\n\t}\n\tpublic getAEMdetailsTerms(): void\n\t{\n\t\tthis.apiService.getAEMdetailsTerms().subscribe((res: ApiResponse) =>\n\t\t{\n\t\t\tif(res?.data)\n\t\t\t{\n\t\t\t\tconst data = res.data;\n\t\t\t\tthis.termsAndCondition.label= data.updatedTerms.heading;\n\t\t\t\tthis.termsAndCondition.checkboxText = data.updatedTerms.checkboxText;\n\t\t\t\tif(this.termsAndCondition.tooltip)\n\t\t\t\t{\n\t\t\t\t\tthis.termsAndCondition.tooltip.content = data.updatedTerms.infoIcon[0].altText;\n\t\t\t\t}\n\t\t\t\tthis.termsAndCondition.buttons[1].label = data.updatedTerms.agreeButtonLabel;\n\t\t\t\tthis.termsAndCondition.buttons[1].id = ModalButtonId.agree;\n\t\t\t\tthis.termsAndCondition.buttons[0].label = data.updatedTerms.disagreeButtonLabel;\n\t\t\t\tthis.termsAndCondition.buttons[0].id = ModalButtonId.cancel;\n\t\t\t\tthis.termsAndConditionAEMlabels.updatedTerms = data.updatedTerms;\n\t\t\t\tthis.termsAndConditionAEMlabels.updatedTerms.creationDate = data.updatedTerms.creationDate;\n\t\t\t\tthis.termsAndConditionAEMlabels.updatedTerms.checkboxText = data.updatedTerms.checkboxText? data.updatedTerms.checkboxText : '';\n\t\t\t\tthis.termsAndConditionAEMlabels.updatedTerms.alertNote = data.updatedTerms.alertNote ? data.updatedTerms.alertNote : TermsAndConditionPrivacyPolicyInfoBannerText.tandCInfoBannerText;\n\t\t\t}\n\t\t});\n\t}\n\tpublic submitTnC(payload:SubmitTnc): void\n\t{\n\t\tconst currentDate = new Date();\n\t\tconst unixTimestamp = Math.floor(currentDate.getTime());\n\t\tpayload.creationDate = this.termsAndConditionAEMlabels.updatedTerms.creationDate;\n\t payload.id = this.sharedService.getUserId();\n\t this.sharedService.getLoggedInUserCompanyObs().pipe(tap((companyId: string) =>\n\t\t{\n\t\t\tpayload.company = companyId;\n\t\t}),\n\t\tconcatMap(() =>this.apiService.submitTnC(payload))).subscribe((res) =>\n\t\t{\n\t\t\tif(res)\n\t\t\t{\n\t\t\t\tthis.termsAndCondition.hidden = true;\n\t\t\t\tconst userProfile = this.localStorageService.getLoggedInUser();\n\t\t\t\tif(userProfile)\n\t\t\t\t{\n\t\t\t\t\tconst user:LoggedInUser = this.localStorageService.parseJSON(userProfile);\n\t\t\t\t\tuser.tcDate = unixTimestamp;\n\t\t\t\t\tuser.tncUpdated = false;\n\t\t\t\t\tthis.localStorageService.setLoggedInUser(this.localStorageService.striginifyJSON(user));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tpublic getAEMdetailsPolicy(): void\n\t{\n\t\tthis.apiService.getAEMdetailsPolicy().subscribe((res: ApiResponse) =>\n\t\t{\n\t\t\tif(res?.data)\n\t\t\t{\n\t\t\t\tconst data = res.data;\n\t\t\t\tthis.policyState.label= data.updatedPrivacy.heading;\n\t\t\t\tthis.policyState.checkboxText= data.updatedPrivacy.checkboxText;\n\t\t\t\tif(this.policyState.tooltip)\n\t\t\t\t{\n\t\t\t\t\tthis.policyState.tooltip.content = data.updatedPrivacy.infoIcon[0].altText;\n\t\t\t\t}\n\t\t\t\tthis.policyState.buttons[1].label = data.updatedPrivacy.agreeButtonLabel;\n\t\t\t\tthis.policyState.buttons[1].id = ModalButtonId.agree;\n\t\t\t\tthis.policyState.buttons[0].label = data.updatedPrivacy.disagreeButtonLabel;\n\t\t\t\tthis.policyState.buttons[0].id = ModalButtonId.cancel;\n\t\t\t\tthis.policyAEMlabels.updatedPrivacy = data.updatedPrivacy;\n\t\t\t\tthis.termsAndConditionAEMlabels.updatedTerms.creationDate = data.updatedPrivacy.creationDate;\n\t\t\t\tthis.policyAEMlabels.updatedPrivacy.checkboxText = data.updatedPrivacy.checkboxText? data.updatedPrivacy.checkboxText : '';\n\t\t\t\tthis.policyAEMlabels.updatedPrivacy.alertNote = data.updatedPrivacy.alertNote ? data.updatedPrivacy.alertNote : TermsAndConditionPrivacyPolicyInfoBannerText.privacyPolicyInfoBannerText;\n\t\t\t}\n\t\t});\n\t}\n\tpublic submitPolicy(payload:SubmitTnc): void\n\t{\n\t\tconst currentDate = new Date();\n\t\tconst unixTimestamp = Math.floor(currentDate.getTime());\n\t\tpayload.creationDate = this.policyAEMlabels.updatedPrivacy.creationDate;\n\t\tpayload.id = this.sharedService.getUserId();\n\t\tthis.sharedService.getLoggedInUserCompanyObs().pipe(tap((companyId: string) =>\n\t\t{\n\t\t\tpayload.company = companyId;\n\t\t}),\n\t\tconcatMap(() =>this.apiService.submitPolicy(payload))).subscribe((res) =>\n\t\t {\n\t\t\tif(res)\n\t\t\t{\n\t\t\t\tthis.policyState.hidden = true;\n\t\t\t\tconst userProfile = this.localStorageService.getLoggedInUser();\n\t\t\t\tif(userProfile)\n\t\t\t\t{\n\t\t\t\t\tconst user:LoggedInUser = this.localStorageService.parseJSON(userProfile);\n\t\t\t\t\tuser.privacyDate = unixTimestamp;\n\t\t\t\t\tuser.privacyPolicyUpdated = false;\n\t\t\t\t\tthis.localStorageService.setLoggedInUser(this.localStorageService.striginifyJSON(user));\n\t\t\t\t}\n\t\t\t}\n\t\t });\n\t }\n\tpublic getGoogleTranslatePanel(renderer: Renderer2): HTMLIFrameElement | null\n\t{\n\t\ttry\n\t\t{\n\t\t\treturn renderer.selectRootElement('div.skiptranslate > iframe');\n\t\t}\n\t\tcatch (error)\n\t\t{\n\t\t\tthis.logger.log('trying to select google translate panel', error);\n\t\t\treturn null;\n\t\t}\n\t}\n\tpublic performFirstTimeTranslation(selection: string, renderer: Renderer2): void\n\t{\n\t\tconst googleTranslateMenuLink: HTMLAnchorElement = renderer.selectRootElement('#google_translate_element a');\n\t\trenderer.removeAttribute(googleTranslateMenuLink, 'href');\n\t\trenderer.selectRootElement(googleTranslateMenuLink).click();\n\t\tconst iframeElList: NodeListOf = document.querySelectorAll('iframe.skiptranslate');\n\t\tconst foundLink: unknown = Array.from(iframeElList).find((item: HTMLIFrameElement) =>\n\t\t{\n\t\t\tconst links: NodeListOf | undefined = item.contentWindow !== null ? item.contentWindow.document.querySelectorAll('a') : undefined;\n\t\t\tconst link: HTMLAnchorElement | undefined = links !== undefined ? Array.from(links).find(thisLink => lodashGet(thisLink, 'value') === selection) : undefined;\n\t\t\tlink !== undefined ? renderer.selectRootElement(link).click() : (() => {} )();\n\t\t\treturn link !== undefined;\n\t\t});\n\t\tthis.logger.log('found translation link and stopped', foundLink);\n\t}\n\tpublic performSubsequetTranslation(panelAfterFirstTranslation: HTMLIFrameElement, selection: string): void\n\t{\n\t\tconst buttonRestore: HTMLButtonElement | null = (panelAfterFirstTranslation.contentWindow as {document: Document}).document.getElementById(':2.restore') as HTMLButtonElement || null;\n\t\tconst buttonTranslate: HTMLButtonElement | null = (panelAfterFirstTranslation.contentWindow as {document: Document}).document.getElementById(':2.confirm') as HTMLButtonElement || null;\n\t\tselection === 'en' ? (buttonRestore).click() : (buttonTranslate).click();\n\t}\n\tpublic getBusinessAccountSuccessLabels()\n\t{\n\t\tthis.aemApiService.getBusinessAccountSuccessPopupLabels().subscribe((response: ApiResponse) =>\n\t\t{\n\t\t\tconst responseObj: BusinessAccountRegistrationSuccessLabels = response.data;\n\t\t\tthis.businessAccountRegistrationSuccess.congratulationsImage.altText = responseObj.congratulationsImage.altText;\n\t\t\tthis.businessAccountRegistrationSuccess.mainText = responseObj.mainText;\n\t\t\tthis.businessAccountRegistrationSuccess.subText = responseObj.subText;\n\t\t\tthis.businessAccountRegistrationSuccess.modal.buttons[0].label = responseObj.closeButtonLabel;\n\t\t});\n\t}\n\tpublic getHeaderAlertBanner()\n\t{\n\t\tconst storedBanner = localStorage.getItem('headerAlertBanner');\n\t\tif (!storedBanner)\n\t\t{\n\t\t\tthis.aemApiService.getHeaderAlertBanner().subscribe((res: ApiResponse) =>\n\t\t\t{\n\t\t\t\tif (res?.data)\n\t\t\t\t{\n\t\t\t\t\tconst data: HeaderAlertBanner = res.data;\n\t\t\t\t\tlocalStorage.setItem('headerAlertBanner', JSON.stringify(data.alertBanner));\n\t\t\t\t\tthis.updateStateAlertBanner(data.alertBanner);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst data: AlertBannerList[] = JSON.parse(storedBanner);\n\t\t\tif (Array.isArray(data))\n\t\t\t{\n\t\t\t\tthis.bannerState.alertBanner = [];\n\t\t\t\tthis.updateStateAlertBanner(data);\n\t\t\t}\n\t\t}\n\t}\n\tprivate updateStateAlertBanner(alertBannerList: AlertBannerList[])\n\t{\n\t\tif (this.bannerState.alertBanner)\n\t\t{\n\t\t\talertBannerList.forEach((val) =>\n\t\t\t{\n\t\t\t\tconst currentDate = new Date().getTime();\n\t\t\t\tconst endDisplay = new Date(val.endDate).getTime();\n\t\t\t\tconst startDisplay = new Date(val.startDate).getTime();\n\n\t\t\t\tconst display = currentDate > startDisplay && currentDate < endDisplay ? val.display : 'false';\n\t\t\t\tconst banner: AlertBanner = {\n\t\t\t\t\tdisplay: display,\n\t\t\t\t\tbannerIcon: val.bannerIcon,\n\t\t\t\t\tcloseIcon: val.closeIcon,\n\t\t\t\t\tbannerMessage: this.updateHeaderAlertBanner(val),\n\t\t\t\t\thasTokenInMessage: val.hasTokenInMessage,\n\t\t\t\t\ttokenDataList: val.tokenData,\n\t\t\t\t\tstartDate: val.startDate,\n\t\t\t\t\tendDate: val.endDate\n\t\t\t\t};\n\t\t\t\tthis.bannerState.alertBanner?.push(banner);\n\t\t\t});\n\t\t}\n\t}\n\tpublic updateHeaderAlertBanner(res: AlertBannerList): string\n\t{\n\t\tconst bannerDataMessage = this.sharedService.updateServiceCampaignBannerDataValue\n\t\t(\n\t\t\tres.bannerMessage, res.tokenData\n\t\t);\n\t\treturn bannerDataMessage;\n\t}\n\tresetToDefaultAccount()\n\t{\n\t\tconst defaultGrid: string = this.sharedService.getDefaultGrid();\n\t\tconst switchAccountPayload : SwitchAccountPayload = { selectedLocation: defaultGrid };\n\t\tthis.loading = true;\n\t\treturn new Observable((observer: Observer) =>\n\t\t{\n\t\t\tthis.apiService.switchAccount(switchAccountPayload).subscribe({\n\t\t\t\tnext: (response) =>\n\t\t\t\t{\n\t\t\t\t\tthis.loading = false;\n\t\t\t\t\tobserver.next(response);\n\t\t\t\t\tobserver.complete();\n\t\t\t\t},\n\t\t\t\terror: (error) =>\n\t\t\t\t{\n\t\t\t\t\tthis.loading = false;\n\t\t\t\t\tobserver.error(error);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\tgetCustomerAemLabels()\n\t{\n\t\tconst customerLabel = this.localStorageService.getCustomerAemLabels();\n\t\tif(customerLabel !== null && customerLabel !== undefined)\n\t\t{\n\t\t\tconst labels: CustomerSupportAemLabel = this.localStorageService.parseJSON(customerLabel);\n\t\t\tthis.mapCustomerlabels(labels);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.apiService.getCustomerSupportLabels().subscribe({\n\t\t\t\tnext: (response: ApiResponse) =>\n\t\t\t\t{\n\t\t\t\t\tif (response)\n\t\t\t\t\t{\n\t\t\t\t\t\tconst responseObj = response.data;\n\t\t\t\t\t\tthis.localStorageService.setCustomerAemLabels(JSON.stringify(responseObj));\n\t\t\t\t\t\tthis.mapCustomerlabels(responseObj);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: (error) =>\n\t\t\t\t{\n\t\t\t\t\tthis.toaster.error(error?.error?.message);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\tmapCustomerlabels(res: CustomerSupportAemLabel): void\n\t{\n\t\tthis.customerSupportData.readOnly = this.sharedService.emptyStringHandler(res.readOnly);\n\t\tthis.customerSupportData.warningNote = this.sharedService.emptyStringHandler(res.warningNote);\n\t\tthis.customerSupportData.endSessionNote = this.sharedService.emptyStringHandler(res.endSessionNote);\n\t\tthis.customerSupportData.endSession = this.sharedService.emptyStringHandler(res.endSession);\n\t\tthis.endSessionModalState.label = this.sharedService.emptyStringHandler(res.endSession);\n\t\tthis.endSessionModalState.buttons[0].label = this.sharedService.emptyStringHandler(res.endSessionCta);\n\t\tthis.endSessionModalState.buttons[1].label = this.sharedService.emptyStringHandler(res.continueSessionCta);\n\t\tthis.inactiveSessionModalState.label = this.sharedService.emptyStringHandler(res.inActivityAlert);\n\t\tthis.inactiveSessionModalState.buttons[0].label = this.sharedService.emptyStringHandler(res.endSession);\n\t\tthis.inactiveSessionModalState.buttons[1].label = this.sharedService.emptyStringHandler(res.continueSession);\n\t\tthis.customerSupportData.inactivityConfirmation = this.sharedService.emptyStringHandler(res.inActivityConfirmation);\n\t\tthis.customerSupportData.inativityMessage = this.sharedService.emptyStringHandler(res.inActivityMessage);\n\t\tthis.customerSupportData.hidden = !((this.sharedUtilService.isTmhCustomerSupportRole || this.sharedUtilService.isTmhCorporateAdmin) && this.localStorageService.getCustomerToDashboard());\n\t\tthis.routerservice.events.subscribe((event) =>\n\t\t{\n\t\t\tif(event instanceof NavigationStart)\n\t\t\t{\n\t\t\t\tif(event.url.includes('customer-support'))\n\t\t\t\t{\n\t\t\t\t\tthis.customerSupportData.hidden = true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tendImpersonationSession()\n\t{\n\t\tthis.customerSupportData.hidden = true;\n\t\tthis.localStorageService.setCustomerToDashboard('false');\n\t\tthis.sharedUtilService.isCustomerSupportSession$.next(false);\n\t\tthis.localStorageService.removeImpersonateUser();\n\t\tthis.localStorageService.setUserName('');\n\t\tconst path: string = this.environmentRef.baseUrl + urlPaths.myfleetSearch;\n\t\tconst key: string = btoa(JSON.stringify({ url: path }));\n\t\tthis.localStorageService.removeCached(key);\n\t\tif(this.sharedUtilService.isTmhCorporateAdmin)\n\t\t{\n\t\t\tlocalStorage.setItem('endCorpSession', 'true');\n\t\t\tthis.routerservice.navigate(['/app/customerportal']);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.routerservice.navigate(['/app/customer-support']);\n\t\t}\n\t}\n\tasync getServiceCount(): Promise\n\t{\n\t\ttry\n\t\t{\n\t\t\tconst response: ApiResponse = await firstValueFrom(this.apiService.getServiceHistoryCount());\n\t\t\tconst resp = <{ totalRecords: number }>response.data;\n\t\t\treturn resp.totalRecords > 0 ? false : true;\n\t\t}\n\t\tcatch (error)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t}\n}\n","import { Control, ControlType, KngFilterState, Section } from 'kinetic-angular';\nimport { ProfileLocation } from '../components/auth';\nimport { SharedFactoryDataService } from '../services/shared/shared-factory-data.service';\n\nexport const divisionControls: Control[] = [\n\tnew Control({\n\t\tid: 'Division 1',\n\t\tlabel: 'Division 1',\n\t\ttype: ControlType.checkbox,\n\t\tinputPlaceholderText: '',\n\t\tinputIcon: '',\n\t\toptions: [],\n\t\tvalue: ''\n\t}),\n\tnew Control({\n\t\tid: 'Division 2',\n\t\tlabel: 'Division 2',\n\t\ttype: ControlType.checkbox,\n\t\tinputPlaceholderText: '',\n\t\tinputIcon: '',\n\t\toptions: [],\n\t\tvalue: ''\n\t})\n];\nexport const groupControls: Control[] = [\n\tnew Control({\n\t\tid: 'Group 1',\n\t\tlabel: 'Group 1',\n\t\ttype: ControlType.checkbox,\n\t\tinputPlaceholderText: '',\n\t\tinputIcon: '',\n\t\toptions: [],\n\t\tvalue: ''\n\t}),\n\tnew Control({\n\t\tid: 'Group 2',\n\t\tlabel: 'Group 2',\n\t\ttype: ControlType.checkbox,\n\t\tinputPlaceholderText: '',\n\t\tinputIcon: '',\n\t\toptions: [],\n\t\tvalue: ''\n\t}),\n\tnew Control({\n\t\tid: 'Group 3',\n\t\tlabel: 'Group 3',\n\t\ttype: ControlType.checkbox,\n\t\tinputPlaceholderText: '',\n\t\tinputIcon: '',\n\t\toptions: [],\n\t\tvalue: ''\n\t})\n];\nexport const locationControls: Control[] = [\n\tnew Control({\n\t\tid: '9e42775d-7ea0-4dc0-ab16-7fb9d013ac31',\n\t\tlabel: '',\n\t\ttype: ControlType.input,\n\t\tinputPlaceholderText: '',\n\t\tinputIcon: '',\n\t\toptions: [],\n\t\tvalue: ''\n\t}),\n\tnew Control({\n\t\tid: '9e42775d-7ea0-4dc0-ab16-7fb9d013ac31',\n\t\tlabel: 'Location ABC',\n\t\ttype: ControlType.checkbox,\n\t\tinputPlaceholderText: '',\n\t\tinputIcon: '',\n\t\toptions: [],\n\t\tvalue: true\n\t}),\n\tnew Control({\n\t\tid: '9e42775d-7ea0-4dc0-ab16-7fb9d013ac31',\n\t\tlabel: 'Location DEF',\n\t\ttype: ControlType.checkbox,\n\t\tinputPlaceholderText: '',\n\t\tinputIcon: '',\n\t\toptions: [],\n\t\tvalue: false\n\t})\n];\n\nexport const locationSection: Section =\n {\n \tlabel: 'Location',\n \tnoResultsFoundText: '',\n \tcontrols: [...locationControls],\n \tcollapsed: true,\n \taccordionCollapsedIcon: { altText: '', iconPath: '' },\n \taccordionExpandedIcon: { altText: '', iconPath: '' },\n \tsearchIcon: { iconPath: '', altText: '' },\n \tcrossIcon: { iconPath: '', altText: '' }\n };\n\nexport const divisionSection: Section =\n {\n \tlabel: 'Division',\n \tnoResultsFoundText: '',\n \tcontrols: divisionControls,\n \tcollapsed: true,\n \taccordionCollapsedIcon: { altText: '', iconPath: '' },\n \taccordionExpandedIcon: { altText: '', iconPath: '' },\n \tsearchIcon: { iconPath: '', altText: '' },\n \tcrossIcon: { iconPath: '', altText: '' },\n \tisShowMorePresent: true,\n \tshowMoreShowLess: {\n \t\tisDisabled: false,\n \t\tisShowMoreClicked: false,\n \t\tshowLessText: '',\n \t\tshowMoreText: ''\n \t}\n };\nexport const groupSection: Section =\n {\n \tlabel: 'Group',\n \tnoResultsFoundText: '',\n \tcontrols: groupControls,\n \tcollapsed: true,\n \taccordionCollapsedIcon: { altText: '', iconPath: '' },\n \taccordionExpandedIcon: { altText: '', iconPath: '' },\n \tsearchIcon: { iconPath: '', altText: '' },\n \tcrossIcon: { iconPath: '', altText: '' },\n \tisShowMorePresent: true,\n \tshowMoreShowLess: {\n \t\tisDisabled: false,\n \t\tisShowMoreClicked: false,\n \t\tshowLessText: '',\n \t\tshowMoreText: ''\n \t}\n };\nexport const dateRangeSection: Section = {\n\tlabel: 'Date Range',\n\tcontrols: [\n\t\tnew Control({\n\t\t\tid: '9e42775d-7ea0-4dc0-ab16-7fb9d013ac31',\n\t\t\tlabel: '',\n\t\t\ttype: ControlType.radio,\n\t\t\tinputPlaceholderText: '',\n\t\t\tinputIcon: '',\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Custom Date Range',\n\t\t\t\t\tvalue: '',\n\t\t\t\t\tchecked: false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Last 60 Days',\n\t\t\t\t\tvalue: '',\n\t\t\t\t\tchecked: false\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Last 60 Days (default)',\n\t\t\t\t\tvalue: '',\n\t\t\t\t\tchecked: false\n\t\t\t\t}\n\t\t\t],\n\t\t\tvalue: ''\n\t\t})\n\t],\n\taccordionCollapsedIcon: SharedFactoryDataService.getAccordionCollapsedIcon(),\n\taccordionExpandedIcon: SharedFactoryDataService.getAccordionExpandedIcon(),\n\tsearchIcon: SharedFactoryDataService.getSearchIcon(),\n\tcrossIcon: SharedFactoryDataService.getSearchCrossIcon(),\n\tcollapsed: true\n};\nexport const locationHeirarchyObject: ProfileLocation =\t{\n\tlocations: [\n\t\t{\n\t\t\tisParentCompany: false,\n\t\t\tcompanyName: 'TRACTOR SUPPLY COMPANY',\n\t\t\tlocationId: 'Location 1',\n\t\t\tlocationName: 'Location 1',\n\t\t\tcompanyId: '',\n\t\t\taddress: {\n\t\t\t\taddressLine1: '5401 Virginia Way',\n\t\t\t\taddressLine2: '',\n\t\t\t\tcity: 'Brentwood',\n\t\t\t\tstate: 'TN',\n\t\t\t\tcountry: 'US',\n\t\t\t\tzipCode: '34242'\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tisParentCompany: false,\n\t\t\tcompanyName: 'test',\n\t\t\tlocationId: 'Location 2',\n\t\t\tlocationName: 'Location 2',\n\t\t\tcompanyId: '',\n\t\t\taddress: {\n\t\t\t\taddressLine1: '5401 Virginia Way',\n\t\t\t\taddressLine2: '',\n\t\t\t\tcity: 'Brentwood',\n\t\t\t\tstate: 'TN',\n\t\t\t\tcountry: 'US',\n\t\t\t\tzipCode: '34242'\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tisParentCompany: false,\n\t\t\tcompanyName: 'test',\n\t\t\tlocationId: 'Location 3',\n\t\t\tlocationName: 'Location 3',\n\t\t\tcompanyId: '',\n\t\t\taddress: {\n\t\t\t\taddressLine1: '5401 Virginia Way',\n\t\t\t\taddressLine2: '',\n\t\t\t\tcity: 'Brentwood',\n\t\t\t\tstate: 'TN',\n\t\t\t\tcountry: 'US',\n\t\t\t\tzipCode: '34242'\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tisParentCompany: false,\n\t\t\tcompanyName: 'TRACTOR SUPPLY COMPANY',\n\t\t\tlocationId: '123456',\n\t\t\tlocationName: 'Philadelphia, GA',\n\t\t\tcompanyId: '',\n\t\t\taddress: {\n\t\t\t\taddressLine1: '5401 Virginia Way',\n\t\t\t\taddressLine2: '',\n\t\t\t\tcity: 'Brentwood',\n\t\t\t\tstate: 'TN',\n\t\t\t\tcountry: 'US',\n\t\t\t\tzipCode: '34242'\n\t\t\t}\n\t\t}\n\t],\n\tdivisionFilterList: [\n\t\t{\n\t\t\tdivisionName: 'Division 1',\n\t\t\tgroups: [\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'Group 1',\n\t\t\t\t\tlocations: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tisParentCompany: false,\n\t\t\t\t\t\t\tcompanyName: 'TRACTOR SUPPLY COMPANY',\n\t\t\t\t\t\t\tlocationId: 'Location 1',\n\t\t\t\t\t\t\tlocationName: 'Location 1',\n\t\t\t\t\t\t\tcompanyId: '',\n\t\t\t\t\t\t\taddress: {\n\t\t\t\t\t\t\t\taddressLine1: '5401 Virginia Way',\n\t\t\t\t\t\t\t\taddressLine2: '',\n\t\t\t\t\t\t\t\tcity: 'Brentwood',\n\t\t\t\t\t\t\t\tstate: 'TN',\n\t\t\t\t\t\t\t\tcountry: 'US',\n\t\t\t\t\t\t\t\tzipCode: '37027-7536'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tisParentCompany: false,\n\t\t\t\t\t\t\tcompanyName: 'TRACTOR SUPPLY COMPANY',\n\t\t\t\t\t\t\tlocationId: 'Location 2',\n\t\t\t\t\t\t\tlocationName: 'Location 2',\n\t\t\t\t\t\t\tcompanyId: '',\n\t\t\t\t\t\t\taddress: {\n\t\t\t\t\t\t\t\taddressLine1: '5401 Virginia Way',\n\t\t\t\t\t\t\t\taddressLine2: '',\n\t\t\t\t\t\t\t\tcity: 'Brentwood',\n\t\t\t\t\t\t\t\tstate: 'TN',\n\t\t\t\t\t\t\t\tcountry: 'US',\n\t\t\t\t\t\t\t\tzipCode: '37027-7536'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: null as unknown as string,\n\t\t\t\t\tlocations: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tisParentCompany: false,\n\t\t\t\t\t\t\tcompanyName: 'TRACTOR SUPPLY COMPANY',\n\t\t\t\t\t\t\tlocationId: 'Location 3',\n\t\t\t\t\t\t\tlocationName: 'Location 3',\n\t\t\t\t\t\t\tcompanyId: '',\n\t\t\t\t\t\t\taddress: {\n\t\t\t\t\t\t\t\taddressLine1: '5401 Virginia Way',\n\t\t\t\t\t\t\t\taddressLine2: '',\n\t\t\t\t\t\t\t\tcity: 'Brentwood',\n\t\t\t\t\t\t\t\tstate: 'TN',\n\t\t\t\t\t\t\t\tcountry: 'US',\n\t\t\t\t\t\t\t\tzipCode: '37027-7536'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\tdivisionName: null as unknown as string,\n\t\t\tgroups: [\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'Group 3',\n\t\t\t\t\tlocations: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tisParentCompany: false,\n\t\t\t\t\t\t\tcompanyName: 'TRACTOR SUPPLY COMPANY',\n\t\t\t\t\t\t\tlocationId: 'Location 4',\n\t\t\t\t\t\t\tlocationName: 'Location 4',\n\t\t\t\t\t\t\tcompanyId: '',\n\t\t\t\t\t\t\taddress: {\n\t\t\t\t\t\t\t\taddressLine1: '5401 Virginia Way',\n\t\t\t\t\t\t\t\taddressLine2: '',\n\t\t\t\t\t\t\t\tcity: 'Brentwood',\n\t\t\t\t\t\t\t\tstate: 'TN',\n\t\t\t\t\t\t\t\tcountry: 'US',\n\t\t\t\t\t\t\t\tzipCode: '37027-7536'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: null as unknown as string,\n\t\t\t\t\tlocations: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tisParentCompany: false,\n\t\t\t\t\t\t\tcompanyName: 'TRACTOR SUPPLY COMPANY',\n\t\t\t\t\t\t\tlocationId: 'Location 5',\n\t\t\t\t\t\t\tlocationName: 'Location 5',\n\t\t\t\t\t\t\tcompanyId: '',\n\t\t\t\t\t\t\taddress: {\n\t\t\t\t\t\t\t\taddressLine1: '5401 Virginia Way',\n\t\t\t\t\t\t\t\taddressLine2: '',\n\t\t\t\t\t\t\t\tcity: 'Brentwood',\n\t\t\t\t\t\t\t\tstate: 'TN',\n\t\t\t\t\t\t\t\tcountry: 'US',\n\t\t\t\t\t\t\t\tzipCode: '37027-7536'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t],\n\tgroupsList: [\n\t\t'Group 1'\n\t],\n\tdivisionsList: [\n\t\t'Division 1'\n\t]\n};\n\nexport const filterStateMock: KngFilterState = {\n\tfilterData: {\n\t\theading: { label: '' },\n\t\tsections: [ divisionSection, groupSection, locationSection ],\n\t\tctaList: [\n\t\t\t{ id: '327147f4-c044-4799-8a5a-d075c619e41c', label: '', className: 'light', disabled: false },\n\t\t\t{ id: '7eeaa3f0-b4f6-4142-8086-361298d75686', label: '', className: 'dark', disabled: false }\n\t\t]\n\t},\n\thidden: true\n};\n","import { ModalState } from 'kinetic-angular';\nimport { AuthState } from '../components/auth';\n\nexport const mockData: AuthState = {\n\ttncUpdated: true,\n\tprivacyPolicyUpdated: true,\n\tuserId: '616f4abc-3caf-4ba0-8e79-5a8743f2d244',\n\tfirstName: 'Priya',\n\tlastName: 'Renjith',\n\temail: 'priya.renjith@accenture.com',\n\tadminEmailId: 'priya.renjith@accenture.com',\n\tphoneNumber: '(888)009-1111',\n\troles: [\n\t\t'd37a94b1-71bf-4d13-8f2e-fd1ff2ebdf76'\n\t],\n\tcustomerIds: [\n\t\t'1394564',\n\t\t'2137935'\n\t],\n\tlocations: [\n\t\t{\n\t\t\tisParentCompany: true,\n\t\t\tcompanyId: '0061457068',\n\t\t\tcompanyName: '',\n\t\t\tlocationId: '1394564',\n\t\t\tlocationName: 'A',\n\t\t\taddress: {\n\t\t\t\taddressLine1: '202 Hamlin Dr',\n\t\t\t\taddressLine2: '',\n\t\t\t\tcity: 'Pilot Mountain',\n\t\t\t\tstate: 'NC',\n\t\t\t\tcountry: 'United States',\n\t\t\t\tzipCode: '27041-8707'\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tisParentCompany: true,\n\t\t\tcompanyId: '263ACTIS00',\n\t\t\tcompanyName: 'Actis Manufacturing Ltd., LLC',\n\t\t\tlocationId: '2137935',\n\t\t\tlocationName: 'ACTIS MANUFACTURING LLC',\n\t\t\taddress: {\n\t\t\t\taddressLine1: '4051 Freeport Pkwy Ste 400',\n\t\t\t\taddressLine2: '',\n\t\t\t\tcity: 'Grapevine',\n\t\t\t\tstate: 'TX',\n\t\t\t\tcountry: 'United States',\n\t\t\t\tzipCode: '76051-2316'\n\t\t\t}\n\t\t}\n\t],\n\tadminLocationID: '',\n\tcompany: 'ACTIS MANUFACTURING LLC',\n\tcontactGRID: '450678',\n\tcontactID: '',\n\tprimaryLocationGRID: '102659',\n\ttopLevelGrid: ''\n};\n \nexport const mockUserData= {\n\tsuccess: true,\n\tmessage: 'Success',\n\tstatusCode: 200,\n\tdata: {\n\t\tuserId: '616f4abc-3caf-4ba0-8e79-5a8743f2d244',\n\t\tfirstName: 'Priya',\n\t\tlastName: 'Renjith',\n\t\tcontactID: '12456',\n\t\temail: 'priya.renjith@accenture.com',\n\t\tadminEmailId: 'priya.renjith@accenture.com',\n\t\tphoneNumber: '(888)009-1111',\n\t\troles: [\n\t\t\t'd37a94b1-71bf-4d13-8f2e-fd1ff2ebdf76'\n\t\t],\n\t\tcustomerIds: [\n\t\t\t'1394564',\n\t\t\t'2137935'\n\t\t],\n\t\tlocations: [\n\t\t\t{\n\t\t\t\tisParentCompany: false,\n\t\t\t\tcompanyId: '0061457068',\n\t\t\t\tcompanyName: '',\n\t\t\t\tlocationId: '1394564',\n\t\t\t\tlocationName: 'A',\n\t\t\t\taddress: {\n\t\t\t\t\taddressLine1: '202 Hamlin Dr',\n\t\t\t\t\taddressLine2: '',\n\t\t\t\t\tcity: 'Pilot Mountain',\n\t\t\t\t\tstate: 'NC',\n\t\t\t\t\tcountry: 'United States',\n\t\t\t\t\tzipCode: '27041-8707'\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tisParentCompany: false,\n\t\t\t\tcompanyId: '263ACTIS00',\n\t\t\t\tcompanyName: 'Actis Manufacturing Ltd., LLC',\n\t\t\t\tlocationId: '2137935',\n\t\t\t\tlocationName: 'ACTIS MANUFACTURING LLC',\n\t\t\t\taddress: {\n\t\t\t\t\taddressLine1: '4051 Freeport Pkwy Ste 400',\n\t\t\t\t\taddressLine2: '',\n\t\t\t\t\tcity: 'Grapevine',\n\t\t\t\t\tstate: 'TX',\n\t\t\t\t\tcountry: 'United States',\n\t\t\t\t\tzipCode: '76051-2316'\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t}\n};\nexport const mockTmhCorporateAdminData= {\n\tfirstName: 'Priya',\n\tlastName: 'Renjith',\n\temail: 'priya.renjith@accenture.com'\n};\nexport const mockCustomeSupportLabels= {\n\thidden: true,\n\tusername: 'Subhash V',\n\twarningNote: 'You are currently viewing the portal as John Doe sees it.',\n\treadOnly: 'Read Only',\n\tendSession: 'End Session',\n\tendSessionNote: 'Are you sure you want to end the session?'\n};\nexport const mockModalState: ModalState = {\n\t\n\tcloseHidden: true,\n\thidden: true,\n\tlabel: '',\n\tcssClass: '',\n\tbuttons: [\n\t\t{ label: '', disabled: false, cssClass: 'btn-secondary' },\n\t\t{ label: '', disabled: false, cssClass: 'btn-black' }\n\t],\n\ttooltip: {\n\t\tcloseIcon: {\n\t\t\ticonPath: '',\n\t\t\taltText: ''\n\t\t},\n\t\tcontent: ''\n\t}\n};\n\nexport const mockPrivacy = {\n\tupdatedPrivacy: {\n\t\tagreeButtonLabel: '',\n\t\theading: '',\n\t\tcontent: [],\n\t\tdisagreeButtonLabel: '',\n\t\tcreationDate: 0,\n\t\tinfoIcon: [{\n\t\t\ticonPath: '',\n\t\t\taltText: ''\n\t\t}]\n\n\t}\n};\nexport const mockTerms = {\n\tupdatedTerms: {\n\t\tagreeButtonLabel: '',\n\t\theading: '',\n\t\tcontent: [],\n\t\tdisagreeButtonLabel: '',\n\t\tcreationDate: 0,\n\t\tinfoIcon: [{\n\t\t\ticonPath: '',\n\t\t\taltText: ''\n\t\t}]\n\n\t}\n};\n\n","import { InjectionToken } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nexport interface AppConstantsMessage {\n category: string;\n tags: string[];\n value: string;\n}\nexport interface AppConstantsRef {\n messages: AppConstantsMessage[];\n}\nexport class AppConstants implements AppConstantsRef \n{\n\tprivate messages$: BehaviorSubject =\n\t\tnew BehaviorSubject([]);\n\tget messages(): AppConstantsMessage[] \n\t{\n\t\treturn this.messages$.value;\n\t}\n\tconstructor(values: AppConstantsRef) \n\t{\n\t\tthis.messages$.next(values.messages);\n\t}\n}\nconst appConstantsRef: AppConstantsRef = {\n\tmessages: [\n\t\t{\n\t\t\tcategory: 'Error',\n\t\t\ttags: [ 'default', 'unexpected' ],\n\t\t\tvalue: 'Unexpected error. Please try again later.'\n\t\t}\n\t]\n};\n\nexport const expAppConstants = new InjectionToken(\n\t'AppConstantsRef',\n\t{\n\t\tprovidedIn: 'root',\n\t\tfactory: () => new AppConstants(appConstantsRef)\n\t}\n);\n","\nimport { Inject, Injectable } from '@angular/core';\nimport { CanActivate, Router, UrlTree } from '@angular/router';\nimport { Image } from '../services/shared/shared-interface';\nimport { CommonErrorService } from '../components/common-error';\nimport { expAppConstants, AppConstants } from '../constants/portal-constants';\nimport { ApplicationPath, ErrorMessage } from '../services/shared/shared-enums';\nimport { SharedUtilService } from '../services/shared/shared-util.service';\nimport { SharedService } from '../services/shared/shared.service';\nimport { LocalStorageService } from '../services/local-storage/local-storage.service';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class LocationAccessGuard implements CanActivate \n{\n\tconstructor(private sharedService: SharedService,\n\t\tprivate router: Router,\n private errorService: CommonErrorService,\n\t\tprivate sharedUtilService: SharedUtilService,\n\t\tprivate localStorageService: LocalStorageService,\n\t\t@Inject(expAppConstants) readonly appConstantsRef: AppConstants) \n\t{\n\t\t\n\t}\n\t\n\tasync canActivate(): Promise\n\t{\n\t\tconst isTmhCustomerSupportRole = this.localStorageService.getCustomerToDashboard();\n\t\tif(this.localStorageService.getTmhCorporateAdminDetails() === null || isTmhCustomerSupportRole)\n\t\t{\n\t\t\treturn new Promise((resolve) =>\n\t\t\t{\n\t\t\t\tthis.sharedService.getLoggedInUseLocationsIdsObs().subscribe((locationId: string[]) => \n\t\t\t\t{\n\t\t\t\t\tif (locationId && locationId.length > 0) \n\t\t\t\t\t{\n\t\t\t\t\t\tresolve(true);\n\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.triggerErrorService(ErrorMessage.noLocations, 100, '');\n\t\t\t\t\t\tthis.sharedService.navigateMethod(this.router, ApplicationPath.authError);\n\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t}\n\t\n\tprivate triggerErrorService(status: string, statusCode: number, id:string) \n\t{\n\t\tconst image: Image = this.sharedUtilService.setImageBasedOnStatusCode(statusCode);\n\t\tthis.errorService.updateState({ messages: [{ message: status }, { message: this.sharedService.updateGetAdminEmail(this.sharedUtilService.getMessage()), cssClass: 'error-contact-section' }], statusCode: statusCode, id: id, image: image });\n\t}\n}\n","import { CanDeactivate } from '@angular/router';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport interface ComponentCanDeactivate {\n canDeactivate: () => boolean | Observable;\n}\n\n@Injectable( { providedIn: 'root' } )\nexport class PendingChangesGuard implements CanDeactivate \n{\n\tcanDeactivate(component: ComponentCanDeactivate): boolean | Observable \n\t{\n\t\treturn component.canDeactivate();\n\t}\n}\n","import { AuthenticationService } from './../../services/authentication/authentication.service';\nimport { Inject, Injectable } from '@angular/core';\nimport { CanActivate, ActivatedRouteSnapshot, Router } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { RoutePermissionAction, RoutePermissionCategory, RoutePermissionGroup, RoutePermissions } from './definitions';\nimport { get as lodashGet, noop as lodashNoop } from 'lodash';\nimport { AppConstants, expAppConstants } from '../../constants/portal-constants';\nimport { Image } from '../../services/shared/shared-interface';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { SharedService } from '../../services/shared/shared.service';\nimport { CommonErrorService } from '../../components/common-error';\nimport { SharedUtilService } from '../../services/shared/shared-util.service';\nimport { accountManagerRoleId, individualUserPermissionMessage, individualUserRoleId } from '../../services/shared/shared-constants';\nimport { ApplicationPath } from '../../services/shared/shared-enums';\nimport { LocalStorageService } from '../../services/local-storage/local-storage.service';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class PermissionGuard implements CanActivate\n{\n\tconstructor(\n private authenticationService: AuthenticationService,\n private router:Router,\n\tprivate sharedService: SharedService,\n\tprivate localStorageService: LocalStorageService,\n\tprivate errorService: CommonErrorService,\n\tprivate sharedUtilService: SharedUtilService,\n\t@Inject(expAppConstants) readonly appConstantsRef: AppConstants) \n\t{}\n\n\tcanActivate(route: ActivatedRouteSnapshot): Observable\n\t{\n\t\tconst isTmhCustomerSupportRole = this.localStorageService.getCustomerToDashboard();\n\t\tif(this.localStorageService.getTmhCorporateAdminDetails() === null || isTmhCustomerSupportRole)\n\t\t{\n\t\t\treturn new Observable(subscriber =>\n\t\t\t{\n\t\t\t\tconst routePermissionsPath: string = 'data.permissions';\n\t\t\t\tconst defaultPermissions: RoutePermissionGroup = { category: 'NONE' as RoutePermissionCategory, action: 'NONE' as RoutePermissionAction };\n\t\t\t\tconst group: RoutePermissionGroup = lodashGet(route, routePermissionsPath, defaultPermissions);\n\t\t\t\tthis.authenticationService.getRoutePermissions(route).subscribe({\n\t\t\t\t\tnext: (response: RoutePermissions) =>\n\t\t\t\t\t{\n\t\t\t\t\t\tconst actions: RoutePermissionAction[] = response.actions;\n\t\t\t\t\t\tconst hasAccess: boolean = actions.includes(group.action) || false;\n\t\t\t\t\t\thasAccess ? this.authenticationService.setRoutePermissions(group, { category: group.category, actions }) : lodashNoop();\n\t\t\t\t\t\tif(this.isAccountManagerRole(route.url[0]?.path))\n\t\t\t\t\t\t\tthis.triggerErrorService('Permission Required', 401, '000026');\n\t\t\t\t\t\tsubscriber.next(hasAccess);\n\t\t\t\t\t\tsubscriber.complete();\n\t\t\t\t\t},\n\t\t\t\t\terror: (error: HttpErrorResponse) =>\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.redirectOnError(error);\n\t\t\t\t\t\tsubscriber.next(false);\n\t\t\t\t\t\tsubscriber.complete();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\treturn of(false);\n\t}\n\n\tisAccountManagerRole(url: string): boolean\n\t{\n\t\tif(this.sharedService.getRoleId() === accountManagerRoleId)\n\t\t{\n\t\t\tif(url?.includes('adduser'))\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprivate redirectOnError(error: HttpErrorResponse) \n\t{\n\t\tthis.triggerErrorService('Permission Required', 401, error?.error?.id);\n\t}\n\tprivate triggerErrorService(status: string, statusCode: number, id:string) \n\t{ \n\t\tconst image: Image = this.sharedUtilService.setImageBasedOnStatusCode(statusCode);\n\t\tconst roleId = this.sharedService.getRoleId();\n\t\tconst contactMessage: string = (roleId === individualUserRoleId) ? individualUserPermissionMessage :\n\t\t\t(roleId === accountManagerRoleId) ? '' : this.sharedService.updateGetAdminEmail(this.sharedUtilService.getMessage()) + '.';\n\t\tthis.errorService.updateState({ messages: [{ message: status }, { message: contactMessage, cssClass: 'error-contact-section' }], statusCode: statusCode, id: id, image: image });\n\t\tthis.sharedService.navigateMethod(this.router, ApplicationPath.authError);\n\t}\n}\n","/* eslint-disable no-console */\n/* eslint-disable no-comments/disallowComments */\n/**\n * This file contains authentication parameters. Contents of this file\n * is roughly the same across other MSAL.js libraries. These parameters\n * are used to initialize Angular and MSAL Angular configurations in\n * in app.module.ts file.\n */\n\nimport { InjectionToken } from '@angular/core';\nimport {\n\tLogLevel,\n\tConfiguration,\n\tBrowserCacheLocation\n} from '@azure/msal-browser';\nimport { environment } from '../../environments/environment';\nimport { B2CPolicies } from '../../environments/interfaces/environment.interface';\n\nconst isIE =\n\twindow.navigator.userAgent.indexOf('MSIE ') > -1 ||\n\twindow.navigator.userAgent.indexOf('Trident/') > -1;\n\nconst loggerLevel: number = environment.production ? LogLevel.Error : LogLevel.Info;\n/**\n * Enter here the user flows and custom policies for your B2C application,\n * To learn more about user flows, visit https://docs.microsoft.com/en-us/azure/active-directory-b2c/user-flow-overview\n * To learn more about custom policies, visit https://docs.microsoft.com/en-us/azure/active-directory-b2c/custom-policy-overview\n */\nexport const b2cPolicies: B2CPolicies = environment.b2cPolicies;\n\n/**\n * Configuration object to be passed to MSAL instance on creation.\n * For a full list of MSAL.js configuration parameters, visit:\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md\n */\nexport const msalConfig: Configuration = {\n\tauth: {\n\t\tclientId: environment.clientId, // This is the ONLY mandatory field that you need to supply.\n\t\tauthority: b2cPolicies.authorities.signUpSignIn.authority, // Defaults to \"https://login.microsoftonline.com/common\"\n\t\tknownAuthorities: [b2cPolicies.authorityDomain], // Mark your B2C tenant's domain as trusted.\n\t\tredirectUri: '/auth', // Points to window.location.origin. You must register this URI on Azure portal/App Registration.\n\t\tpostLogoutRedirectUri: '/', // Indicates the page to navigate after logout.\n\t\tnavigateToLoginRequestUrl: false // If \"true\", will navigate back to the original request location before processing the auth code response.\n\t},\n\tcache: {\n\t\tcacheLocation: BrowserCacheLocation.LocalStorage, // Configures cache location. \"sessionStorage\" is more secure, but \"localStorage\" gives you SSO between tabs.\n\t\tstoreAuthStateInCookie: isIE // Set this to \"true\" if you are having issues on IE11 or Edge\n\t},\n\tsystem: {\n\t\tloggerOptions: {\n\t\t\tloggerCallback() {},\n\t\t\tlogLevel: loggerLevel,\n\t\t\tpiiLoggingEnabled: false\n\t\t}\n\t}\n};\n\n/**\n * Add here the endpoints and scopes when obtaining an access token for protected web APIs. For more information, see:\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/resources-and-scopes.md\n */\nexport interface ProtectedResources {\n\tendpoint: string;\n\tscopes: Array;\n\n}\nexport const protectedResources: ProtectedResources[] = [\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/user/*`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/v1/user/*`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/role/*`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/equipment/*`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/myfleet/*`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/notification/*`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/auth`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/getEilTruck/*`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/getServiceHistory`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/getFinancials`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/aem/headers`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/aemfleetpage/*`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/aem-user-management/*`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/aem-user-management`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/service-history/*`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/order/*`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/dashboard/*`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/service-management/*`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/account/*`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/tips/*`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/v1/business-account/*`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/v1/aem-business-account`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/v1/equipment/*`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/v2/myquotes/*`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/v1/account-management/*`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/v1/aem-alert-banner`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/v1/aemquotes/quote-content-block`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/v1/aeminsights/insight-content-block`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/myinsights/*`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/domain/*`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/v1/aem-location-access-management`,\n\t\tscopes: [environment.scope.read]\n\t},\n\t{\n\t\tendpoint: `${environment.baseUrl}v0/aem/get-service-history-count`,\n\t\tscopes: [environment.scope.read]\n\t}\n];\n\n/**\n * Scopes you add here will be prompted for user consent during sign-in.\n * By default, MSAL.js will add OIDC scopes (openid, profile, email) to any login request.\n * For more information about OIDC scopes, visit:\n * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#openid-connect-scopes\n */\nexport interface LoginRequest {\n\tscopes: Array;\n}\nexport const loginRequest: LoginRequest = {\n\tscopes: []\n};\n\nexport interface AuthConfigRef {\n\treadonly b2cPolicies: B2CPolicies;\n\treadonly msalConfig: Configuration;\n\treadonly protectedResources: ProtectedResources[];\n\treadonly loginRequest: LoginRequest;\n}\nexport class AuthConfig implements AuthConfigRef\n{\n\tprivate pB2cPolicies: B2CPolicies;\n\tget b2cPolicies(): B2CPolicies\n\t{\n\t\treturn this.pB2cPolicies;\n\t}\n\tprivate pMsalConfig: Configuration;\n\tget msalConfig(): Configuration\n\t{\n\t\treturn this.pMsalConfig;\n\t}\n\tprivate pProtectedResources: ProtectedResources[];\n\tget protectedResources(): ProtectedResources[]\n\t{\n\t\treturn this.pProtectedResources;\n\t}\n\tprivate pLoginRequest: LoginRequest;\n\tget loginRequest(): LoginRequest\n\t{\n\t\treturn this.pLoginRequest;\n\t}\n\n\tconstructor(configRef: AuthConfigRef)\n\t{\n\t\tthis.pB2cPolicies = configRef.b2cPolicies;\n\t\tthis.pMsalConfig = configRef.msalConfig;\n\t\tthis.pProtectedResources = configRef.protectedResources;\n\t\tthis.pLoginRequest = configRef.loginRequest;\n\t}\n}\n\nexport const expAuthConfig = new InjectionToken('AuthConfigRef', {\n\tprovidedIn: 'root',\n\tfactory: () =>\n\t\tnew AuthConfig({\n\t\t\tb2cPolicies,\n\t\t\tmsalConfig,\n\t\t\tprotectedResources,\n\t\t\tloginRequest\n\t\t})\n});\n","import {\n\tAnalyticsEnvironmentConfig,\n\tB2CPolicies,\n\tEnvironmentName,\n\tEnvironmentRef,\n\tScopes\n} from '../../environments/interfaces/environment.interface';\nimport { environment } from '../../environments/environment';\nimport { InjectionToken } from '@angular/core';\nimport { Endpoints } from '../../environments/interfaces/endpoints/endpoints.interface';\n\nexport class Environment implements EnvironmentRef\n{\n\tget production(): boolean\n\t{\n\t\treturn this.envRef.production;\n\t}\n\tget baseUrl(): string\n\t{\n\t\treturn this.envRef.baseUrl;\n\t}\n\tget env(): EnvironmentName\n\t{\n\t\treturn this.envRef.env;\n\t}\n\tget azureMapsApiKey(): string \n\t{\n\t\treturn this.envRef.azureMapsApiKey;\n\t}\n\tget endpoints(): Endpoints\n\t{\n\t\treturn this.envRef.endpoints;\n\t}\n\tget b2cPolicies(): B2CPolicies\n\t{\n\t\treturn this.envRef.b2cPolicies;\n\t}\n\tget clientId(): string\n\t{\n\t\treturn this.envRef.clientId;\n\t}\n\tget scope(): Scopes\n\t{\n\t\treturn this.envRef.scope;\n\t}\n\tget aemBaseUrl(): string\n\t{\n\t\treturn this.envRef.aemBaseUrl;\n\t}\n\tget appWalkmeUrl(): string\n\t{\n\t\treturn this.envRef.appWalkmeUrl;\n\t}\n\tget buyPartsUrl(): string\n\t{\n\t\treturn this.envRef.buyPartsUrl;\n\t}\n\tget requestServiceUrl(): string\n\t{\n\t\treturn this.envRef.requestServiceUrl;\n\t}\n\tget manageFinancingUrl(): string\n\t{\n\t\treturn this.envRef.manageFinancingUrl;\n\t}\n\n\tget analytics(): AnalyticsEnvironmentConfig\n\t{\n\t\treturn this.envRef.analytics;\n\t}\n\n\tget openContactFormUrl(): string\n\t{\n\t\treturn this.envRef.openContactFormUrl;\n\t}\n\n\tget requestServiceEquipmentDetails(): string\n\t{\n\t\treturn this.envRef.requestServiceEquipmentDetails;\n\t}\n\n\tget warrantyPromoBannerUrl(): string\n\t{\n\t\treturn this.envRef.warrantyPromoBannerUrl;\n\t}\n\n\tget buyPartsPromoBannerUrl(): string\n\t{\n\t\treturn this.envRef.buyPartsPromoBannerUrl;\n\t}\n\tget shopDeliveryAddressUrl(): string\n\t{\n\t\treturn this.envRef.shopDeliveryAddressUrl;\n\t}\n\tget zendeskChatbotUrl(): string\n\t{\n\t\treturn this.envRef.zendeskChatbotUrl;\n\t}\n\tconstructor(readonly envRef: EnvironmentRef) {}\n}\n\nexport const expEnvironmentRef = new InjectionToken(\n\t'EnvironmentRef',\n\t{\n\t\tprovidedIn: 'root',\n\t\tfactory: () => new Environment(environment)\n\t}\n);\n","import { ModalState } from 'kinetic-angular';\nimport { LeaveConfirmModalState } from '../services/shared/shared-interface';\n\nexport class ConfirmLeavePageFactory\n{\n\tpublic static buildconfirmLeavePageModalState(): ModalState \n\t{\n\t\treturn {\n\t\t\thidden: true,\n\t\t\tlabel: '',\n\t\t\tbuttons: [\n\t\t\t\t{ label: '', disabled: false, cssClass: 'btn-secondary', iconPath: '' },\n\t\t\t\t{ label: '', disabled: false, cssClass: 'btn-black' }\n\t\t\t],\n\t\t\tcssClass: 'confirmLeavePageModal'\n\t\t};\n\t}\n\n\tpublic static buildConfirmLeavePageAEMLabels(): LeaveConfirmModalState \n\t{\n\t\treturn {\n\t\t\theading: '',\n\t\t\theadingSub: '',\n\t\t\tstay: '',\n\t\t\tleave: '',\n\t\t\tcloseIcon: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t}\n\t\t};\n\t}\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ModalState } from 'kinetic-angular';\nimport { ToastrService } from 'ngx-toastr';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { ApiService } from '../services/api/api.service';\nimport { LoggerService } from '../services/logger/logger.service';\nimport { LeaveConfirmModalState } from '../services/shared/shared-interface';\nimport { ConfirmLeavePageFactory } from './leave-page-confirm-popup-factory';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class ConfirmLeavePageService\n{\n\tprivate readonly modalConfirmation$ = new Subject();\n\tprivate readonly state$: BehaviorSubject = new BehaviorSubject(ConfirmLeavePageFactory.buildConfirmLeavePageAEMLabels());\n\tleaveConfirmModalState: ModalState = ConfirmLeavePageFactory.buildconfirmLeavePageModalState();\n\n\tget state(): LeaveConfirmModalState\n\t{\n\t\treturn this.state$.value;\n\t}\n\n\tget stateChanged(): Observable \n\t{\n\t\treturn this.state$.asObservable();\n\t}\n\n\tconstructor(\n public apiService: ApiService,\n private readonly loggerService: LoggerService,\n private readonly toastr: ToastrService\n\t){}\n\n\tpublic updateState(value: LeaveConfirmModalState): void \n\t{\n\t\tthis.state$.next(value);\n\t}\n\n\tpublic setModalSelectionObservable(confirmLeave: boolean) \n\t{\n\t\tthis.modalConfirmation$.next(confirmLeave);\n\t}\n\n\tpublic getModalSelectionObservable(): Observable \n\t{\n\t\treturn this.modalConfirmation$.asObservable();\n\t}\n\n\tpublic getConfirmLeavePageAemData(): void \n\t{\n\t\tthis.apiService.getConfirmLeavePageLabels().subscribe({\n\t\t\tnext: (res: LeaveConfirmModalState) => \n\t\t\t{\n\t\t\t\tif(res) \n\t\t\t\t{\n\t\t\t\t\tthis.state.heading = res.heading;\n\t\t\t\t\tthis.state.headingSub = res.headingSub;\n\t\t\t\t\tthis.state.leave = res.leave;\n\t\t\t\t\tthis.state.stay = res.stay;\n\t\t\t\t\tthis.state.closeIcon = res.closeIcon;\n\t\t\t\t\tthis.leaveConfirmModalState.label = this.state.heading;\n\t\t\t\t\tthis.leaveConfirmModalState.buttons[0].label = this.state.stay; \n\t\t\t\t\tthis.leaveConfirmModalState.buttons[1].label = this.state.leave;\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: (error: HttpErrorResponse) => \n\t\t\t{\n\t\t\t\tthis.loggerService.log(error.error.message);\n\t\t\t\tthis.toastr.error(error.error.message);\n\t\t\t}\n\t\t});\n\t}\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport{ SafeHtmlPipe } from './safehtml.pipe';\n@NgModule({\n\tdeclarations: [SafeHtmlPipe],\n\timports: [CommonModule],\n\texports: [SafeHtmlPipe]\n})\nexport class SafeHtmlPipeModule\n{\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n\tname: 'safeHtml'\n})\nexport class SafeHtmlPipe implements PipeTransform \n{\n\tconstructor(private readonly sanitized: DomSanitizer) { }\n\ttransform(value: string) \n\t{\n\t\treturn this.sanitized.bypassSecurityTrustHtml(value);\n\t}\n}\n","import { ScriptInjectorService } from './script-injector.service';\nimport { NgModule } from '@angular/core';\nimport { LoggerServiceModule } from '../logger/logger.module';\n\n@NgModule({\n\tdeclarations: [],\n\timports: [LoggerServiceModule],\n\texports: [],\n\tproviders: [\n\t\tScriptInjectorService\n\t]\n})\nexport class ScriptInjectorModule {}\n","import { LocalStorageServiceModule } from './../local-storage/local-storage.module';\nimport { ScriptInjectorModule } from './../script-injector/script-injector.module';\nimport { NgModule } from '@angular/core';\nimport { AnalyticsService } from './analytics.service';\nimport { LoggerServiceModule } from '../logger/logger.module';\n\n@NgModule({\n\tdeclarations: [],\n\timports: [\n\t\tScriptInjectorModule,\n\t\tLoggerServiceModule,\n\t\tLocalStorageServiceModule\n\t],\n\texports: [ ],\n\tproviders: [\n\t\tAnalyticsService\n\t]\n})\nexport class AnalyticsModule {}\n","import { DOCUMENT } from '@angular/common';\nimport { inject, InjectionToken } from '@angular/core';\n\nexport const windowInjectionToken = new InjectionToken(\n\t'An abstraction over global window object',\n\t{\n\t\tfactory: () =>\n\t\t{\n\t\t\tconst { defaultView } = inject(DOCUMENT);\n\n\t\t\tif (!defaultView)\n\t\t\t{\n\t\t\t\tthrow new Error('Window is not available');\n\t\t\t}\n\n\t\t\treturn defaultView;\n\t\t}\n\t}\n);\n","import { EnvironmentRef } from './../../../environments/interfaces/environment.interface';\nimport { expEnvironmentRef } from './../../injection-tokens/environment.injection-token';\nimport { LoggerService } from './../logger/logger.service';\nimport { ScriptInjectorService } from './../script-injector/script-injector.service';\nimport { Inject, Injectable } from '@angular/core';\nimport { windowInjectionToken } from '../../injection-tokens/window.injection-token';\nimport { get as lodashGet, hasIn as lodashHasIn } from 'lodash';\nimport { AnalyticsDataLayer } from './definitions';\nimport { AnalyticsFactory } from './analytics.factory';\nimport { SharedService } from '../shared/shared.service';\nimport { SharedUtilService } from '../shared/shared-util.service';\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class AnalyticsService\n{\n\n\tprivate readonly adobeDataLayerName = 'dl';\n\n\tconstructor(\n\t\t@Inject(windowInjectionToken) private readonly windowRef: Window,\n\t\t@Inject(expEnvironmentRef) private readonly environmentRef: EnvironmentRef,\n\t\tprivate readonly logger: LoggerService,\n\t\tprivate readonly scriptInjectorService: ScriptInjectorService,\n\t\tprivate readonly sharedService: SharedService,\n\t\tprivate readonly sharedUtilService: SharedUtilService\n\t){}\n\n\tpublic initDataLayer(dl: AnalyticsDataLayer = AnalyticsFactory.buildDataLayerInstance()): void\n\t{\n\t\tthis.pushData(dl);\n\t\tthis.logger.log('Initializing Analytics Data Layer', dl);\n\t}\n\tpublic async injectAdobeLaunchScript(): Promise\n\t{\n\t\ttry\n\t\t{\n\t\t\tawait this.scriptInjectorService.load(\n\t\t\t\t'launch',\n\t\t\t\tthis.environmentRef.analytics.scripts.launch.src\n\t\t\t);\n\n\t\t\t(lodashGet(this.windowRef, '_satellite') as unknown as {pageBottom: () => void})\n\t\t\t\t.pageBottom();\n\t\t}\n\t\tcatch (error)\n\t\t{\n\t\t\tthis.logger.error('Error loading Adobe launch script', error);\n\t\t}\n\t}\n\tasync trackByEvent(data: AnalyticsDataLayer)\n\t{\n\t\tawait this.sharedUtilService.isLoggedInUserPresent();\n\t\tthis.pushData({\n\t\t\t...data,\n\t\t\tuser: {\n\t\t\t\temail: this.sharedService.getEmailAddress()\n\t\t\t},\n\t\t\tsite: {\n\t\t\t\tviewport: (lodashGet(this.windowRef, 'visualViewport.width', 0)) > 768 ? 'desktop' : 'mobile',\n\t\t\t\tlanguage: (this.windowRef.document.documentElement.getAttribute('lang') || '').includes('fr') ? 'fr' : 'en'\n\t\t\t}\n\t\t});\n\t}\n\tpublic trackErrorByEvent(errorMessage: string): void\n\t{\n\t\tthis.trackByEvent({\n\t\t\tevent: 'error',\n\t\t\tlink: {\n\t\t\t\tname: 'error'\n\t\t\t},\n\t\t\terror: {\n\t\t\t\tmessage: errorMessage\n\t\t\t}\n\t\t});\n\t}\n\tpublic trackRegistrationByEvent(data: AnalyticsDataLayer, email: string)\n\t{\n\t\tthis.pushData({\n\t\t\t...data,\n\t\t\tuser: {\n\t\t\t\temail: email\n\t\t\t},\n\t\t\tsite: {\n\t\t\t\tviewport: lodashGet(this.windowRef, 'visualViewport.width', 0) > 768 ? 'desktop' : 'mobile',\n\t\t\t\tlanguage: (this.windowRef.document.documentElement.getAttribute('lang') || '').includes('fr') ? 'fr' : 'en'\n\t\t\t}\n\t\t});\n\t}\n\tprivate pushData(data: AnalyticsDataLayer): void\n\t{\n\t\ttry\n\t\t{\n\t\t\tconst dataLayerIsInit: boolean = lodashHasIn(this.windowRef, `${this.adobeDataLayerName}`);\n\t\t\tif (!dataLayerIsInit)\n\t\t\t{\n\t\t\t\tthrow new Error('Data layer not initiated');\n\t\t\t}\n\t\t\tif (data.event === null)\n\t\t\t{\n\t\t\t\tthis.logger.warn('No event provided in data layer. It wont be registered against adobe launch', data);\n\t\t\t}\n\t\t\tif(data.event !== null)\n\t\t\t{\n\t\t\t\tconst adobeAnalyticsDataLayer: {\n [key: string]: string | ((value: { [key: string]: string }) => void);\n push: (value: { [key: string]: string }) => void;\n } = lodashGet(this.windowRef, this.adobeDataLayerName);\n\t\t\t\tadobeAnalyticsDataLayer.push(data as { [key: string]: string } );\n\t\t\t\tthis.logger.log('Analytics object pushed', data);\n\t\t\t}\n\n\t\t}\n\t\tcatch (error)\n\t\t{\n\t\t\tthis.logger.error('Unable to push analytics data', error);\n\t\t}\n\t}\n}\n","import { AnalyticsDataLayer } from './definitions';\n\nexport class AnalyticsFactory\n{\n\tpublic static buildDataLayerInstance(): AnalyticsDataLayer\n\t{\n\t\treturn {\n\t\t\tevent: null\n\t\t};\n\t}\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { Endpoints, EnvironmentRef } from 'projects/tmhna-portal/src/environments/interfaces';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { ApiResponse } from '../../definitions/api-response.interface';\nimport { expEnvironmentRef } from '../../injection-tokens/environment.injection-token';\nimport { jsonPaths, urlPaths } from './api.url';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class AemApiService\n{\n\tpublic endpoints: Endpoints = this.environmentRef.endpoints;\n\n\tconstructor(\n\t\tprivate readonly httpClient: HttpClient,\t\t\n\t\t@Inject(expEnvironmentRef) readonly environmentRef: EnvironmentRef\n\t) { }\n \n\tpublic getHeaderNavValues(isTmhCorporateAdmin: boolean): Observable\n\t{\n\t\tconst path: string = isTmhCorporateAdmin? `${this.endpoints.header.routes.headerendpoints.aembusinessaccountheader}` : `${this.endpoints.header.routes.headerendpoints.aemheaders}`;\n\t\treturn this.httpClient.get(path);\n\t} \n\tpublic getFooterData()\n\t{\n\t\tconst url = this.environmentRef.baseUrl + urlPaths.aemFooterData;\n\t\treturn this.httpClient.get(url);\n\t}\n\tpublic getEquipmentLables()\n\t{\n\t\tconst url: string =\n\t\tthis.environmentRef.baseUrl + urlPaths.equipmentLabels;\n\t\treturn this.httpClient.get(url);\n\t}\n\tpublic getPendingApprovalLabels()\n\t{\n\t\tconst url: string = jsonPaths.pendingApprovalPageLabel;\n\t\treturn this.httpClient.get(url);\n\t}\n\tpublic getBusinessAccountSuccessPopupLabels()\n\t{\n\t\tconst url: string = jsonPaths.businessAccountSuccessRegistrationLabels;\n\t\treturn this.httpClient.get(url);\n\t}\n\tpublic getLandingPageLabels(): Observable \n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.landingPageLabels;\n\t\treturn this.httpClient.get(url);\n\t}\n\tpublic getHeaderAlertBanner(): Observable\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.headerAlertBanner;\n\t\treturn this.httpClient.get(url);\n\t}\n}\n","/* eslint-disable max-lines */\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, lastValueFrom, map, Observable, Subscriber } from 'rxjs';\nimport { expEnvironmentRef } from '../../injection-tokens/environment.injection-token';\nimport { Endpoints, EnvironmentRef } from '../../../environments/interfaces/';\nimport { LoggerService } from '../logger/logger.service';\nimport { Role, RolesPermissionsPayload } from '../../components/roles-permissions';\nimport { AdminCompanyDetails, ApproveBusinessAdminPayload, BusinessAccountRequestLabel, EditAdminCompanyDetailsAemLabels, RejectBusinessAccountPayload } from '../../components/business-account-request';\nimport {\n\tMyFleet,\n\tAddMoveEquipmentLabel,\n\tMyFleetTableSearchFilterPayload,\n\tSearchFilterResponse,\n\tRemoveEquipmentPayload,\n\tMoveTruckPayload,\n\tAddTruckPayload,\n\tChangeRequestListTablePayload,\n\tChangeRequest,\n\tMyFleetWidgetApiPayload,\n\tVerifyTruckPayload,\n\tReportTruckIssue,\n\tAddBulkEquipmentLabel,\n\tBulkEquipmentPayload,\n\tRemoveBulkEquipmentPayload,\n\tFleetFilterResponse\n} from '../../components/myfleet';\nimport { ApiResponse } from '../../definitions/api-response.interface';\nimport {\n\tConnectedDevicePayload,\n\tEquipmentDetailsPayload,\n\tEquipmentImagePayload,\n\tFinanceTabDataPayload,\n\tGtsAddressConversionPayload,\n\tImpactDetectionPayload,\n\tKeyHoursPayload,\n\tMyInsightsTab,\n\tServiceHistoryPayload,\n\tVehicleUtilizationPayload\n} from '../../components/myfleet/sub-modules/equipment-detail';\nimport { KngCardListState, KngCardListFactory } from 'kinetic-angular';\nimport { BusinessRegistrationFlowSubmitModalLabels, RegistrationState, SaveUserPayload, SubmitBusinessPayload } from '../../components/registration';\n\nimport { ApproveUserResponse, ApproveUsersPayload, LatestUserIdPayload, RejectUserResponse, RejectUsersPayload, UserListPayload, UserListStatusPayload } from '../../components/user-management/definitions/user-management.interface';\nimport { AssignUnassignLocationPayload, UpdatePayload, UserDetailState, UserSaveChangesPayload } from '../../components/user-management/sub-modules/user-details/definitions/user-detail.interface';\nimport { OrderDetailsPayload, OrderListPayload, OrderManagementStateLabel, ShippingLocationPayload } from '../../components/order-management/definitions/order-management.interface';\nimport { DashboardLabelState, DashboardPayload, DashboardResponse, DealerSearchPayload } from '../../components/dashboard/definitions/dashboard.interface';\nimport { AccountSettingsStateAemLabel, CompanyLocationPayload, CompanyDetailsPayload, LocationDetailsPayload, ProfileDetailsSavePayload, ValidateRemoveLocPayload, UpdatePrimaryLocationPayload, DomainPayload, UpdateDomainPayload, VerifyDomain } from '../../components/account-settings/definitions/account-settings.interface';\nimport { LocalStorageService } from '../local-storage/local-storage.service';\nimport * as _ from 'lodash';\nimport { EquipmentOrderDetailState } from '../../components/order-management/sub-modules/equipment-order-details/definitions/equipment-order-details.interface';\nimport { DeletePayload, NotificationList, NotificationState, UpdateNotificationList } from '../../components/notifications';\nimport { RemoveEquipmentDetails } from '../../components/myfleet/sub-modules/equipment-detail/definitions/remove-equipment.interface';\nimport { AddNewLocationState, AssignedUserDataPayLoad, AssignUserSearchPayload, AssignUsersPayload, UnAssignUsersPayload } from '../../components/location-management/sub-modules/add-new-location/definitions/add-new-location.interface';\nimport { AddLocationPayload, AssignedLocation, KeyValuePair, LeaveConfirmModalState, LoggedInLocation, UnreadNotificationPayload } from '../shared/shared-interface';\nimport { WidgetPayload } from '../../components/service-management/components/service-management-page/sub-modules/service-management-widgets';\nimport { ServiceOrderDetailsPayload, ServiceOrderDetailState } from '../../components/service-management/components/service-management-page/sub-modules/service-order-detail/definitions/service-order-detail.interface';\nimport { ServiceManagementAEMLabel } from '../../components/service-management/components/service-management-page';\nimport { Locations, ServiceManagementServiceHistoryPayload } from '../../components/service-management/components/service-management-page/sub-modules/service-management-list-table';\nimport { RoutePermissionGroup, RoutePermissions } from '../../guards/permission/definitions';\nimport { urlPaths, jsonPaths } from './api.url';\nimport { DefaultValue, DropDownOption, SortOrder } from '../shared/shared-enums';\nimport { RemoveLocationPayload, RemoveLocationModalsAemLabel, UpdateLocationLabelInterface } from '../../components/account-settings/definitions/remove-locations.interface';\nimport { SubmitTnc, SwitchAccountPayload } from '../../components/shell/shell.interface';\nimport { AddNewUserPayload, AddUserResponse, AddUserState } from '../../components/user-management/sub-modules/add-new-user/add-user/definitions/add-user.interface';\nimport { BillingAddressPayload, DownloadPDFPayload, MyQuotesLabelState, MyQuotesPayload } from '../../components/my-quotes';\nimport { MyInsightsLabelState, MyInsightsListPayload } from '../../components/my-insights';\nimport { InviteUserState } from '../../components/invite-users/definitions/invite-users.interface';\nimport { ImpersonationPayload } from '../../components/customer-support/definition/customer-support.interface';\nimport { LocationAccessPayload } from '../../components/location-management/definitions/location-management.interface';\nimport { ContactUsPayload } from '../../components/contact-us';\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class ApiService\n{\n\tpublic endpoints: Endpoints = this.environmentRef.endpoints;\n\tcardStateMapperObject: KngCardListState = KngCardListFactory.build();\n\tlocation: KeyValuePair = { id: '', key: '', value: '' };\n\tcached: boolean = false;\n\tmyFleetDownloadData: MyFleet[] = [];\n\tisTelematicsStatus: boolean = false;\n\thasFleetData$: BehaviorSubject = new BehaviorSubject(false);\n\tconstructor(\n\t\tprivate readonly httpClient: HttpClient,\n\t\tprivate readonly loggerService: LoggerService,\n\t\tprivate readonly storage: LocalStorageService,\n\t\t@Inject(expEnvironmentRef) readonly environmentRef: EnvironmentRef\n\t) { }\n\n\tpublic getUserRegistrationStatus(): Promise\n\t{\n\t\tconst path: string = `${this.endpoints.auth.routes.auth.validUser}`;\n\t\tconst requestObservable: Observable =\n\t\t\tthis.httpClient.get(path);\n\t\treturn lastValueFrom(requestObservable);\n\t}\n\tpublic getRolesPermissionsData(payload: RolesPermissionsPayload): Observable\n\t{\n\t\tconst path: string = `${this.endpoints.roles.routes.roles.getRoles}`;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\n\tpublic saveCustomRole(role: Role): Observable\n\t{\n\t\tconst path: string = `${this.endpoints.roles.routes.roles.getRoles.addRoles}`;\n\t\treturn this.httpClient.post(path, role);\n\t}\n\tpublic updateCustomRole(role: Role): Observable\n\t{\n\t\tconst path: string = `${this.endpoints.roles.routes.roles.getRoles.update}`;\n\t\treturn this.httpClient.patch(path, role);\n\t}\n\n\tpublic getRemoveRoleState(id: string): Observable\n\t{\n\t\tconst path: string =\n\t\t\t`${this.endpoints.roles.routes.roles.getRoles.getRemoveRoleState}/` + id;\n\t\treturn this.httpClient.get(path);\n\t}\n\n\tpublic removeRole(id: string): Observable\n\t{\n\t\tconst path: string =\n\t\t\t`${this.endpoints.roles.routes.roles.getRoles.delete}` + id;\n\t\treturn this.httpClient.delete(path);\n\t}\n\n\tpublic removeNotification( payload: DeletePayload): Observable\n\t{\n\t\tconst path: string = this.environmentRef.baseUrl + `${urlPaths.deleteNotification}`;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\n\tpublic downloadInvoicePdf(payload:unknown)\n\t{\n\t\tpayload = {\n\t\t\tinvoiceNumber: payload,\n\t\t\tformat: 'pdf'\n\t\t};\n\t\tconst path: string = this.environmentRef.baseUrl + `${urlPaths.downloadInvoicePdf}`;\n\t\treturn this.httpClient.post(path, payload );\n\t}\n\n\tpublic getAverageAgeCardData(payload: MyFleetWidgetApiPayload): Observable\n\t{\n\t\tconst url = this.endpoints.auth.baseUrl + urlPaths.averageAgeOfEquipment;\n\t\tconst headers = { 'content-type': 'application/json' };\n\t\treturn this.httpClient.post(url, payload, {\n\t\t\theaders: headers\n\t\t});\n\t}\n\n\tpublic getCountFinancedCardData(payload: MyFleetWidgetApiPayload): Observable\n\t{\n\t\tconst url = this.endpoints.auth.baseUrl + urlPaths.countFinancedData;\n\t\tconst headers = { 'content-type': 'application/json' };\n\n\t\treturn this.httpClient.post(url, payload, {\n\t\t\theaders: headers\n\t\t});\n\t}\n\n\tpublic getNumberOfUnitsData(payload: unknown): Observable\n\t{\n\t\tconst url = this.endpoints.auth.baseUrl + urlPaths.numberOfUnits;\n\t\tconst headers = { 'content-type': 'application/json' };\n\t\treturn this.httpClient.post(url, payload, {\n\t\t\theaders: headers\n\t\t});\n\t}\n\tapplySearchOrFilter(\n\t\tpayload: MyFleetTableSearchFilterPayload\n\t): Observable\n\t{\n\t\tconst path: string = this.environmentRef.baseUrl + urlPaths.myfleetSearch;\n\t\tconst key: string = btoa(JSON.stringify({ url: path }));\n\t\treturn new Observable((subscriber: Subscriber) =>\n\t\t{\n\t\t\tthis.storage.getCachedItem(key).then(cachedItem =>\n\t\t\t{\n\t\t\t\tif (cachedItem !== null)\n\t\t\t\t{\n\t\t\t\t\tthis.applySearchOrFilterFromCachedData(cachedItem, payload, subscriber);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.applySearchOrFilterOnLoad(payload, path, key, subscriber);\n\t\t\t\t}\n\t\t\t})\n\t\t\t .catch(error =>\n\t\t\t {\n\t\t\t\t this.loggerService.error(error);\n\t\t\t });\n\t\t});\n\t}\n\tapplySearchOrFilterFromCachedData(cachedItem: ApiResponse | null, payload: MyFleetTableSearchFilterPayload, subscriber: Subscriber)\n\t{\n\t\tif(cachedItem)\n\t\t{\n\t\t\tthis.cached = true;\n\t\t\tlet updateCache = false;\n\t\t\tconst itemClone: ApiResponse = _.cloneDeep(cachedItem);\n\t\t\tconst responseData: SearchFilterResponse = itemClone.data as SearchFilterResponse;\n\t\t\tresponseData.pageInfo.pageSize = payload.limit;\n\t\t\tresponseData.fleetData.forEach((data: MyFleet) =>\n\t\t\t{\n\t\t\t\tObject.keys(data).forEach(key =>\n\t\t\t\t{\n\t\t\t\t\tif(key === 'telematicsStatus')\n\t\t\t\t\t{\n\t\t\t\t\t\tif(data[key as keyof typeof data] !== null || data[key as keyof typeof data] === '')\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.isTelematicsStatus = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (payload.locationLabelUpdate?.label)\n\t\t\t\t{\n\t\t\t\t\tif (data['locationId' as keyof typeof data] === payload.locationLabelUpdate.locationId)\n\t\t\t\t\t{\n\t\t\t\t\t\tdata['locationLabel' as keyof typeof data] = payload.locationLabelUpdate.label;\n\t\t\t\t\t\tupdateCache = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.checkForFleetData(responseData.fleetData);\n\t\t\tresponseData.fleetData = this.filterDropdown(payload.filterType, responseData);\n\t\t\tresponseData.fleetData = responseData.fleetData\n\t\t\t\t.filter(item => this.myFleetApplySearchOrFilterPredicate(item, payload));\n\t\t\tresponseData.pageInfo.totalCount = responseData.fleetData.length;\n\t\t\tresponseData.fleetData = this.myFleetApplySorting(responseData.fleetData, payload);\n\t\t\tthis.myFleetDownloadData = responseData.fleetData;\n\t\t\tresponseData.fleetData = responseData.fleetData\n\t\t\t\t.slice((payload.skip * payload.limit), ((payload.skip * payload.limit) + payload.limit));\n\t\t\titemClone.data = responseData;\n\t\t\tif (updateCache)\n\t\t\t{\n\t\t\t\tconst path: string = this.environmentRef.baseUrl + urlPaths.myfleetSearch;\n\t\t\t\tconst key: string = btoa(JSON.stringify({ url: path }));\n\t\t\t\tthis.storage.setCached(key, _.cloneDeep(itemClone)).catch(error =>\n\t\t\t\t{\n\t\t\t\t\tthis.loggerService.error(error);\n\t\t\t\t});\n\t\t\t}\n\t\t\tsubscriber.next(itemClone);\n\t\t\tsubscriber.complete();\n\t\t}\n\t}\n\n\tcheckForFleetData(data: MyFleet[])\n\t{\n\t\tconst hasFleetEquipment = data.some(item=>_.get(item, 'managedBy', '') === DropDownOption.fleet);\n\t\tif(hasFleetEquipment) \n\t\t{\n\t\t\tthis.hasFleetData$.next(true);\n\t\t}\t\n\t}\n\tfilterDropdown(selectedFilter: string | undefined, responseData: SearchFilterResponse)\n\t{\t\n\t\tlet filteredresponse: MyFleet[] = [];\n\t\tif(!selectedFilter || selectedFilter === DropDownOption.all)\n\t\t{\n\t\t\tfilteredresponse = responseData.fleetData;\n\t\t}\n\t\telse if(selectedFilter===DropDownOption.fleet)\n\t\t{\n\t\t\tfilteredresponse = responseData.fleetData.filter((item) => \n\t\t\t{\n\t\t\t\treturn _.get(item, 'managedBy', '') === DropDownOption.fleet;\n\t\t\t});\n\t\t}\n\t\telse if(selectedFilter=== DropDownOption.self)\n\t\t{\n\t\t\tfilteredresponse = responseData.fleetData.filter((item) => \n\t\t\t{\n\t\t\t\treturn _.get(item, 'managedBy', '') === DropDownOption.customer;\n\t\t\t});\n\t\t}\n\t\treturn filteredresponse;\n\t}\n\tapplySearchOrFilterOnLoad(payload: MyFleetTableSearchFilterPayload, path: string, key: string, subscriber: Subscriber)\n\t{\n\t\tthis.cardStateMapperObject.loading = true;\n\t\tconst updatedPayload: MyFleetTableSearchFilterPayload = _.cloneDeep(payload);\n\t\tupdatedPayload.limit = 999999999;\n\t\tupdatedPayload.skip = DefaultValue.skip;\n\t\tconst initialSortpayload: MyFleetTableSearchFilterPayload = _.cloneDeep(payload);\n\t\tinitialSortpayload.sort = {\n\t\t\tfield: 'dateOfFirstUse',\n\t\t\torder: SortOrder.desc\n\t\t};\n\t\tdelete updatedPayload.sort;\n\t\tdelete updatedPayload.assignedLocation;\n\t\tdelete updatedPayload.equipmentType;\n\t\tdelete updatedPayload.startDate;\n\t\tdelete updatedPayload.endDate;\n\t\tdelete updatedPayload.filterType;\n\t\tupdatedPayload.search = '';\n\t\tthis.httpClient.post(path, updatedPayload)\n\t\t\t.subscribe({\n\t\t\t\tnext: value =>\n\t\t\t\t{\n\t\t\t\t\tconst responseData: SearchFilterResponse = value.data as SearchFilterResponse;\n\t\t\t\t\tresponseData.pageInfo.pageSize = payload.limit;\n\t\t\t\t\tresponseData.fleetData.forEach((data: MyFleet) =>\n\t\t\t\t\t{\n\t\t\t\t\t\tObject.keys(data).forEach(key =>\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif(key === 'telematicsStatus')\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif(data[key as keyof typeof data] !== null || data[key as keyof typeof data] === '')\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tthis.isTelematicsStatus = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdata[key as keyof typeof data] = data[key as keyof typeof data] === null ? '' : data[key as keyof typeof data];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\tresponseData.fleetData = this.myFleetApplySorting(responseData.fleetData, initialSortpayload);\n\t\t\t\t\tthis.myFleetDownloadData = responseData.fleetData;\n\t\t\t\t\tthis.checkForFleetData(responseData.fleetData);\n\t\t\t\t\tresponseData.fleetData = this.filterDropdown(payload.filterType, responseData);\n\t\t\t\t\tconst responseUploadData: FleetFilterResponse = responseData as FleetFilterResponse;\n\t\t\t\t\tresponseUploadData.fleetData = responseUploadData.fleetData.filter((el) => (el['changeRequest'])?.display !== 'hide');\n\t\t\t\t\tvalue.data = responseUploadData;\n\t\t\t\t\tthis.storage.setCached(key, _.cloneDeep(value)).catch(error =>\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.loggerService.error(error);\n\t\t\t\t\t\tthis.cached = false;\n\t\t\t\t\t});\n\t\t\t\t\tthis.cached = true;\n\t\t\t\t\tresponseData.fleetData = responseData.fleetData.filter(item => this.myFleetApplySearchOrFilterPredicate(item, payload));\n\t\t\t\t\tresponseData.pageInfo.totalCount = responseData.fleetData.length;\n\t\t\t\t\tresponseData.fleetData = this.myFleetApplySorting(responseData.fleetData, payload);\n\t\t\t\t\tresponseData.fleetData = responseData.fleetData\n\t\t\t\t\t\t.slice((payload.skip * payload.limit), ((payload.skip * payload.limit) + payload.limit));\n\t\t\t\t\tvalue.data = responseData;\n\t\t\t\t\tsubscriber.next(value);\n\t\t\t\t\tsubscriber.complete();\n\t\t\t\t},\n\t\t\t\terror: value => subscriber.error(value)\n\t\t\t});\n\n\t}\n\n\tpublic updateMyFleetLocationData(payload: UpdateLocationLabelInterface)\n\t{\n\t\tconst path: string = this.environmentRef.baseUrl + urlPaths.myfleetSearch;\n\t\tconst key: string = btoa(JSON.stringify({ url: path }));\n\t\tthis.storage.getCachedItem(key).then(cachedItem =>\n\t\t{\n\t\t\tif (cachedItem)\n\t\t\t{\n\t\t\t\tconst itemClone: ApiResponse = _.cloneDeep(cachedItem);\n\t\t\t\tconst responseData: SearchFilterResponse = itemClone.data as SearchFilterResponse;\n\t\t\t\tresponseData.fleetData.forEach((data: MyFleet) =>\n\t\t\t\t{\n\t\t\t\t\tif (data['locationId' as keyof typeof data] === payload.locationId)\n\t\t\t\t\t{\n\t\t\t\t\t\tdata['locationLabel' as keyof typeof data] = payload.label;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\titemClone.data = responseData;\n\t\t\t\tthis.storage.setCached(key, _.cloneDeep(itemClone)).catch(error =>\n\t\t\t\t{\n\t\t\t\t\tthis.loggerService.error(error);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic updateLocationLabelInStorage(payload: UpdateLocationLabelInterface)\n\t{\n\t\tconst locations = this.storage.getLoggedInUserLocation();\n\t\tif (locations)\n\t\t{\n\t\t\tconst parsedLocations = JSON.parse(locations);\n\t\t\tparsedLocations.locations.forEach(\n\t\t\t\t(location: LoggedInLocation) =>\n\t\t\t\t{\n\t\t\t\t\tif(location.locationId === payload.locationId)\n\t\t\t\t\t{\n\t\t\t\t\t\tlocation.locationLabel = payload.label;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t\tthis.storage.setLoggedInUserLocation(this.storage.striginifyJSON(parsedLocations));\n\t\t}\n\t}\n\n\tprivate myFleetApplySorting(items: MyFleet[], payload: MyFleetTableSearchFilterPayload): MyFleet[]\n\t{\n\t\tconst field: string = payload.sort?.field ? payload.sort?.field : '';\n\t\tconst sortOrder: string = payload.sort?.order ? payload.sort?.order : '';\n\t\tconst sortField: string = this.checkForSortFieldNames(field);\n\n\t\tlet sortedArray: MyFleet[] = [];\n\t\tsortedArray = sortOrder === 'asc' ? _.orderBy(items, [sortField], ['asc']) : _.orderBy(items, [sortField], ['desc']);\n\t\treturn sortedArray;\n\t}\n\n\tprivate checkForSortFieldNames(field: string): string\n\t{\n\t\tconst sortField: string = field === 'equipmentVIN' ? 'equipmentVin' : this.assignedLocationFieldCheck(field);\n\t\treturn sortField;\n\t}\n\n\tprivate assignedLocationFieldCheck(field: string): string\n\t{\n\t\treturn (field === 'assignedLocation' ? 'assignedLocation' : field);\n\t}\n\n\tpublic myFleetApplySearchOrFilterPredicate(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tif (this.checkEqpTypeFilter(item, payload) && !this.checkAssignedLocFilter(item, payload) && !this.checkDateFilter(item, payload) && !this.checkTelematicsStatusFilter(item, payload))\n\t\t{\n\t\t\treturn this.checkForSearchWithEqp(item, payload);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.checkForSearch2(item, payload);\n\t\t}\n\t}\n\tpublic checkForSearch2(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tif (this.checkAssignedLocFilter(item, payload) && !this.checkEqpTypeFilter(item, payload) && !this.checkDateFilter(item, payload) && !this.checkTelematicsStatusFilter(item, payload))\n\t\t{\n\t\t\treturn this.checkForSearchWithLoc(item, payload);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.checkForSearch3(item, payload);\n\t\t}\n\t}\n\tpublic checkForSearch3(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tif (this.checkDateFilter(item, payload) && !this.checkEqpTypeFilter(item, payload) && !this.checkAssignedLocFilter(item, payload) && !this.checkTelematicsStatusFilter(item, payload))\n\t\t{\n\t\t\treturn this.checkForSearchWithDate(item, payload);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.checkForSearch4(item, payload);\n\t\t}\n\t}\n\tpublic checkForSearch4(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tif (this.checkTelematicsStatusFilter(item, payload) && !this.checkEqpTypeFilter(item, payload) && !this.checkAssignedLocFilter(item, payload) && !this.checkDateFilter(item, payload))\n\t\t{\n\t\t\treturn this.checkForSearchWithTelematics(item, payload);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.checkForSearch5(item, payload);\n\t\t}\n\t}\n\n\tpublic checkForSearch5(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tif (this.checkEqpTypeFilter(item, payload) && this.checkAssignedLocFilter(item, payload) && !this.checkDateFilter(item, payload) && !this.checkTelematicsStatusFilter(item, payload))\n\t\t{\n\t\t\treturn this.checkForSearchWithEqpLoc(item, payload);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.checkForSearch6(item, payload);\n\t\t}\n\t}\n\tpublic checkForSearch6(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tif (this.checkEqpTypeFilter(item, payload) && !this.checkAssignedLocFilter(item, payload) && this.checkDateFilter(item, payload) && !this.checkTelematicsStatusFilter(item, payload))\n\t\t{\n\t\t\treturn this.checkForSearchWithEqpDate(item, payload);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.checkForSearch7(item, payload);\n\t\t}\n\t}\n\tpublic checkForSearch7(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tif (this.checkEqpTypeFilter(item, payload) && !this.checkAssignedLocFilter(item, payload) && !this.checkDateFilter(item, payload) && this.checkTelematicsStatusFilter(item, payload))\n\t\t{\n\t\t\treturn this.checkForSearchWithEqpTel(item, payload);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.checkForSearch8(item, payload);\n\t\t}\n\t}\n\n\tpublic checkForSearch8(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tif (this.checkEqpTypeFilter(item, payload) && this.checkAssignedLocFilter(item, payload) && this.checkDateFilter(item, payload) && !this.checkTelematicsStatusFilter(item, payload))\n\t\t{\n\t\t\treturn this.checkForSearchWithEqpLocDate(item, payload);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.checkForSearch9(item, payload);\n\t\t}\n\t}\n\tpublic checkForSearch9(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tif (this.checkEqpTypeFilter(item, payload) && !this.checkAssignedLocFilter(item, payload) && this.checkDateFilter(item, payload) && this.checkTelematicsStatusFilter(item, payload))\n\t\t{\n\t\t\treturn this.checkForSearchWithEqpDateTel(item, payload);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.checkForSearch10(item, payload);\n\t\t}\n\t}\n\tpublic checkForSearch10(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tif (this.checkEqpTypeFilter(item, payload) && this.checkAssignedLocFilter(item, payload) && !this.checkDateFilter(item, payload) && this.checkTelematicsStatusFilter(item, payload))\n\t\t{\n\t\t\treturn this.checkForSearchWithEqpLocTel(item, payload);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.checkForSearch11(item, payload);\n\t\t}\n\t}\n\n\tpublic checkForSearch11(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tif (!this.checkEqpTypeFilter(item, payload) && this.checkAssignedLocFilter(item, payload) && this.checkDateFilter(item, payload) && !this.checkTelematicsStatusFilter(item, payload))\n\t\t{\n\t\t\treturn this.checkForSearchWithLocDate(item, payload);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.checkForSearch12(item, payload);\n\t\t}\n\t}\n\tpublic checkForSearch12(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tif (!this.checkEqpTypeFilter(item, payload) && this.checkAssignedLocFilter(item, payload) && this.checkDateFilter(item, payload) && this.checkTelematicsStatusFilter(item, payload))\n\t\t{\n\t\t\treturn this.checkForSearchWithLocDateTel(item, payload);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.checkForSearch13(item, payload);\n\t\t}\n\t}\n\tpublic checkForSearch13(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tif (!this.checkEqpTypeFilter(item, payload) && this.checkAssignedLocFilter(item, payload) && !this.checkDateFilter(item, payload) && this.checkTelematicsStatusFilter(item, payload))\n\t\t{\n\t\t\treturn this.checkForSearchWithLocTel(item, payload);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.checkForSearch14(item, payload);\n\t\t}\n\t}\n\tpublic checkForSearch14(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tif (!this.checkEqpTypeFilter(item, payload) && !this.checkAssignedLocFilter(item, payload) && this.checkDateFilter(item, payload) && this.checkTelematicsStatusFilter(item, payload))\n\t\t{\n\t\t\treturn this.checkForSearchWithDateTel(item, payload);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.checkForSearch15(item, payload);\n\t\t}\n\t}\n\n\tpublic checkForSearch15(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tif (this.checkEqpTypeFilter(item, payload) && this.checkAssignedLocFilter(item, payload) && this.checkDateFilter(item, payload) && this.checkTelematicsStatusFilter(item, payload))\n\t\t{\n\t\t\treturn this.checkForSearchWithEqpLocDateTel(item, payload);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.checkAllSearchParameters(item, payload);\n\t\t}\n\t}\n\n\tpublic checkEqpTypeFilter(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\treturn (_.has(item, 'equipmentType') && _.get(payload, 'equipmentType', []).length > 0);\n\t}\n\tpublic checkTelematicsStatusFilter(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\treturn (_.has(item, 'telematicsStatus') && _.has(payload, 'telematicStatus'));\n\t}\n\tpublic checkAssignedLocFilter(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\treturn (_.has(item, 'locationId') && _.get(payload, 'assignedLocation', []).length > 0);\n\t}\n\tpublic checkDateFilter(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\treturn (_.has(item, 'dateOfFirstUse') && (_.has(payload, 'startDate') || _.has(payload, 'endDate')));\n\t}\n\n\tpublic checkAllSearchParameters(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\treturn (_.get(item, 'equipmentVin') || '').toLowerCase().includes(_.get(payload, 'search', '').toLowerCase()) || (_.get(item, 'modelID') || '').toLowerCase().includes(_.get(payload, 'search', '').toLowerCase()) || (_.get(item, 'assetNumber') || '').toLowerCase().includes(_.get(payload, 'search', '').toLowerCase());\n\t}\n\n\tpublic getpayloadEquipment(payload: MyFleetTableSearchFilterPayload)\n\t{\n\t\treturn _.get(payload, 'equipmentType', ['']).map(elem=>elem.toLowerCase());\n\t}\n\tpublic getdataEquipment(item: MyFleet)\n\t{\n\t\treturn (_.get(item, 'equipmentType') || '').toLowerCase();\n\t}\n\tpublic getpayloadTelematics(payload: MyFleetTableSearchFilterPayload)\n\t{\n\t\treturn _.get(payload, 'telematicStatus') ?? '';\n\t}\n\tpublic getdataTelematics(item: MyFleet)\n\t{\n\t\treturn (_.get(item, 'telematicsStatus') || '').toLowerCase();\n\t}\n\tpublic getpayloadAssignedLocation(payload: MyFleetTableSearchFilterPayload)\n\t{\n\t\treturn _.get(payload, 'assignedLocation', ['']);\n\t}\n\tpublic getdataAssignedLocation(item: MyFleet)\n\t{\n\t\treturn (_.get(item, 'locationId') || '');\n\t}\n\n\tpublic getpayloadStartDate(payload: MyFleetTableSearchFilterPayload)\n\t{\n\t\treturn new Date(_.get(payload, 'startDate', ''));\n\t}\n\tpublic getpayloadEndDate(payload: MyFleetTableSearchFilterPayload)\n\t{\n\t\treturn new Date(_.get(payload, 'endDate', ''));\n\t}\n\tpublic getdataDateFirstUse(item: MyFleet)\n\t{\n\t\treturn new Date((_.get(item, 'dateOfFirstUse') || ''));\n\t}\n\n\tpublic checkForSearchWithEqp(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tconst payloadArrayEq = this.getpayloadEquipment(payload);\n\t\tconst datArrayEq = this.getdataEquipment(item);\n\t\treturn this.checkAllSearchParameters(item, payload) && payloadArrayEq.includes(datArrayEq);\n\t}\n\tpublic checkForSearchWithLoc(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tconst payloadArrayLoc = this.getpayloadAssignedLocation(payload);\n\t\tconst datArrayLoc = this.getdataAssignedLocation(item);\n\t\treturn this.checkAllSearchParameters(item, payload) && payloadArrayLoc.includes(datArrayLoc);\n\t}\n\tpublic checkForSearchWithTelematics(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tconst payloadArrayTel = this.getpayloadTelematics(payload);\n\t\tconst datArrayTel = this.getdataTelematics(item);\n\t\treturn this.checkAllSearchParameters(item, payload) && (payloadArrayTel === datArrayTel);\n\t}\n\tpublic checkForSearchWithDate(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tconst payloadStartDate = this.getpayloadStartDate(payload);\n\t\tconst payloadEndDate = this.getpayloadEndDate(payload);\n\t\tconst datArray = this.getdataDateFirstUse(item);\n\t\treturn this.checkAllSearchParameters(item, payload) && (datArray.getTime() <= payloadEndDate.getTime() && datArray.getTime() >= payloadStartDate.getTime());\n\t}\n\n\tpublic checkForSearchWithEqpLoc(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tconst payloadArrayEq = this.getpayloadEquipment(payload);\n\t\tconst datArrayEq = this.getdataEquipment(item);\n\t\tconst payloadArrayLoc = this.getpayloadAssignedLocation(payload);\n\t\tconst datArrayLoc = this.getdataAssignedLocation(item);\n\t\treturn this.checkAllSearchParameters(item, payload) && payloadArrayEq.includes(datArrayEq) && payloadArrayLoc.includes(datArrayLoc);\n\t}\n\tpublic checkForSearchWithEqpDate(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tconst payloadArrayEq = this.getpayloadEquipment(payload);\n\t\tconst datArrayEq = this.getdataEquipment(item);\n\t\tconst payloadStartDate = this.getpayloadStartDate(payload);\n\t\tconst payloadEndDate = this.getpayloadEndDate(payload);\n\t\tconst datArray = this.getdataDateFirstUse(item);\n\t\treturn this.checkAllSearchParameters(item, payload) && payloadArrayEq.includes(datArrayEq) && (datArray.getTime() <= payloadEndDate.getTime() && datArray.getTime() >= payloadStartDate.getTime());\n\n\t}\n\tpublic checkForSearchWithEqpTel(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tconst payloadArrayEq = this.getpayloadEquipment(payload);\n\t\tconst datArrayEq = this.getdataEquipment(item);\n\t\tconst payloadArrayTel = this.getpayloadTelematics(payload);\n\t\tconst datArrayTel = this.getdataTelematics(item);\n\t\treturn this.checkAllSearchParameters(item, payload) && payloadArrayEq.includes(datArrayEq) && (payloadArrayTel === datArrayTel);\n\n\t}\n\tpublic checkForSearchWithLocDate(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tconst payloadArrayLoc = this.getpayloadAssignedLocation(payload);\n\t\tconst datArrayLoc = this.getdataAssignedLocation(item);\n\t\tconst payloadStartDate = this.getpayloadStartDate(payload);\n\t\tconst payloadEndDate = this.getpayloadEndDate(payload);\n\t\tconst datArray = this.getdataDateFirstUse(item);\n\t\treturn this.checkAllSearchParameters(item, payload) && payloadArrayLoc.includes(datArrayLoc) && (datArray.getTime() <= payloadEndDate.getTime() && datArray.getTime() >= payloadStartDate.getTime());\n\t}\n\tpublic checkForSearchWithLocDateTel(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tconst payloadArrayLoc = this.getpayloadAssignedLocation(payload);\n\t\tconst datArrayLoc = this.getdataAssignedLocation(item);\n\t\tconst payloadArrayTel = this.getpayloadTelematics(payload);\n\t\tconst datArrayTel = this.getdataTelematics(item);\n\t\tconst payloadStartDate = this.getpayloadStartDate(payload);\n\t\tconst payloadEndDate = this.getpayloadEndDate(payload);\n\t\tconst datArray = this.getdataDateFirstUse(item);\n\t\treturn this.checkAllSearchParameters(item, payload) && (payloadArrayTel === datArrayTel) && payloadArrayLoc.includes(datArrayLoc) && (datArray.getTime() <= payloadEndDate.getTime() && datArray.getTime() >= payloadStartDate.getTime());\n\t}\n\tpublic checkForSearchWithDateTel(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tconst payloadArrayTel = this.getpayloadTelematics(payload);\n\t\tconst datArrayTel = this.getdataTelematics(item);\n\t\tconst payloadStartDate = this.getpayloadStartDate(payload);\n\t\tconst payloadEndDate = this.getpayloadEndDate(payload);\n\t\tconst datArray = this.getdataDateFirstUse(item);\n\t\treturn this.checkAllSearchParameters(item, payload) && (payloadArrayTel === datArrayTel) && (datArray.getTime() <= payloadEndDate.getTime() && datArray.getTime() >= payloadStartDate.getTime());\n\t}\n\tpublic checkForSearchWithLocTel(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tconst payloadArrayLoc = this.getpayloadAssignedLocation(payload);\n\t\tconst datArrayLoc = this.getdataAssignedLocation(item);\n\t\tconst payloadArrayTel = this.getpayloadTelematics(payload);\n\t\tconst datArrayTel = this.getdataTelematics(item);\n\t\treturn this.checkAllSearchParameters(item, payload) && (payloadArrayTel === datArrayTel) && payloadArrayLoc.includes(datArrayLoc);\n\t}\n\n\tpublic checkForSearchWithEqpLocDate(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tconst payloadArrayEq = this.getpayloadEquipment(payload);\n\t\tconst datArrayEq = this.getdataEquipment(item);\n\t\tconst payloadArrayLoc = this.getpayloadAssignedLocation(payload);\n\t\tconst datArrayLoc = this.getdataAssignedLocation(item);\n\t\tconst payloadStartDate = this.getpayloadStartDate(payload);\n\t\tconst payloadEndDate = this.getpayloadEndDate(payload);\n\t\tconst datArray = this.getdataDateFirstUse(item);\n\t\treturn this.checkAllSearchParameters(item, payload) && payloadArrayEq.includes(datArrayEq) && payloadArrayLoc.includes(datArrayLoc) && (datArray.getTime() <= payloadEndDate.getTime() && datArray.getTime() >= payloadStartDate.getTime());\n\t}\n\tpublic checkForSearchWithEqpLocTel(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tconst payloadArrayEq = this.getpayloadEquipment(payload);\n\t\tconst datArrayEq = this.getdataEquipment(item);\n\t\tconst payloadArrayTel = this.getpayloadTelematics(payload);\n\t\tconst datArrayTel = this.getdataTelematics(item);\n\t\tconst payloadArrayLoc = this.getpayloadAssignedLocation(payload);\n\t\tconst datArrayLoc = this.getdataAssignedLocation(item);\n\t\treturn this.checkAllSearchParameters(item, payload) && payloadArrayEq.includes(datArrayEq) && payloadArrayLoc.includes(datArrayLoc) && (payloadArrayTel === datArrayTel);\n\t}\n\tpublic checkForSearchWithEqpDateTel(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tconst payloadArrayEq = this.getpayloadEquipment(payload);\n\t\tconst datArrayEq = this.getdataEquipment(item);\n\t\tconst payloadArrayTel = this.getpayloadTelematics(payload);\n\t\tconst datArrayTel = this.getdataTelematics(item);\n\t\tconst payloadStartDate = this.getpayloadStartDate(payload);\n\t\tconst payloadEndDate = this.getpayloadEndDate(payload);\n\t\tconst datArray = this.getdataDateFirstUse(item);\n\t\treturn this.checkAllSearchParameters(item, payload) && payloadArrayEq.includes(datArrayEq) && (payloadArrayTel === datArrayTel) && (datArray.getTime() <= payloadEndDate.getTime() && datArray.getTime() >= payloadStartDate.getTime());\n\t}\n\n\tpublic checkForSearchWithEqpLocDateTel(item: MyFleet, payload: MyFleetTableSearchFilterPayload): boolean\n\t{\n\t\tconst payloadArrayEq = this.getpayloadEquipment(payload);\n\t\tconst datArrayEq = this.getdataEquipment(item);\n\t\tconst payloadArrayTel = this.getpayloadTelematics(payload);\n\t\tconst datArrayTel = this.getdataTelematics(item);\n\t\tconst payloadArrayLoc = this.getpayloadAssignedLocation(payload);\n\t\tconst datArrayLoc = this.getdataAssignedLocation(item);\n\t\tconst payloadStartDate = this.getpayloadStartDate(payload);\n\t\tconst payloadEndDate = this.getpayloadEndDate(payload);\n\t\tconst datArray = this.getdataDateFirstUse(item);\n\t\treturn this.checkAllSearchParameters(item, payload) && payloadArrayEq.includes(datArrayEq) && (payloadArrayTel === datArrayTel) && payloadArrayLoc.includes(datArrayLoc) && (datArray.getTime() <= payloadEndDate.getTime() && datArray.getTime() >= payloadStartDate.getTime());\n\t}\n\n\tdownloadSearchOrFilter(payload: MyFleetTableSearchFilterPayload)\n\t{\n\t\tconst path: string =\n\t\t\tthis.environmentRef.baseUrl + urlPaths.myfleetDownload;\n\t\treturn this.httpClient.post(path, payload, {\n\t\t\tresponseType: 'blob'\n\t\t});\n\t}\n\n\tpublic getEquipmentTypeFilterValues(locationIds: string[]): Observable\n\t{\n\t\tconst path = this.environmentRef.baseUrl + urlPaths.equipmentTypes;\n\t\tconst payload = { locationIDs: locationIds };\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\tpublic getRepairTypeFilterValues()\n\t{\n\t\tconst path = this.environmentRef.baseUrl + urlPaths.repairTypeData;\n\t\tconst payload = { equipmentID: '' };\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\n\tpublic getMyFleetAemLabels(): Observable\n\t{\n\t\tconst url = `${this.endpoints.myfleetlabels.routes.myfleet.myfleetlabels}`;\n\t\treturn this.httpClient.get(url);\n\t}\n\n\tpublic getRemoveEquipmentAemLabels(): Observable\n\t{\n\t\tconst path: string = jsonPaths.removeEquipmentAemLabels;\n\t\treturn this.httpClient.get(path);\n\t}\n\n\tpublic removeEquipment(payload: RemoveEquipmentPayload): Observable\n\t{\n\t\tconst path: string = this.environmentRef.baseUrl + urlPaths.removeEquipment;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\n\tpublic getConfirmLeavePageLabels(): Observable\n\t{\n\t\tconst path: string = jsonPaths.confirmLeavePageLabels;\n\t\treturn this.httpClient.get(path);\n\t}\n\n\tpublic getEquipmentData(\n\t\tpayload: EquipmentDetailsPayload, equipmentVIN: string\n\t): Observable\n\t{\n\t\tconst url: string =\n\t\t\tthis.environmentRef.baseUrl + urlPaths.equipmentData + equipmentVIN;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\n\tpublic getEquipmentImage(payload: EquipmentImagePayload): Observable\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.equipmentImage ;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\n\tpublic getEquipmentFinanceData(payload: FinanceTabDataPayload, equipmentVIN: string): Observable\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.equipmentFinanceData + equipmentVIN;;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\n\tpublic getEquipmentServiceHistoryData(\n\t\tpayload: ServiceHistoryPayload\n\t): Observable\n\t{\n\t\tconst url: string =\n\t\t\tthis.environmentRef.baseUrl + urlPaths.serviceHistoryTable;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\n\tpublic getUserManagementRolesStatus()\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.userManagementRolesStatus;\n\t\treturn this.httpClient.get(url);\n\t}\n\n\tpublic getAddUserHeaders()\n\t{\n\t\tconst url = jsonPaths.addUserAemLabels;\n\t\treturn this.httpClient.get(url);\n\t}\n\n\tpublic getUserDetailsHeaders()\n\t{\n\t\tconst url = jsonPaths.userDetailsAemLabels;\n\t\treturn this.httpClient.get(url);\n\t}\n\n\tpublic getUserDetails(id: string, isApproveUserScreen: boolean): Observable\n\t{\n\t\tlet url: string;\n\t\tif (isApproveUserScreen)\n\t\t{\n\t\t\turl = this.endpoints.auth.baseUrl + urlPaths.getApproveScreenUserDetails;\n\t\t}\n\t\telse\n\t\t{\n\t\t\turl = this.endpoints.auth.baseUrl + urlPaths.getUserDetails;\n\t\t}\n\n\n\t\tconst params = new HttpParams()\n\t\t\t.set('id', id);\n\n\t\treturn this.httpClient.get(url, { params });\n\t}\n\n\tpublic saveUserData(payload: SaveUserPayload): Observable\n\t{\n\t\tconst url = this.endpoints.auth.baseUrl + urlPaths.verifyInformation;\n\t\tconst headers = { 'content-type': 'application/json' };\n\t\treturn this.httpClient.post(url, payload, {\n\t\t\theaders: headers\n\t\t});\n\t}\n\n\n\tpublic submitRegistrationReviewOrCancel(payload: SaveUserPayload): Observable\n\t{\n\t\tconst url = this.endpoints.auth.baseUrl + urlPaths.triggerEmailToTmhCustomerSupport;\n\t const headers = { 'content-type': 'application/json' };\n\t\treturn this.httpClient.post(url, payload, {\n\t\t\theaders: headers\n\t\t});\n\t}\n\n\tpublic saveGeneralUser(): Observable\n\t{\n\t\tconst url = this.endpoints.auth.baseUrl + urlPaths.saveGeneralUser;\n\t\tconst headers = { 'content-type': 'application/json' };\n\t\treturn this.httpClient.post(url, {\n\t\t\theaders: headers\n\t\t});\n\t}\n\n\tpublic saveIndividualUser(): Observable\n\t{\n\t\tconst url = this.endpoints.auth.baseUrl + urlPaths.saveIndividualUser;\n\t\tconst headers = { 'content-type': 'application/json' };\n\t\treturn this.httpClient.post(url, {\n\t\t\theaders: headers\n\t\t});\n\t}\n\n\tpublic getRegistrationFormLabels(): Observable\n\t{\n\t\tconst url = this.endpoints.auth.baseUrl + urlPaths.registrationFormLabels;\n\t\treturn this.httpClient.get(url);\n\t}\n\n\tpublic getPendingUserRequests(company: string): Observable\n\t{\n\t\tconst url = this.endpoints.auth.baseUrl + urlPaths.pendingUserRequest;\n\t\treturn this.httpClient.get(url, { params: { company: company } });\n\t}\n\n\tpublic userMangementListTable(\n\t\tpayload: UserListPayload\n\t): Observable\n\t{\n\t\tconst path: string =\n\t\t\tthis.environmentRef.baseUrl + urlPaths.UserMangementTableData;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\tpublic getOrderManagementHeaders()\n\t{\n\t\tconst url = jsonPaths.orderManagementHeaders;\n\t\treturn this.httpClient.get(url);\n\t}\n\tpublic getEquipmentOrderDetailHeaders()\n\t{\n\t\tconst url = jsonPaths.equipmentOrderDetailHeaders;\n\t\treturn this.httpClient.get(url);\n\t}\n\n\tpublic getDashboardHeaders()\n\t{\n\t\tconst url = jsonPaths.dashboardHeaders;\n\t\treturn this.httpClient.get(url);\n\t}\n\n\tpublic getMyQuotesAemLabels()\n\t{\n\t\tconst url = jsonPaths.myQuotesAemLabels;\n\t\treturn this.httpClient.get(url);\n\t}\n\tpublic getMyInsightsTabAemLabels()\n\t{\n\t\tconst url = jsonPaths.myInsightsTabAemLabels;\n\t\treturn this.httpClient.get(url);\n\t}\n\tpublic getInviteUsersAemLabels()\n\t{\n\t\tconst url = jsonPaths.inviteUsersAemLabels;\n\t\treturn this.httpClient.get(url);\n\t}\n\tpublic getDashboardDetails(payload: DashboardPayload): Observable\n\t{\n\t\tconst path: string = this.environmentRef.baseUrl + urlPaths.dashboardDetails;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\n\tpublic getAccountSettingsHeaders()\n\t{\n\t\tconst url = jsonPaths.accountSettingsHeaders;\n\t\treturn this.httpClient.get(url);\n\t}\n\n\tpublic getCompanyDetails(payload: CompanyDetailsPayload): Observable\n\t{\n\t\tconst path: string = this.environmentRef.baseUrl + urlPaths.companyDetails;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\n\tpublic updatePrimaryLocation(payload: UpdatePrimaryLocationPayload): Observable\n\t{\n\t\tconst path: string = this.environmentRef.baseUrl + urlPaths.updatePrimaryLocation;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\n\tpublic getCompanyLocation(payload: CompanyLocationPayload): Observable\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.getCompanyLocation;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\tpublic getAddNewLocationHeaders()\n\t{\n\t\tconst url = jsonPaths.addNewLocationHeaders;\n\t\treturn this.httpClient.get(url);\n\t}\n\n\tpublic userMangementListStatusChange(\n\t\tpayload: UserListStatusPayload\n\t): Observable\n\t{\n\t\tconst path: string =\n\t\t\tthis.environmentRef.baseUrl + urlPaths.userManagementListStatus;\n\t\treturn this.httpClient.patch(path, payload);\n\t}\n\tpublic getLatestUserStatus(\n\t\tpayload: LatestUserIdPayload\n\t): Observable\n\t{\n\t\tconst path: string =\n\t\t\tthis.environmentRef.baseUrl + urlPaths.getLatestUserStatus;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\tpublic getUserManagementAEMHeaders()\n\t{\n\t\tconst url = this.environmentRef.baseUrl + urlPaths.userManagementAEMHeaders;\n\t\treturn this.httpClient.get(url);\n\t}\n\n\tpublic notificationList(\n\t\tpayload: NotificationList\n\t): Observable\n\t{\n\t\tconst path: string =\n\t\t\tthis.environmentRef.baseUrl + urlPaths.notificationsList;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\n\tpublic updateNotificationList(\n\t\tpayload: UpdateNotificationList\n\t): Observable\n\t{\n\t\tconst path: string =\n\t\t\tthis.environmentRef.baseUrl + urlPaths.updateNotificationList;\n\t\treturn this.httpClient.patch(path, payload);\n\t}\n\tpublic getCurrentLocation(locationId: string)\n\t{\n\t\tconst url = jsonPaths.currentLocation;\n\t\tthis.loggerService.log(locationId);\n\t\treturn this.httpClient.get(url);\n\t}\n\n\tpublic getEquipmentOrderDetails(payload: OrderDetailsPayload)\n\t{\n\t\tconst path: string = this.environmentRef.baseUrl + urlPaths.orderDetails;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\tpublic getAddMoveEquipmentLabel()\n\t{\n\t\tconst url = jsonPaths.addMoveEquipmentLabel;\n\t\treturn this.httpClient.get(url);\n\t}\n\tpublic getAddBulkEquipmentLabel()\n\t{\n\t\tconst url = jsonPaths.addBulkEquipmentLabel;\n\t\treturn this.httpClient.get(url);\n\t}\n\tpublic equipmentMoveTruck(payload: MoveTruckPayload): Observable\n\t{\n\t\tconst path = this.environmentRef.baseUrl + urlPaths.moveTruck;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\tpublic equipmentNotFound(payload: ReportTruckIssue): Observable\n\t{\n\t\tconst path = this.environmentRef.baseUrl + urlPaths.reportTruckIssue;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\tpublic equipmentMyfleetAddTruck(payload: AddTruckPayload): Observable\n\t{\n\t\tconst path = this.environmentRef.baseUrl + urlPaths.addMyFleetEquipmentTruck;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\tdownloadUserManagement(payload: UserListPayload)\n\t{\n\t\tconst path: string = this.environmentRef.baseUrl + urlPaths.downloadUserList;\n\t\treturn this.httpClient.post(path, payload, {\n\t\t\tresponseType: 'blob'\n\t\t});\n\t}\n\tdownloadEquipmentOrderList(payload: OrderListPayload)\n\t{\n\t\tconst path: string = this.environmentRef.baseUrl + urlPaths.downloadEquipmentOrderList;\n\t\treturn this.httpClient.post(path, payload, {\n\t\t\tresponseType: 'blob'\n\t\t});\n\t}\n\tdownloadServiceManagementServiceHistoryTableList(payload: ServiceManagementServiceHistoryPayload)\n\t{\n\t\tconst path: string = this.environmentRef.baseUrl + urlPaths.downloadServiceManagementServiceHistoryTableList;\n\t\treturn this.httpClient.post(path, payload, {\n\t\t\tresponseType: 'blob'\n\t\t});\n\t}\n\tdownloadManualsInfo(name: string)\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.downloadManualsInfo + name;\n\t\treturn this.httpClient.get(url, { responseType: 'blob' });\n\t}\n\tpublic rejectUsersAccess(\n\t\tpayload: RejectUsersPayload\n\t): Observable\n\t{\n\t\tconst path: string =\n\t\t\tthis.environmentRef.baseUrl + urlPaths.rejectUsers;\n\t\treturn this.httpClient.patch(path, payload);\n\t}\n\tpublic approveUsersAccess(payload: ApproveUsersPayload): Observable\n\t{\n\t\tconst path: string = this.environmentRef.baseUrl + urlPaths.approveUsers;\n\t\treturn this.httpClient.patch(path, payload);\n\t}\n\tgetRepairCodeWidgetData(widgetPayload: WidgetPayload)\n\t{\n\t\tconst url = `${this.endpoints.serviceManagement.routes.serviceManagement.getRepairCodeData}`;\n\t\treturn this.httpClient.post(url, widgetPayload);\n\t}\n\tgetSpendBreakdownWidgetData(widgetPayload: WidgetPayload)\n\t{\n\t\tconst url = `${this.endpoints.serviceManagement.routes.serviceManagement.getSpendBreakdownData}`;\n\t\treturn this.httpClient.post(url, widgetPayload);\n\t}\n\tgetPaymentStatusWidgetData(widgetPayload: WidgetPayload)\n\t{\n\t\tconst url = `${this.endpoints.serviceManagement.routes.serviceManagement.getPaymentStatusData}`;\n\t\treturn this.httpClient.post(url, widgetPayload);\n\t}\n\n\tgetLoggedInUserObs(): Observable\n\t{\n\t\tconst url = this.environmentRef.baseUrl + urlPaths.loggedUser;\n\t\treturn this.httpClient.get(url);\n\t}\n\n\tgetLoggedInUserLocations(): Observable\n\t{\n\t\tconst url = this.environmentRef.baseUrl + urlPaths.loggedUserLocations;\n\t\treturn this.httpClient.get(url);\n\t}\n\tgetLoggedInTmhCorporateAdminDetails(): Observable\n\t{\n\t\tconst url = this.environmentRef.baseUrl + urlPaths.tmhCorporateAdminDetails;\n\t\treturn this.httpClient.get(url);\n\t}\n\tpublic getNumberOfUnitsWidgetData(payload:DashboardPayload)\n\t{\n\t\tconst url = this.environmentRef.baseUrl+ `${this.endpoints.dashboard.routes.dashboard.getNumberOfUnitsData}`;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\tpublic getFinancedEquipmentData(payload:DashboardPayload)\n\t{\n\t\tconst url = this.environmentRef.baseUrl+ `${this.endpoints.dashboard.routes.dashboard.getFinancedEquipmentData}`;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\tpublic getAverageAgeEquipment(payload:DashboardPayload)\n\t{\n\t\tconst url = this.environmentRef.baseUrl+ `${this.endpoints.dashboard.routes.dashboard.getAverageAgeEquipmentData}`;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\tpublic getNewEquipmentOrders(payload:DashboardPayload)\n\t{\n\t\tconst url = this.environmentRef.baseUrl+ `${this.endpoints.dashboard.routes.dashboard.getNewEquipmentOrders}`;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\tgetServiceManagementAemLabel()\n\t{\n\t\tconst url = jsonPaths.serviceMangementAemLabels;\n\t\treturn this.httpClient.get(url);\n\t}\n\tpublic updateUserLocation(\n\t\tpayload: AssignUnassignLocationPayload\n\t): Observable\n\t{\n\t\tconst path: string =\n\t\t\tthis.environmentRef.baseUrl + urlPaths.updateUserLocation;\n\t\treturn this.httpClient.patch(path, payload);\n\t}\n\tpublic getServiceOrderDetailHeader()\n\t{\n\t\tconst url = jsonPaths.serviceOrderDetails;\n\t\treturn this.httpClient.get(url);\n\t}\n\tpublic getOrderManagementTableData(\n\t\tpayload: OrderListPayload\n\t): Observable\n\t{\n\t\tconst path: string =\n\t\t\tthis.environmentRef.baseUrl + urlPaths.OrderManagementTableData;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\tpublic getServiceManagementServiceHistoryData(\n\t\tpayload: ServiceManagementServiceHistoryPayload\n\t): Observable\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.serviceHistoryTable;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\tpublic getAssignedUsersData(\n\t\tpayload: AssignedUserDataPayLoad\n\t): Observable\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.assignedUsersData;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\n\tpublic saveUserDetailsData(payload: UserSaveChangesPayload): Observable\n\t{\n\t\tconst path: string = this.environmentRef.baseUrl + `${urlPaths.saveUserDetailsData}`;\n\t\treturn this.httpClient.patch(path, payload);\n\t}\n\tpublic saveUserDetails(payload: UpdatePayload): Observable\n\t{\n\t\tconst path: string = this.environmentRef.baseUrl + `${urlPaths.saveUserDetailsData}`;\n\t\treturn this.httpClient.patch(path, payload);\n\t}\n\n\tpublic validateRemoveCompanyLocation(payload: ValidateRemoveLocPayload): Observable\n\t{\n\t\tconst path: string = this.environmentRef.baseUrl + `${urlPaths.validateRemoveCompanyLocation}`;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\n\tpublic getServiceOrderDetailData(payload: ServiceOrderDetailsPayload\n\t): Observable\n\t{\n\t\tconst url = this.environmentRef.baseUrl + urlPaths.serviceOrderData;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\tpublic getPrefilledUserData()\n\t{\n\t\tconst url: string =\n\t\t\tthis.environmentRef.baseUrl + urlPaths.getPrefilledUserDetails;\n\t\treturn this.httpClient.get(url);\n\t}\n\n\tpublic getRoutePermissions(group: RoutePermissionGroup): Observable\n\t{\n\t\tconst url: string = this.environmentRef.endpoints.auth.routes.auth.permissions.category.id(group.category);\n\t\tconst headers: HttpHeaders = new HttpHeaders({\n\t\t\t'action-id': group.action\n\t\t});\n\t\treturn this.httpClient.get(url, { headers }).pipe(\n\t\t\tmap(response => (response.statusCode === 200) ? response.data as RoutePermissions : response)\n\t\t);\n\t}\n\n\tpublic getServiceManagementEquipmentType(payload: Locations): Observable\n\t{\n\t\tconst path = this.environmentRef.baseUrl + urlPaths.serviceManagementEquipmentTypes;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\n\tpublic getRemoveLocationModalsAEMLabels()\n\t{\n\t\tconst url = jsonPaths.removeLocationModalsAEMLabels;\n\t\treturn this.httpClient.get(url);\n\t}\n\n\tpublic removeCompanyLocation(payload: RemoveLocationPayload): Observable\n\t{\n\t\tconst path = this.environmentRef.baseUrl + urlPaths.removeCompanyLocation;\n\t\treturn this.httpClient.delete(path, { body: payload });\n\t}\n\n\tpublic updateLocationLabel(payload: UpdateLocationLabelInterface): Observable\n\t{\n\t\tconst path = this.environmentRef.baseUrl + urlPaths.updateLocationLabel;\n\t\treturn this.httpClient.patch(path, payload);\n\t}\n\n\tpublic getLocationInformation(payload: LocationDetailsPayload)\n\t{\n\t\tconst url = this.environmentRef.baseUrl + urlPaths.locationDetails;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\n\tpublic getAssignedUsersList(payload: AssignUserSearchPayload): Observable\n\t{\n\t\tconst url = this.endpoints.auth.baseUrl + urlPaths.companyAssignedUsers;\n\t\tconst headers = { 'content-type': 'application/json' };\n\t\treturn this.httpClient.post(url, payload, {\n\t\t\theaders: headers\n\t\t});\n\t}\n\tpublic getAEMdetailsTerms()\n\t{\n\t\tconst url: string =\n\t\t\tthis.environmentRef.baseUrl + urlPaths.aemTnCdata;\n\t\treturn this.httpClient.get(url);\n\t}\n\tpublic submitTnC(payload: SubmitTnc)\n\t{\n\t\tconst url: string =\n\t\t\tthis.environmentRef.baseUrl + urlPaths.submitTnC;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\tpublic getAEMdetailsPolicy()\n\t{\n\t\tconst url: string =\n\t\t\tthis.environmentRef.baseUrl + urlPaths.aemPolicyData;\n\t\treturn this.httpClient.get(url);\n\t}\n\tpublic submitPolicy(payload: SubmitTnc)\n\t{\n\t\tconst url: string =\n\t\t\tthis.environmentRef.baseUrl + urlPaths.submitPolicy;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\tpublic getAdminLocationList()\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.adminLocationList;\n\t\treturn this.httpClient.get(url);\n\t}\n\tpublic switchAccount(payload: SwitchAccountPayload): Observable\n\t{\n\t\tconst path = this.environmentRef.baseUrl + urlPaths.switchAccount;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\tpublic saveUserProfileDetails(payload: ProfileDetailsSavePayload): Observable\n\t{\n\t\tconst path: string = this.environmentRef.baseUrl + `${urlPaths.saveUserProfileDetails}`;\n\t\treturn this.httpClient.patch(path, payload);\n\t}\n\n\tpublic addCompanyLocation(payload: AddLocationPayload): Observable\n\t{\n\t\tconst path = this.environmentRef.baseUrl + urlPaths.addCompanyLocation;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\n\tpublic updateUnassignUsersData(payload: UnAssignUsersPayload): Observable\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.unassignUsersData;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\tgetCorporateConvert(): Observable\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.corporateConvert;\n\t\treturn this.httpClient.get(url);\n\t}\n\n\tpublic getChangeRequestList(\n\t\tpayload: ChangeRequestListTablePayload\n\t): Observable\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.changeRequestList;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\tpublic updateAssignUsersData(\n\t\tpayload: AssignUsersPayload\n\t): Observable\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.assignUsersData;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\tgetUnreadNotificationCount(payload: UnreadNotificationPayload): Observable\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.unreadNotificationsCount;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\taddNewUser(payload: AddNewUserPayload): Observable\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.getAddNewUser;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\tgetChangeRequestAemLabels()\n\t{\n\t\tconst url = jsonPaths.changeRequestTableAemlabels;\n\t\treturn this.httpClient.get(url);\n\t}\n\tpublic getNotificationsAemLabels()\n\t{\n\t\tconst url = jsonPaths.notificationsPageLabel;\n\t\treturn this.httpClient.get(url);\n\t}\n\tpublic getBusinessAccountRequestAemLabel()\n\t{\n\t\tconst url = jsonPaths.businessAccountRequestAemLabel;\n\t\treturn this.httpClient.get(url);\n\t}\n\tpublic getServerValidationUploadFile (item: File, userId: string):Observable\n\t{\n\t\tconst form = new FormData;\n\t\tform.append('file', item);\n\t\tconst path: string = this.environmentRef.baseUrl + `${urlPaths.uploadNewLocationFile}` + userId;\n\t\treturn this.httpClient.post(path, form);\n\t}\n\tpublic getBusinessAccountRequestData ():Observable\n\t{\n\t\tconst url = this.environmentRef.baseUrl + urlPaths.businessAccountRequestData;\n\t\treturn this.httpClient.get(url);\n\t}\n\tpublic rejectBusinessAccount(payload: RejectBusinessAccountPayload): Observable\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.rejectBaUser;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\tpublic getEditAdminCompanyDetailsAemLabels()\n\t{\n\t\tconst url = jsonPaths.editAdminCompanyDetailsAemLabels;\n\t\treturn this.httpClient.get(url);\n\t}\n\tpublic getAdditionalLocations()\n\t{\n\t\tconst url = this.environmentRef.baseUrl + urlPaths.getAdditionalLocations;\n\t\treturn this.httpClient.get(url);\n\t}\n\tpublic getBAUploadLocation (item: File):Observable\n\t{\n\t\tconst form = new FormData;\n\t\tform.append('file', item);\n\t\tconst path: string = this.environmentRef.baseUrl + `${urlPaths.uploadNewLocationFileReg}`;\n\t\treturn this.httpClient.post(path, form);\n\t}\n\tpublic submitAdditionalLocation(payload: SubmitBusinessPayload)\n\t{\n\t\tconst url = this.environmentRef.baseUrl + urlPaths.submitAdditionalLocations;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\tpublic getBusinessRegistrationFlowSubmitModalLabels()\n\t{\n\t\tconst url: string = jsonPaths.businessRegistrationFlowSubmitModalLabels;\n\t\treturn this.httpClient.get(url);\n\t}\n\tpublic saveBusinessUser(): Observable\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.saveBusinessUser;\n\t\treturn this.httpClient.post(url, null);\n\t}\n\tpublic getConnectedDeviceData(payload: ConnectedDevicePayload): Observable\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.connectedDeviceData ;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\tpublic downloadLocationList(tempUserID: string)\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.downloadLocationList + tempUserID;\n\t\treturn this.httpClient.patch(url, null, { responseType: 'blob' });\n\t}\n\tpublic updateAdminCompanyDetails(payload: AdminCompanyDetails)\n\t{\n\t\tconst url = this.environmentRef.baseUrl + urlPaths.updateAdminDetails;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\tpublic getBusinessRegistrationLocationDownload()\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.businessRegistrationLocationDownload;\n\t\treturn this.httpClient.get(url, {\n\t\t\tresponseType: 'blob'\n\t\t}\n\t\t);\n\t}\n\n\tpublic getBusinessRegistrationUploadListModalLabels()\n\t{\n\t\tconst url: string = jsonPaths.businessRegistrationDownloadModalLabels;\n\t\treturn this.httpClient.get(url);\n\t}\n\tpublic getInviteUserLocationDownload(bulkUser: boolean)\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + (bulkUser ? urlPaths.bulkUserTemplate : urlPaths.inviteUserLocationDownload);\n\t\treturn this.httpClient.get(url, {\n\t\t\tresponseType: 'blob'\n\t\t}\n\t\t);\n\t}\n\t\n\tpublic getAddBulkEquipmentDownload(equipmentType: string)\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.addBulkEquipmentDownload + equipmentType;\n\t\treturn this.httpClient.get(url, {\n\t\t\tresponseType: 'blob'\n\t\t}\n\t\t);\n\t}\n\n\tpublic getInviteUserSubmit (item: File, isBulkUsers:boolean):Observable\n\t{\n\t\tconst form = new FormData;\n\t\tform.append('file', item);\n\t\tconst path: string = this.environmentRef.baseUrl + ( isBulkUsers ? urlPaths.bulkUserInvite : urlPaths.inviteUserSubmit);\n\t\treturn this.httpClient.post(path, form);\n\t}\n\tpublic getAddBulkEquipmentSubmit (item: File):Observable\n\t{\n\t\tconst form = new FormData;\n\t\tform.append('file', item);\n\t\tconst path: string = this.environmentRef.baseUrl + urlPaths.addBulkEquipmentUpload;\n\t\treturn this.httpClient.post(path, form);\n\t}\n\tpublic getmyInsightsAEMLabels()\n\t{\n\t\tconst url: string = jsonPaths.myInsightsAEMLabels;\n\t\treturn this.httpClient.get(url);\n\t}\n\n\tpublic getVehicleUtilization(payload: VehicleUtilizationPayload): Observable\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.vehicleUtilization ;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\tpublic getLatestKeyHours(payload: KeyHoursPayload): Observable\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.latestKeyHours ;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\n\tpublic approveBusinessAdminAccount(payload: ApproveBusinessAdminPayload): Observable\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.approveBusinessAdmin;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\tpublic getImpactDetectionWidgetData(payload: ImpactDetectionPayload): Observable\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.weeklyImpactDetectionWidget;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\tpublic getCoordinatesOfAssignedLoc(payload: GtsAddressConversionPayload)\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.gtsAddressConversionToCoordinates;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\tpublic getEquipTelematicsVehicleData(payload: ConnectedDevicePayload)\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.equipTelematicsVehicleData;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\tpublic getEquipmentQuoteTableData(\n\t\tpayload: MyQuotesPayload\n\t): Observable\n\t{\n\t\tconst path: string =\n\t\t\tthis.environmentRef.baseUrl + urlPaths.equipmentQuotesTableEILData;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\tpublic getLastTenErrorCodesDataList(\n\t\tpayload: ImpactDetectionPayload\n\t): Observable\n\t{\n\t\tconst path: string =\n\t\t\tthis.environmentRef.baseUrl + urlPaths.lastTenErrorCodesDataList;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\tpublic getDealerByZipCode(payload: DealerSearchPayload): Observable\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.dealerDetails;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\tpublic getBillingAddress(payload: BillingAddressPayload): Observable\n\t{\n\t\tconst path: string =\n\t\t\tthis.environmentRef.baseUrl + urlPaths.billingAddressList;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\tdownloadMyQuotesTableList(payload: MyQuotesPayload)\n\t{\n\t\tconst path: string = this.environmentRef.baseUrl + urlPaths.myQuotesListDownload;\n\t\treturn this.httpClient.post(path, payload, {\n\t\t\tresponseType: 'blob'\n\t\t});\n\t}\n\tdownloadQuotePDF(payload: DownloadPDFPayload)\n\t{\n\t\tconst path: string = this.environmentRef.baseUrl + urlPaths.myQuotesPdfDownload;\n\t\treturn this.httpClient.post(path, payload, {\n\t\t\tresponseType: 'blob'\n\t\t});\n\t}\n\tquoteContentBlock()\n\t{\n\t\tconst url = this.environmentRef.baseUrl + urlPaths.quotepromoBanner;\n\t\treturn this.httpClient.get(url);\n\t}\n\tpublic getMyInsightsPromoBanners(): Observable\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.myinsightsPromobanner;\n\t\treturn this.httpClient.get(url);\n\t}\n\tgetMyInsightsListData(payload: MyInsightsListPayload)\n\t{\n\t\tconst path: string = this.environmentRef.baseUrl + urlPaths.myinsightsTable;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\tdownloadMyInsightsTableList(payload: MyInsightsListPayload)\n\t{\n\t\tconst path: string = this.environmentRef.baseUrl + urlPaths.myinsightsTableListDownload;\n\t\treturn this.httpClient.post(path, payload, { responseType: 'blob' });\n\t}\n\n\tpublic getShippingLocationList(payload: ShippingLocationPayload): Observable\n\t{\n\t\tconst path: string = this.environmentRef.baseUrl + urlPaths.shippingLocationList;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\n\tpublic getServiceManagementFilterList(payload: ShippingLocationPayload): Observable\n\t{\n\t\tconst path: string = this.environmentRef.baseUrl + urlPaths.serviceManagementFilterList;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\tpublic getEquipmentOrderFilterList(payload: ShippingLocationPayload): Observable\n\t{\n\t\tconst path: string = this.environmentRef.baseUrl + urlPaths.equipmentOrderFilterList;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\tpublic domainListData(payload: DomainPayload): Observable\n\t{\n\t\tconst path: string = this.environmentRef.baseUrl + urlPaths.domainListData;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\tpublic updateDomainDetails(payload: UpdateDomainPayload): Observable\n\t{\n\t\tconst path: string = this.environmentRef.baseUrl + urlPaths.updateDomainDetails;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\tpublic assignDomainDetails(payload: UpdateDomainPayload): Observable\n\t{\n\t\tconst path: string = this.environmentRef.baseUrl + urlPaths.assignDomainDetails;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\tpublic getCustomerSupportLabels(): Observable\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.customerSupportLabel;\n\t\treturn this.httpClient.get(url);\n\t}\n\tpublic getContactUsLabels(): Observable\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.contactUsLabel;\n\t\treturn this.httpClient.get(url);\n\t}\n\tpublic startImpersonationSession(payload: ImpersonationPayload): Observable\n\t{\n\t\tconst path: string = this.environmentRef.baseUrl + urlPaths.startImpersonation;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\tpublic contactUsTicket(payload: ContactUsPayload): Observable\n\t{\n\t\tconst path: string = this.environmentRef.baseUrl + urlPaths.contactUsTicket;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\tgetLoggedInTmhCustomerSupportDetails(): Observable\n\t{\n\t\tconst url = this.environmentRef.baseUrl + urlPaths.tmhCustomerSupportDetails;\n\t\treturn this.httpClient.get(url);\n\t}\n\tgetValidImpersonateUserDetails(payload: ImpersonationPayload): Observable\n\t{\n\t\tconst url = this.environmentRef.baseUrl + urlPaths.validateImpersonation;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\tgetLocationLabels(): Observable\n\t{\n\t\tconst url: string = this.environmentRef.baseUrl + urlPaths.locationLabels;\n\t\treturn this.httpClient.get(url);\n\t}\n\tgetUnassignedLocations(): Observable\n\t{\n\t\tconst url = this.environmentRef.baseUrl + urlPaths.unassignedLocations;\n\t\treturn this.httpClient.get(url);\n\t}\n\tsetLocationAccessManagement(payload: LocationAccessPayload): Observable\n\t{\n\t\tconst url = this.environmentRef.baseUrl + urlPaths.accessLocationManagement;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\tgetServiceHistoryCount(): Observable\n\t{\n\t\tconst url = this.environmentRef.baseUrl + urlPaths.serviceHistoryCount;\n\t\treturn this.httpClient.get(url);\n\t}\n\tverifyDomain(payload: VerifyDomain): Observable\n\t{\n\t\tconst path = this.environmentRef.baseUrl + urlPaths.verifyDomain;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\tgetZendeskToken(): Observable\n\t{\n\t\tconst url = this.environmentRef.baseUrl + urlPaths.zendeskToken;\n\t\treturn this.httpClient.get(url);\n\t}\n\tgetContactForm(payload: ImpersonationPayload ): Observable\n\t{\n\t\tconst url = this.environmentRef.baseUrl + urlPaths.contactForm;\n\t\treturn this.httpClient.post(url, payload);\n\t}\n\tgetEquipmentOptions(): Observable\n\t{\n\t\tconst url = this.environmentRef.baseUrl + urlPaths.equipmentOptions;\n\t\treturn this.httpClient.get(url);\n\t}\n\tverifyEquipment(payload: VerifyTruckPayload): Observable\n\t{\n\t\tconst path = this.environmentRef.baseUrl + urlPaths.verifyEquipment;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\tsubmitUser(payload: AssignUsersPayload): Observable\n\t{\n\t\tconst path = this.environmentRef.baseUrl + urlPaths.submituser;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\tmoveBulkEquipment(payload: BulkEquipmentPayload)\n\t{\n\t\tconst path = this.environmentRef.baseUrl + urlPaths.moveBulkEquipment;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n\tremoveBulkEquipment(payload: RemoveBulkEquipmentPayload)\n\t{\n\t\tconst path = this.environmentRef.baseUrl + urlPaths.removeBulkEquipment;\n\t\treturn this.httpClient.post(path, payload);\n\t}\n}\n\n","export const urlPaths = {\n\tnumberOfUnits: 'v0/myfleet/widget/unit',\n\taverageAgeOfEquipment: 'v0/myfleet/widget/equipment',\n\tcountFinancedData: 'v0/myfleet/widget/ticf',\n\tmyFleetList: 'v0/myfleet/fleetList',\n\tfleetListAEMHeaders: 'v0/myfleet/fleetListAEMHeaders',\n\tmyfleetSearch: 'v0/myfleet/list',\n\taemFooterData: 'v0/aemfooter',\n\tequipmentData: 'v0/getEilTruck/',\n\tequipmentImage: 'v0/equipment/getEquipmentImage',\n\tmyfleetDownload: 'v0/myfleet/download',\n\tequipmentTypes: 'v0/myfleet/filter/equipmentTypes',\n\tequipmentFinanceData: 'v0/getFinancials/',\n\trepairTypeData: 'v0/equipment/filter/repairTypes',\n\tsaveUser: 'v0/user/saveUserData',\n\tregistrationFormLabels: 'v0/aem-registration/complete-your-profile',\n\tstartPageLabels: 'v0/aem-registration/registration-startpage',\n\tpendingUserRequest: 'v0/user/pending-user-list',\n\tUserMangementTableData: 'v0/user/users-list',\n\tuserManagementListStatus: 'v0/user/status',\n\tgetLatestUserStatus: 'v0/user/get-latest-user-status',\n\tgetUserDetails: 'v0/user/user-info',\n\tgetCompanyLocation: 'v0/user/company-location-list',\n\tequipmentLabels: 'v0/aemfleetpage/equipment-labels',\n\tmoveTruck: 'v0/equipment/moveTruck',\n\taddMyFleetEquipmentTruck: 'v0/equipment/addTruck',\n\tuserManagementAEMHeaders: 'v0/aem-user-management',\n\tdashboardDetails: 'v0/dashboard/equipment',\n\tnotificationsList: 'v0/notification/list',\n\tdeleteNotification: 'v0/notification/update-notification',\n\tupdateNotificationList: 'v0/notification/mark-read',\n\tdownloadUserList: 'v0/user/download-user-list',\n\trejectUsers: 'v0/user/reject-users',\n\tapproveUsers: 'v0/user/approve-bulk-user',\n\tloggedUser: 'v0/user/profile-details',\n\tloggedUserLocations: 'v0/user/profile-location-details',\n\tupdateUserLocation: 'v0/user/update-locations',\n\tremoveEquipment: 'v0/equipment/removeTruck',\n\tOrderManagementTableData: 'v0/order/list',\n\tserviceHistoryTable: 'v0/service-management/service-history/list',\n\tsaveUserDetailsData: 'v0/user/update-user-details',\n\tgetApproveScreenUserDetails: 'v0/user/approve-new-user/user-info',\n\tgetPrefilledUserDetails: 'v0/v1/user/prefillUserDetails',\n\tuserManagementRolesStatus: 'v0/user/role-list',\n\tdownloadEquipmentOrderList: 'v0/order/download-order-list',\n\torderDetails: 'v0/order/details',\n\tdownloadServiceManagementServiceHistoryTableList: 'v0/service-management/download-service-history-table',\n\tserviceManagementEquipmentTypes: 'v0/service-management/service-history/filter',\n\tserviceOrderData: 'v0/service-management/service-order-details',\n\tassignedUsersData: 'v0/account/assigned-users-list',\n\tcompanyDetails: 'v0/user/company-details',\n\tremoveCompanyLocation: 'v0/account/removeCompanyLocation',\n\tupdatePrimaryLocation: 'v0/account/updatePrimaryLocation',\n\tdownloadManualsInfo: 'v0/tips/download/blob/',\n\tlocationDetails: 'v0/account/getLocationDetails',\n\tcompanyAssignedUsers: 'v0/account/company-profile-assigned-users-list',\n\tchangeRequestList: 'v0/myfleet/change-request',\n\taemTnCdata: 'v0/aem-registration/terms-and-conditions',\n\tsubmitTnC: 'v0/user/terms-and-conditions-submit',\n\tsubmitPolicy: 'v0/user/privacy-policy-submit',\n\taemPolicyData: 'v0/aem-registration/privacy-policy',\n\tsaveUserProfileDetails: 'v0/user/update-user-profile',\n\taddCompanyLocation: 'v0/account/add-new-company-location',\n\tunassignUsersData: 'v0/user/location-details/unassign-user',\n\tassignUsersData: 'v0/account/assign-user',\n\tcorporateConvert: 'v0/dashboard/convert-to-corporate-account',\n\tadminLocationList: 'v0/v1/account-management/admin-location-list',\n\tswitchAccount: 'v0/v1/account-management/switch-account',\n\tunreadNotificationsCount: 'v0/notification/list/allUnreadCount',\n\tgetAddNewUser: 'v0/user/add-new-user',\n\tvalidateRemoveCompanyLocation: 'v0/account/validateRemoveCompanyLocation',\n\tverifyInformation: 'v0/v1/user/verify-information',\n\tsaveGeneralUser: 'v0/v1/user/save-general-user',\n\tsaveIndividualUser: 'v0/v1/user/save-individual-user',\n\tbusinessAccountRequestData: 'v0/v1/business-account/pending-ba-list',\n\tuploadNewLocationFile: 'v0/v1/user/upload-new-location?userId=',\n\trejectBaUser: 'v0/v1/business-account/reject-ba-user',\n\tgetAdditionalLocations: 'v0/v1/user/additional-locations',\n\tsaveBusinessUser: 'v0/v1/user/save-business-user',\n\tsubmitAdditionalLocations: 'v0/v1/user/submit-business-user-req',\n\tconnectedDeviceData: 'v0/equipment/getEquipTelematicsData',\n\tvehicleUtilization: 'v0/equipment/telematics-utilization',\n\tlatestKeyHours: 'v0/myfleet/widget/key-hours',\n\tdownloadLocationList: 'v0/v1/business-account/download-location-list/',\n\tuploadNewLocationFileReg: 'v0/v1/user/upload-ba-location-list',\n\tupdateAdminDetails: 'v0/v1/business-account/update-user-admin-details',\n\ttmhCorporateAdminDetails: 'v0/v1/business-account/tmh-corp-admin-profile-details',\n\tbusinessRegistrationLocationDownload: 'v0/v1/user/business-admin-template/download',\n\tinviteUserLocationDownload: 'v0/v1/account-management/invite-users-template/download',\n\tinviteUserSubmit: 'v0/v1/account-management/upload-users',\n\ttmhCustomerSupportDetails: 'v0/v1/business-account/support-role-profile-details',\n\tapproveBusinessAdmin: 'v0/v1/business-account/approve-business-admin',\n\tlandingPageLabels: 'v0/v1/aem-landing-page',\n\tequipTelematicsVehicleData: 'v0/equipment/equipTelematicsVehicleData',\n\tgtsAddressConversionToCoordinates: 'v0/equipment/gtsAddressConversionToCoordinates',\n\tweeklyImpactDetectionWidget: 'v0/equipment/telematics-impact-data',\n\tlastTenErrorCodesDataList: 'v0/v1/equipment/equipTelematicsErrorDetailedData',\n\tequipmentQuotesTableEILData: 'v0/v2/myquotes/list',\n\tdealerDetails: 'v0/dashboard/search-dealer-by-zip',\n\tbillingAddressList: 'v0/v2/myquotes/getBillingAddressForQuote',\n\theaderAlertBanner: 'v0/v1/aem-alert-banner',\n\tmyQuotesListDownload: 'v0/v2/myquotes/download-quotes-list',\n\tmyQuotesPdfDownload: 'v0/v2/myquotes/getQuoteDoc',\n\tquotepromoBanner: 'v0/v1/aemquotes/quote-content-block',\n\tmyinsightsPromobanner: 'v0/v1/aeminsights/insight-content-block',\n\tmyinsightsTable: 'v0/myinsights/list',\n\tmyinsightsTableListDownload: 'v0/myinsights/download',\n\tshippingLocationList: 'v0/order/shipping-location-list',\n\tserviceManagementFilterList: 'v0/service-management/filters',\n\tequipmentOrderFilterList: 'v0/order/filters',\n\ttriggerEmailToTmhCustomerSupport: 'v0/v1/user/registration-failure-email',\n\tupdateLocationLabel: 'v0/account/update-location-info',\n\tdomainListData: 'v0/domain/list',\n\tupdateDomainDetails: 'v0/domain/update',\n\tassignDomainDetails: 'v0/domain/assign',\n\tdownloadInvoicePdf: 'v0/service-management/service-history/download-invoice',\n\tstartImpersonation: 'v0/user/start-impersonation',\n\tcontactUsTicket: 'v0/create-ticket',\n\tvalidateImpersonation: 'v0/user/impersonation-user-details',\n\tcustomerSupportLabel: 'v0/v1/aem-customer-support-page',\n\tunassignedLocations: 'v0/account/getUnassignedLocations',\n\taccessLocationManagement: 'v0/account/allowLocationManagement',\n\tlocationLabels: 'v0/v1/aem-location-access-management',\n\tserviceHistoryCount: 'v0/aem/get-service-history-count',\n\tcontactUsLabel: 'v0/v1/aem-contact-us-page',\n\tverifyDomain: 'v0/domain/verify',\n\tzendeskToken: 'v0/auth/zendesk-token',\n\tcontactForm: 'v0/contact-form-prefill',\n\tbulkUserInvite: 'v0/user/add-bulk-users',\n\tbulkUserTemplate: 'v0/user/add-users-template/download',\n\tequipmentOptions: 'v0/equipment/selectOptions',\n\taddBulkEquipment: 'v0/equipment/addBulkTruck',\n\tverifyEquipment: 'v0/equipment/verifyTruck',\n\treportTruckIssue: 'v0/equipment/report-truck-issue',\n\tsubmituser: 'v0/account/update-users-location',\n\taddBulkEquipmentDownload: 'v0/equipment/download-template/',\n\taddBulkEquipmentUpload: 'v0/equipment/bulkEquipmentAdd',\n\tmoveBulkEquipment: 'v0/equipment/bulkEquipmentMove',\n\tremoveBulkEquipment: 'v0/equipment/bulkEquipmentRemove'\n};\nexport const jsonPaths = {\n\tuserDetailsAemLabels: '/jsonData/userDetailsAemLabels.json',\n\torderManagementHeaders: '/jsonData/orderManagementAemLabels.json',\n\tdashboardHeaders: '/jsonData/dashboardAEMLabels.json',\n\tmyQuotesAemLabels: '/jsonData/myQuotesAemLabels.json',\n\tmyInsightsTabAemLabels: '/jsonData/myInsightsTabAemLabels.json',\n\tinviteUsersAemLabels: '/jsonData/inviteUsersAEMLabels.json',\n\tequipmentOrderDetailHeaders: '/jsonData/orderDetailAemLabel.json',\n\taccountSettingsHeaders: '/jsonData/accountSettingsAEMLabels.json',\n\tremoveEquipmentAemLabels: '/jsonData/removeEquipmentAEMLabels.json',\n\taddNewLocationHeaders: '/jsonData/addViewCompanyLocationsAEM.json',\n\taddMoveEquipmentLabel: '/jsonData/add-move-equipment-aem-label.json',\n\taddBulkEquipmentLabel: '/jsonData/add-bulk-equipment-aem-label.json',\n\tcurrentLocation: '/jsonData/currentLocation.json',\n\tconfirmLeavePageLabels: '/jsonData/confirmLeavePageAEMLabels.json',\n\taddEquipmentDuplicateVINNumber: 'jsonData/addEquipmentDuplicateVINNumber.json',\n\taddEquipmentExistingVINNumber: 'jsonData/addEquipmentExistingVINNumber.json',\n\taddEquipmentSuccess: 'jsonData/addEquipmentSuccess.json',\n\tserviceOrderDetails: '/jsonData/serviceManagementiInvoiceDetailsAEMLabels.json',\n\tremoveLocationModalsAEMLabels: '/jsonData/removeLocationModalsAEMLabels.json',\n\taddUserAemLabels: '/jsonData/addUserAemLabels.json',\n\tserviceMangementAemLabels: '/jsonData/serviceManagementAEMLabels.json',\n\tchangeRequestTableAemlabels: '/jsonData/changeRequestTableAemlabels.json',\n\tnotificationsPageLabel: '/jsonData/notificationsTabsAemLabel.json',\n\tpendingApprovalPageLabel: '/jsonData/confirmationPageLabels.json',\n\tbusinessAccountRequestAemLabel: '/jsonData/business-account-request-page-aem-labels.json',\n\teditAdminCompanyDetailsAemLabels: '/jsonData/editAdmin-Company-Details-AEMLabels.json',\n\tbusinessAccountSuccessRegistrationLabels: '/jsonData/businessAccountSuccessRegistrationLabels.json',\n\tbusinessRegistrationFlowSubmitModalLabels: '/jsonData/businessRegistrationFlowSubmitModalLabels.json',\n\tbusinessRegistrationDownloadModalLabels: '/jsonData/business_registration_upload_modal_labels.json',\n\tmyInsightsAEMLabels: '/jsonData/myInsightsAEMLabels.json'\n};\n","import { LoggerService } from '../logger/logger.service';\nimport { Injectable } from '@angular/core';\nimport { MsalService, MsalBroadcastService } from '@azure/msal-angular';\nimport {\n\tEventMessage,\n\tEventType,\n\tInteractionStatus,\n\tAuthenticationResult\n} from '@azure/msal-browser';\nimport { TokenClaims } from '@azure/msal-common';\nimport {\n\tBehaviorSubject,\n\tfilter,\n\tlastValueFrom,\n\tObservable,\n\tSubject,\n\tSubscriber,\n\ttakeUntil\n} from 'rxjs';\nimport { b2cPolicies } from '../../injection-tokens/auth-config.injection-token';\nimport { ActivatedRouteSnapshot } from '@angular/router';\nimport { RoutePermissionAction, RoutePermissionCategory, RoutePermissionGroup, RoutePermissions } from '../../guards/permission/definitions';\nimport { ApiResponse } from '../../definitions/api-response.interface';\nimport { ApiService } from '../api/api.service';\nimport { hasIn as lodashHasIn, cloneDeep as lodashCloneDep, get as lodashGet } from 'lodash';\nimport { LocalStorageService } from '../local-storage/local-storage.service';\nimport { ShellService } from '../../components/shell/shell.service';\n\ntype PermissionsMap = Map;\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class AuthenticationService\n{\n\tdataSource!: { id: number; claim: string; value: unknown }[];\n\tprivate readonly pDestroying = new Subject();\n\tisLoggedIn: BehaviorSubject = new BehaviorSubject(false);\n\tpublic fetchedPermissions$: BehaviorSubject = new BehaviorSubject(new Map());\n\n\tconstructor(\n private readonly msalService: MsalService,\n private readonly msalBroadcastService: MsalBroadcastService,\n private readonly loggerService: LoggerService,\n private readonly localStorageService: LocalStorageService,\n private readonly apiService: ApiService,\n\tprivate readonly shellService: ShellService\n\t)\n\t{\n\t\tthis.msalBroadcastService.inProgress$\n\t\t\t.pipe(\n\t\t\t\tfilter(\n\t\t\t\t\t(status: InteractionStatus) => status === InteractionStatus.None\n\t\t\t\t),\n\t\t\t\ttakeUntil(this.pDestroying)\n\t\t\t)\n\t\t\t.subscribe(() =>\n\t\t\t{\n\t\t\t\tthis.setLoginDisplay();\n\t\t\t});\n\n\t\tthis.msalBroadcastService.msalSubject$\n\t\t\t.pipe(\n\t\t\t\tfilter(\n\t\t\t\t\t(msg: EventMessage) => msg.eventType === EventType.LOGIN_SUCCESS\n\t\t\t\t),\n\t\t\t\ttakeUntil(this.pDestroying)\n\t\t\t)\n\t\t\t.subscribe((result: EventMessage) =>\n\t\t\t{\n\t\t\t\tconst payload = result.payload as AuthenticationResult;\n\t\t\t\tthis.msalService.instance.setActiveAccount(payload.account);\n\t\t\t});\n\n\t\tthis.msalBroadcastService.inProgress$\n\t\t\t.pipe(\n\t\t\t\tfilter((status: InteractionStatus) => status === InteractionStatus.None)\n\t\t\t)\n\t\t\t.subscribe(() =>\n\t\t\t{\n\t\t\t\tthis.checkAndSetActiveAccount();\n\t\t\t\tthis.getClaims(\n\t\t\t\t\tthis.msalService.instance.getActiveAccount()?.idTokenClaims\n\t\t\t\t);\n\t\t\t});\n\t}\n\n\tprivate setLoginDisplay()\n\t{\n\t\tthis.isLoggedIn.next(this.msalService.instance.getAllAccounts().length > 0);\n\t}\n\n\tpublic getFetchedPermission(group: RoutePermissionGroup): RoutePermissions | undefined\n\t{\n\t\tconst key: string = this.getKeyFromPermissionGroup(group);\n\t\tconst permissionsMap: PermissionsMap = this.fetchedPermissions$.value;\n\t\treturn permissionsMap.get(key);\n\t}\n\tpublic setRoutePermissions(group: RoutePermissionGroup, permissions: RoutePermissions): void\n\t{\n\t\tconst key: string = this.getKeyFromPermissionGroup(group);\n\t\tconst permissionsMap: PermissionsMap = this.fetchedPermissions$.value;\n\t\tpermissionsMap.set(key, permissions);\n\t\tthis.fetchedPermissions$.next(permissionsMap);\n\t}\n\tprivate getKeyFromPermissionGroup(group: RoutePermissionGroup): string\n\t{\n\t\treturn btoa(`${group.category}${group.action}`);\n\t}\n\n\tpublic async login(): Promise\n\t{\n\t\treturn lastValueFrom(new Observable((subscriber: Subscriber) =>\n\t\t{\n\t\t\tthis.msalBroadcastService.inProgress$\n\t\t\t\t.pipe(\n\t\t\t\t\tfilter(\n\t\t\t\t\t\t(status: InteractionStatus) => status === InteractionStatus.None\n\t\t\t\t\t),\n\t\t\t\t\ttakeUntil(this.pDestroying)\n\t\t\t\t)\n\t\t\t\t.subscribe( () =>\n\t\t\t\t{\n\t\t\t\t\tthis.fetchedPermissions$.next(new Map());\n\t\t\t\t\tthis.msalService.loginRedirect().subscribe({\n\t\t\t\t\t\tnext: () =>\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsubscriber.next();\n\t\t\t\t\t\t\tsubscriber.complete();\n\t\t\t\t\t\t},\n\t\t\t\t\t\terror: (error) =>\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.loggerService.log('Error redirecting to login', error);\n\t\t\t\t\t\t\tthis.localStorageService.clearStorage();\n\t\t\t\t\t\t\tsubscriber.error(error);\n\t\t\t\t\t\t\tsubscriber.complete();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}));\n\t}\n\n\tpublic async logout(attempts: number = 3): Promise\n\t{\n\t\tif(attempts < 1)\n\t\t{\n\t\t\tthis.loggerService.log('Ran out of attempts');\n\t\t\treturn Promise.resolve();\n\t\t}\n\t\tattempts--;\n\t\ttry\n\t\t{\n\t\t\tthis.fetchedPermissions$.next(new Map());\n\t\t\tthis.shellService.shouldLoadPage$.next(true);\n\t\t\tawait lastValueFrom(this.msalService.logout());\n\t\t}\n\t\tcatch (error)\n\t\t{\n\t\t\tthis.shellService.shouldLoadPage$.next(false);\n\t\t\tthis.loggerService.log('Error redirecting to logout', error);\n\t\t\tthis.localStorageService.clearStorage();\n\t\t\treturn this.logout(attempts);\n\t\t}\n\t}\n\n\tpublic async register(): Promise\n\t{\n\t\ttry\n\t\t{\n\t\t\tconst request = {\n\t\t\t\tscopes: [''],\n\t\t\t\tauthority: b2cPolicies.authorities.signUpSignIn.authority\n\t\t\t};\n\t\t\tawait lastValueFrom(this.msalService.loginRedirect(request));\n\t\t}\n\t\tcatch (error)\n\t\t{\n\t\t\tthis.loggerService.log('Error redirecting to login', error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tprivate checkAndSetActiveAccount()\n\t{\n\t\tconst activeAccount = this.msalService.instance.getActiveAccount();\n\t\tif (\n\t\t\t!activeAccount &&\n this.msalService.instance.getAllAccounts().length > 0\n\t\t)\n\t\t{\n\t\t\tconst accounts = this.msalService.instance.getAllAccounts();\n\t\t\tthis.msalService.instance.setActiveAccount(accounts[0]);\n\t\t}\n\t}\n\n\tprivate getClaims(\n\t\tclaims: (TokenClaims & { [key: string]: unknown }) | undefined\n\t)\n\t{\n\t\tthis.dataSource = [\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tclaim: 'Given Name',\n\t\t\t\tvalue: claims ? claims['given_name'] : null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tclaim: 'Family Name',\n\t\t\t\tvalue: claims ? claims['family_name'] : null\n\t\t\t},\n\t\t\t{ id: 2, claim: 'Object ID', value: claims ? claims['oid'] : null },\n\t\t\t{ id: 3, claim: 'Job Title', value: claims ? claims['jobTitle'] : null },\n\t\t\t{ id: 4, claim: 'City', value: claims ? claims['city'] : null }\n\t\t];\n\t}\n\tpublic static extractPermissionsFromRoute(router: ActivatedRouteSnapshot): RoutePermissionGroup\n\t{\n\t\tconst routePermissionsPath: string = 'data.permissions';\n\t\tconst defaultPermissions: RoutePermissionGroup = { category: 'NONE' as RoutePermissionCategory, action: 'NONE' as RoutePermissionAction };\n\t\treturn lodashGet(router, routePermissionsPath, defaultPermissions);\n\t}\n\tpublic getRoutePermissions(route: ActivatedRouteSnapshot): Observable\n\t{\n\t\tconst group: RoutePermissionGroup = AuthenticationService.extractPermissionsFromRoute(route);\n\t\treturn new Observable( subscriber =>\n\t\t{\n\t\t\tthis.apiService.getRoutePermissions(group).subscribe({\n\t\t\t\tnext: (response: RoutePermissions | ApiResponse) =>\n\t\t\t\t{\n\t\t\t\t\tconst responseHasRoutePermissions: boolean = lodashHasIn(response, 'actions');\n\t\t\t\t\tif (responseHasRoutePermissions)\n\t\t\t\t\t{\n\t\t\t\t\t\tsubscriber.next(response as RoutePermissions);\n\t\t\t\t\t\tsubscriber.complete();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tsubscriber.error(response as ApiResponse);\n\t\t\t\t\t\tsubscriber.complete();\n\t\t\t\t\t\tthis.loggerService.log('no actions in response', lodashCloneDep(response));\n\t\t\t\t\t}\n\n\t\t\t\t},\n\t\t\t\terror: (err: unknown) =>\n\t\t\t\t{\n\t\t\t\t\tthis.loggerService.log('Error\\n', err);\n\t\t\t\t\tsubscriber.error(err);\n\t\t\t\t\tsubscriber.complete();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n}\n","import { DatePipe } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport { DateRange, KngFilterPanelComponent, Option } from 'kinetic-angular';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class DateConverterService \n{\n\tcurrentDate = new Date();\n\tconstructor(public datepipe: DatePipe) { }\n\n\tgetUnixTimeStamp(date: Date) \n\t{\n\t\treturn date.getTime();\n\t}\n\n\tgetUnitTimeInAmPm(value: string) \n\t{\n\t\tconst date = new Date(value);\n\t\treturn date.toLocaleString('en-US', { hour: 'numeric', minute: 'numeric', hour12: true }).toLowerCase();\n\t}\n\tgetDateWithUnitTimeInAmPm(value: string) \n\t{\n\t\tconst date = new Date(value);\n\t\treturn this.formatUnixDate(value)+'; '+ date.toLocaleString('UTC', { hour: 'numeric', minute: 'numeric', hour12: true });\n\t}\n\tgetFromDate(date: Date, days: number) \n\t{\n\t\treturn date.setDate(date.getDate() - days);\n\t}\n\n\ttranformDate(date: string, format: string) \n\t{\n\t\treturn this.datepipe.transform(new Date(date), format);\n\t}\n\n\tformatUnixDate(value: string | number) \n\t{\n\t\tconst date = new Date(value);\n\t\tconst month = date.getMonth() + 1;\n\t\tconst dateRes = date.getDate();\n\t\treturn (month < 10 ? ('0' + month) : month) + '/' + (dateRes < 10 ? ('0' + dateRes) : dateRes) + '/' + date.getFullYear();\n\t}\n\tcalculateDate(label: string, currentDate: Date) \n\t{\n\t\tconst commonDate = new Date(currentDate);\n\t\tlet fromDate: number = 0;\n\t\tswitch (label) \n\t\t{\n\t\tcase DateRange.lastDay: {\n\t\t\tfromDate = this.getFromDate(commonDate, 1);\n\t\t\tbreak;\n\t\t}\n\t\tcase DateRange.lastSevenDays: {\n\t\t\tfromDate = this.getFromDate(commonDate, 7);\n\t\t\tbreak;\n\t\t}\n\t\tcase DateRange.lastThirtyDays: {\n\t\t\tfromDate = this.getFromDate(commonDate, 30);\n\t\t\tbreak;\n\t\t}\n\t\tcase DateRange.lastSixtyDays: {\n\t\t\tfromDate = this.getFromDate(commonDate, 60);\n\t\t\tbreak;\n\t\t}\n\t\tcase DateRange.lastSixtyDaysWithoutDefault: {\n\t\t\tfromDate = this.getFromDate(commonDate, 60);\n\t\t\tbreak;\n\t\t}\n\t\tdefault: {\n\t\t\tfromDate = this.calculateDateOnQuaterly(commonDate, label);\n\t\t\tbreak;\n\t\t}\n\t\t}\n\t\treturn fromDate;\n\t}\n\tcalculateDateOnQuaterly(commonDate: Date, label: string) \n\t{\n\n\t\tlet fromDate: number = 0;\n\t\tswitch (label) \n\t\t{\n\t\tcase DateRange.lastQuarter: {\n\t\t\tfromDate = this.getFromDate(commonDate, 90);\n\t\t\tbreak;\n\t\t}\n\t\tcase DateRange.lastYear: {\n\t\t\tfromDate = this.getFromDate(commonDate, 365);\n\t\t\tbreak;\n\t\t}\n\t\tcase DateRange.lastYearDefault: {\n\t\t\tfromDate = this.getFromDate(commonDate, 365);\n\t\t\tbreak;\n\t\t}\n\t\tcase DateRange.last2YearsDefault: {\n\t\t\tfromDate = this.getFromDate(commonDate, (365*2));\n\t\t\tbreak;\n\t\t}\n\t\t}\n\t\treturn fromDate;\n\t}\n\tdateCalculation(options: Option[], label: string) \n\t{\n\t\tconst fromToDate : number[] = [];\n\t\tif(label === DateRange.custom)\n\t\t{\n\t\t\toptions.forEach((opt) =>\n\t\t\t{\n\t\t\t\tif (opt.label === label)\n\t\t\t\t{\n\t\t\t\t\tconst dateRange = opt.value.split('@');\n\t\t\t\t\tfromToDate[0] = this.getUnixTimeStamp(new Date(dateRange[0]));\n\t\t\t\t\tfromToDate[1] = this.getUnixTimeStamp(new Date(dateRange[1]));\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\telse \n\t\t{\n\t\t\tfromToDate[0] = this.calculateDate(label, this.currentDate);\n\t\t\tfromToDate[1] = this.getUnixTimeStamp(this.currentDate);\n\t\t}\n\t\treturn fromToDate;\n\t}\n\n\tshowHideFromToDate(filterComponent: KngFilterPanelComponent | undefined)\n\t{\n\t\tif (filterComponent)\n\t\t{\n\t\t\tfilterComponent.showToFromInput = false;\n\t\t}\n\t}\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LocalStorageService } from './local-storage.service';\nimport { DEFAULT_CONFIG, NgForageOptions, Driver } from 'ngforage';\nimport { LoggerServiceModule } from '../logger/logger.module';\n\nconst localStorageName: string = 'tmhna-portal';\n\n@NgModule({\n\tdeclarations: [],\n\timports: [\n\t\tCommonModule,\n\t\tLoggerServiceModule\n\t],\n\texports: [],\n\tproviders: [\n\t\t{\n\t\t\tprovide: DEFAULT_CONFIG,\n\t\t\tuseValue: {\n\t\t\t\tname: localStorageName,\n\t\t\t\tdriver: [\n\t\t\t\t\tDriver.INDEXED_DB,\n\t\t\t\t\tDriver.LOCAL_STORAGE\n\t\t\t\t]\n\t\t\t} as NgForageOptions\n\t\t},\n\t\tLocalStorageService\n\t]\n})\nexport class LocalStorageServiceModule {}\n","import { Injectable } from '@angular/core';\nimport { NgForage, NgForageCache, CachedItem } from 'ngforage';\nimport { LoggerService } from '../logger/logger.service';\nimport { GridData } from '../../components/user-management/definitions/user-management.interface';\n\nconst defaultCacheTimeInMilliseconds: number = 1000 * 60 * 60;\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class LocalStorageService\n{\n\tconstructor(\n\t\tprivate readonly ngf: NgForage,\n\t\tprivate readonly cache: NgForageCache,\n\t\tprivate readonly loggerService: LoggerService\n\t) {}\n\n\tpublic striginifyJSON(value: unknown)\n\t{\n\t\treturn JSON.stringify(value);\n\t}\n\n\tpublic parseJSON(value: string)\n\t{\n\t\tif (value === undefined)\n\t\t{\n\t\t\treturn null;\n\t\t}\n\t\treturn JSON.parse(value);\n\t}\n\tpublic isTokenCreated(): boolean\n\t{\n\t\tconst items = { ...localStorage };\n\t\treturn JSON.stringify(items) !== '{}';\n\t}\n\n\tpublic getItems(key: string): Promise\n\t{\n\t\treturn this.ngf.getItem(key);\n\t}\n\n\tpublic getCachedItem(key: string): Promise\n\t{\n\t\treturn this.cache.getCached(key).then((r: CachedItem) =>\n\t\t{\n\t\t\tif (!r.hasData || r.expired)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn r.data;\n\t\t});\n\t}\n\tpublic setCached(key: string, data: T, cacheTime: number = defaultCacheTimeInMilliseconds): Promise\n\t{\n\t\treturn this.cache.setCached(key, data, cacheTime);\n\t}\n\n\tpublic removeCached(key: string)\n\t{\n\t\tthis.cache.removeCached(key);\n\t}\n\n\tpublic setItems(key: string, data: T): Promise\n\t{\n\t\treturn this.ngf.setItem(key, data);\n\t}\n\n\tpublic removeItem(key: string): Promise\n\t{\n\t\treturn this.ngf.removeItem(key);\n\t}\n\tpublic setLoggedInUser(value: string)\n\t{\n\t\tlocalStorage.setItem('userDetails', value);\n\t}\n\n\n\tpublic setLoggedInCorporateFlag(value: string)\n\t{\n\t\tlocalStorage.setItem('corporateAccountRequestFlag', value);\n\t}\n\tpublic getLoggedInUser()\n\t{\n\t\tif (localStorage.getItem('userDetails') !== null)\n\t\t{\n\t\t\treturn localStorage.getItem('userDetails');\n\t\t}\n\t\telse\n\t\t\treturn null;\n\t}\n\tgetTmhCorporateAdminDetails()\n\t{\n\t\tif (localStorage.getItem('tmhCorporateAdminDetails') !== null)\n\t\t{\n\t\t\treturn localStorage.getItem('tmhCorporateAdminDetails');\n\t\t}\n\t\telse\n\t\t\treturn null;\n\t}\n\tsetTmhCorporateAdminDetails(value: string)\n\t{\n\t\tlocalStorage.setItem('tmhCorporateAdminDetails', value);\n\t}\n\tgetTmhCustomerSupportDetails()\n\t{\n\t\tif (localStorage.getItem('tmhCustomerSupportDetails') !== null)\n\t\t{\n\t\t\treturn localStorage.getItem('tmhCustomerSupportDetails');\n\t\t}\n\t\telse\n\t\t\treturn null;\n\t}\n\tsetTmhCustomerSupportDetails(value: string)\n\t{\n\t\tlocalStorage.setItem('tmhCustomerSupportDetails', value);\n\t}\n\tpublic setLoggedInUserLocation(value: string)\n\t{\n\t\tlocalStorage.setItem('userDetailsLocation', value);\n\t}\n\tpublic getLoggedInUserLocation()\n\t{\n\t\tif (localStorage.getItem('userDetailsLocation') !== null)\n\t\t{\n\t\t\treturn localStorage.getItem('userDetailsLocation');\n\t\t}\n\t\telse\n\t\t\treturn null;\n\t}\n\tpublic setLanguage(value: string)\n\t{\n\t\tlocalStorage.setItem('language', value);\n\t}\n\tpublic getLanguage()\n\t{\n\t\tif (localStorage.getItem('language') !== null)\n\t\t{\n\t\t\treturn localStorage.getItem('language');\n\t\t}\n\t\telse\n\t\t\treturn null;\n\t}\n\tpublic setImpersonateUser(value: string)\n\t{\n\t\tlocalStorage.setItem('impersonateUser', value);\n\t}\n\tpublic removeImpersonateUser()\n\t{\n\t\tlocalStorage.removeItem('impersonateUser');\n\t}\n\tpublic getImpersonateUser()\n\t{\n\t\tif (localStorage.getItem('impersonateUser') !== null)\n\t\t{\n\t\t\treturn localStorage.getItem('impersonateUser');\n\t\t}\n\t\telse\n\t\t\treturn null;\n\t}\n\tpublic setCustomerToDashboard(value: string)\n\t{\n\t\tlocalStorage.setItem('customerToDashboard', value);\n\t}\n\tpublic getCustomerToDashboard()\n\t{\n\t\tif (localStorage.getItem('customerToDashboard') !== null)\n\t\t{\n\t\t\treturn localStorage.getItem('customerToDashboard') === 'true' ? true : false;\n\t\t}\n\t\telse\n\t\t\treturn false;\n\t}\n\tpublic setRedirectedUser(value: string)\n\t{\n\t\tlocalStorage.setItem('redirectedEmail', value);\n\t}\n\tpublic getRedirectedUser()\n\t{\n\t\t\n\t\treturn localStorage.getItem('redirectedEmail');\n\t}\n\tpublic removeRedirectedUser()\n\t{\n\t\tlocalStorage.removeItem('redirectedEmail');\n\t}\n\tpublic setRegistrationStatus(value: string)\n\t{\n\t\tlocalStorage.setItem('userStatus', value);\n\t}\n\tpublic getRegistrationStatus()\n\t{\n\t\treturn localStorage.getItem('userStatus');\n\t}\n\tpublic setUserName(value: string)\n\t{\n\t\tlocalStorage.setItem('username', value);\n\t}\n\tpublic getUserName()\n\t{\n\t\tconst userName = localStorage.getItem('username');\n\t\tif (userName !== null && userName !== '' )\n\t\t{\n\t\t\treturn userName;\n\t\t}\n\t\telse\n\t\t\treturn null;\n\t}\n\tpublic clearStorage()\n\t{\n\t\tlocalStorage.clear();\n\t\tsessionStorage.clear();\n\t\tthis.ngf.clear()?.catch(error =>\n\t\t{\n\t\t\tthis.loggerService.error(error);\n\t\t});;\n\t\tlocalStorage.removeItem('userDetails');\n\t\tlocalStorage.removeItem('userDetailsLocation');\n\t\tlocalStorage.removeItem('language');\n\t\tlocalStorage.removeItem('tmhCorporateAdminDetails');\n\t\tlocalStorage.removeItem('userStatus');\n\t\tlocalStorage.removeItem('headerAlertBanner');\n\t\tthis.removeItem('new_business_account');\n\t\tthis.removeItem('isTmhCorporateAdmin');\n\t\tthis.removeItem('isPortalUser');\n\t}\n\tpublic setCustomerAemLabels(value: string)\n\t{\n\t\tlocalStorage.setItem('customerSupportLabels', value);\n\t}\n\tpublic getCustomerAemLabels()\n\t{\n\t\treturn localStorage.getItem('customerSupportLabels');\n\t}\n\tpublic setAssignedUserRedirect(value: string)\n\t{\n\t\tlocalStorage.setItem('assignedUserRedirect', value);\n\t}\n\tpublic getAssignedUserRedirect()\n\t{\n\t\treturn localStorage.getItem('assignedUserRedirect');\n\t}\n\tpublic removeAssignedUserRedirect() \n\t{\n\t\tlocalStorage.removeItem('assignedUserRedirect');\n\t}\n\tpublic setAssignedLocationFromRedirect(value: string)\n\t{\n\t\tlocalStorage.setItem('assignedLocationFromRedirect', value);\n\t}\n\tpublic getAssignedLocationFromRedirect()\n\t{\n\t\treturn localStorage.getItem('assignedLocationFromRedirect');\n\t}\n\tpublic removeAssignedLocationFromRedirect() \n\t{\n\t\tlocalStorage.removeItem('assignedLocationFromRedirect');\n\t}\n\tpublic getCompanyLocationList()\n\t{\n\t\treturn localStorage.getItem('companyLocationsList');\n\t}\n\tpublic setCompanyLocationList(value: GridData[])\n\t{\t\n\t\tlocalStorage.setItem('companyLocationsList', JSON.stringify(value));\n\t}\n\tpublic removeCompanyLocationList()\n\t{\n\t\treturn localStorage.removeItem('companyLocationsList');\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LoggerModule, NgxLoggerLevel } from 'ngx-logger';\nimport { HttpClientModule } from '@angular/common/http';\n\nimport { LoggerService } from './logger.service';\n\n@NgModule({\n\tdeclarations: [],\n\timports: [\n\t\tCommonModule,\n\t\tHttpClientModule,\n\t\tLoggerModule.forRoot({\n\t\t\tlevel: NgxLoggerLevel.DEBUG\n\t\t})\n\t],\n\tproviders: [LoggerService]\n})\nexport class LoggerServiceModule {}\n","import { Injectable, Inject } from '@angular/core';\nimport { expEnvironmentRef } from '../../injection-tokens/environment.injection-token';\nimport { EnvironmentRef } from '../../../environments/interfaces/';\n\nimport { NGXLogger } from 'ngx-logger';\n\n/* eslint-disable */\nlet LoggerObject: any;\n/* eslint-enable */\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class LoggerService \n{\n\tconstructor(\n private readonly logger: NGXLogger,\n @Inject(expEnvironmentRef) readonly environmentRef: EnvironmentRef\n\t) {}\n\n\tprivate checkToDisplayLogs(): boolean \n\t{\n\t\treturn !this.environmentRef.production;\n\t}\n\n\tpublic trace(traceMsg: string, traceObj?: typeof LoggerObject): void \n\t{\n\t\tif (this.checkToDisplayLogs()) \n\t\t{\n\t\t\tthis.logger.trace(traceMsg, traceObj ?? '');\n\t\t}\n\t}\n\n\tpublic debug(debugMsg: string, debugObj?: typeof LoggerObject): void \n\t{\n\t\tif (this.checkToDisplayLogs()) \n\t\t{\n\t\t\tthis.logger.debug(debugMsg, debugObj ?? '');\n\t\t}\n\t}\n\n\tpublic info(infoMsg: string, infoObj?: typeof LoggerObject): void \n\t{\n\t\tif (this.checkToDisplayLogs()) \n\t\t{\n\t\t\tthis.logger.info(infoMsg, infoObj ?? '');\n\t\t}\n\t}\n\n\tpublic log(logMsg: string, logObj?: typeof LoggerObject): void \n\t{\n\t\tif (this.checkToDisplayLogs()) \n\t\t{\n\t\t\tthis.logger.log(`${logMsg} ${logObj ?? ''}`);\n\t\t}\n\t}\n\n\tpublic warn(warnMsg: string, warnObj?: typeof LoggerObject): void \n\t{\n\t\tif (this.checkToDisplayLogs()) \n\t\t{\n\t\t\tthis.logger.warn(warnMsg, warnObj ?? '');\n\t\t}\n\t}\n\n\tpublic error(errorMsg: string, errorObj?: typeof LoggerObject): void \n\t{\n\t\tif (this.checkToDisplayLogs()) \n\t\t{\n\t\t\tthis.logger.error(errorMsg, errorObj ?? '');\n\t\t}\n\t}\n}\n","import { LoggerService } from './../logger/logger.service';\nimport { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable, NgZone } from '@angular/core';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class ScriptInjectorService\n{\n\n\tconstructor(\n @Inject(DOCUMENT) private readonly document: Document,\n private readonly zone: NgZone,\n private readonly loggerService: LoggerService\n\t){}\n\n\tpublic async load(id: string, src: string): Promise\n\t{\n\t\tconst scriptElement: HTMLScriptElement = this.buildScriptElement(id, src);\n\t\tconst responsePromise: Promise = this.addEventListenersToScriptElement(scriptElement);\n\t\tthis.addScriptElementToDocument(scriptElement);\n\t\treturn responsePromise;\n\t}\n\n\tprivate buildScriptElement(id: string, src: string): HTMLScriptElement\n\t{\n\t\tconst scriptElement: HTMLScriptElement = this.document.createElement(\n\t\t\t'script'\n\t\t);\n\t\tscriptElement.id = id;\n\t\tscriptElement.src = src;\n\t\tscriptElement.async = true;\n\t\treturn scriptElement;\n\t}\n\n\tprivate addEventListenersToScriptElement(scriptElement: HTMLScriptElement): Promise\n\t{\n\t\treturn new Promise((resolve, reject) =>\n\t\t{\n\t\t\tscriptElement.addEventListener('load', () =>\n\t\t\t{\n\t\t\t\tsetTimeout(resolve, 10);\n\t\t\t});\n\t\t\tscriptElement.addEventListener('error', (error) =>\n\t\t\t{\n\t\t\t\treject(error);\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate addScriptElementToDocument(scriptElement: HTMLScriptElement): void\n\t{\n\t\tthis.zone.runOutsideAngular(() =>\n\t\t{\n\t\t\tconst appendedScriptElement: HTMLScriptElement = this.document.head.appendChild(scriptElement);\n\t\t\tthis.loggerService.log('ScriptInjectorService Appended Script:', appendedScriptElement);\n\t\t});\n\t}\n\n}\n","import {\n\tAfterContentChecked,\n\tAfterViewChecked,\n\tDirective,\n\tElementRef,\n\tHostListener,\n\tNgModule,\n\tOnInit,\n\tRenderer2\n} from '@angular/core';\n\n@Directive({\n\tselector: '[tmhnaPortalTextAreaAutoSize]'\n})\nexport class TextAreaAutoSizeDirective\nimplements OnInit, AfterViewChecked, AfterContentChecked\n{\n\tconstructor(private readonly elementRef: ElementRef, private readonly renderer: Renderer2) {}\n\n @HostListener('ngModelChange', ['$event'])\n\tngModelChange() \n\t{\n\t\tthis.resizeTextArea();\n\t}\n\n @HostListener('window:resize', ['$event'])\n windowResize() \n {\n \tthis.resizeTextArea();\n }\n\n ngOnInit() \n {\n \tif (this.elementRef.nativeElement.scrollHeight) \n \t{\n \t\tsetTimeout(() => this.resizeTextArea());\n \t}\n }\n\n ngAfterViewChecked(): void \n {\n \tthis.resizeTextArea();\n }\n\n ngAfterContentChecked(): void \n {\n \tthis.resizeTextArea();\n }\n\n resizeTextArea() \n {\n \tthis.renderer.setStyle(this.elementRef.nativeElement, 'height', '0');\n \tthis.renderer.setStyle(\n \t\tthis.elementRef.nativeElement,\n \t\t'height',\n \t\tthis.elementRef.nativeElement.scrollHeight + 4 + 'px'\n \t);\n }\n}\n\n@NgModule({\n\tdeclarations: [TextAreaAutoSizeDirective],\n\texports: [TextAreaAutoSizeDirective]\n})\n \nexport class TextAreaAutoSizeDirectiveModule {}\n","\nimport { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { BehaviorSubject, concatMap, Observable, tap } from 'rxjs';\nimport { AuthFactory, AuthState, ProfileLocation, TMHCorporateAdminAuthState } from '../../components/auth';\nimport { ApiResponse } from '../../definitions/api-response.interface';\nimport { ApiService } from '../api/api.service';\nimport { LocalStorageService } from '../local-storage/local-storage.service';\nimport { ApplicationPath, ErrorMessage } from './shared-enums';\nimport { LoggedInUser, UnreadNotification, UnreadNotificationPayload, UserDetails } from './shared-interface';\nimport { SharedUtilService } from './shared-util.service';\nimport { SharedService } from './shared.service';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class SharedApiService \n{\n\tconstructor(private readonly apiService: ApiService,\n\t\tprivate readonly sharedService: SharedService,\n\t\tprivate readonly sharedUtilService : SharedUtilService,\n\t\tprivate readonly router: Router,\n\t\tprivate readonly localStorageService: LocalStorageService){}\n\tprivate readonly flagValue$: BehaviorSubject<{ tnc: boolean;policyFlag: boolean }> =\n\t\tnew BehaviorSubject<{ tnc: boolean;policyFlag: boolean }>({ tnc: false, policyFlag: false });\n\tget flagObservable$(): Observable<{ tnc: boolean;policyFlag: boolean }>\n\t{\n\t\treturn this.flagValue$;\n\t}\n\tget flagValue(): { tnc: boolean;policyFlag: boolean }\n\t{\n\t\treturn this.flagValue$.value;\n\t}\n\n\tprivate readonly isUnreadNotification$: BehaviorSubject =\n\t\tnew BehaviorSubject(false);\n\tget isUnreadNotificationObservable$(): Observable\n\t{\n\t\treturn this.isUnreadNotification$;\n\t}\n\tget isUnreadNotification(): boolean \n\t{\n\t\treturn this.isUnreadNotification$.value;\n\t}\n\tset updatedUnreadNotificationState(value: boolean)\n\t{\n\t\tthis.isUnreadNotification$.next(value);\n\t}\n\tuser: AuthState = AuthFactory.buildState();\n\t\n\tupdateLoggedInUserDetails() \n\t{\n\t\tthis.apiService.getLoggedInUserObs().subscribe({\n\t\t\tnext: (res: ApiResponse) => \n\t\t\t{\n\t\t\t\tconst user: AuthState = (res.data);\n\t\t\t\tif (user) \n\t\t\t\t{\n\t\t\t\t\tthis.mapUserSession(user);\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: () =>\n\t\t\t{\n\t\t\t\tthis.sharedUtilService.triggerErrorService(ErrorMessage.commonError, 100, '401');\n\t\t\t\tthis.sharedService.navigateMethod(this.router, ApplicationPath.authError);\n\t\t\t}\n\t\t});\n\t\tthis.apiService.getLoggedInUserLocations().subscribe({\n\t\t\tnext: (res: ApiResponse) => \n\t\t\t{\n\t\t\t\tconst locations:ProfileLocation = (res.data);\n\t\t\t\tif (locations)\n\t\t\t\t{\n\t\t\t\t\tthis.localStorageService.setLoggedInUserLocation(this.localStorageService.striginifyJSON(locations));\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: () =>\n\t\t\t{\n\t\t\t\tthis.sharedUtilService.triggerErrorService(ErrorMessage.commonError, 100, '401');\n\t\t\t\tthis.sharedService.navigateMethod(this.router, ApplicationPath.authError);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tgetUnreadNotificationsCount() \n\t{\n\t\tconst payload: UnreadNotificationPayload = {\n\t\t\tcontactGRID: '',\n\t\t\tlocations: [],\n\t\t\tportalUserID: '',\n\t\t\troles: []\n\t\t};\n\t\tthis.sharedService\n\t\t\t.getLoggedInUseLocationsIdsObs()\n\t\t\t.pipe(\n\t\t\t\ttap((locationIds: string[]) => \n\t\t\t\t{\n\t\t\t\t\tpayload.locations = locationIds;\n\t\t\t\t}),\n\t\t\t\tconcatMap(() => this.sharedService.getLoggedInUserObs()),\n\t\t\t\ttap((loggedInUser: LoggedInUser) => \n\t\t\t\t{\n\t\t\t\t\tif (loggedInUser)\n\t\t\t\t\t{\n\t\t\t\t\t\tpayload.roles = loggedInUser.roles ?? [];\n\t\t\t\t\t\tpayload.portalUserID = this.sharedService.emptyStringHandler(loggedInUser.userId);\n\t\t\t\t\t\tpayload.contactGRID = this.sharedService.emptyStringHandler( loggedInUser.contactGRID);\n\t\t\t\t\t\tif (!payload.contactGRID)\n\t\t\t\t\t\t\tpayload.contactID = this.sharedService.emptyStringHandler(loggedInUser.contactID);\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tconcatMap(() => this.apiService.getUnreadNotificationCount(payload))\n\t\t\t )\n\t\t\t.subscribe({\n\t\t\t\tnext: (res: ApiResponse) => \n\t\t\t\t{\n\t\t\t\t\tconst unreadNotifcation: UnreadNotification = (res.data);\n\t\t\t\t\tthis.updatedUnreadNotificationState = unreadNotifcation.count > 0;\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tgetLoggedInUserDetails() : Observable\n\t{\n\t\treturn this.apiService.getLoggedInUserObs();\n\t}\n\n\tgetLoggedInUserLocations() : Observable\n\t{\n\t\treturn this.apiService.getLoggedInUserLocations();\n\t}\n\tgetTmhCorporateAdminDetails() : Observable\n\t{\n\t\treturn this.apiService.getLoggedInTmhCorporateAdminDetails();\n\t}\n\tgetTmhCustomerSupportDetails() : Observable\n\t{\n\t\treturn this.apiService.getLoggedInTmhCustomerSupportDetails();\n\t}\n\n\tmapUserSession(user: AuthState)\n\t{\n\t\tthis.user = user;\n\t\tthis.localStorageService.setLoggedInUser(this.localStorageService.striginifyJSON(user));\n\t\tconst userProfileFlag:{ tnc: boolean ; policyFlag: boolean } = { tnc: false, policyFlag: false };\n\n\t\tuserProfileFlag.tnc = user.tncUpdated;\n\t\tuserProfileFlag.policyFlag = user.privacyPolicyUpdated;\n\t\tthis.flagValue$.next(userProfileFlag);\n\n\t\tthis.sharedService.getuserNameObs().subscribe((userName) => \n\t\t{\n\t\t\tthis.sharedService.updatedUserNameState = userName;\n\t\t});\n\t}\n\tmapTmhCorporateAdminUserSession(user: TMHCorporateAdminAuthState)\n\t{\n\t\tthis.localStorageService.setTmhCorporateAdminDetails(this.localStorageService.striginifyJSON(user));\n\t\tthis.sharedService.getuserNameObs().subscribe((userName) => \n\t\t{\n\t\t\tthis.sharedService.updatedUserNameState = userName;\n\t\t});\n\t}\n\tmapTmhCustomerSupportUserSession(user: TMHCorporateAdminAuthState)\n\t{\n\t\tthis.localStorageService.setTmhCustomerSupportDetails(this.localStorageService.striginifyJSON(user));\n\t\tthis.sharedService.getuserNameObs().subscribe((userName) => \n\t\t{\n\t\t\tthis.sharedService.updatedUserNameState = userName;\n\t\t});\n\t}\n\tmapUserLocations(locations: ProfileLocation)\n\t{\n\t\tthis.localStorageService.setLoggedInUserLocation(this.localStorageService.striginifyJSON(locations));\n\t}\n\t\n\tupdateUserSession(userDetails: UserDetails)\n\t{\n\t\tconst userProfile = this.localStorageService.getLoggedInUser();\n\t\tif (userProfile && !this.sharedService.isEmptyObject(userProfile))\n\t\t{\n\t\t\tconst user:LoggedInUser = this.localStorageService.parseJSON(userProfile);\n\t\t\tuser.firstName = userDetails.firstName;\n\t\t\tuser.lastName = userDetails.lastName;\n\t\t\tuser.jobTitle = userDetails.jobTitle;\n\t\t\tuser.phoneNumber = userDetails.phoneNumber;\n\t\t\t\n\t\t\tthis.localStorageService.setLoggedInUser(this.localStorageService.striginifyJSON(user));\n\t\t\t\t\t\n\t\t\tthis.sharedService.getuserNameObs().subscribe((userName) => \n\t\t\t{\n\t\t\t\tthis.sharedService.updatedUserNameState = userName;\n\t\t\t});\n\t\t}\n\t}\n}\n","export const mandatoryPermissionIds: string[] = [ \n\t'9e046657-660c-40a1-ab94-05b328a7af33',\n\t'b8be198e-e35d-4d39-86c9-71e07c81a2ac',\n\t'd4d7f746-7927-4d2e-98e1-a406add41167',\n\t'dc6cfc39-ffb1-44c3-a265-4ba0287a9382',\n\t'32d8d37d-2303-4f57-bcd5-6985b733c567',\n\t'9d116329-3e28-4f56-b6be-5287db26e3f4',\n\t'66db5601-da52-4b85-a045-3aecbe395b33' ];\n\nexport const individualUserRoleId: string = 'da3efd60-cc1f-492e-b0eb-7c7b50a3b357';\nexport const customerServiceEmail: string = 'customerservice@toyotatmh.com';\nexport const individualUserPermissionMessage = 'To enable this feature, please contact MyToyota Customer Service at customerservice@toyotatmh.com to migrate to a MyToyota Business Account.';\nexport const nullCheckValue='—';\nexport const companyAdminRoleId: string = 'eeb8928f-3ca2-4388-9acb-411e043806e7';\nexport const tmhCorporateAdminRoleId: string = '9fbdd4da-6f7d-4dbf-a0c1-e7d0095f82fd';\nexport const tmhCustomerSupportRoleId: string = '3eee9190-4a0d-457a-90ba-6ab51af9e763';\nexport const accountManagerRoleId: string = '557d334a-9edc-42a5-9fa4-bb87065ec17d';\nexport const defaultPage = 0;\nexport const permissionRequired: string = 'Permission Required';\nexport const canadaZipFormat = /^[A-Za-z]\\d[A-Za-z][ -]?\\d[A-Za-z]\\d$/;\nexport const uploadLimitText: string = 'You can invite up to 200 contacts in a single upload.';\nexport const uploadLimit: string = 'Upload Limit: ';\nexport const batteryStateOfChargeNullValue: string = 'N/A';\n\nexport const removePermissionIdsforCustomRole: string[] = [\n\t'5f754220-ba91-495f-8065-3b32c363558f',\n\t'f3364b91-d2c5-4a92-b3fe-d19480484dd4',\n\t'b78feec0-e49d-434e-a682-8d8a856135ba',\n\t'9a6385de-6cd3-4509-b915-a509ecd62b1b',\n\t'd51a4d83-2d6c-4539-815f-91fb29137539',\n\t'd50fa867-32c8-4c3f-b2c1-c6cc17cd0f8a',\n\t'5e4630ca-e14f-4fa0-b191-16b52d289097',\n\t'154b9fde-97c4-4a40-82c4-afd0dd2a5206',\n\t'35022a56-49b9-46b0-b9c5-6f8d0fd720d3',\n\t'bb95f4cf-bd37-4f50-be9e-53dd0efa9869'\n];\n\nexport const idValuePairs = {\n\t'23b780e9-5289-4089-819f-dba91259eaa1': 'phoneNumber' \n};\n","/* eslint-disable max-lines */\n\nexport enum CommonIcons {\n exclamation = 'exclamationIcon',\n more = 'moreIcon',\n action = 'action',\n telematicsIcon = 'telematicsIcon',\n moreIconDisabled = '/assets/moreIconDisabled.svg'\n}\nexport enum UserStatus {\n active = 'active',\n inactive = 'inactive',\n pending = 'pending',\n failed = 'failed',\n ssoFailure = 'ssoFailure'\n}\n\nexport enum LanguageCode {\n default = 'en-US'\n}\n\nexport enum DateFormat {\n default = 'MM/dd/yyyy'\n}\nexport enum SortOrder {\n desc = 'desc',\n asc = 'asc',\n}\nexport enum Notifications {\n all = 'All',\n offer = 'Offer',\n update = 'Update',\n action = 'Action',\n unread = 'unread',\n archived = 'archived',\n read = 'read'\n\n}\n\nexport enum CountryCode {\n unitedStates ='US',\n canada = 'CA',\n unitedStatesofAmerica = 'USA',\n canadaCountry = 'CAN',\n unitedStatesFull = 'UNITED STATES',\n canadaFull = 'CANADA'\n}\n\nexport enum RemovalReasons {\n scrapped = 'Scrap',\n stolen = 'Stolen',\n sold = 'Sold / Off Lease',\n exported = 'Exported out of US/ Canada'\n}\n\nexport enum CancelEquipmentButtons {\n no = 'No',\n yes = 'Yes'\n}\n\nexport enum RemovalSubmissionButton {\n submit = 'Submit',\n cancel = 'Cancel',\n yesSubmit = 'Yes, Submit',\n proceed = 'Proceed'\n}\n\nexport enum CssClass {\n btnSecondary = 'btn-secondary',\n btnBlack = 'btn-black',\n btnDanger = 'btn-danger',\n removeEquipmentTitle = 'removeEquipmentTitle',\n cancelRemoveEquipment = 'cancelRemoveEquipment',\n confirmRemoveEquipment = 'confirmRemoveEquipment',\n successErrorRemoveEquipment = 'successErrorRemoveEquipment',\n addTruckSuccessFailure = 'addTruckSuccessFailure',\n registerModal = 'register-modal',\n confirmRemoveLocation = 'confirmRemoveLocation',\n removeLocationTitle = 'removeLocationTitle',\n successErrorRemoveCompanyLocation = 'successErrorRemoveCompanyLocation',\n termsAndCondition = 'termsAndCondition',\n addNewLocationMsg = 'addNewLocationMsg',\n addNewEquipment = 'addNewEquipment',\n moveTruckSuccessFailure = 'moveTruckSuccessFailure',\n errorBusinessSection='error-business-section',\n businessRegistrationSubmitModalTitle = 'businessRegistrationSubmitModalTitle',\n businessRegistrationUploadModal='businessRegistrationUploadModal',\n uploadFileTitle = 'uploadFileTitle',\n vertexVerificationModal = 'vertexVerificationModal',\n companyNotFoundModal = 'companyNotFoundModal'\n}\n\nexport enum ConfirmRemovalButton {\n removeEquipment = 'Remove Equipment',\n cancel = 'Cancel',\n}\n\nexport enum EquipmentButtons {\n removeEquipment = 'Remove Equipment',\n moveEquipment = 'Move Equipment'\n}\n\nexport enum FileName {\n myfleet = 'MyFleet',\n userManagement = 'UserManagement',\n orderManagement = 'EquipmentOrderList',\n serviceManagement = 'Servicehistory',\n companyLocations = 'CompanyLocations',\n assignUserList= 'UserList',\n userLocationListUploadTemplate='ToyotaMaterialHandelling',\n inviteUserTemplate='Invite_Users_Template',\n addBulkEquipmentTemplate='Add_Bulk_Equipment_Template',\n myQuotesList = 'QuoteManagement',\n connectedEquipmentList = 'ConnectedEquipmentList',\n bulkequipmentReport = 'bulk_equipment_report',\n addBulkEquipmentToyotaDownloadReportTemplate = 'Add_Bulk_Equipment_Toyota_Download_Report_Template',\n addBulkEquipmentNonToyotaDownloadReportTemplate = 'Add_Bulk_Equipment_NonToyota_Download_Report_Template',\n}\n\nexport enum ConfirmLeavePageButtons {\n stay = 'Stay on Page',\n leave = 'Leave Page'\n}\nexport enum FilterOptions {\n location = 'Location',\n division = 'Division',\n group = 'Group',\n dateRange = 'Date Range',\n repairType = 'Repair Type',\n equipmentType = 'Equipment Type',\n equipmentClassification = 'Equipment Classification',\n status = 'Status',\n changeRequestType = 'Change Request Type',\n assignedLoc = 'Assigned Location',\n dateRangeMyFleet = 'Date Of First Use',\n telematicStatus = 'Telematic Status',\n role = 'Role',\n billingAddress = 'Billing Address',\n billingLocation = 'Billing Location',\n shippingLocation = 'Shipping Location',\n customDateRange = 'Custom Date Range',\n serviceAddress = 'Service Address',\n shippingAddress = 'Shipping Address'\n}\nexport enum OrderStatus {\n production = 'Unit in production',\n quality = 'Quality inspection completed',\n awaitingDealer = 'Unit awaiting shipment to dealer',\n order = 'Order Confirmed',\n orderProcess = 'Order in Process',\n scheduledProd = 'Scheduled for Production',\n unit = 'Unit shipped to dealer',\n delivery = 'Unit at dealership, awaiting delivery',\n delivered = 'Unit delivered',\n cancelled = 'Cancelled',\n orderProduction = 'In Production',\n shipped = 'Shipped',\n deliverStatus = 'Delivered'\n}\nexport enum MobileAssignedUsers {\n name = 'Name',\n email = 'Email',\n role = 'Role',\n jobTitle = 'Job Title',\n status = 'Status'\n\n}\nexport enum ExpansionCondition {\n showMore = 'Show More',\n showLess = 'Show Less',\n viewMore = 'View More',\n}\n\nexport enum BulkEquipmentTabLabels {\n addEquipment = 'Add Equipment',\n bulkEquipment = 'Upload Equipment',\n uploadLimitText = 'Upload Limit :',\n\n}\n\nexport enum SuccessFailureBtn {\n close = 'Close',\n addEqp = 'Add Another Equipment',\n addNewEqp = 'Add',\n confirmLocation = 'Confirm'\n}\nexport const countries: {label: string; value: string}[] = [\n\t{ label: 'Canada', value: 'CAN' },\n\t{ label: 'United States', value: 'USA' }\n];\nexport const states: {label: string; value: string}[] = [\n\t{ label: 'Alabama', value: 'AL' },\n\t{ label: 'Alaska', value: 'AK' },\n\t{ label: 'American Samoa', value: 'AS' },\n\t{ label: 'Arizona', value: 'AZ' },\n\t{ label: 'Arkansas', value: 'AR' },\n\t{ label: 'California', value: 'CA' },\n\t{ label: 'Colorado', value: 'CO' },\n\t{ label: 'Connecticut', value: 'CT' },\n\t{ label: 'Delaware', value: 'DE' },\n\t{ label: 'District of Columbia', value: 'DC' },\n\t{ label: 'Florida', value: 'FL' },\n\t{ label: 'Georgia', value: 'GA' },\n\t{ label: 'Guam', value: 'GU' },\n\t{ label: 'Hawaii', value: 'HI' },\n\t{ label: 'Idaho', value: 'ID' },\n\t{ label: 'Illinois', value: 'IL' },\n\t{ label: 'Indiana', value: 'IN' },\n\t{ label: 'Iowa', value: 'IA' },\n\t{ label: 'Kansas', value: 'KS' },\n\t{ label: 'Kentucky', value: 'KY' },\n\t{ label: 'Louisiana', value: 'LA' },\n\t{ label: 'Maine', value: 'ME' },\n\t{ label: 'Maryland', value: 'MD' },\n\t{ label: 'Massachusetts', value: 'MA' },\n\t{ label: 'Michigan', value: 'MI' },\n\t{ label: 'Minnesota', value: 'MN' },\n\t{ label: 'Mississippi', value: 'MS' },\n\t{ label: 'Missouri', value: 'MO' },\n\t{ label: 'Montana', value: 'MT' },\n\t{ label: 'Nebraska', value: 'NE' },\n\t{ label: 'Nevada', value: 'NV' },\n\t{ label: 'New Hampshire', value: 'NH' },\n\t{ label: 'New Jersey', value: 'NJ' },\n\t{ label: 'New Mexico', value: 'NM' },\n\t{ label: 'New York', value: 'NY' },\n\t{ label: 'North Carolina', value: 'NC' },\n\t{ label: 'North Dakota', value: 'ND' },\n\t{ label: 'Ohio', value: 'OH' },\n\t{ label: 'Oklahoma', value: 'OK' },\n\t{ label: 'Oregon', value: 'OR' },\n\t{ label: 'Pennsylvania', value: 'PA' },\n\t{ label: 'Puerto Rico', value: 'PR' },\n\t{ label: 'Rhode Island', value: 'RI' },\n\t{ label: 'South Carolina', value: 'SC' },\n\t{ label: 'South Dakota', value: 'SD' },\n\t{ label: 'Tennessee', value: 'TN' },\n\t{ label: 'Texas', value: 'TX' },\n\t{ label: 'Utah', value: 'UT' },\n\t{ label: 'Vermont', value: 'VT' },\n\t{ label: 'Virginia', value: 'VA' },\n\t{ label: 'Virgin Islands', value: 'VI' },\n\t{ label: 'Washington', value: 'WA' },\n\t{ label: 'West Virginia', value: 'WV' },\n\t{ label: 'Wisconsin', value: 'WI' },\n\t{ label: 'Wyoming', value: 'WY' }\n];\nexport const provinces = [\n\t{ label: 'Alberta', value: 'AB' },\n\t{ label: 'British Columbia', value: 'BC' },\n\t{ label: 'Manitoba', value: 'MB' },\n\t{ label: 'New Brunswick', value: 'NB' },\n\t{ label: 'Newfoundland and Labrador', value: 'NL' },\n\t{ label: 'Northwest Territories', value: 'NT' },\n\t{ label: 'Nova Scotia', value: 'NS' },\n\t{ label: 'Nunavut', value: 'NU' },\n\t{ label: 'Ontario', value: 'ON' },\n\t{ label: 'Prince Edward Island', value: 'PE' },\n\t{ label: 'Quebec', value: 'QC' },\n\t{ label: 'Saskatchewan', value: 'SK' },\n\t{ label: 'Yukon', value: 'YT' }\n];\n\nexport const jobTitle = [\n\t{ label: 'Purchasing', value: '02' },\n\t{ label: 'Finance/Accounting', value: '09' },\n\t{ label: 'Maintenance Manager', value: 'MM' },\n\t{ label: 'Operations Manager', value: 'OM' },\n\t{ label: 'Safety Mgmt', value: 'XD' },\n\t{ label: 'Plant Manager', value: 'Z1' },\n\t{ label: 'President/CEO', value: 'Z4' },\n\t{ label: 'Engineering Mgmt', value: 'Z7' },\n\t{ label: 'Fleet & Maint. Mgmt', value: 'ZF' },\n\t{ label: 'General Manager', value: 'ZG' },\n\t{ label: 'Logistics/SupplyChain', value: 'ZL' },\n\t{ label: 'Manager', value: 'ZM' },\n\t{ label: 'Owner / Proprietor', value: 'ZO' },\n\t{ label: 'Engineer', value: 'ZR' },\n\t{ label: 'Vice President', value: 'ZV' },\n\t{ label: 'Warehouse Manager', value: 'ZW' },\n\t{ label: 'Facilities Mgmt', value: 'ZX' }\n];\n\nexport enum UserRoles {\n defaultUser = 'd345b32d-642e-45d9-a5dd-f273b1e2203b',\n admin = 'eeb8928f-3ca2-4388-9acb-411e043806e7',\n};\n\nexport enum Icons {\n loaderWhite = 'assets/Loader2.gif',\n loaderOrange = 'assets/loader.gif',\n rightArrowOrange = 'assets/arrowRightOrange.svg',\n arrowRight = 'assets/arrowRight.svg',\n leftArrow = 'assets/arrowLeft.svg',\n noResult = '/assets/noresults.svg',\n filter = '/assets/filter.svg',\n email = 'assets/Email.png',\n phone = 'assets/phone.png',\n location = 'assets/location.png',\n storePartsPortalBanner = 'assets/Store_Parts_Portal_desktop.png',\n storePartsPortalBannerMobile = 'assets/Store_Parts_Portal_mobile.png',\n tayota360WarrantyPortal = 'assets/Warranty_Portal_Desktop.png',\n tayota360WarrantyPortalMobile = 'assets/Warranty_Portal_Mobile.png',\n unauthorized = '/assets/401_Unauthorized.png',\n pendingApproval = '/assets/Pending.png',\n userNotActivated = '/assets/User_not_activated.png',\n arrowDown = 'assets/arrowDown.svg',\n chevronDownDesk = 'assets/chevron-downDesk.svg',\n chevronDown = 'assets/chevron-down.svg',\n externalLink = 'assets/external_link.svg',\n trash = 'assets/trash.svg',\n deleteDisabled = 'assets/deleteDisabled.svg',\n noMessage = 'assets/NoMessage.svg',\n closePng = 'assets/close.png',\n greenDot = 'assets/green_dot.svg',\n notificationoffer = 'assets/offer.svg',\n activeIcon = 'assets/active.svg',\n actionIcon = 'assets/action.svg',\n moreIcon = '/assets/moreIcon.svg',\n moreIconDisabled = '/assets/moreIconDisabled.svg',\n desktopBanner = 'assets/desktopBanner.png',\n mobileBanner = 'assets/mobileBanner.png',\n userIcon = 'assets/userIcon.svg',\n equipmentIcon = 'assets/equipmentIcon.svg',\n noLocation = 'assets/unassignedLocation.svg',\n approveIcon = 'assets/approveIcon.svg',\n rejectIcon = '/assets/rejectIcon.svg',\n addLink = 'assets/addRole.svg',\n unreadNotifications = 'assets/unreadNotification.svg',\n trashIcon= 'assets/trashIcon.svg',\n trashDisabled = 'assets/trashDisabled.svg',\n accordionExpandedIcon = 'assets/accordion_expanded.svg',\n accordionCollapsedIcon = 'assets/accordion_collapsed.svg',\n toolTipCloseIcon = '/assets/tooltip-close-icon.svg',\n activeStatus = '/assets/status_active.svg',\n inActiveStatus = '/assets/status_inactive.svg',\n checkAcceptDisabled='/assets/check-accept-disabled.svg',\n closeRejectDisabled='/assets/close-reject-disabled.svg',\n editCompanyDetail='assets/edit.svg',\n editCompanyDetailDisabled='assets/editDisabled.svg',\n uploadFile='assets/uploadFile.svg',\n congratulations = 'assets/congratulations.svg',\n apiIssue='assets/apiIssue.svg',\n myInsightsLogo='assets/myInsightsLogo.svg',\n uploadLocationList='assets/uploadLocationList.svg',\n basicDevice='assets/basicDevice.svg',\n impactSensor = 'assets/impact_sensor.svg',\n uploadDisabled= 'assets/uploadDisabled.svg',\n dragDropIcon = 'assets/download.svg',\n checkGreen = 'assets/checkGreen.svg',\n actionRed = 'assets/actionRed.svg',\n keyHours = 'assets/key-hours.svg',\n vehicleIcon = 'assets/vehicleMarker.svg',\n assignedLocationPin = 'assets/orangeMarker.svg',\n recenter = 'assets/recenter.svg',\n mapError = 'assets/mapErrorIcon.svg',\n noErrorCodes = 'assets/No_errorcodes_icon.svg',\n currentStatusIcon = 'assets/checkbox_forklift.png',\n\tgreyLine= 'assets/grey_Rectangle.png',\n\tdeliveredStatusIcon = 'assets/line_forklift.png',\n\tblueLine = 'assets/blue_rectangle.png',\n\tnotDeliveredIcon = 'assets/forklift.png',\n noConnectedDevicesFound = '/assets/noConnectedDevicesFound.svg',\n chevronRightBlue = '/assets/chevron-right.svg',\n errorIcon = '/assets/errorIcon.svg',\n pdfIcon = '/assets/myservice_pdf.svg',\n wifiOrange = 'assets/Telematics.svg',\n wifigrey = 'assets/wifi_grey.svg',\n}\nexport enum AltText{\n editAdmingCompanyDetail='Edit Company Details',\n uploadFile='Upload File'\n}\nexport enum BusinessAccountCategory{\n date='date',\n primary='primary',\n editData='editData',\n multiline='multiline',\n uploadFile='uploadFile',\n button='button'\n\n}\nexport enum SuccessMessage {\n locationAccessUpdate = 'Location access request permission changed successfully.',\n}\n\nexport enum ErrorMessage {\n newEquipmentNoDataTooltip = 'No equipment orders in specific status.',\n noLocations= 'You have not been assigned to any location.',\n approveUserErrorMsg = 'Server Error. Please try again.',\n fleetWidgetFailureError = 'Failed to load, please refresh the page.',\n unauthorizedError = '401 Unauthorized',\n saveUserError = 'Unfortunately we are having trouble connecting systems. Please try again.',\n commonError = 'Internal Server Error.',\n apiErrorMessage = 'Unfortunately, we are unable to process your request. Please try again or contact MyToyota Customer Service at customerservice@toyotatmh.com if the issue persists.',\n fleetMoveEquipmentFleetManagedLocation = 'Toyota Material Handling Fleet Services manages this location. Please contact Toyota Customer Service to request your equipment to be moved to a new location.',\n fleetMoveEquipmentAlreadyRequested = 'Equipment already has a pending request. Please check the VIN on the Change Requests table on the MyFleet page.',\n furtherActionsContactMessage='For further actions, please contact your admin at $token',\n productionSupport='API error, please contact production support team.',\n vinAlreadyExists='VIN/Equipment already exist.',\n vinExistsInAnotherLocation='VIN found at another location.',\n registration504Error = 'Sorry! We have encountered an issue on our side. Please try again. If the problem continues please contact Toyota Customer Service at customerservice@toyotatmh.com',\n lastTenErrorcodesEmptyData = 'There are currently no reported error codes on this equipment.',\n fleetaccountClassificationError='Sorry, an issue has occurred which requires your help. Please contact Toyota Customer Service to complete this action.',\n fleetToNonfleetError='Toyota Material Handling Fleet Services manages this location. Please contact Toyota Customer Service to request your equipment to be added to a new location.',\n noAssociatedResultsFoundText = 'No associated groups found',\n myinsightsDownloadError = 'Unable to download table due to connection error. Please try again later',\n userStatusUpdateError='We encountered an error. Please retry your action.',\n shippingListErrorMessage = 'Details not available at this time, Please return later',\n inviteUserBulkUploadApiFailure = 'An unexpected error occurred. Please try again later.',\n invalidEmailFormat = 'Invalid email format.',\n companyNotFoundError = 'Company not found',\n};\n\nexport enum WarningMessage {\n max40CharactersLimit = 'Maximum 40 characters allowed.',\n}\n\nexport enum PermissionCategory {\n myFleet = 'FLEET_MAIN',\n equipmentDetails = 'EQUIPMENT_DETAILS',\n rolesPermissions = 'ROLES_PERMISSIONS',\n orderManagement = 'ORDER_MANAGEMENT',\n userManagement = 'USER_MANAGEMENT',\n serviceManagement = 'SERVICE_MANAGEMENT',\n dashBoard = 'DASHBOARD',\n finance = 'FINANCE',\n accountSettings = 'ACCOUNT_MANAGEMENT',\n locationManagement = 'LOCATION_MANAGEMENT',\n myQuote = 'MY_QUOTE',\n myInsights = 'MY_INSIGHTS_MAIN',\n notification = 'NOTIFICATION'\n}\nexport enum PermissionDefault {\n viewDetails = 'VIEW_DETAILS',\n viewMyFleetDetails = 'VIEW_MYFLEET_DETAIL',\n viewOrderManagementPage = 'VIEW_ORDER_MNGMENT_PAGE',\n viewOrderDetailPage = 'VIEW_ORDER_DETAIL',\n viewUserManagement = 'VIEW_USER_MANAGEMENT_PAGE',\n viewUserDetail = 'USER_DETAILS_PAGE',\n viewApproveUser = 'VIEW_APPROVE_NEW_USER',\n viewServiceManagement = 'VIEW_SERVICE_CONTENT',\n viewDashboard = 'VIEW_DASHBOARD',\n viewFinance = 'VIEW_FINANCE_PAGE',\n viewAccountManagement = 'VIEW_OPT_ACCOUNT_SETTING',\n viewLocationManagement = 'VIEW_OPT_LOCATION_MANAGEMENT',\n viewLocationDetails = 'VIEW_LOCATION_DETAILS_PAGE_COMPANY_PROFILE',\n viewAddLocation = 'VIEW_OPT_ADD_NEW_LOCATION_PAGE',\n viewMyQuote = 'VIEW_OPT_MY_QUOTE',\n viewMyInsights = 'VIEW_MYINSIGHTS_MAIN',\n viewAddUser = 'ADD_NEW_USERS_PAGE',\n viewNotification = 'VIEW_OPT_MY_NOTIFICATION',\n viewDomainManagement = 'VIEW_DOMAIN_TAB',\n}\n\nexport enum PermissionActions {\n buyParts = 'BUY_PARTS',\n serviceButton = 'REQUEST_SERVICE_BUTTON',\n viewOemTab = 'VIEW_OEM_TAB',\n viewMyInsights = 'VIEW_MYINSIGHTS_TAB',\n viewFinancing = 'VIEW_FINANCE_TAB',\n viewServicing = 'VIEW_SERVICE_TAB',\n orderDetailsLink = 'LINK_ORDER_DETAIL_ORDER',\n equipmentDetailsLink = 'LINK_EQUIP_DETAIL_ORDER',\n viewOrderManagementPage = 'VIEW_ORDER_MNGMENT_PAGE',\n moveRemoveEquipment = 'REMOVE_MOVE_EQUIPMENT',\n viewServiceManagement = 'VIEW_SERVICE_CONTENT',\n viewFilterServiceWidgets = 'VIEW_FILTER_WIDGET',\n viewServiceHistoryTable = 'VIEW_SERVICE_TABLE',\n viewServiceOrderDetails = 'VIEW_SERVICE_DETAIL',\n addMoveRemoveEquipment = 'ADD_REMOVE_MOVE_EQUIPMENT',\n linkToEquipmentDetails = 'LINK_TO_EQUIPMENT_DETAILS',\n userDetailLink = 'LINK_USER_DETAIL_PAGE',\n approveUserLink = 'LINK_APPROVE_USER_PAGE',\n serviceOrderLink = 'LINK_SERVICE_DETAILS_PAGE',\n viewFleetWidget = 'VIEW_FLEET_WIDGET',\n viewDealerWidget = 'VIEW_DEALER_WIDGET',\n viewEquipmentOrderWidget = 'VIEW_EQUIP_ORDER_WIDGET',\n serviceButtonDashboard = 'VIEW_SERVICE_BTN',\n viewOptDashbaord='VIEW_OPT_DASHBOARD',\n viewEquipmentOrderDetails='LINK_TO_EQUIP_ORDER_DETAILS',\n viewEquipmentDetailsDashboard='LINK_TO_EQUIP_DETAILS_DASHBOARD',\n viewProfileDetails='VIEW_PROFILE_ACCOUNT_SETTING',\n viewCompanyDetails='VIEW_COMPANY_PROFILE_ACCOUNT_SETTING',\n addRemoveButtonCompanyProfile = 'ADD_REMOVE_LOCATION_BTN_COMPANY_PROFILE',\n downloadBtnCompanyProfile = 'DOWNLOAD_BTN_COMPANY_PROFILE',\n linkToLocationDetails = 'LINK_TO_LOCATION_DETAILS_COMPANY_PROFILE',\n assignUsersLocationDetails = 'ASSIGN_USERS_BTN_LOCATION_DETAILS',\n downloadBtnLocationDetails = 'DOWNLOAD_BTN_LOCATION_DETAILS',\n removeLocationBtnLocationDetails = 'REMOVE_LOCATION_BTN_LOCATION_DETAILS',\n userProfileDisable = 'USER_PROFILE_DISABLE',\n addLocationDisable = 'ADD_LOCATION_DISABLE',\n disableAssignedLocationsEllipsis = 'ELLIPSES_DISABLE',\n disableRoleStatusDropdown = 'ROLE_STATUS_DROPDOWN_DISABLE',\n disableAssignUnassignLocation = 'ASSIGN_UNASSIGN_LOCATION_DISABLE',\n disableAssignLocationCheckbox = 'CHECKBOXES_DISABLE',\n disableSaveChangesBtn = 'SAVE_CHANGES_BUTTON_DISABLE',\n addUserButtonDisable = 'ADD_USER_BUTTON_DISABLE',\n serviceButtonDisable = 'SERVICE_BTN_DISABLE',\n addEquipmentEllipsisDisable = 'ADD_EQUIP_ELLIPSES_DISABLE',\n contactFormDisable = 'CONTACT_FORM_DISABLE',\n buyPartsReqServiceDisable = 'BUY_PARTS_REQ_SERVICE_DISABLE',\n moveRemoveEquipDisable = 'REMOVE_MOVE_EQUIP_DISABLE',\n requestServiceBtnDisable = 'REQUEST_SERVICE_BUTTON_DISABLE',\n approveRejectBtnDisable = 'APPROVAL_REJECTION_BUTTON_DISABLE',\n accessTableDropdownCheckboxDisable = 'DROPDOWN_CHECKBOXES_ACCESS_TABLE_DISABLE',\n userlistStatusDropdownDisable = 'STATUS_DROPDOWN_DISABLE',\n viewDomain = 'VIEW_DOMAIN_TAB',\n viewEditDomain = 'MODIFY_DOMAIN_INFO',\n viewAddDomain = 'ASSIGN_DOMAIN',\n viewToggleLocation = 'TOGGLE_LOCATION_PERMISSIONS_BTN',\n viewAddLocationModal = 'ASSIGN_LOCATION_PERMISSIONS_BTN',\n disableToggleLocation = 'TOGGLE_LOCATION_PERMISSIONS_BTN_DISABLE',\n}\n\nexport enum DefaultValue {\n skip = 0,\n limit = 50,\n notificationLimit = 7\n}\n\nexport enum FieldName {\n email = 'email',\n serviceDate = 'serviceDate',\n workOrderNumber = 'workOrderNumber',\n cost = 'cost',\n status = 'status',\n invoiceNumber = 'invoiceNumber',\n name = 'name',\n vin = 'vin',\n lastLogin = 'lastLogin',\n orderNumber = 'orderNumber',\n truckNumber = 'truckNumber',\n equipmentVin = 'equipmentVin',\n orderDate = 'orderDate',\n eta = 'ETA',\n dueDate = 'dueDate',\n locationAddress = 'locationAddress',\n assignedLocations = 'assignedLocations',\n id = 'id',\n userId= 'userId',\n customerId = 'customerId',\n location = 'location',\n crmOppNumber = 'crmOppNumber',\n assignedLocation = 'assignedLocation',\n equipmentType = 'equipmentType',\n manufacturer = 'manufacturer',\n locationId='locationID',\n modelID='modelID',\n assetNumber='assetNumber',\n dateOfFirstUse='dateOfFirstUse',\n changeRequestId='changeRequestID',\n date='date',\n telematicsStatus = 'telematicsStatus',\n lastTimestamp = 'lastTimestamp',\n billingAddress='billingAddress',\n dealership='dealership',\n quoteId='quoteId',\n billingLocationAddress = 'billingAddress',\n shippingLocationAddress = 'shippingAddress',\n dashboardBillingLocationAddress = 'billingLocationAddress',\n dashboardShippingLocationAddress = 'shippingLocationAddress',\n billingLocation = 'billingLocation',\n shippingLocation = 'shippingLocation',\n model = 'model',\n equipmentStatus = 'Status',\n creationDate='creationDate',\n keyHours = 'keyHours',\n averageUtilization = 'averageUtilization',\n totalImpact = 'totalImpact',\n batteryStateOfCharge = 'batteryStateOfCharge',\n role = 'role'\n}\nexport enum OrderStatusHeader {\n pastDue = 'pastDue',\n open = 'open',\n upcoming = 'upcoming',\n paid = 'paid',\n all = 'all'\n}\n\nexport enum ToolTipMessages {\n dashboardOpenQuotesTooltip = 'Includes both Ready for Review and In Process quotes.',\n dashboardActiveEquipmentOrdersTooltip = 'Includes both In Process and In Production orders.',\n \n}\nexport const assignedHeaders= [ 'Name', 'Email', 'Role', 'Job Title', 'Status' ];\nexport enum BreadCrumb {\n addNewLocation = 'Add New Location',\n locationDetails = 'Location Details',\n addNewDomain = 'Add New Domain',\n editDomain = 'Edit Domain'\n}\n\nexport enum FleetListTabHeader{\n fleetList = 'Fleet List',\n changeRequest = 'Change Request'\n}\n\nexport enum CompanyLocationsTableHeader {\n locationLabel = 'Location Label',\n\t\taddress = 'Address',\n country = 'Country',\n\t\tassignedUsers = 'Assigned Users',\n\t\tequipmentCount = 'Equipment'\n}\nexport enum AssignedUserTableHeader {\n name = 'Name',\n\t\temail = 'Email',\n\t\trole = 'Role',\n\t\tjobTitle = 'Job Title',\n\t\tstatus = 'Status'\n}\nexport enum BulkEquipmentHeader {\n model = 'Model',\n serial = 'Serial',\n make = 'Make',\n currentlocation = 'Current Location',\n targetLocation = 'Target Location',\n status = 'Status',\n message = 'Message'\n}\n\nexport enum AddBulkEquipmentDownloadReportTemplate {\n model = 'Model',\n serial = 'Serial',\n location = 'Location ID',\n status = 'Status',\n additionalInformation = 'Additional Information',\n}\nexport enum AddBulkEquipmentNonToyotaDownloadReportTemplate {\n model = 'Model',\n serial = 'Serial',\n location = 'Location ID',\n make = 'Make',\n makeYear = 'Make Year',\n equipmentClassification = 'Equipment Classification',\n status = 'Status',\n additionalInformation = 'Additional Information',\n}\nexport enum RemoveBulkEquipmentHeader {\n model = 'Model',\n serial = 'Serial',\n make = 'Make',\n reason = 'Reason',\n status = 'Status',\n message = 'Message'\n}\nexport enum UseVerifiedOrEditAddress {\n useVerifiedAddress = 'Use Verified Address',\n editAddress = 'Edit Address',\n cssClass = 'confirmVerifiedAddress',\n label = 'Verify Your Address'\n}\nexport enum PortalRole {\n companyAdmin = 'Company Admin'\n}\nexport enum ModalButtonId {\n agree = '3311f022-ae28-4fe6-a0ee-9163b05e2547',\n cancel = '74d837c6-b5c4-40e5-a91f-5aee33dbdafa',\n proceed = '6cb83409-79b9-480e-993a-ad792ca353bd',\n save = 'b2d709e2-56ef-48d0-9ba1-b8968de92c36',\n removeLocation = '82de5a0f-2963-4e89-9727-72596cabca2c',\n manageFleet = 'bd505b2d-0ceb-4492-b97b-849f1836d168',\n close = 'fb5f3cbe-5163-11ee-be56-0242ac120002'\n}\nexport enum MyFleetTableLabels {\n equipmentVin = 'equipmentVin',\n modelID = 'modelID',\n assetNumber = 'assetNumber',\n equipmentType = 'equipmentType',\n manufacturer = 'make',\n dateOfFirstUse = 'dateOfFirstUse',\n assignedLocation = 'assignedLocation',\n telematicsStatus = 'telematicsStatus',\n fleetType = 'fleetType'\n}\nexport enum TermsAndPrivacy {\n termsAndConditions = 'Terms & Conditions of Use',\n privacyPolicy = 'Privacy Policy'\n}\nexport enum RegistrationStatus {\n approved = 'approved',\n inProgress = 'in_progress'\n}\nexport enum RegistrationRequestType {\n businessAdminUser = 'BUSINESS_ADMIN_USER'\n}\nexport const serviceCampaignClass = 'service-campaign-link';\n\nexport enum ApplicationPath{\n authentication = '/auth',\n dashboard = '/app/dashboard',\n myFleet = '/app/myfleet',\n orderManagement = '/app/order-management',\n serviceManagement = '/app/service-management',\n userManagement = '/app/user-management',\n userManagementApprove = '/app/user-management/approve',\n userManagementAddUser = '/app/user-management/adduser',\n accountSettingsCompany = '/app/location-management',\n accountSettingsLocation = '/app/location-management/location',\n accountSettingsAddLocation = '/app/location-management/add-new-location',\n accountSettingsDomain = '/app/account-settings/domain',\n accountSettingsAddDomain = '/app/account-settings/add-domain',\n accountSettingsEditDomain = '/app/account-settings/edit-domain',\n authError = '/app/error',\n unAuthError = '/error',\n confirmation = '/confirmation',\n pendingBusinessApproval = '/pending-approval',\n customerportal='/customerportal',\n businessAccountRequest = '/businessaccountrequest',\n customerSupport = '/customer-support'\n}\n\nexport enum HeaderStateField {\n serviceDate = 'Service Date',\n dateOfFirstUse ='Date of First Use',\n orderDate = 'Order Date',\n name = 'Name',\n cost = 'Cost',\n paymentStatus = 'Payment Status',\n invoiceNumber = 'Invoice',\n date = 'Date',\n telematicsStatus = 'Connected',\n orderNumber = 'Order #'\n}\n\nexport enum ButtonSize {\n small = 'small',\n medium = 'medium',\n large = 'large'\n}\n\nexport enum ButtonStyle {\n primary= 'primary',\n secondary = 'secondary',\n destructive = 'destructive',\n secDestruct = 'secondary-destructive',\n tertiary = 'tertiary',\n link = 'link',\n linkPrimary = 'link-primary'\n}\n\nexport enum ButtonPosition {\n left = 'left',\n right = 'right',\n none = 'none'\n}\n\nexport enum FormattingName {\n companyName = 'companyName',\n addressOne = 'addressLine1',\n addressTwo = 'addressLine2',\n city = 'city',\n accountName = 'accountName'\n}\n\nexport enum ChangeRequestType {\n add = 'add',\n move = 'move',\n remove = 'remove'\n}\nexport enum UserType {\n generalUser = 'GENERAL_USER',\n individualUser = 'INDIVIDUAL_USER',\n businessAdminUser = 'BUSINESS_ADMIN_USER'\n}\n\nexport enum MyFleetTelematicsStatus {\n connected = 'connected',\n notConnected = 'Not Connected',\n notConnectedCamleCase = 'notConnected',\n notConnectedWithoutSpace = 'NotConnected',\n null = 'null',\n downloadNull = 'Unable to retrieve information'\n}\nexport enum MyQuotesStatusHeader {\n all = 'all',\n quoteinProcess = 'quoteinProcess',\n quoteAccepted = 'quoteAccepted',\n ordered = 'ordered',\n expired = 'expired',\n readyForReview = 'readyForReview'\n}\nexport enum MyFleetStatusHeader {\n all = 'all',\n awaitingApproval = 'awaiting approval',\n cancelled = 'cancelled',\n approved = 'approved'\n}\nexport enum EllipsisOptions {\n editLocationLabel = 'Edit Location Label',\n makePrimaryLocation = 'Make Primary Location',\n removeLocation = 'Remove Location'\n}\n\nexport enum ApiResponseStatus{\n success='success',\n error='error'\n}\nexport enum MyInsightsAccordionType {\n helpGuide = 'MyInsights Help Guide',\n telematicsDocumentation = 'MyInsights Telematics Legal Documentation'\n}\nexport enum SubscriptionType {\n desktop = 'subscriptionsDesktop',\n mobile = 'subscriptionsMobile'\n}\n\nexport enum IsRequestSubmittedForReview {\n isRequestSubmittedForReview = 'isRequestSubmittedForReview'\n}\n\nexport enum BooleanValues {\n true = 'true',\n false = 'false'\n}\n\nexport enum IdleUserTimes {\n idleTime = 600000,\n countdownTime = 5000\n}\n\nexport enum MaxDeviceWidth {\n mobile = 768,\n}\n\nexport const skipAuthUrls = ['/contact-us'];\n\nexport enum InviteUserheader {\n id = 'Id',\n email = 'Email',\n phoneNumber = 'PhoneNumber',\n firstName = 'FirstName',\n lastName = 'LastName',\n jobTitleDescription = 'JobTitleDescription',\n jobTitle = 'Job Title',\n roleName = 'RoleName',\n roles = 'Roles',\n company = 'Company',\n portalApprovedCustomerID = 'PortalApprovedCustomerID',\n contactID = 'ContactID',\n tcDate = 'TcDate',\n privacyDate = 'PrivacyDate',\n portalApproveUserDate = 'PortalApproveUserDate',\n userStatus = 'UserStatus',\n lastLogin = 'Last Login',\n portalApprovedCustomerIDCount = 'Portal Approved CustomerID Count',\n name = 'Name',\n rootLocationGRID = 'RootLocationGRID',\n primaryLocationGRID = 'PrimaryLocationGRID',\n adminLocationID = 'AdminLocationID',\n topLevelGrid = 'TopLevelGrid',\n isBusinessAccount = 'IsBusinessAccount',\n userStatusUpdateState = 'UserStatusUpdateState',\n active = 'Active',\n success = 'Success',\n errors = 'Errors',\n}\n\nexport enum InviteBulkUserheader {\n email = 'Email ID',\n firstName = 'FirstName',\n lastName = 'LastName',\n phoneNumber = 'PhoneNumber',\n roleName = 'Role Name',\n jobTitle = 'Job Title',\n locationId = 'Location ID',\n isValid = 'IsValid',\n sendEmailInvite = 'Send Email Invite',\n errors = 'Errors'\n}\n\nexport enum DashboardCardTooltip { \n openQuotes = 'Open Quotes',\n activeEquipmentOrders = 'Active Equipment Orders',\n}\nexport enum ByParts {\n buyParts = 'Buy Parts',\n}\n\nexport enum VerifyEquipmentCodes {\n equipmentNotFound = 'EQUIPMENT_NOT_FOUND',\n equipmentVerified = 'EQUIPMENT_VERIFIED',\n equipmentAlreadyExist = 'EQUIPMENT_ALREADY_EXISTS',\n equipmentAtAnotherLocation = 'EQUIPMENT_FOUND_AT_DIFFERENT_LOCATION',\n nonToyotoequipmentVerified = 'ADD_NON_TOYOTA_EQUIPMENT',\n issueType = 'TOYOTA_EQUIPMENT_NOT_FOUND',\n equipmentAtAnotherCompany = 'EQUIPMENT_FOUND_AT_DIFFERENT_COMPANY'\n}\n\nexport enum UserDetailsConstant {\n location = 'location',\n address = 'address',\n locationid = 'locationid',\n checked = 'checked',\n disable = 'disable',\n companyAdminRole = 'Company Admin',\n statusInactive = 'inactive',\n statusActive = 'active',\n updateValue = 'updateValue',\n assigned = 'Assigned',\n unassigned = 'Unassigned',\n name = 'Name',\n updatedRole = 'Updated Role',\n updatedStatus = 'Updated Status',\n submit = 'Submit',\n changed = 'changed'\n\n}\n\nexport enum UserFilterConstants {\n allLocation = 'all',\n assignedLocation = 'assigned',\n unassignedLocation = 'unassigned'\n}\n\nexport enum DropDownOption {\n all = 'all',\n fleet = 'Fleet',\n self = 'self',\n customer = 'Customer'\n}\n\nexport enum TermsAndConditionPrivacyPolicyInfoBannerText{\n tandCInfoBannerText = 'Please scroll through and read the Terms & Conditions of Use, then agree to them by checking the box to continue using the MyToyota Portal',\n privacyPolicyInfoBannerText = 'Please scroll through and read the Privacy Policy, then agree to them by checking the box to continue using the MyToyota Portal'\n}\n","/* eslint-disable max-lines */\nimport { Injectable } from '@angular/core';\nimport { Control, ControlType, KngCardListState, KngHeaderObjState, KngFilterState, KngHeaderNavMenuOption, ScreenView, SortOrder, GridValue, CtaList, AprRejBtnType, KngButtonState } from 'kinetic-angular';\nimport { Icons } from './shared-enums';\nimport { nullCheckValue } from './shared-constants';\nimport { Image } from './shared-interface';\nimport { GlobalHeader } from '../../components/main-entry/definitions';\nimport { UserDetailMiddle } from '../../components/user-management/sub-modules/user-details/definitions/user-detail.interface';\nimport { SharedFilterFactory } from './shared-filter.factory';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class SharedFactoryDataService \n{\n\tpublic static getAccordionCollapsedIcon() \n\t{\n\t\treturn {\n\t\t\ticonPath: '/assets/accordion_collapsed.svg',\n\t\t\taltText: 'Collapsed'\n\t\t};\n\t}\n\tpublic static getAccordionExpandedIcon() \n\t{\n\t\treturn {\n\t\t\ticonPath: '/assets/accordion_expanded.svg',\n\t\t\taltText: 'Expanded'\n\t\t};\n\t}\n\tpublic static getSearchIcon() \n\t{\n\t\treturn { iconPath: '/assets/search.svg', altText: '' };\n\t}\n\tpublic static getSearchCrossIcon() \n\t{\n\t\treturn {\n\t\t\ticonPath: '/assets/search-cross-icon.svg',\n\t\t\taltText: 'Clear Search'\n\t\t};\n\t}\n\tpublic static getServiceManagementStatusCount() \n\t{\n\t\treturn [\n\t\t\t{\n\t\t\t\theader: 'all',\n\t\t\t\tlabel: 'All',\n\t\t\t\tamount: 0\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: 'pastDue',\n\t\t\t\tlabel: 'Past Due',\n\t\t\t\tamount: 0\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: 'upcoming',\n\t\t\t\tlabel: 'Upcoming',\n\t\t\t\tamount: 0\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: 'open',\n\t\t\t\tlabel: 'Open',\n\t\t\t\tamount: 0\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: 'paid',\n\t\t\t\tlabel: 'Paid',\n\t\t\t\tamount: 0\n\t\t\t}\n\t\t];\n\t}\n\tpublic static getInputControlTypeInputOne() \n\t{\n\t\treturn [\n\t\t\tnew Control({\n\t\t\t\tid: '9e42775d-7ea0-4dc0-ab16-7fb9d013ac31',\n\t\t\t\tlabel: '',\n\t\t\t\ttype: ControlType.input,\n\t\t\t\tinputPlaceholderText: '',\n\t\t\t\tinputIcon: '',\n\t\t\t\toptions: [],\n\t\t\t\tvalue: ''\n\t\t\t})\n\t\t];\n\t}\n\tpublic static getInputControlTypeRadioOne() \n\t{\n\t\treturn [new Control({\n\t\t\tid: '9e42775d-7ea0-4dc0-ab16-7fb9d013ac31',\n\t\t\tlabel: '',\n\t\t\ttype: ControlType.radio,\n\t\t\tinputPlaceholderText: '',\n\t\t\tinputIcon: '',\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tlabel: '',\n\t\t\t\t\tvalue: '',\n\t\t\t\t\tchecked: false\n\t\t\t\t}\n\t\t\t],\n\t\t\tvalue: ''\n\t\t})];\n\t}\n\tpublic static getFooterMenuDefault() \n\t{\n\t\treturn [\n\t\t\t{\n\t\t\t\tid: '',\n\t\t\t\tlabel: '',\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: '',\n\t\t\t\tlabelValue: [],\n\t\t\t\turl: ''\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: '',\n\t\t\t\tlabel: '',\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: '',\n\t\t\t\tlabelValue: [],\n\t\t\t\turl: ''\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: '',\n\t\t\t\tlabel: '',\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: '',\n\t\t\t\tlabelValue: [],\n\t\t\t\turl: ''\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: '',\n\t\t\t\tlabel: '',\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: '',\n\t\t\t\tlabelValue: [],\n\t\t\t\turl: ''\n\t\t\t}\n\t\t];\n\t}\n\tpublic static getCtaListCancelApply() \n\t{\n\t\treturn [\n\t\t\t{\n\t\t\t\tid: '327147f4-c044-4799-8a5a-d075c619e41c',\n\t\t\t\tlabel: 'Cancel',\n\t\t\t\tclassName: 'light',\n\t\t\t\tdisabled: false\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: '7eeaa3f0-b4f6-4142-8086-361298d75686',\n\t\t\t\tlabel: 'Apply',\n\t\t\t\tclassName: 'dark',\n\t\t\t\tdisabled: false\n\t\t\t}\n\t\t];\n\t}\n\tpublic static buildTableData(): KngCardListState \n\t{\n\t\treturn {\n\t\t\tview:\n\t\t\t\twindow.innerWidth >= 768\n\t\t\t\t\t? ScreenView.tableDesktop\n\t\t\t\t\t: ScreenView.tableMobile,\n\t\t\theader: [],\n\t\t\tlist: [],\n\t\t\tcardListGrayIcon: { url: '', alt: '' },\n\t\t\tcardListOrangeIcon: { url: '', alt: '' },\n\t\t\tcardListAccordionIcon: { url: '', alt: '' },\n\t\t\tactionOpsList: [],\n\t\t\tpageInfo: {\n\t\t\t\tpageSize: 0,\n\t\t\t\ttotalCount: 0\n\t\t\t},\n\t\t\terror: {\n\t\t\t\tmessage: '',\n\t\t\t\tmessageSubText: '',\n\t\t\t\ticon: Icons.noResult\n\t\t\t},\n\t\t\tloading: false,\n\t\t\thideSort: false\n\t\t};\n\t}\n\tpublic static buildGridData(): GridValue[] \n\t{\n\t\n\t\treturn [\n\t\t\t{\n\t\t\t\tvalues: [\n\t\t\t\t\t{ label: '', value: '', ctaList: [] },\n\t\t\t\t\t{ label: '', value: '', ctaList: [] },\n\t\t\t\t\t{ label: '', value: '', ctaList: [] },\n\t\t\t\t\t{ label: '', value: '', ctaList: [] }\n\t\t\t\t],\n\t\t\t\tid: '',\n\t\t\t\temail: '',\n\t\t\t\tstate: '',\n\t\t\t\tcompany: '',\n\t\t\t\troles: [],\n\t\t\t\tportalApprovedCustomerID: [],\n\t\t\t\tphoneNumber: '',\n\t\t\t\troleName: ''\n\t\t\t}\n\t\t];\n\t\t\n\t}\n\tpublic static buildTableDataAccordion(): KngCardListState \n\t{\n\t\treturn {\n\t\t\tview:\n window.innerWidth >= 768\n \t? ScreenView.accordionDeskTop\n \t: ScreenView.accordionMobile,\n\t\t\theader: [],\n\t\t\tlist: [],\n\t\t\tcardListGrayIcon: { url: '', alt: '' },\n\t\t\tcardListOrangeIcon: { url: '', alt: '' },\n\t\t\tcardListAccordionIcon: { url: '', alt: '' },\n\t\t\tactionOpsList: [],\n\t\t\tpageInfo: {\n\t\t\t\tpageSize: 0,\n\t\t\t\ttotalCount: 0\n\t\t\t},\n\t\t\terror: {\n\t\t\t\tmessage: '',\n\t\t\t\tmessageSubText: '',\n\t\t\t\ticon: Icons.noResult\n\t\t\t},\n\t\t\tloading: true,\n\t\t\thideSort: false\n\t\t};\n\t}\n\tpublic static getDefaultSearchLocation() \n\t{\n\t\treturn {\n\t\t\taccordionIconExpanded: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t},\n\t\t\taccordionIconCollapsed: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t},\n\t\t\tlabel: 'Location',\n\t\t\tsearchPlaceholder: 'Search',\n\t\t\tsearchIcon: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t},\n\t\t\tnoResultsFoundLabel: 'No matching locations found',\n\t\t\tshowMore: '',\n\t\t\tshowLess: '',\n\t\t\terrorMessage: ''\n\t\t};\n\t}\n\tpublic static getDefaultDateRange() \n\t{\n\t\treturn {\n\t\t\taccordionIconExpanded: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t},\n\t\t\taccordionIconCollapsed: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t},\n\t\t\tlabel: '',\n\t\t\tvalues: [],\n\t\t\tcustomDateFromLabel: '',\n\t\t\tcustomDateToLabel: ''\n\t\t};\n\t}\n\tpublic static getDefaultKeyValueId() \n\t{\n\t\treturn {\n\t\t\tkey: '',\n\t\t\tvalue: '',\n\t\t\tid: ''\n\t\t};\n\t}\n\tpublic static getDivisionGroupFilter()\n\t{\n\t\treturn {\n\t\t\tlabel: '',\n\t\t\taccordionIconExpanded: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t},\n\t\t\taccordionIconCollapsed: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t},\n\t\t\tsearch: {\n\t\t\t\tplaceholder: '',\n\t\t\t\ticon: {\n\t\t\t\t\ticonPath: '',\n\t\t\t\t\taltText: ''\n\t\t\t\t}\n\t\t\t},\n\t\t\tnoResultsFoundLabel: '',\n\t\t\tshowMoreText: '',\n\t\t\tshowLessText: ''\n\t\t};\n\t}\n\tpublic static getKngFilterState(type: string): KngFilterState \n\t{\n\t\treturn {\n\t\t\tfilterData: {\n\t\t\t\theading: { label: '' },\n\t\t\t\tsections: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Date Range',\n\t\t\t\t\t\tcontrols: [\n\t\t\t\t\t\t\tnew Control({\n\t\t\t\t\t\t\t\tid: '9e42775d-7ea0-4dc0-ab16-7fb9d013ac31',\n\t\t\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\t\t\ttype: ControlType.radio,\n\t\t\t\t\t\t\t\tinputPlaceholderText: '',\n\t\t\t\t\t\t\t\tinputIcon: '',\n\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\t\t\t\t\tvalue: '',\n\t\t\t\t\t\t\t\t\t\tchecked: false\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tvalue: ''\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t],\n\t\t\t\t\t\taccordionCollapsedIcon: this.getAccordionCollapsedIcon(),\n\t\t\t\t\t\taccordionExpandedIcon: this.getAccordionExpandedIcon(),\n\t\t\t\t\t\tsearchIcon: this.getSearchIcon(),\n\t\t\t\t\t\tcrossIcon: this.getSearchCrossIcon(),\n\t\t\t\t\t\tcollapsed: true\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Location',\n\t\t\t\t\t\tcontrols: (type === 'input') ? this.getInputControlTypeInputOne() : this.getInputControlTypeRadioOne(),\n\t\t\t\t\t\taccordionCollapsedIcon: this.getAccordionCollapsedIcon(),\n\t\t\t\t\t\taccordionExpandedIcon: this.getAccordionExpandedIcon(),\n\t\t\t\t\t\tsearchIcon: this.getSearchIcon(),\n\t\t\t\t\t\tcrossIcon: this.getSearchCrossIcon(),\n\t\t\t\t\t\tcollapsed: false\n\t\t\t\t\t}\n\n\t\t\t\t],\n\t\t\t\tctaList: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: '327147f4-c044-4799-8a5a-d075c619e41c',\n\t\t\t\t\t\tlabel: 'Clear All',\n\t\t\t\t\t\tclassName: 'light',\n\t\t\t\t\t\tdisabled: true\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: '7eeaa3f0-b4f6-4142-8086-361298d75686',\n\t\t\t\t\t\tlabel: 'Apply',\n\t\t\t\t\t\tclassName: 'dark',\n\t\t\t\t\t\tdisabled: false\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\thidden: true\n\t\t};\n\t}\n\tpublic static getKngFilterStateForEquipmentOrder(type: string): KngFilterState \n\t{\n\t\treturn {\n\t\t\tfilterData: {\n\t\t\t\theading: { label: '' },\n\t\t\t\tsections: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Date Range',\n\t\t\t\t\t\tcontrols: [\n\t\t\t\t\t\t\tnew Control({\n\t\t\t\t\t\t\t\tid: '9e42775d-7ea0-4dc0-ab16-7fb9d013ac31',\n\t\t\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\t\t\ttype: ControlType.radio,\n\t\t\t\t\t\t\t\tinputPlaceholderText: '',\n\t\t\t\t\t\t\t\tinputIcon: '',\n\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\t\t\t\t\tvalue: '',\n\t\t\t\t\t\t\t\t\t\tchecked: false\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tvalue: ''\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t],\n\t\t\t\t\t\taccordionCollapsedIcon: this.getAccordionCollapsedIcon(),\n\t\t\t\t\t\taccordionExpandedIcon: this.getAccordionExpandedIcon(),\n\t\t\t\t\t\tsearchIcon: this.getSearchIcon(),\n\t\t\t\t\t\tcrossIcon: this.getSearchCrossIcon(),\n\t\t\t\t\t\tcollapsed: true\n\t\t\t\t\t},\n\t\t\t\t\tSharedFilterFactory.buildDivisionOrGroupSection(),\n\t\t\t\t\tSharedFilterFactory.buildDivisionOrGroupSection(),\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Location',\n\t\t\t\t\t\tcontrols: (type === 'input') ? this.getInputControlTypeInputOne() : this.getInputControlTypeRadioOne(),\n\t\t\t\t\t\taccordionCollapsedIcon: this.getAccordionCollapsedIcon(),\n\t\t\t\t\t\taccordionExpandedIcon: this.getAccordionExpandedIcon(),\n\t\t\t\t\t\tsearchIcon: this.getSearchIcon(),\n\t\t\t\t\t\tcrossIcon: this.getSearchCrossIcon(),\n\t\t\t\t\t\tcollapsed: false\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Location',\n\t\t\t\t\t\tcontrols: (type === 'input') ? this.getInputControlTypeInputOne() : this.getInputControlTypeRadioOne(),\n\t\t\t\t\t\taccordionCollapsedIcon: this.getAccordionCollapsedIcon(),\n\t\t\t\t\t\taccordionExpandedIcon: this.getAccordionExpandedIcon(),\n\t\t\t\t\t\tsearchIcon: this.getSearchIcon(),\n\t\t\t\t\t\tcrossIcon: this.getSearchCrossIcon(),\n\t\t\t\t\t\tcollapsed: false\n\t\t\t\t\t}\n\n\t\t\t\t],\n\t\t\t\tctaList: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: '327147f4-c044-4799-8a5a-d075c619e41c',\n\t\t\t\t\t\tlabel: 'Clear All',\n\t\t\t\t\t\tclassName: 'light',\n\t\t\t\t\t\tdisabled: true\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: '7eeaa3f0-b4f6-4142-8086-361298d75686',\n\t\t\t\t\t\tlabel: 'Apply',\n\t\t\t\t\t\tclassName: 'dark',\n\t\t\t\t\t\tdisabled: false\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\thidden: true\n\t\t};\n\t}\n\tpublic static getEquipmentOrderFilterState(type: string): KngFilterState \n\t{\n\t\tconst section = {\n\t\t\tlabel: 'Shipping Location',\n\t\t\tcontrols: (type === 'input') ? this.getInputControlTypeInputOne() : this.getInputControlTypeRadioOne(),\n\t\t\taccordionCollapsedIcon: this.getAccordionCollapsedIcon(),\n\t\t\taccordionExpandedIcon: this.getAccordionExpandedIcon(),\n\t\t\tsearchIcon: this.getSearchIcon(),\n\t\t\tcrossIcon: this.getSearchCrossIcon(),\n\t\t\tcollapsed: false\n\t\t};\n\t\tconst state = this.getKngFilterStateForEquipmentOrder('input');\n\t\tstate.filterData.sections[4] = section;\n\t\treturn state;\n\t}\n\tpublic static getMyDealerDefault() \n\t{\n\t\treturn {\n\t\t\tfirstName: nullCheckValue,\n\t\t\tlastName: '',\n\t\t\tphone: {\n\t\t\t\tlabel: '',\n\t\t\t\tvalue: nullCheckValue,\n\t\t\t\ticon: {\n\t\t\t\t\ticonPath: '',\n\t\t\t\t\taltText: ''\n\t\t\t\t}\n\t\t\t},\n\t\t\temail: {\n\t\t\t\tlabel: '',\n\t\t\t\tvalue: nullCheckValue,\n\t\t\t\ticon: {\n\t\t\t\t\ticonPath: '',\n\t\t\t\t\taltText: ''\n\t\t\t\t}\n\t\t\t},\n\t\t\taddress: {\n\t\t\t\tlabel: '',\n\t\t\t\tvalue: {\n\t\t\t\t\taddressLine1: nullCheckValue,\n\t\t\t\t\taddressLine2: '',\n\t\t\t\t\tcity: '',\n\t\t\t\t\tstate: '',\n\t\t\t\t\tzipCode: ''\n\t\t\t\t},\n\t\t\t\ticon: {\n\t\t\t\t\ticonPath: '',\n\t\t\t\t\taltText: ''\n\t\t\t\t}\n\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static buildImage(iconPath: string, altText: string): Image\n\t{\n\t\treturn {\n\t\t\ticonPath: iconPath,\n\t\t\taltText: altText\n\t\t};\n\t}\n\n\tpublic static buildHeaderItem(isSelected: boolean, image: Image, url: string, label: string, cssClass: string, id: string, submenu: Array, hideMenu:boolean=true)\n\t{\n\t\treturn {\n\t\t\tisSelected: isSelected,\n\t\t\ticonPath: image.iconPath,\n\t\t\taltText: image.altText,\n\t\t\turl: url,\n\t\t\tlabel: label,\n\t\t\tcssClass: cssClass,\n\t\t\tid: id,\n\t\t\tsubmenu: submenu,\n\t\t\thideMenu: hideMenu\n\t\t};\n\t}\n\tpublic static buildCTAButtonList(): CtaList[]\n\t{\n\t\treturn [\n\t\t\t{\n\t\t\t\tid: '',\n\t\t\t\tclassName: AprRejBtnType.bulkApprove,\n\t\t\t\tstate: {\n\t\t\t\t\tsize: 'medium',\n\t\t\t\t\tstyle: 'link',\n\t\t\t\t\tdisabled: false,\n\t\t\t\t\tlabel: '',\n\t\t\t\t\ticon: { altText: '', iconPath: '' },\n\t\t\t\t\tposition: 'none'\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: '',\n\t\t\t\tclassName: AprRejBtnType.bulkReject,\n\t\t\t\tstate: {\n\t\t\t\t\tsize: 'medium',\n\t\t\t\t\tstyle: 'link',\n\t\t\t\t\tdisabled: false,\n\t\t\t\t\tlabel: '',\n\t\t\t\t\ticon: { altText: '', iconPath: '' },\n\t\t\t\t\tposition: 'none'\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\tpublic static buildKngButton(): KngButtonState\n\t{\n\t\treturn {\n\t\t\tsize: 'medium',\n\t\t\tstyle: 'link',\n\t\t\tdisabled: false,\n\t\t\tlabel: '',\n\t\t\ticon: { altText: '', iconPath: '' },\n\t\t\tposition: 'none'\n\t\t};\n\t}\n\tpublic static buildGlobalHeader(): GlobalHeader[]\n\t{\n\t\treturn [\n\t\t\t{\n\t\t\t\tisSelected: false,\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: '',\n\t\t\t\turl: '',\n\t\t\t\tlabel: '',\n\t\t\t\tcssClass: '',\n\t\t\t\tid: '2708cc73-d48c-4301-afa3-ee0bb03002b6',\n\t\t\t\tsubmenu: []\n\t\t\t},\n\t\t\t{\n\t\t\t\tisSelected: false,\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: '',\n\t\t\t\turl: '',\n\t\t\t\tlabel: '',\n\t\t\t\tcssClass: '',\n\t\t\t\tid: '990cdcf6-5612-4d14-9fca-468553692947',\n\t\t\t\tsubmenu: []\n\t\t\t}\n\t\t];\n\t}\n\tpublic static buildTableList(page:string) : KngCardListState\n\t{\n\t\treturn{\n\t\t\tview: ScreenView.accordionDeskTop,\n\t\t\theader: this.getTableHeader(page),\n\t\t\tcardListAccordionIcon: { url: '', alt: '' },\n\t\t\tcardListGrayIcon: { url: '', alt: '' },\n\t\t\tcardListOrangeIcon: { url: '', alt: '' },\n\t\t\tpageInfo: { pageSize: 0, totalCount: 0 },\n\t\t\ttooltipMessage: '',\n\t\t\tserviceCampaignAltText: '',\n\t\t\tmoreIconAltText: '',\n\t\t\tlist: [{ collapsed: false, values: [], id: '' }],\n\t\t\tloading: true,\n\t\t\tactiveFlag: ''\n\t\t};\n\t}\n\n\tpublic static getTableHeader(page:string): Array\n\t{\n\t\tif(page === 'MyQuotes')\n\t\t{\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Quote #', isSort: true, sortOrder: SortOrder.desc\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Date Created', isSort: true, sortOrder: SortOrder.desc\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Model', isSort: true, sortOrder: SortOrder.desc\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Quantity', isSort: true, sortOrder: SortOrder.desc\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Billing Address', isSort: true, sortOrder: SortOrder.desc\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Status', isSort: true, sortOrder: SortOrder.desc\n\t\t\t\t}\n\t\t\t];\n\t\t}\n\t\telse if(page === 'ServiceManagement')\n\t\t{\n\t\t\treturn[\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Service Date',\n\t\t\t\t\tisSort: true,\n\t\t\t\t\tsortOrder: SortOrder.desc\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Work Order #',\n\t\t\t\t\tisSort: true,\n\t\t\t\t\tsortOrder: SortOrder.desc\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'PO',\n\t\t\t\t\tisSort: true,\n\t\t\t\t\tsortOrder: SortOrder.desc\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Billing Address',\n\t\t\t\t\tisSort: true,\n\t\t\t\t\tsortOrder: SortOrder.desc\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Service Address',\n\t\t\t\t\tisSort: true,\n\t\t\t\t\tsortOrder: SortOrder.desc\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Cost',\n\t\t\t\t\tisSort: true,\n\t\t\t\t\tsortOrder: SortOrder.desc,\n\t\t\t\t\thideSort: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Payment Status',\n\t\t\t\t\tisSort: true,\n\t\t\t\t\tsortOrder: SortOrder.desc,\n\t\t\t\t\thideSort: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Invoice',\n\t\t\t\t\tisSort: true,\n\t\t\t\t\tsortOrder: SortOrder.desc,\n\t\t\t\t\thideSort: true\n\t\t\t\t}\n\t\t\t];\n\t\t}\n\t\telse if (page === 'User Management')\n\t\t{\n\t\t\treturn [\n\t\t\t\t{ label: 'Name', isSort: true, sortOrder: SortOrder.asc },\n\t\t\t\t{ label: 'Email', isSort: true, sortOrder: SortOrder.asc },\n\t\t\t\t{ label: 'Role', isSort: true, sortOrder: SortOrder.desc },\n\t\t\t\t{ label: 'Assigned Location', isSort: true, sortOrder: SortOrder.desc },\n\t\t\t\t{ label: 'Last Login', isSort: true, sortOrder: SortOrder.desc },\n\t\t\t\t{ label: 'Status', isSort: true, sortOrder: SortOrder.desc }\n\t\t\t];\n\t\t}\n\t\treturn [];\n\t}\n\tpublic static getRoleList(): UserDetailMiddle\n\t{\n\t\treturn {\n\t\t\trolesList: [{ id: '', name: '', description: '' }],\n\t\t\tstatus: [],\n\t\t\troleDescription: '',\n\t\t\tisStatusUpdatePending: false,\n\t\t\tstatusUpdatePendingMessage: '',\n\t\t\tisStatusUpdateError: false,\n\t\t\tstatusUpdateErrorState: {\n\t\t\t\terrorIcon: this.buildImage('', ''),\n\t\t\t\tmessage: ''\n\t\t\t}\n\t\t};\t\t\n\t}\n\tpublic static getUserDetail() \n\t{\n\t\treturn{\n\t\t\theading: '',\n\t\t\tdescription: '',\n\t\t\tdescriptionBold: '',\n\t\t\tdescriptionCompanyAdmin: '',\n\t\t\tassignNewLocation: '',\n\t\t\thelpText: '',\n\t\t\tsearchPlaceholder: '',\n\t\t\tsearchIcon: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t},\n\t\t\tgrid: [\n\t\t\t\t{\n\t\t\t\t\tlocationid: '',\n\t\t\t\t\tlocation: '',\n\t\t\t\t\taddress: '',\n\t\t\t\t\tchecked: false\n\t\t\t\t}\n\t\t\t],\n\t\t\tcancel: '',\n\t\t\tunassignlocation: 'Unassign Locations',\n\t\t\tnoLocationFoundTableLabel: '',\n\t\t\tnoLocationFoundTableMsg: '',\n\t\t\tnoLocationFoundTableIcon: {\n\t\t\t\ticonPath: '/assets/unassignedLocation.svg',\n\t\t\t\taltText: ''\n\t\t\t},\n\t\t\tnoResult: {\n\t\t\t\ticon: {\n\t\t\t\t\ticonPath: '',\n\t\t\t\t\taltText: ''\n\t\t\t\t},\n\t\t\t\tmessageBold: ''\n\t\t\t},\n\t\t\tfilterDropdownState: {\n\t\t\t\tfilterOptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: '',\n\t\t\t\t\t\tvalue: ''\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\tselectedOption: ''\n\t\t\t}\n\t\t};\n\t}\n}\n","import { Control, ControlType, KngFilterState, Option, Section } from 'kinetic-angular';\nimport { SharedFactoryDataService } from './shared-factory-data.service';\n\nexport class SharedFilterFactory \n{\n\tpublic static buildFilterState(sections: Section[]): KngFilterState \n\t{\n\t\treturn {\n\t\t\tfilterData: {\n\t\t\t\theading: { label: '' },\n\t\t\t\tsections: sections,\n\t\t\t\tctaList: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: '327147f4-c044-4799-8a5a-d075c619e41c',\n\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\tclassName: 'light',\n\t\t\t\t\t\tdisabled: true\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: '7eeaa3f0-b4f6-4142-8086-361298d75686',\n\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\tclassName: 'dark',\n\t\t\t\t\t\tdisabled: false\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\thidden: true\n\t\t};\n\t}\n\tpublic static buildDateRangeSection(options: Option[] = []): Section \n\t{\n\t\treturn {\n\t\t\tlabel: '',\n\t\t\tcontrols: [\n\t\t\t\tnew Control({\n\t\t\t\t\tid: '9e42775d-7ea0-4dc0-ab16-7fb9d013ac31',\n\t\t\t\t\tlabel: '',\n\t\t\t\t\ttype: ControlType.radio,\n\t\t\t\t\tinputPlaceholderText: '',\n\t\t\t\t\tinputIcon: '',\n\t\t\t\t\toptions: options,\n\t\t\t\t\tvalue: ''\n\t\t\t\t})\n\t\t\t],\n\t\t\taccordionCollapsedIcon: SharedFactoryDataService.getAccordionCollapsedIcon(),\n\t\t\taccordionExpandedIcon: SharedFactoryDataService.getAccordionExpandedIcon(),\n\t\t\tsearchIcon: SharedFactoryDataService.getSearchIcon(),\n\t\t\tcrossIcon: SharedFactoryDataService.getSearchCrossIcon(),\n\t\t\tcollapsed: true\n\t\t};\n\t}\n\tpublic static buildLocationSection(isCollapsed: boolean = false): Section \n\t{\n\t\treturn {\n\t\t\tlabel: '',\n\t\t\tcontrols: SharedFactoryDataService.getInputControlTypeInputOne(),\n\t\t\taccordionCollapsedIcon: SharedFactoryDataService.getAccordionCollapsedIcon(),\n\t\t\taccordionExpandedIcon: SharedFactoryDataService.getAccordionExpandedIcon(),\n\t\t\tsearchIcon: SharedFactoryDataService.getSearchIcon(),\n\t\t\tcrossIcon: SharedFactoryDataService.getSearchCrossIcon(),\n\t\t\tcollapsed: isCollapsed,\n\t\t\tisShowMorePresent: true,\n\t\t\tshowMoreShowLess: {\n\t\t\t\tisDisabled: false,\n\t\t\t\tshowLessText: '',\n\t\t\t\tshowMoreText: '',\n\t\t\t\tisShowMoreClicked: false\n\t\t\t}\n\t\t};\n\t}\n\tpublic static buildDivisionOrGroupSection(isCollapsed: boolean = false): Section \n\t{\n\t\treturn {\n\t\t\tlabel: '',\n\t\t\tcontrols: [],\n\t\t\taccordionCollapsedIcon: SharedFactoryDataService.getAccordionCollapsedIcon(),\n\t\t\taccordionExpandedIcon: SharedFactoryDataService.getAccordionExpandedIcon(),\n\t\t\tsearchIcon: SharedFactoryDataService.getSearchIcon(),\n\t\t\tcrossIcon: SharedFactoryDataService.getSearchCrossIcon(),\n\t\t\tcollapsed: isCollapsed,\n\t\t\tisShowMorePresent: true,\n\t\t\tshowMoreShowLess: {\n\t\t\t\tisDisabled: false,\n\t\t\t\tshowLessText: '',\n\t\t\t\tshowMoreText: '',\n\t\t\t\tisShowMoreClicked: false\n\t\t\t}\n\t\t};\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { Control, ControlType, DateRange, KngFilterPanelComponent, KngFilterState, Section } from 'kinetic-angular';\nimport { DateConverterService } from '../date-converter/date-converter.service';\nimport { DateFormat, FilterOptions } from './shared-enums';\nimport { KeyValuePair, LocationAddress } from './shared-interface';\nimport { SharedService } from './shared.service';\nimport { BillingServiceFilterAddress } from '../../components/service-management/components/service-management-page/sub-modules/service-order-detail/definitions/service-order-detail.interface';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class SharedFilterService \n{\n\tconstructor(public dateService: DateConverterService, public sharedService: SharedService) { }\n\n\tpublic checkIfControlIsMarkedAsSelected(control: Control): boolean \n\t{\n\t\tlet checkRes: boolean = false;\n\t\tif (control.options.length > 0) \n\t\t{\n\t\t\tcontrol.options.forEach((opt) => \n\t\t\t{\n\t\t\t\tif (opt.checked === true) \n\t\t\t\t{\n\t\t\t\t\tcheckRes = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn ((control.type === ControlType.checkbox && control.value === true) || checkRes);\n\t}\n\tpublic filterHasAtLeastOneSelectedControl(filterState: KngFilterState): boolean \n\t{\n\t\tconst sectionWithSelectedControl: Section | undefined = filterState.filterData.sections.find((section: Section) =>\n\t\t\tsection.controls.find((control: Control) => this.checkIfControlIsMarkedAsSelected(control)));\n\t\treturn sectionWithSelectedControl !== undefined;\n\t}\n\tpublic getCountOfFilterPanel(control: Control[], label: string, sections: Section[], filterComponent: KngFilterPanelComponent | undefined)\n \t{\n\t\tconst selectedOptions: string[] = [];\n\t\tcontrol.forEach((ctrl) => \n\t\t{\n\t\t\tif (ctrl?.type === ControlType.checkbox) \n\t\t\t{\n\t\t\t\tif (ctrl.value === true)\n\t\t\t\t\tselectedOptions.push(ctrl.id);\n\t\t\t\telse if (ctrl.value === false && selectedOptions.length > 0)\n\t\t\t\t\tthis.removeFromSelectedOption(selectedOptions, ctrl.id);\n\t\t\t}\n\t\t\telse if (ctrl?.type === ControlType.notDate) \n\t\t\t{\n\t\t\t\tconst option = control[0].options;\n\t\t\t\toption.forEach((opt) => \n\t\t\t\t{\n\t\t\t\t\tif (opt.checked === true)\n\t\t\t\t\t\tselectedOptions.push(opt.label);\n\t\t\t\t\telse if (opt.checked === false)\n\t\t\t\t\t\tthis.removeFromSelectedOption(selectedOptions, opt.label);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\treturn this.setCountOfFilterPanel(selectedOptions, label, sections, filterComponent);\n\t}\n\tpublic removeFromSelectedOption(selectedOptions: string[], label: string) \n\t{\n\t\tconst index = selectedOptions.indexOf(label);\n\t\tif (index !== -1)\n\t\t\tselectedOptions.splice(index, 1);\n\t}\n\tpublic setCountOfFilterPanel(selectedOptions: string[], label: string, sections: Section[], filterComponent: KngFilterPanelComponent | undefined)\n\t{\n\t\tif (filterComponent) \n\t\t{\n\t\t\tsections.forEach((sec: Section) => \n\t\t\t{\n\t\t\t\tif (label === sec.label)\n\t\t\t\t\tsec.selectedValue = selectedOptions;\n\t\t\t});\n\t\t}\n\t\treturn sections;\n\t}\n\taddSelectedFilter(label: string, type: string, selectedFilterObj: KeyValuePair[], value?: string, id?: string) \n\t{\n\t\tif (label === DateRange.custom && value) \n\t\t{\n\t\t\tconst dateRange = value.split('@');\n\t\t\tconst from = this.dateService.tranformDate(dateRange[0], DateFormat.default);\n\t\t\tconst to = this.dateService.tranformDate(dateRange[1], DateFormat.default);\n\t\t\tconst contactToFrom = from + ' - ' + to;\n\t\t\tselectedFilterObj.push({ key: type, value: contactToFrom, id: '' });\n\t\t}\n\t\telse if (label === DateRange.lastSixtyDays)\n\t\t\tselectedFilterObj.push({ key: type, value: DateRange.lastSixtyDays, id: '' });\n\t\telse\n\t\t\tthis.checkForPreviousYears(label, type, selectedFilterObj, id);\n\t\tthis.mapSelectedFilter(selectedFilterObj);\n\t\treturn selectedFilterObj;\n\t}\n\tcheckForPreviousYears(label: string, type: string, selectedFilterObj: KeyValuePair[], id?: string)\n\t{\n\t\tif (label === DateRange.lastYear)\n\t\t\tselectedFilterObj.push({ key: type, value: DateRange.lastYear, id: '', disabled: true });\n\t\telse if(label === DateRange.last2YearsDefault)\n\t\t\tselectedFilterObj.push({ key: type, value: DateRange.last2YearsDefault, id: '', disabled: true });\n\t\telse\n\t\t\tselectedFilterObj.push({ key: type, value: label, id: id ?? '' });\n\t}\n\tmapSelectedFilter(selectedFilterObj: KeyValuePair[]) \n\t{\n\t\tselectedFilterObj.forEach(obj => \n\t\t{\n\t\t\tif (obj.key === FilterOptions.dateRange && (obj.value === DateRange.lastSixtyDays || obj.value === DateRange.lastYearDefault || obj.value === DateRange.last2YearsDefault))\n\t\t\t\tobj.disabled = true;\n\t\t\telse\n\t\t\t\tobj.disabled = false;\n\t\t});\n\t}\n\tpublic async findBillingServiceLocation(searchKey: string, existingControls: Control[], searchFullAddress?: boolean): Promise\n\t{\n\t\tconst locationControls = existingControls;\n\t\tif (searchKey) \n\t\t{\n\t\t\tlet filteredResult: Control[] = [];\n\t\t\tif (searchFullAddress)\n\t\t\t{\n\t\t\t\tfilteredResult = locationControls.filter((location: Control) =>\n\t\t\t\t\tlocation.type === ControlType.checkbox && location.address &&\n\t\t\t\t\tthis.sharedService.formatAddress(location.address, searchFullAddress)?.toLowerCase().includes(searchKey?.toLowerCase())\n\t\t\t\t\t|| location.label?.toLowerCase().includes(searchKey?.toLowerCase())\n\t\t\t\t);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfilteredResult = locationControls.filter((location: Control) =>\n\t\t\t\t\tlocation.type === ControlType.checkbox &&\n\t\t\t\t\tlocation.label.toLowerCase().includes(searchKey?.toLowerCase()));\n\t\t\t}\t\n\t\t\treturn Promise.resolve(filteredResult);\n\t\t}\n\t\telse\n\t\t\treturn Promise.resolve([]);\n\t}\n\n\tpublic async findAssignedLocation(searchKey: string, existingControls: Control[], searchFullAddress?: boolean): Promise \n\t{\n\t\tconst locationControls = existingControls;\n\t\tif (searchKey) \n\t\t{\n\t\t\tlet filteredResult: Control[] = [];\n\t\t\tif (searchFullAddress)\n\t\t\t{\n\t\t\t\tfilteredResult = locationControls.filter((location: Control) =>\n\t\t\t\t\tlocation.type === ControlType.checkbox && location.address &&\n\t\t\t\t\tthis.sharedService.formatAddress(location.address, searchFullAddress)?.toLowerCase().includes(searchKey?.toLowerCase())\n\t\t\t\t\t|| location.label?.toLowerCase().includes(searchKey?.toLowerCase()) || location.id.includes(searchKey?.toLowerCase())\n\t\t\t\t);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfilteredResult = locationControls.filter((location: Control) =>\n\t\t\t\t\tlocation.type === ControlType.checkbox &&\n\t\t\t\t\tlocation.label.toLowerCase().includes(searchKey?.toLowerCase()));\n\t\t\t}\t\n\t\t\treturn Promise.resolve(filteredResult);\n\t\t}\n\t\telse\n\t\t\treturn Promise.resolve([]);\n\t}\n\tremoveFromSelectedFilter(filterValue: string, filter: string[] | LocationAddress[], selectedFilterList: KeyValuePair[]) \n\t{\n\t\tselectedFilterList.forEach((obj, index) => \n\t\t{\n\t\t\tif (obj.id === filterValue && filter)\n\t\t\t\tselectedFilterList.splice(index, 1);\n\t\t});\n\t\treturn selectedFilterList;\n\t}\n\tremoveSearchtextfromInputAfterClear(payload: string[] | LocationAddress[], key: string, sections: Section[]) \n\t{\n\t\tif (payload.length === 0) \n\t\t{\n\t\t\tsections.forEach((section: Section) => \n\t\t\t{\n\t\t\t\tif (section.label === key) \n\t\t\t\t{\n\t\t\t\t\tsection.controls.forEach((control: Control) => \n\t\t\t\t\t{\n\t\t\t\t\t\tif (control.type === ControlType.input)\n\t\t\t\t\t\t\tcontrol.setValue('');\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn sections;\n\t}\n\tclearAllFilterPanel(sections: Section[]) \n\t{\n\t\tsections.forEach((section: Section) => \n\t\t{\n\t\t\tsection.selectedValue = [];\n\t\t\tsection.controls.forEach((control: Control) => \n\t\t\t{\n\t\t\t\tif (control.type === ControlType.input)\n\t\t\t\t\tcontrol.setValue('');\n\t\t\t\telse if (control.type === ControlType.checkbox)\n\t\t\t\t\tcontrol.setValue(false);\n\t\t\t\telse if (control.type === ControlType.radio || control.type === ControlType.notDate)\n\t\t\t\t\tcontrol.options.forEach((opt) => opt.checked && (opt.checked = false));\n\t\t\t});\n\t\t});\n\t\treturn sections;\n\t}\n\tupdateAllCheckboxValues(selectedFilters: Control[], value: boolean) \n\t{\n\t\tselectedFilters.forEach((control: Control) => \n\t\t{\n\t\t\tif (control.type === ControlType.checkbox)\n\t\t\t\tcontrol.setValue(value);\n\t\t});\n\t\treturn selectedFilters;\n\t}\n\tgetFilterControls(controls: Control[]): Control[] \n\t{\n\t\tconst selectedLocations: Control[] = [];\n\t\tcontrols?.forEach(location => \n\t\t{\n\t\t\tif (location.value)\n\t\t\t\tselectedLocations.push(location);\n\t\t});\n\t\tcontrols = this.sharedService.getLocationValues();\n\t\tcontrols?.forEach(location => \n\t\t{\n\t\t\tselectedLocations.forEach(selectedLocation => \n\t\t\t{\n\t\t\t\tif (selectedLocation.id === location.id)\n\t\t\t\t\tlocation.setValue(true);\n\t\t\t});\n\t\t});\n\t\treturn controls;\n\t}\n\n\tgetShippingBillingLocationFilterControls(controls: Control[], shippingLocations: BillingServiceFilterAddress[]): Control[] \n\t{\n\t\tconst selectedShippingLocation: Control[] = [];\n\t\tcontrols.forEach(address => \n\t\t{\n\t\t\tif (address.value)\n\t\t\t\tselectedShippingLocation.push(address);\n\t\t});\n\t\tcontrols = this.getShippingLocationValues(shippingLocations);\n\t\tcontrols.forEach(address => \n\t\t{\n\t\t\tselectedShippingLocation.forEach(element => \n\t\t\t{\n\t\t\t\tif (element.id === address.id)\n\t\t\t\t\taddress.setValue(true);\n\t\t\t});\n\t\t});\n\t\treturn controls;\n\t}\n\n\tgetShippingLocationValues(shippingLocations: BillingServiceFilterAddress[]): Control[]\n\t{\n\t\tconst assignedShippingLocation: Control[] = [];\n\t\tshippingLocations?.forEach((element) =>\n\t\t{\n\t\t\tconst address = {\n\t\t\t\taddressLine1: element.address.addressLine1,\n\t\t\t\tcity: element.address.city,\n\t\t\t\tstate: element.address.state,\n\t\t\t\tzipCode: element.address.zip\n\t\t\t};\n\t\t\tconst data = { name: element.locationLabel, id: element.locationId, address };\n\t\t\tassignedShippingLocation.push(this.sharedService.initialiseFilterControl(data.id, data.name, ControlType.checkbox, data.address));\n\t\t});\n\t\treturn assignedShippingLocation;\n\t}\n\tpublic async findEquipmentRepairType(searchKey: string, equipmentControls: Control[]): Promise \n\t{\n\t\tif (searchKey) \n\t\t{\n\t\t\tconst filteredResult: Control[] = equipmentControls.filter((item: Control) =>\n\t\t\t\titem.type === ControlType.checkbox && item.label.toLowerCase().includes(searchKey?.trimLeft()?.toLowerCase()));\n\t\t\treturn Promise.resolve(filteredResult);\n\t\t}\n\t\telse \n\t\t{\n\t\t\tconst filteredResult: Control[] = equipmentControls.filter((item: Control) => item.type === ControlType.checkbox);\n\t\t\treturn Promise.resolve(filteredResult);\n\t\t}\n\t}\n\tupdateFilterSection(sectionControls: Control[], selectedOptions: string[] | undefined) \n\t{\n\t\tif (selectedOptions && selectedOptions.length > 0) \n\t\t{\n\t\t\tsectionControls.forEach((control) => \n\t\t\t{\n\t\t\t\tif (control.type === ControlType.checkbox)\n\t\t\t\t\t(selectedOptions.includes(control.id) || selectedOptions.includes(control.label) || selectedOptions.includes(control.label.toLowerCase())) ? control.setValue(true) : control.setValue(false);\n\t\t\t});\n\t\t}\n\t\telse \n\t\t{\n\t\t\tsectionControls.forEach((control) => \n\t\t\t{\n\t\t\t\tif (control.type === ControlType.checkbox)\n\t\t\t\t\tcontrol.setValue(false);\n\t\t\t});\n\t\t}\n\t}\n\tpublic updateFilterPanelOptions(newOptions: Control[], oldOptions: Control[], filterComponent: KngFilterPanelComponent | undefined, filterState: KngFilterState): void \n\t{\n\t\toldOptions.splice(1, oldOptions.length - 1, ...newOptions);\n\t\tfilterComponent ? filterComponent.updateState(filterState) : (() => { })();\n\t}\n\tsetDateFilterIdCheck(section: Section, value: string, valueId: string) \n\t{\n\t\tsection.selectedValue = [value];\n\t\tsection.controls[0].options.forEach((opt) => opt.checked = false);\n\t\tconst index = section.controls[0].options.findIndex(opt => opt.id === valueId);\n\t\tif (index >= 0)\n\t\t\tsection.controls[0].options[index].checked = true;\n\t\treturn section;\n\t}\n\tsetDateFilterLabelCheck(section: Section, value: string) \n\t{\n\t\tsection.selectedValue = [value];\n\t\tsection.controls[0].options.forEach((opt) => opt.checked = false);\n\t\tconst index = section.controls[0].options.findIndex(opt => opt.label === value);\n\t\tif (index >= 0)\n\t\t\tsection.controls[0].options[index].checked = true;\n\t\treturn section;\n\t}\n\tsetDateFilterCloseFilter(selectedFilterObj: KeyValuePair[], section: Section, filterComponent: KngFilterPanelComponent | undefined)\n\t{\n\t\tselectedFilterObj.forEach(obj => \n\t\t{\n\t\t\tif (filterComponent)\n\t\t\t\tfilterComponent.showToFromInput = (obj.value.includes('-')) || false;\n\n\t\t\tif (obj.key === FilterOptions.dateRange) \n\t\t\t{\n\t\t\t\tif (obj.value.includes('-')) \n\t\t\t\t{\n\t\t\t\t\tsection.controls[0].options.forEach((opt) => opt.checked = false);\n\t\t\t\t\tconst index = section.controls[0].options.length - 1;\n\t\t\t\t\tsection.controls[0].options[index].checked = true;\n\t\t\t\t\tsection.selectedValue = [DateRange.custom];\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tsection = this.setDateFilterLabelCheck(section, obj.value);\n\t\t\t}\n\t\t});\n\t\treturn section;\n\t}\n\tpublic async findSearchedAddress(searchKey: string, existingControls: Control[]): Promise\n\t{\n\t\tconst addressControls = existingControls;\n\t\tif (searchKey)\n\t\t{\n\t\t\tconst filteredResult: Control[] = addressControls.filter((item: Control) =>\n\t\t\t{\n\t\t\t\tconst valuesToCheck = [\n\t\t\t\t\titem.address?.addressLine1,\n\t\t\t\t\titem.address?.addressLine2,\n\t\t\t\t\titem.address?.city,\n\t\t\t\t\titem.address?.state,\n\t\t\t\t\titem.address?.zipCode\n\t\t\t\t];\n\t\t\t\t\n\t\t\t\tconst addressString = valuesToCheck.filter(value => value !== undefined && value !== null).join(', ').toLowerCase(); return addressString.includes(searchKey?.toLowerCase());\n\t\t\t});\n\t\t\treturn Promise.resolve(filteredResult);\n\t\t}\n\t\telse\n\t\t\treturn Promise.resolve([]);\n\t}\n\tgetSelectedCheckbox(controls: Control[])\n\t{\n\t\treturn controls.filter(control => control.type === ControlType.checkbox && control.value === true);\n\t}\n\tgetCheckboxIds(controls: Control[])\n\t{\n\t\treturn controls.map(control=>control.id);\n\t}\n\tgetSelectedCheckboxByIds(controls: Control[])\n\t{\n\t\treturn this.getCheckboxIds(this.getSelectedCheckbox(controls));\n\t}\n\tsetfilterCollapsedState(sections: Section[], collapsed: boolean)\n\t{\n\t\tsections.forEach((section)=>section.collapsed = collapsed);\n\t\treturn sections;\n\t}\n}\n","export enum ControlName {\n\taccountName = 'accountName',\n companyName = 'companyName',\n addressLine1 = 'addressLine1',\n addressLine2 = 'addressLine2',\n\tcity= 'city',\n state = 'state',\n postalCode = 'postalCode',\n zipCode = 'zipCode'\n};\n","/* eslint-disable max-lines */\nimport { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { FieldType, KngButtonPosition, KngButtonSize, KngButtonState, KngButtonStyle, KngCardListState, KngHeaderObjState, KngValueObjState, SortOrder } from 'kinetic-angular';\nimport { RoutingFunction, StatusValueToRedirectsMap } from '../../components/auth';\nimport { CommonErrorService } from '../../components/common-error';\nimport { UserRegistrationStatus, UserRegistrationStatusValue } from '../api/definitions';\nimport { ApplicationPath, CountryCode, ErrorMessage, FieldName, FormattingName, Icons, IsRequestSubmittedForReview, MaxDeviceWidth, MyQuotesStatusHeader, OrderStatus, RemovalReasons } from './shared-enums';\nimport { Image } from './shared-interface';\nimport { InvoiceStatusHeader } from '../../components/order-management/definitions/order-management.interface';\nimport { LocalStorageService } from '../local-storage/local-storage.service';\nimport { LoggerService } from '../logger/logger.service';\nimport { BehaviorSubject } from 'rxjs';\nimport { accountManagerRoleId, tmhCorporateAdminRoleId, tmhCustomerSupportRoleId } from './shared-constants';\nimport { StatusPayload } from '../../components/my-quotes';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class SharedUtilService\n{\n\tisAccountManagerCredential: boolean = false;\n\tconstructor(private readonly errorService: CommonErrorService, private readonly localStorageService: LocalStorageService, private readonly loggerService: LoggerService,\n\t\tprivate readonly router: Router ) { }\n\tprivate readonly isTmhCorporateAdmin$: BehaviorSubject = new BehaviorSubject(false);\n\tprivate readonly isTmhCustomerSupportRole$: BehaviorSubject = new BehaviorSubject(false);\n\tpublic isCustomerSupportSession$: BehaviorSubject = new BehaviorSubject(false);\n\tget isTmhCorporateAdmin(): boolean\n\t{\n\t\treturn this.isTmhCorporateAdmin$.value;\n\t}\n\tset isTmhCorporateAdmin(value: boolean)\n\t{\n\t\tthis.isTmhCorporateAdmin$.next(value);\n\t}\n\tget isTmhCustomerSupportRole(): boolean\n\t{\n\t\treturn this.isTmhCustomerSupportRole$.value;\n\t}\n\tset isTmhCustomerSupportRole(value: boolean)\n\t{\n\t\tthis.isTmhCustomerSupportRole$.next(value);\n\t}\n\tget isCustomerSupportSession(): boolean\n\t{\n\t\treturn this.isCustomerSupportSession$.value;\n\t}\n\tprivate readonly isEquipmentDetailsRedirectedFromMyInsights$: BehaviorSubject = new BehaviorSubject(false);\n\tget isEquipmentDetailsRedirectedFromMyInsights(): boolean\n\t{\n\t\treturn this.isEquipmentDetailsRedirectedFromMyInsights$.value;\n\t}\n\tset isEquipmentDetailsRedirectedFromMyInsights(value: boolean)\n\t{\n\t\tthis.isEquipmentDetailsRedirectedFromMyInsights$.next(value);\n\t}\n\tremoveReasons: string[] = [ RemovalReasons.scrapped, RemovalReasons.stolen ];\n\tcommentRequiredRemoveReasons: string[] = [ RemovalReasons.sold, RemovalReasons.exported ];\n\tprivate readonly fieldMap = new Map([\n\t\t[ FieldName.truckNumber, FieldType.link ],\n\t\t[ FieldName.equipmentVin, FieldType.link ],\n\t\t[ FieldName.orderDate, FieldType.date ],\n\t\t[ FieldName.eta, FieldType.date ],\n\t\t[ FieldName.status, FieldType.orderStatus ],\n\t\t[ FieldName.equipmentStatus, FieldType.orderStatus ],\n\t\t[ FieldName.serviceDate, FieldType.date ],\n\t\t[ FieldName.workOrderNumber, FieldType.link ],\n\t\t[ FieldName.invoiceNumber, FieldType.link ],\n\t\t[ FieldName.cost, FieldType.currency ],\n\t\t[ FieldName.name, FieldType.link ],\n\t\t[ FieldName.lastLogin, FieldType.date ],\n\t\t[ FieldName.dueDate, FieldType.date ],\n\t\t[ FieldName.crmOppNumber, FieldType.text ],\n\t\t[ FieldName.billingAddress, FieldType.text || FieldType.address ],\n\t\t[ FieldName.quoteId, FieldType.pdf ],\n\t\t[ FieldName.creationDate, FieldType.dateString ],\n\t\t[ FieldName.dealership, FieldType.dealershipInfo ],\n\t\t[ FieldName.dateOfFirstUse, FieldType.dateString ],\n\t\t[ 'default', FieldType.text ]\n\t]);\n\tprivate readonly orderStatusMap = new Map([\n\t\t[ InvoiceStatusHeader.all, '' ],\n\t\t[ InvoiceStatusHeader.orderinProcess, OrderStatus.orderProcess ],\n\t\t[ InvoiceStatusHeader.inProduction, OrderStatus.orderProduction ],\n\t\t[ InvoiceStatusHeader.shipped, OrderStatus.shipped ],\n\t\t[ InvoiceStatusHeader.delivered, OrderStatus.deliverStatus ]\n\t]);\n\tprivate readonly myQuotesStatusMap = new Map([\n\t\t[ MyQuotesStatusHeader.all, '' ],\n\t\t[ MyQuotesStatusHeader.readyForReview, StatusPayload.readyForReview ],\n\t\t[ MyQuotesStatusHeader.quoteinProcess, StatusPayload.quoteinProcess ],\n\t\t[ MyQuotesStatusHeader.quoteAccepted, StatusPayload.quoteAccepted ],\n\t\t[ MyQuotesStatusHeader.ordered, StatusPayload.ordered ],\n\t\t[ MyQuotesStatusHeader.expired, StatusPayload.expired ]\n\t]);\n\tnavigateWithCustomerSupport(url:string) \n\t{\n\t\tif(this.isCustomerSupportSession)\n\t\t{\n\t\t\tconst userProfile = this.localStorageService.getImpersonateUser();\n\t\t\t\n\t\t\tif(userProfile)\n\t\t\t{\n\t\t\t\tconst user = JSON.parse(userProfile);\n\t\t\t\tconst currentPath = btoa(user.email);\n\t\t\t window.open(`${url}&email=${currentPath}`, '_blank', 'noopener');\n\t\t\t}\n\t\t}\n\t\telse \n\t\t{\n\t\t\twindow.open(url, '_blank', 'noopener');\n\t\t}\n\t}\n\tgetFieldType(fieldName: string): string\n\t{\n\t\tlet result: string | undefined = FieldType.text;\n\t\tif (this.fieldMap.has(fieldName))\n\t\t{\n\t\t\tresult = this.fieldMap.get(fieldName);\n\t\t}\n\t\treturn result?? FieldType.text;\n\t}\n\tgetOrderStatus(fieldName: string): string\n\t{\n\t\tlet result: string | undefined = '';\n\t\tif (this.orderStatusMap.has(fieldName))\n\t\t{\n\t\t\tresult = this.orderStatusMap.get(fieldName);\n\t\t}\n\t\treturn result?? '';\n\t}\n\tgetMyQuotesStatus(fieldName: string): string\n\t{\n\t\tlet result: string | undefined = '';\n\t\tif (this.myQuotesStatusMap.has(fieldName))\n\t\t{\n\t\t\tresult = this.myQuotesStatusMap.get(fieldName);\n\t\t}\n\t\treturn result ?? '';\n\t}\n\tstatusValueToRedirectsMap: StatusValueToRedirectsMap = new Map([\n\t\t[ 'approved', () =>\n\t\t{\n\t\t\treturn this.routeToPortalFromOutside('Approved');\n\t\t} ],\n\t\t[ 'active', () =>\n\t\t{\n\t\t\treturn this.routeToPortalFromOutside('Active');\n\t\t} ],\n\t\t[ 'not_approved', (router: Router) =>\n\t\t{\n\t\t\treturn router.navigate(['confirmation']);\n\t\t} ],\n\t\t[ 'pending_approval', (router: Router) =>\n\t\t{\n\t\t\treturn router.navigate(['confirmation']);\n\t\t} ],\n\t\t[ 'pending_business_approval', (router: Router) =>\n\t\t{\n\t\t\treturn router.navigate(['pending-approval']);\n\t\t} ],\n\t\t[ 'in_progress', (router: Router) =>\n\t\t{\n\t\t\treturn router.navigate(['registration']);\n\t\t} ],\n\t\t[ null, (router: Router) =>\n\t\t{\n\t\t\tconst isRequestSubmittedForReviewTrue = localStorage.getItem(IsRequestSubmittedForReview.isRequestSubmittedForReview);\n\t\t\tif(isRequestSubmittedForReviewTrue) return router.navigate(['confirmation']);\n\t\t\telse return router.navigate(['registration']);\n\t\t} ]\n\t]);\n\n\trouteToPortalFromOutside(registrationStatus: string)\n\t{\n\t\tconst inboundUrlPathName = localStorage.getItem('inboudUrl');\n\t\tif (inboundUrlPathName !== null && inboundUrlPathName !== '/auth')\n\t\t{\n\t\t\treturn this.router.navigate([inboundUrlPathName]);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.checkTheRegistrationStatusAndRoute(registrationStatus);\n\t }\n\t}\n\n\tcheckTheRegistrationStatusAndRoute(registrationStatus: string)\n\t{\n\t\tif(registrationStatus === 'Approved')\n\t\t{\n\t\t\treturn this.router.navigate(['app']);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.router.navigate(['confirmation']);\n\t\t}\n\t}\n\n\tsetImageBasedOnStatusCode(statusCode: number): Image\n\t{\n\t\tlet image = { iconPath: '', altText: '' };\n\t\tif (statusCode === 401)\n\t\t{\n\t\t\timage = {\n\t\t\t\ticonPath: Icons.unauthorized,\n\t\t\t\taltText: '401 Unauthorized'\n\t\t\t};\n\t\t}\n\t\telse if (statusCode === 403)\n\t\t{\n\t\t\timage = {\n\t\t\t\ticonPath: Icons.userNotActivated,\n\t\t\t\taltText: 'not activated'\n\t\t\t};\n\t\t}\n\t\telse if (statusCode === 202)\n\t\t{\n\t\t\timage = {\n\t\t\t\ticonPath: Icons.pendingApproval,\n\t\t\t\taltText: 'pending approval'\n\t\t\t};\n\t\t}\n\t\telse if (statusCode === 500)\n\t\t{\n\t\t\timage = {\n\t\t\t\ticonPath: Icons.userNotActivated,\n\t\t\t\taltText: 'internal server error'\n\t\t\t};\n\t\t}\n\t\telse if (statusCode === 100)\n\t\t{\n\t\t\timage = {\n\t\t\t\ticonPath: Icons.noLocation,\n\t\t\t\taltText: 'no locations'\n\t\t\t};\n\t\t}\n\t\treturn image;\n\t}\n\thandlePendingAndNotApprovedState(responseObject: UserRegistrationStatus)\n\t{\n\t\tif ( responseObject.hasOwnProperty('registrationStatus') &&\n\t\t\t(responseObject.registrationStatus === 'not_approved' ||\n\t\t\tresponseObject.registrationStatus === 'pending_approval')\n\t\t)\n\t\t{\n\t\t\tconst message = responseObject.registrationStatus === 'pending_approval' ? 'Pending Approval' : '';\n\t\t\tconst statusCode = responseObject.registrationStatus === 'not_approved' ? 402 : 202;\n\t\t\tthis.triggerErrorService(message, statusCode, '');\n\t\t}\n\t}\n\ttriggerErrorService(status: string, statusCode: number, id:string)\n\t{\n\t\tconst image: Image = this.setImageBasedOnStatusCode(statusCode);\n\t\tthis.errorService.updateState({ messages: [{ message: status }], statusCode: statusCode, id: id, image: image });\n\t}\n\tgetHeaderObjectState(isSort: boolean, label: string, sortOrder: SortOrder.asc | SortOrder.desc, hideSort?: boolean, category?:string ):KngHeaderObjState\n\t{\n\t\tconst headerObjectState : KngHeaderObjState = { isSort: isSort, label: label, sortOrder: sortOrder };\n\t\tif(hideSort)\n\t\t{\n\t\t\theaderObjectState.hideSort = hideSort;\n\t\t}\n\t\tif(category)\n\t\t{\n\t\t\theaderObjectState.category = category;\n\t\t}\n\t\treturn headerObjectState;\n\t};\n\tgetMessage()\n\t{\n\t\treturn { text: ErrorMessage.furtherActionsContactMessage, tokens: [] };\n\t}\n\tgetButtonState(size: KngButtonSize, style: KngButtonStyle, label: string, disabled: boolean, icon: Image, position: KngButtonPosition ): KngButtonState\n\t{\n\t\tconst buttonState : KngButtonState = { size: size, style: style, label: label, disabled: disabled, icon: icon, position: position };\n\t\treturn buttonState;\n\t};\n\thideModalBackdrop()\n\t{\n\t\tdocument.body.classList.remove('modal-open');\n\t\tdocument.body.removeAttribute('style');\n\t\tconst backdrop = document.querySelector('.modal-backdrop');\n\t\tbackdrop?.remove();\n\t}\n\tcheckCardState(cardState: KngCardListState)\n\t{\n\t\tif (cardState !== undefined && cardState.list.length > 0)\n\t\t{\n\t\t\tcardState.header = [];\n\t\t\tcardState.list = [];\n\t\t}\n\t}\n\torderNumberMapping(key: string, value: KngValueObjState, label: string)\n\t{\n\t\tif (key === FieldName.truckNumber)\n\t\t{\n\t\t\tvalue.orderId = label;\n\t\t}\n\t}\n\tlocationIdMapping(key: string, value: KngValueObjState, label: string)\n\t{\n\t\tif (key === FieldName.locationId)\n\t\t{\n\t\t\tvalue.locationId = label;\n\t\t}\n\t}\n\tpublic formatValue(value: string, valueType: string): string\n\t{\n\t\tif (value.trim())\n\t\t{\n\t\t\tvalue = this.characterFormat(value, valueType);\n\t\t}\n\t\treturn value;\n\t}\n\tcharacterFormat(value: string, valueType: string)\n\t{\n\t\tif(valueType === FormattingName.companyName || valueType === FormattingName.accountName)\n\t\t{\n\t\t\tconst company = value.replace(/ /g, ' ');\n\t\t\treturn company.trimLeft();\n\t\t}\n\t\telse if(valueType === FormattingName.city)\n\t\t{\n\t\t\tconst address = value.replace(/[^a-zA-Z ]/g, '');\n\t\t\treturn address;\n\t\t}\n\t\telse if(valueType === FormattingName.addressOne || valueType === FormattingName.addressTwo)\n\t\t{\n\t\t\tconst address = value.replace(/ /g, ' ');\n\t\t\treturn address;\n\t\t}\n\t\treturn value.trim();\n\t}\n\tformatZipCode(value: string, country: string = CountryCode.unitedStatesofAmerica)\n\t{\n\t\tlet formattedZip = value;\n\t\tif(country === CountryCode.canada || country === CountryCode.canadaCountry)\n\t\t{\n\t\t\tvalue = value.trim();\n\t\t\tif (value.length >= 6)\n\t\t\t{\n\t\t\t\tvalue = value.replace(/ /g, '');\n\t\t\t\tvalue = value.replace(/-+/g, '');\n\t\t\t\tvalue = value.substring(0, 3) + ' ' + value.substring(3, 7);\n\t\t\t}\n\t\t\tformattedZip = value;\n\t\t}\n\t\telse if(country === CountryCode.unitedStatesofAmerica)\n\t\t{\n\t\t\tconst zipCode = value.replace(/[^\\d]/g, '');\n\t\t\tconst zipCodeLength = zipCode.length;\n\t\t\tformattedZip = zipCodeLength < 6 ? zipCode : `${zipCode.slice(0, 5)}-${zipCode.slice(5, 9)}`;\n\t\t}\n\t\treturn formattedZip;\n\t}\n\tgetCardListOrangeIcon()\n\t{\n\t\treturn { url: Icons.rightArrowOrange, alt: 'next' };\n\t}\n\tgetCardListAccordionIcon()\n\t{\n\t\treturn { url: '', alt: 'down' };\n\t}\n\tgetCardListGreyIcon()\n\t{\n\t\treturn { url: Icons.leftArrow, alt: 'previous' };\n\t}\n\tgetDefaultErrorObject()\n\t{\n\t\treturn {\n\t\t\tmessage: 'No results found',\n\t\t\tmessageSubText: '',\n\t\t\ticon: Icons.noResult\n\t\t};\n\t}\n\tgetLastTenErrorObject()\n\t{\n\t\treturn {\n\t\t\tmessage: ErrorMessage.lastTenErrorcodesEmptyData,\n\t\t\tmessageSubText: '',\n\t\t\ticon: Icons.noErrorCodes\n\t\t};\n\n\t}\n\tgetStateOnRemoveReason(selectedReason: string, commentAdded: string): boolean\n\t{\n\t\tif (selectedReason && (this.removeReasons.includes(selectedReason)))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.soldExportSelected(selectedReason, commentAdded);\n\t\t}\n\t}\n\tsoldExportSelected(selectedReason: string, commentAdded: string): boolean\n\t{\n\t\tif (selectedReason && (this.commentRequiredRemoveReasons.includes(selectedReason)) && commentAdded)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t}\n\n\n\tgetRoutingFunction(userResponse: UserRegistrationStatus): RoutingFunction | undefined\n\t{\n\t\tconst isTmhCustomerSupportRole = this.localStorageService.getCustomerToDashboard();\n\n\t\tthis.checkAccountManager(userResponse);\n\n\t\tif (this.isCustomerSupportUser(userResponse, isTmhCustomerSupportRole))\n\t\t{\n\t\t return this.getCustomerSupportRoutingFunction();\n\t\t}\n\n\t\tif (this.isTmhCorporateAdminUser(userResponse, isTmhCustomerSupportRole))\n\t\t{\n\t\t return this.getCorporateAdminRoutingFunction();\n\t\t}\n\n\t\tif (isTmhCustomerSupportRole)\n\t\t{\n\t\t return this.getCustomerSupportRoleRoutingFunction();\n\t\t}\n\n\t\treturn this.getStatusBasedRoutingFunction(userResponse);\n\t}\n\n\tprivate checkAccountManager(userResponse: UserRegistrationStatus): void\n\t{\n\t\tif (this.isAccountManager(userResponse))\n\t\t{\n\t\t this.isAccountManagerCredential = true;\n\t\t}\n\t}\n\n\tprivate getCustomerSupportRoutingFunction(): RoutingFunction\n\t{\n\t\treturn (router: Router) => router.navigate(['/app' + ApplicationPath.customerSupport]);\n\t}\n\n\tprivate getCorporateAdminRoutingFunction(): RoutingFunction\n\t{\n\t\treturn (router: Router) => router.navigate(['/app' + ApplicationPath.customerportal]);\n\t}\n\tprivate getCustomerSupportRoleRoutingFunction(): RoutingFunction\n\t{\n\t\treturn () => this.routeToPortalFromOutside('Approved');\n\t}\n\tprivate getStatusBasedRoutingFunction(userResponse: UserRegistrationStatus): RoutingFunction | undefined\n\t{\n\t\tif (userResponse.hasOwnProperty('registrationStatus') && userResponse.registrationStatus !== undefined)\n\t\t{\n\t\t return this.statusValueToRedirectsMap.get(userResponse.registrationStatus);\n\t\t}\n\t\treturn undefined;\n\t }\n\tisTmhCorporateAdminRole(role: string[])\n\t{\n\t\treturn !!role.includes(tmhCorporateAdminRoleId);\n\t}\n\tisCustomerSupportRole(role: string[])\n\t{\n\t\treturn !!role.includes(tmhCustomerSupportRoleId);\n\t}\n\tisTmhCorporateAdminUser(responseObject: UserRegistrationStatus, isTmhCustomerSupportRole: boolean = false)\n\t{\n\t\treturn !!(responseObject.roles && this.isTmhCorporateAdminRole(responseObject.roles) && !isTmhCustomerSupportRole);\n\t}\n\tisCustomerSupportUser(responseObject: UserRegistrationStatus, isTmhCustomerSupportRole: boolean = false)\n\t{\n\t\treturn !!(responseObject.roles && this.isCustomerSupportRole(responseObject.roles) && !isTmhCustomerSupportRole );\n\t}\n\tisAccountManagerRole(role: string[])\n\t{\n\t\treturn !!role.includes(accountManagerRoleId);\n\t}\n\tisAccountManager(responseObject: UserRegistrationStatus)\n\t{\n\t\treturn !!(responseObject.roles && this.isAccountManagerRole(responseObject.roles));\n\t}\n\tasync isLoggedInUserPresent(): Promise\n\t{\n\t\treturn new Promise(resolve =>\n\t\t{\n\t\t\tconst checkLocalStorage = () =>\n\t\t\t{\n\t\t\t\tif (this.isAnyUserPresent())\n\t\t\t\t{\n\t\t\t\t\tthis.updateUserRoles();\n\t\t\t\t\tresolve();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tsetTimeout(checkLocalStorage, 100);\n\t\t\t\t}\n\t\t\t};\n\t\t\tcheckLocalStorage();\n\t\t});\n\t}\n\n\tprivate isAnyUserPresent(): boolean\n\t{\n\t\treturn !!(this.localStorageService.getTmhCorporateAdminDetails() ||\n\t\t\t this.localStorageService.getLoggedInUser() ||\n\t\t\t this.localStorageService.getTmhCustomerSupportDetails());\n\t}\n\tprivate updateUserRoles(): void\n\t{\n\t\tif (this.localStorageService.getTmhCorporateAdminDetails())\n\t\t{\n\t\t\tthis.isTmhCorporateAdmin$.next(true);\n\t\t}\n\t\tif (this.localStorageService.getTmhCustomerSupportDetails())\n\t\t{\n\t\t\tthis.isTmhCustomerSupportRole$.next(true);\n\t\t}\n\t}\n\thandleRoutingFunction(routingFunction : RoutingFunction | undefined, router: Router)\n\t{\n\t\tif(routingFunction)\n\t\t{\n\t\t\troutingFunction(router)?.then(succeeded =>\n\t\t\t{\n\t\t\t\tif(succeeded)\n\t\t\t\t{\n\t\t\t\t\tthis.loggerService.log('navigation succeeded');\n\t\t\t\t}\n\t\t\t})\n\t\t\t\t.catch(error =>\n\t\t\t\t{\n\t\t\t\t\tthis.loggerService.error(error);\n\t\t\t\t});\n\t\t}\n\t}\n\n\tupdateIsMobileView(): boolean\n\t{\n \tconst isMobile = window.innerWidth <= MaxDeviceWidth.mobile;\n \treturn isMobile;\n\t}\n}\n\n","/* eslint-disable complexity */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable max-lines */\n/* eslint-disable unused-imports/no-unused-vars */\nimport { Inject, Injectable } from '@angular/core';\nimport { ServiceHistoryLabels } from '../../components/myfleet/sub-modules/equipment-detail/definitions';\nimport { Address, AssignedLocation, DownloadMyFleetData, LocationPrimaryGrid, LoggedInLocation, LoggedInUser, Message, Role, StateProvince, Token, TokenData } from './shared-interface';\nimport { DateConverterService } from '../date-converter/date-converter.service';\nimport { forIn as lodashForIn } from 'lodash';\nimport { LocalStorageService } from '../local-storage/local-storage.service';\nimport { AuthState, ServiceManagementAddress } from '../../components/auth/definitions';\nimport { AbstractControl } from '@angular/forms';\nimport { EnvironmentRef } from 'projects/tmhna-portal/src/environments/interfaces';\nimport { expEnvironmentRef } from '../../injection-tokens/environment.injection-token';\nimport { Control, ControlType, FieldType, KngHeaderObjState, KngValueListState, KngValueObjState, SortOrder, TelematicsStatus } from 'kinetic-angular';\nimport { BreadCrumb, FieldName, LanguageCode, CompanyLocationsTableHeader, FileName, MyFleetTableLabels, CountryCode, states, provinces, AssignedUserTableHeader, MyFleetTelematicsStatus, InviteUserheader, InviteBulkUserheader, BulkEquipmentHeader, AddBulkEquipmentDownloadReportTemplate, AddBulkEquipmentNonToyotaDownloadReportTemplate, RemoveBulkEquipmentHeader } from './shared-enums';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { ApiService } from '../api/api.service';\nimport { ApiResponse } from '../../definitions/api-response.interface';\nimport { map } from 'rxjs/operators';\nimport { SharedUtilService } from './shared-util.service';\nimport { GridModel } from '../../components/service-management/components/service-management-page';\nimport { DownloadCompanyLocation, ValidateRemoveLocResponse } from '../../components/account-settings/definitions/account-settings.interface';\nimport { CommonErrorState } from '../../components/common-error';\nimport { BulkEquipmentDownloadReportTemplate, BulkEquipmentNonToyotaDownloadReportTemplate, ChangeRequestHeaderLabel, DownloadReportTemp, MyFleetHeadrNames } from '../../components/myfleet/definitions/myfleet.interface';\nimport { canadaZipFormat, individualUserRoleId, nullCheckValue, batteryStateOfChargeNullValue } from './shared-constants';\nimport { Router } from '@angular/router';\nimport { LoggerService } from '../logger/logger.service';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { DownloadUserListData } from '../../components/location-management/sub-modules/add-new-location/definitions/add-new-location.interface';\nimport { MyQuotesGridListLabel } from '../../components/my-quotes';\nimport { ResponseDealerAddress } from '../../components/order-management/sub-modules/equipment-order-details/definitions/equipment-order-details.interface';\nexport type PrimitiveType = number | string | boolean;\nexport type SomeKeyValType = { [key: string]: PrimitiveType };\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class SharedService\n{\n\tdate: string = '';\n\tobjectUrl!: string;\n\tlocationNames: Control[] = [];\n\tlocationNamesArr: string[] = [];\n\tcompanyLocationsHeader: any = CompanyLocationsTableHeader;\n\tbulkEquipmentHeader: any = BulkEquipmentHeader;\n\taddBulkEquipmentDownloadReportTemplate: any = AddBulkEquipmentDownloadReportTemplate;\n\taddBulkEquipmentNonToyotaDownloadReportTemplate: any = AddBulkEquipmentNonToyotaDownloadReportTemplate;\n\tremoveBulkEquipmentHeader: any = RemoveBulkEquipmentHeader;\n\tassignedUserTableHeader: any = AssignedUserTableHeader;\n\tinviteUserheader: any = InviteUserheader;\n\tinviteBulkUserheader: any = InviteBulkUserheader;\n\tcoperateConvertFlag:boolean = true;\n\tvalidateRemoveLocResponse$: BehaviorSubject = new BehaviorSubject(false);\n\tvalidateRemoveLocResponse: ValidateRemoveLocResponse = {\n\t\tisLastLocation: false,\n\t\tidentifiedUsers: []\n\t};\n\tlocationId$: BehaviorSubject = new BehaviorSubject('');\n\tprivate readonly userName$: BehaviorSubject = new BehaviorSubject('');\n\tget userNameObservable$(): Observable\n\t{\n\t\treturn this.userName$;\n\t}\n\tget userName(): string\n\t{\n\t\treturn this.userName$.value;\n\t}\n\tset updatedUserNameState(value: string)\n\t{\n\t\tthis.userName$.next(value);\n\t}\n\n\tconstructor(\n\t\tpublic dateService: DateConverterService,\n\t\tpublic localStorageService: LocalStorageService,\n\t\tprivate readonly apiService: ApiService,\n\t\tprivate readonly sharedUtilService: SharedUtilService,\n\t\tpublic loggerService: LoggerService,\n\t\t@Inject(expEnvironmentRef) readonly environmentRef: EnvironmentRef\n\t)\n\t{\n\t\tthis.getLocationValues();\n\t}\n\n\ttruncate(input: string, charactersToTruncate: number)\n\t{\n\t\tif (input.length > charactersToTruncate)\n\t\t{\n\t\t\treturn input.substring(0, charactersToTruncate) + '...';\n\t\t}\n\t\treturn input;\n\t};\n\n\tpublic nullValueHandler(value: string): string\n\t{\n\t\treturn (value !== null && value !== undefined && value.toString().trim() !== '') ? value : nullCheckValue;\n\t}\n\tpublic nullLocationHandler(value: string): string\n\t{\n\t\treturn (value !== null && value !== undefined && value.toString().trim() !== '' && value !== 'null, null') ? value : nullCheckValue;\n\t}\n\tpublic nullDateHandler(value: string): string\n\t{\n\t\treturn (value !== null && value !== undefined && value.toString().trim() !== '' && value.toString() !== '0') ? value : nullCheckValue;\n\t}\n\tpublic myfleetDownloadNullValueHandler(value: string): string\n\t{\n\t\treturn value || '-';\n\t}\n\tpublic notApplicableValueHandler(value: string): string\n\t{\n\t\treturn value || 'N/A';\n\t}\n\tpublic emptyStringHandler(value: string | undefined | null): string\n\t{\n\t\treturn value ?? '';\n\t}\n\tpublic numericNullValueHandler(value: string): string\n\t{\n\t\treturn value || '0';\n\t}\n\tpublic updateServiceCampaignBannerDataValue(message: string, tokenArray: TokenData[]): string\n\t{\n\t\tif (tokenArray && tokenArray.length > 0)\n\t\t{\n\t\t\ttokenArray.forEach((element) =>\n\t\t\t{\n\t\t\t\tif (element.isLink === 'true' && element.url !== '' )\n\t\t\t\t{\n\t\t\t\t\telement.text = `` + element.text + '';\n\t\t\t\t\tmessage = message.replace(element.name, element.text);\n\t\t\t\t}\n\t\t\t\tif(element.isLink === 'true' && element.url === '')\n\t\t\t\t{\n\n\t\t\t\t\telement.text = '
' + element.text + '
';\n\t\t\t\t\tmessage = message.replace(element.name, element.text);\n\n\t\t\t\t}\n\t\t\t\tmessage = message.replace(element.name, element.text);\n\n\t\t\t});\n\t\t}\n\t\treturn message;\n\t}\n\tpublic updateBoldText(message: string, tokenArray: TokenData[]): string\n\t{\n\t\tif (tokenArray && tokenArray.length > 0)\n\t\t{\n\t\t\ttokenArray.forEach((element) =>\n\t\t\t{\n\n\t\t\t\telement.text = '' + element.text + '';\n\n\t\t\t\tmessage = message.replace(element.name, element.text);\n\t\t\t});\n\t\t}\n\t\treturn message;\n\t}\n\tpublic static hasOneValidPrimitiveType(obj: SomeKeyValType, validatorPredicate: (value: PrimitiveType) => boolean = this.validatePrimitiveValue): boolean\n\t{\n\t\tlet result: boolean = false;\n\t\tconst primitiveTypes: ['number', 'string', 'boolean'] = [ 'number', 'string', 'boolean' ];\n\t\tlodashForIn(obj, item =>\n\t\t{\n\t\t\tconst itemIsPrimitiveType: boolean = primitiveTypes.find(typeName => typeof item === typeName) !== undefined;\n\t\t\tresult = itemIsPrimitiveType ? validatorPredicate(item) : this.hasOneValidPrimitiveType(item as unknown as SomeKeyValType, validatorPredicate);\n\t\t\tif (result)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t});\n\t\treturn result;\n\t}\n\tprivate static validatePrimitiveValue(item: PrimitiveType): boolean\n\t{\n\t\tconst isValidString: boolean = typeof item === 'string' ? item !== '' : false;\n\t\tconst isValidNumber: boolean = typeof item === 'number' && !Number.isNaN(item);\n\t\tconst isValidBoolean: boolean = typeof item === 'boolean';\n\t\treturn isValidString || isValidNumber || isValidBoolean;\n\t}\n\n\tpublic capitalizeFirstLetter(value: string)\n\t{\n\t\tlet name = '';\n\t\tif (value)\n\t\t{\n\t\t\tname = value[0].toUpperCase() + value.substring(1);\n\t\t}\n\t\treturn name;\n\t}\n\n\tpublic capitalizeFirstLetterOfEachWord(value: string )\n\t{\n\t\tif(value)\n\t\t{\n\t\t\tconst str = value.split(' ');\n\t\t\tfor(let i = 0; i < str.length; i++)\n\t\t\t{\n\t\t\t\tstr[i] = str[i][0].toUpperCase() + str[i].substring(1);\n\t\t\t}\n\t\t\treturn str.join(' ');\n\t\t}\n\t\treturn value;\n\t}\n\tpublic createDownloadLink(blob: Blob, filename: string): void\n\t{\n\t\tconst a = document.createElement('a');\n\t\tconst objectUrl = URL.createObjectURL(blob);\n\t\ta.href = objectUrl;\n\t\ta.download = filename;\n\t\ta.click();\n\t\tURL.revokeObjectURL(objectUrl);\n\t}\n\n\tpublic downloadTable(name: string, res: Blob): string\n\t{\n\t\tconst blob = new Blob([res], { type: 'text/csv;charset=utf8;' });\n\t\tthis.date = new Date().toString();\n\t\tconst filename = name + '_' + this.dateService.tranformDate(this.date, 'MMddyyyyhhmmss') + '.csv';\n\t\tthis.createDownloadLink(blob, filename);\n\t\treturn filename;\n\t}\n\tpublic downloadExcel(name: string, res: Blob): void\n\t{\n\t\tconst blob = new Blob([res], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });\n\t\tconst filename = name;\n\t\tthis.createDownloadLink(blob, filename);\n\t}\n\n\tpublic downloadPDF(name: string, res: Blob): void\n\t{\n\t\tconst blob = new Blob([res], { type: 'application/pdf' });\n\t\tconst filename = name;\n\t\tthis.createDownloadLink(blob, filename);\n\t}\n\n\tpublic downloadTableData(name: string, res: any, locationName?: string): string\n\t{\n\t\tlet csvData = '';\n\t\tif(name === FileName.myfleet)\n\t\t{\n\t\t\tcsvData = this.convertToCSVFile(res);\n\t\t}\n\t\telse if(name === FileName.companyLocations)\n\t\t{\n\t\t\tconst objArray: DownloadCompanyLocation[] = res;\n\t\t\tconst array = typeof objArray !== 'object' ? JSON.parse(objArray) : objArray;\n\t\t\tconst tableHeader: string[]= Object.values(this.companyLocationsHeader);\n\t\t\tcsvData = this.convertToCSV(array, tableHeader);\n\t\t}\n\t\telse if(name === FileName.bulkequipmentReport)\n\t\t{\n\t\t\tconst objArray: DownloadReportTemp[] = res;\n\t\t\tconst array = typeof objArray !== 'object' ? JSON.parse(objArray) : objArray;\n\t\t\tlet tableHeader: string[] = [];\n\t\t\tif(locationName === 'bulk')\n\t\t\t{\n\t\t\t\ttableHeader = Object.values(this.bulkEquipmentHeader);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\ttableHeader = Object.values(this.removeBulkEquipmentHeader);\n\t\t\t}\n\t\t\tcsvData = this.convertToCSV(array, tableHeader);\n\t\t}\n\t\telse if(name === FileName.addBulkEquipmentToyotaDownloadReportTemplate)\n\t\t{\n\t\t\tconst objArray: BulkEquipmentDownloadReportTemplate[] = res;\n\t\t\tconst array = typeof objArray !== 'object' ? JSON.parse(objArray) : objArray;\n\t\t\tconst result = array.map(({ Log, ...rest }: { Log: any; [key: string]: any }) => ({ ...rest }));\n\t\t\tconst tableHeader: string[]= Object.values(this.addBulkEquipmentDownloadReportTemplate);\n\t\t\tcsvData = this.convertToCSV(result, tableHeader);\n\t\t}\n\t\telse if(name === FileName.addBulkEquipmentNonToyotaDownloadReportTemplate)\n\t\t{\n\t\t\tconst objArray: BulkEquipmentNonToyotaDownloadReportTemplate[] = res;\n\t\t\tconst array = typeof objArray !== 'object' ? JSON.parse(objArray) : objArray;\n\t\t\tconst result = array.map(({ Log, ...rest }: { Log: any; [key: string]: any }) => ({ ...rest }));\n\t\t\tconst tableHeader: string[]= Object.values(this.addBulkEquipmentNonToyotaDownloadReportTemplate);\n\t\t\tcsvData = this.convertToCSV(result, tableHeader);\n\t\t}\n\t\telse if(name === FileName.assignUserList)\n\t\t{\n\t\t\tconst objArray: DownloadUserListData[] = res;\n\t\t\tconst array = typeof objArray !== 'object' ? JSON.parse(objArray) : objArray;\n\t\t\tconst tableHeader: string[]= Object.values(this.assignedUserTableHeader);\n\t\t\tcsvData = this.convertToCSV(array, tableHeader);\n\t\t\tname = locationName + '_' + name;\n\t\t}\n\t\telse if(name === FileName.inviteUserTemplate)\n\t\t{\n\t\t\tconst objArray = res;\n\t\t\tconst array = typeof objArray !== 'object' ? JSON.parse(objArray) : objArray;\n\t\t\tlet tableHeader: string[] = [];\n\t\t\tif(locationName === 'bulk')\n\t\t\t{\n\t\t\t\ttableHeader = Object.values(this.inviteBulkUserheader);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\ttableHeader = Object.values(this.inviteUserheader);\n\t\t\t}\n\t\t\tcsvData = this.convertToCSV(array, tableHeader);\n\t\t}\n\t\tcsvData = '\\uFEFF' + csvData;\n\t\tconst blob = new Blob([csvData], { type: 'data:text/csv;charset=utf-8;' });\n\t\tthis.date = new Date().toString();\n\t\tconst filename = name + '_' + this.dateService.tranformDate(this.date, 'MMddyyyyhhmmss') + '.csv';\n\t\tthis.createDownloadLink(blob, filename);\n\t\treturn filename;\n\t}\n\n\n\tpublic convertToCSV(array: any[], tableHeader: string[])\n\t{\n\t\tlet str = '';\n\t\tlet row = '';\n\t\ttableHeader.forEach((element: string) =>\n\t\t{\n\t\t\trow += element.concat(',');\n\t\t});\n\t\trow = row.slice(0, -1);\n\t\tstr += row.concat('\\r\\n');\n\n\t\tfor (const i in array)\n\t\t{\n\t\t\tlet line = '';\n\t\t\tfor (const index in array[i])\n\t\t\t{\n\n\t\t\t\tif (line !== '') line += ',';\n\n\t\t\t\tline += array[i][index];\n\t\t\t}\n\t\t\tstr += line + '\\r\\n';\n\t\t}\n\t\treturn str;\n\t}\n\n\tpublic convertToCSVFile(objArray: Array): string\n\t{\n\t\tconst array: Array = typeof objArray !== 'object' ? JSON.parse(objArray) : objArray;\n\t\tlet str = '';\n\t\tlet row = '';\n\n\t\tconst tableHeader = this.getMyFleetHeaderForDownload();\n\t\ttableHeader.forEach((element: string) =>\n\t\t{\n\t\t\trow += element.concat(',');\n\t\t});\n\t\trow = row.slice(0, -1);\n\t\tstr += row.concat('\\r\\n');\n\t\tlet tableValues: DownloadMyFleetData[] = [];\n\t\ttableValues = this.getMyFleetTableValues(array);\n\t\tfor (const j in tableValues)\n\t\t{\n\t\t\tlet line: string = '';\n\t\t\tfor (const index in tableValues[j])\n\t\t\t{\n\t\t\t\tif(line !== '')\n\t\t\t\t\tline += ',';\n\t\t\t\tline = this.getMyFleetTableDataString(line, index, j, tableValues);\n\t\t\t}\n\t\t\tstr += line + '\\r\\n';\n\t\t}\n\t\treturn str;\n\t}\n\tpublic getMyFleetHeaderForDownload()\n\t{\n\t\tconst tableHeader: string[]= Object.values(MyFleetHeadrNames);\n\t\tif(!this.apiService.isTelematicsStatus)\n\t\t{\n\t\t\tconst index = tableHeader.indexOf(MyFleetHeadrNames.telematicsStatus);\n\t\t\tif(index !== -1)\n\t\t\t\ttableHeader.splice(index, 1);\n\t\t}\n\t\treturn tableHeader;\n\t}\n\tpublic getMyFleetTableDataString(line: string, index: string, j: string, tableValues: DownloadMyFleetData[])\n\t{\n\t\tif(index === MyFleetTableLabels.telematicsStatus)\n\t\t{\n\t\t\tif((tableValues as any)[j][index] === TelematicsStatus.connected)\n\t\t\t\tline += MyFleetTelematicsStatus.connected;\n\t\t\telse if((tableValues as any)[j][index] === TelematicsStatus.notConnected)\n\t\t\t\tline += MyFleetTelematicsStatus.notConnected;\n\t\t\telse if(!(tableValues as any)[j][index])\n\t\t\t\tline += MyFleetTelematicsStatus.downloadNull;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tline += (tableValues as any)[j][index] ? (tableValues as any)[j][index] : ' ';\n\t\t}\n\t\treturn line;\n\t}\n\tprivate getMyFleetTableValues(array: Array)\n\t{\n\t\tconst fleetData: DownloadMyFleetData[] = [];\n\t\tif(array.length === 0)\n\t\t{\n\t\t\tconst emptyobj: DownloadMyFleetData = {\n\t\t\t\tequipmentVin: '-',\n\t\t\t\tmodelID: '-',\n \t\t\tassetNumber: '-',\n\t\t\t\tequipmentType: '-',\n\t\t\t\tmake: '-',\n\t\t\t\tdateOfFirstUse: '-',\n\t\t\t\tassignedLocation: '-',\n\t\t\t\ttelematicsStatus: '-',\n\t\t\t\tfleetType: '-'\n\t\t\t};\n\t\t\tfleetData.push(emptyobj);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tfor (const i in array)\n\t\t\t{\n\t\t\t\tlet obj: DownloadMyFleetData = {\n\t\t\t\t\tequipmentVin: '',\n\t\t\t\t\tmodelID: '',\n\t\t\t\t\tassetNumber: '',\n\t\t\t\t\tequipmentType: '',\n\t\t\t\t\tmake: '',\n\t\t\t\t\tdateOfFirstUse: '',\n\t\t\t\t\tassignedLocation: '',\n\t\t\t\t\ttelematicsStatus: '',\n\t\t\t\t\tfleetType: ''\n\t\t\t\t};\n\t\t\t\tfor (const index in array[i].values)\n\t\t\t\t{\n\t\t\t\t\tobj = this.checkForFleetLabels(array[i].values[index], obj);\n\t\t\t\t}\n\t\t\t\tfleetData.push(obj);\n\t\t\t}\n\t\t}\n\t\treturn fleetData;\n\t}\n\n\tprivate checkForFleetLabels(arrayValues: any, obj: DownloadMyFleetData)\n\t{\n\t\tif(arrayValues.label === MyFleetTableLabels.equipmentVin)\n\t\t{\n\t\t\tobj.equipmentVin = this.myfleetDownloadNullValueHandler(arrayValues.labelValue);\n\t\t}\n\t\telse if(arrayValues.label === MyFleetTableLabels.modelID)\n\t\t{\n\t\t\tobj.modelID = this.myfleetDownloadNullValueHandler(arrayValues.labelValue);\n\t\t}\n\t\telse if(arrayValues.label === MyFleetTableLabels.assetNumber)\n\t\t{\n\t\t\tobj.assetNumber = this.myfleetDownloadNullValueHandler(arrayValues.labelValue);\n\t\t}\n\t\telse if(arrayValues.label === MyFleetTableLabels.equipmentType)\n\t\t{\n\t\t\tobj.equipmentType = this.myfleetDownloadNullValueHandler(arrayValues.labelValue);\n\t\t}\n\t\telse if(arrayValues.label === MyFleetTableLabels.manufacturer)\n\t\t{\n\t\t\tobj.make = this.myfleetDownloadNullValueHandler(arrayValues.labelValue);\n\t\t}\n\t\telse if(arrayValues.label === MyFleetTableLabels.fleetType)\n\t\t{\n\t\t\tobj.fleetType = this.myfleetDownloadNullValueHandler(arrayValues.labelValue);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tobj = this.checkForNewFleetLabels(arrayValues, obj);\n\t\t}\n\t\treturn obj;\n\t}\n\n\tprivate checkForNewFleetLabels(arrayValues: any, obj: DownloadMyFleetData)\n\t{\n\t\tif(arrayValues.label === MyFleetTableLabels.dateOfFirstUse)\n\t\t{\n\t\t\tobj.dateOfFirstUse = this.myfleetDownloadNullValueHandler(arrayValues.labelValue);\n\t\t}\n\t\telse if(arrayValues.label === MyFleetTableLabels.assignedLocation)\n\t\t{\n\t\t\tobj.assignedLocation =JSON.stringify(this.myfleetDownloadNullValueHandler(arrayValues.labelValue));\n\t\t}\n\t\telse if(arrayValues.label === MyFleetTableLabels.telematicsStatus)\n\t\t{\n\t\t\tobj.telematicsStatus = arrayValues.labelValue;\n\t\t}\n\t\treturn obj;\n\t}\n\n\tpublic formatAddress(address: Address| undefined, formatCompleteAddress: boolean)\n\t{\n\t\tif (formatCompleteAddress)\n\t\t{\n\t\t\treturn [ address?.addressLine1, address?.addressLine2, address?.city, address?.state, address?.zipCode ].filter(Boolean).join(', ');\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn [ address?.city, address?.state, address?.zipCode ].filter(Boolean).join(', ');\n\t\t}\n\t}\n\n\tpublic formatAddressWithPostalCode(address: ResponseDealerAddress | undefined)\n\t{\n\t\treturn [ address?.address1, address?.address2, address?.city, address?.stateCode, address?.postalCode ].filter(Boolean).join(', ');\n\t}\n\n\tpublic getAssignedLocationFormatted(): AssignedLocation[]\n\t{\n\n\t\tconst locations: LoggedInLocation[] = this.getLoggedInUserLocations();\n\t\tconst assignedLocations: AssignedLocation[] = [];\n\t\tlocations.forEach(element =>\n\t\t{\n\t\t\tconst location: AssignedLocation = { name: element.locationName, id: element.locationId, address: element.address, companyId: element.companyId };\n\t\t\tassignedLocations.push(location);\n\t\t});\n\t\treturn assignedLocations;\n\t}\n\n\tpublic async assignedLocationSearch(searchKey: string): Promise\n\t{\n\t\tconst locationData = this.getAssignedLocationFormatted();\n\t\tif (searchKey && searchKey.length > 2)\n\t\t{\n\t\t\tconst filteredResult: AssignedLocation[] = locationData.filter(\n\t\t\t\t(location: AssignedLocation) =>\n\t\t\t\t{\n\t\t\t\t\treturn location.name.toLowerCase().includes(searchKey.toLowerCase()) ||\n\t\t\t\t\t(location.address?.addressLine1?.toLowerCase().includes(searchKey.toLowerCase()) ||\n\t\t\t\t\tlocation.address?.addressLine2?.toLowerCase().includes(searchKey.toLowerCase()) ||\n\t\t\t\t\tlocation.address?.city?.toLowerCase().includes(searchKey.toLowerCase()) ||\n\t\t\t\t\tlocation.address?.state?.toLowerCase().includes(searchKey.toLowerCase()) ||\n\t\t\t\t\tlocation.address?.zipCode?.toLowerCase().includes(searchKey.toLowerCase())\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t);\n\t\t\treturn Promise.resolve(filteredResult);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn Promise.resolve([]);\n\t\t}\n\t}\n\tpublic checkIfLocationExists(locationName: string): boolean\n\t{\n\t\tconst locationArray = this.getLoggedInUserLocations();\n\t\treturn locationArray.filter((location: LoggedInLocation) => location.locationName.toLowerCase() === locationName.toLowerCase()).length > 0;\n\t}\n\n\tpublic getCustomerId()\n\t{\n\t\tconst userProfile = this.localStorageService.getLoggedInUser();\n\t\tif (userProfile)\n\t\t{\n\t\t\treturn this.localStorageService.parseJSON(userProfile).customerIds;\n\t\t}\n\t}\n\tpublic getUserId()\n\t{\n\t\tconst userProfile = this.localStorageService.getLoggedInUser();\n\t\tif (userProfile)\n\t\t{\n\t\t\treturn this.localStorageService.parseJSON(userProfile).userId;\n\t\t}\n\t}\n\tgetDefaultGrid()\n\t{\n\t\tconst userProfile = this.localStorageService.getLoggedInUser();\n\t\tif (userProfile)\n\t\t{\n\t\t\treturn this.localStorageService.parseJSON(userProfile).defaultGRID? this.localStorageService.parseJSON(userProfile).defaultGRID : '';\n\t\t}\n\t}\n\tgetLocalstorageItems()\n\t{\n\t\tconst userProfile = this.localStorageService.getLoggedInUser();\n\t\tlet loggedinUser: LoggedInUser;\n\t\tif (userProfile)\n\t\t{\n\t\t\tloggedinUser = this.localStorageService.parseJSON(userProfile);\n\t\t\tif (loggedinUser)\n\t\t\t{\n\t\t\t\tthis.coperateConvertFlag = loggedinUser.corporateAccountRequestFlag;\n\t\t\t}\n\n\n\t\t} return this.coperateConvertFlag;\n\t}\n\tgetLocalstorageUserProfile()\n\t{\n\t\tconst userProfile = this.localStorageService.getLoggedInUser();\n\t\tif (userProfile)\n\t\t{\n\t\t\treturn this.localStorageService.parseJSON(userProfile);\n\t\t}\n\t}\n\tpublic getUserEmail()\n\t{\n\t\tconst userProfile = this.localStorageService.getLoggedInUser();\n\t\tif (userProfile)\n\t\t{\n\t\t\treturn this.localStorageService.parseJSON(userProfile).email;\n\t\t}\n\t}\n\tpublic getPhoneNumber()\n\t{\n\t\tconst userProfile = this.localStorageService.getLoggedInUser();\n\t\tif (userProfile)\n\t\t{\n\t\t\treturn this.emptyStringHandler(this.localStorageService.parseJSON(userProfile).phoneNumber);\n\t\t}\n\t\telse\n\t\t\treturn '';\n\t}\n\tpublic \tgetRoleId()\n\t{\n\t\tconst userProfile = this.localStorageService.getLoggedInUser();\n\t\tif (userProfile)\n\t\t{\n\t\t\treturn this.localStorageService.parseJSON(userProfile).roles[0];\n\t\t}\n\t}\n\tpublic getPrivacyDate()\n\t{\n\t\tconst userProfile = this.localStorageService.getLoggedInUser();\n\t\tif (userProfile)\n\t\t{\n\t\t\treturn this.nullDateHandler(this.localStorageService.parseJSON(userProfile).privacyDate);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn nullCheckValue;\n\t\t}\n\t}\n\tpublic getTcDate()\n\t{\n\t\tconst userProfile = this.localStorageService.getLoggedInUser();\n\t\tif (userProfile)\n\t\t{\n\t\t\treturn this.nullDateHandler(this.localStorageService.parseJSON(userProfile)?.tcDate);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn nullCheckValue;\n\t\t}\n\t}\n\n\tpublic requiredLength(control: AbstractControl)\n\t{\n\t\tconst val: string = control.value?.split(/\\W+/).join('');\n\t\tconst err: boolean = val?.trim().length < 1;\n\t\tif (err)\n\t\t{\n\t\t\treturn { requiredLen: { value: control.value } };\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn null;\n\t\t}\n\t}\n\n\talphaSpecialCharValidation(control: AbstractControl, name: string)\n\t{\n\t\tconst regex = name === 'city'? /^[a-zA-ZáéíóúýàèìòùêëîïûüñçœâôÿÀÂÆÇÉÈÊËÎÏÔŒÙÛÜŸ!#$%&'\"’–()*+,-./\\\\:;<=>?@[\\]^_`{|}~ ]+$/ : /^[a-zA-Z0-9áéíóúýàèìòùêëîïûüñçœâôÿÀÂÆÇÉÈÊËÎÏÔŒÙÛÜŸ!#$%&'\"’–()*+,-./\\\\:;<=>?@[\\]^_`{|}~ ]+$/;\n\t\tconst value = control.value;\n\n\t\treturn (value?.length>0 && !regex.test(value)) ? { alphaSpclCharValidationError: { value: control.value } } : null;\n\t}\n\n\tnonNumericSpaceRestriction(value: string)\n\t{\n\t\tif (value.trim())\n\t\t{\n\t\t\tconst regex = /\\d+/;\n\t\t\tconst address = value.replace(regex, '');\n\t\t\treturn address.trimLeft();\n\t\t}\n\t\treturn value.trim();\n\t}\n\n\tcharacterValidationWithNumerics(control: AbstractControl)\n\t{\n\t\tconst regex = /^[a-zA-Z0-9\\s,-.']+$/;\n\t\tconst value = control.value;\n\t\treturn (value?.length>0 && !regex.test(value)) ? { invalidCharacterError: { value: control.value } } : null;\n\t}\n\n\tcharacterValidationWithoutNumerics(control: AbstractControl)\n\t{\n\t\tconst regex = /^[a-zA-Z\\s,-.']+$/;\n\t\tconst value = control.value;\n\t\treturn (value?.length>0 && !regex.test(value)) ? { invalidCharacterError: { value: control.value } } : null;\n\t}\n\n\tzipCodeLengthCheck(control: AbstractControl)\n\t{\n\t\tconst value = control.value;\n\t\treturn (value?.length > 0 && value?.length < 5) ? { minLengthError: { value: control.value } } : null;\n\t}\n\n\tzipCodeCanadaValidCheck(control: AbstractControl)\n\t{\n\t\tconst regex = canadaZipFormat;\n\t\tconst value = control.value;\n\t\treturn (value?.length>0 && !regex.test(value)) ? { canadaPostalCodeFormatError: { value: control.value } } : null;\n\t}\n\n\tnoWhitespaceValidator(control: AbstractControl)\n\t{\n\t\tconst isWhitespace = (control.value || '').trim().length === 0;\n\t\tconst isValid = !isWhitespace;\n\t\treturn isValid ? null : { whitespace: true };\n\t}\n\n\tupdateMessage(message: string, token: string, replaceText: string)\n\t{\n\t\treturn message.replace(token, replaceText);\n\t}\n\n\tpublic validatePhoneSequence(control: AbstractControl): { sequence: boolean } | null\n\t{\n\t\tif(control.value)\n\t\t{\n\t\t\tconst value = control.value?.split(/\\W+/).join('');\n\t\t\tlet next = parseInt(value[0]) + 1;\n\t\t\tlet seq = true;\n\t\t\tfor (const letter of value.slice(1).split(''))\n\t\t\t{\n\t\t\t\tif (next !== parseInt(letter))\n\t\t\t\t{\n\t\t\t\t\tseq = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse if (next === 9)\n\t\t\t\t{\n\t\t\t\t\tnext = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tnext++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn seq ? { sequence: true } : null;\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn null;\n\t\t}\n\t}\n\tpublic minLength(control: AbstractControl)\n\t{\n\t\tif(control.value !== undefined && control.value !== '')\n\t\t{\n\t\t\tconst val: string = control.value?.split(/\\W+/).join('');\n\t\t\tconst err: boolean = val?.trim().length > 0 && val?.trim().length < 10;\n\t\t\tif (err)\n\t\t\t{\n\t\t\t\treturn { minLength: { value: control.value } };\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic formatString(value: string): string\n\t{\n\t\tif (value.trim())\n\t\t{\n\t\t\tconst userName = value.replace(/[^a-zA-Z0-9 ]/g, '');\n\t\t\treturn userName;\n\t\t}\n\t\treturn value.trim();\n\t}\n\tpublic getRequestServicePath()\n\t{\n\t\treturn this.environmentRef.openContactFormUrl;\n\t}\n\n\tpublic currencyFormatter(amount: number, currency: string)\n\t{\n\t\treturn new Intl.NumberFormat(LanguageCode.default, {\n\t\t\tstyle: 'currency',\n\t\t\tcurrency: currency,\n\t\t\tmaximumFractionDigits: 0\n\t\t}).format(amount);\n\t}\n\tconcatenateLocation(location: Address): string\n\t{\n\t\tlet concateLocation = '';\n\t\tif (location)\n\t\t{\n\t\t\tconcateLocation = [ location.addressLine2, location.city, location.state, location.zipCode ]\n\t\t\t\t.filter(Boolean)\n\t\t\t\t.join(', ');\n\t\t}\n\t\treturn concateLocation;\n\t}\n\n\tpublic round(value: number, precision: number)\n\t{\n\t\treturn (Math.floor(value * Math.pow(10, precision)) / Math.pow(10, precision)).toFixed( precision);\n\t}\n\tisEmptyObject(obj: any): boolean\n\t{\n\t\treturn (obj && (Object.keys(obj).length === 0));\n\t}\n\tgetLoggedInUserCompanyObs()\n\t{\n\t\tlet loggedinUser: LoggedInUser;\n\t\tconst userProfile = this.localStorageService.getLoggedInUser();\n\t\tlet company: string = '';\n\t\tif (userProfile)\n\t\t{\n\t\t\tloggedinUser = this.localStorageService.parseJSON(userProfile);\n\t\t\tif (loggedinUser && !this.isEmptyObject(loggedinUser))\n\t\t\t{\n\t\t\t\tcompany = loggedinUser.company;\n\t\t\t}\n\t\t\treturn of(company);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.apiService.getLoggedInUserObs().pipe(\n\t\t\t\tmap(response => (response.statusCode === 200) ? this.processCompanyId(response) : company)\n\t\t\t);\n\t\t}\n\t}\n\tprocessCompanyId(res: ApiResponse): string\n\t{\n\t\tconst user: AuthState = res.data;\n\t\tlet companyId: string = '';\n\t\tif (user.company)\n\t\t\tcompanyId = user.company;\n\t\treturn companyId;\n\t}\n\tgetLoggedInUserAdminLocationIdObs()\n\t{\n\t\tlet loggedinUser: LoggedInUser;\n\t\tconst userProfile = this.localStorageService.getLoggedInUser();\n\t\tlet adminLocationId: string = '';\n\t\tif (userProfile)\n\t\t{\n\t\t\tloggedinUser = this.localStorageService.parseJSON(userProfile);\n\t\t\tif (loggedinUser && !this.isEmptyObject(loggedinUser))\n\t\t\t{\n\t\t\t\tadminLocationId = loggedinUser.adminLocationID ? loggedinUser.adminLocationID : '';\n\t\t\t}\n\t\t\treturn of(adminLocationId);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.apiService.getLoggedInUserObs().pipe(\n\t\t\t\tmap(response => (response.statusCode === 200) ? this.processAdminLocationId(response) : adminLocationId)\n\t\t\t);\n\t\t}\n\t}\n\tprocessAdminLocationId(res: ApiResponse): string\n\t{\n\t\tconst user: AuthState = res.data;\n\t\tlet adminLocationId: string = '';\n\t\tif (user.adminLocationID)\n\t\t\tadminLocationId = user.adminLocationID;\n\t\treturn adminLocationId;\n\t}\n\tprocessAdminEmailId(res: ApiResponse): string\n\t{\n\t\tconst user: AuthState = res.data;\n\t\tlet adminEmailId: string = '';\n\t\tif (user.adminEmailId)\n\t\t\tadminEmailId = user.adminEmailId;\n\t\treturn adminEmailId;\n\t}\n\tgetLoggedInUserLocations(): LoggedInLocation[]\n\t{\n\t\tlet loggedinUser: LoggedInUser;\n\t\tlet loggedInLocations: LoggedInLocation[] = [];\n\t\tconst userProfile = this.localStorageService.getLoggedInUserLocation();\n\t\tif (userProfile && !this.isEmptyObject(userProfile))\n\t\t{\n\t\t\tloggedinUser = this.localStorageService.parseJSON(userProfile);\n\t\t\tif (loggedinUser && !this.isEmptyObject(loggedinUser) && loggedinUser.locations?.length > 0)\n\t\t\t{\n\t\t\t\tloggedInLocations = loggedinUser.locations;\n\t\t\t}\n\t\t}\n\n\t\treturn loggedInLocations;\n\t}\n\tpublic getuserNameObs(): Observable\n\t{\n\t\tconst userProfile = this.getUserProfile();\n\t\tlet userName = '';\n\n\t\tif (userProfile && !this.isEmptyObject(userProfile))\n\t\t{\n\t\t\tuserName = this.constructUserName(userProfile);\n\t\t\treturn of(userName);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst userObs: Observable = this.getUserObservable();\n\t\t\treturn userObs.pipe(\n\t\t\t\tmap(response => (response.statusCode === 200) ? this.processUserName(response) : userName)\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate getUserProfile(): any\n\t{\n\t\treturn this.sharedUtilService.isTmhCorporateAdmin && !this.sharedUtilService.isCustomerSupportSession ?\n\t\t\tthis.localStorageService.getTmhCorporateAdminDetails() :\n\t\t\tthis.sharedUtilService.isTmhCustomerSupportRole && !this.sharedUtilService.isCustomerSupportSession ?\n\t\t\t\tthis.localStorageService.getTmhCustomerSupportDetails() :\n\t\t\t\tthis.localStorageService.getLoggedInUser();\n\t}\n\n\tprivate constructUserName(userProfile: any): string\n\t{\n\t\tconst parsedProfile = this.localStorageService.parseJSON(userProfile);\n\t\treturn `${parsedProfile?.firstName} ${parsedProfile?.lastName}`;\n\t}\n\n\tprivate getUserObservable(): Observable\n\t{\n\t\treturn this.sharedUtilService.isTmhCorporateAdmin ?\n\t\t\tthis.apiService.getLoggedInTmhCorporateAdminDetails() :\n\t\t\tthis.sharedUtilService.isTmhCustomerSupportRole ?\n\t\t\t\tthis.apiService.getLoggedInTmhCustomerSupportDetails() :\n\t\t\t\tthis.apiService.getLoggedInUserObs();\n\t}\n\tprocessUserName(res: ApiResponse): string\n\t{\n\t\tlet loggedInUser: string = '';\n\t\tconst user: AuthState = res.data;\n\t\tloggedInUser = this.capitalizeFirstLetter(user?.firstName)\n\t\t\t+ ' ' + this.capitalizeFirstLetter(user?.lastName);\n\t\treturn loggedInUser;\n\t}\n\tgetLoggedInUseLocationsIdsObs(): Observable\n\t{\n\t\tlet loggedinUser: LoggedInUser;\n\t\tlet loggedInLocationIds: string[] = [];\n\t\tconst userProfile = this.localStorageService.getLoggedInUser();\n\t\tif (userProfile && !this.isEmptyObject(userProfile))\n\t\t{\n\t\t\tloggedinUser = this.localStorageService.parseJSON(userProfile);\n\t\t\tif (loggedinUser && !this.isEmptyObject(loggedinUser) && loggedinUser.customerIds?.length > 0)\n\t\t\t{\n\t\t\t\tloggedInLocationIds = [...loggedinUser.customerIds].filter(val => val!== null);\n\n\t\t\t}\n\t\t\treturn of(loggedInLocationIds);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.apiService.getLoggedInUserObs().pipe(\n\t\t\t\tmap(response => (response.statusCode === 200) ? this.process(response) : loggedInLocationIds)\n\t\t\t);\n\t\t}\n\n\t}\n\n\tprocess(res: ApiResponse): string[]\n\t{\n\t\tlet loggedInLocationIds: string[] = [];\n\t\tconst user: AuthState = res.data;\n\t\tloggedInLocationIds = [...user.customerIds].filter(val => val!== null);\n\t\treturn loggedInLocationIds;\n\t}\n\tgetLoggedInUserLocationWithPrimaryGridObs(): Observable\n\t{\n\t\tlet loggedinUser: LoggedInUser;\n\t\tconst loggedInLocationPrimaryGrid: LocationPrimaryGrid = { locations: [], primaryGridId: '' };\n\t\tconst userProfile = this.localStorageService.getLoggedInUser();\n\t\tif (userProfile && !this.isEmptyObject(userProfile))\n\t\t{\n\t\t\tloggedinUser = this.localStorageService.parseJSON(userProfile);\n\t\t\tif (loggedinUser && !this.isEmptyObject(loggedinUser) && loggedinUser.customerIds.length > 0)\n\t\t\t{\n\t\t\t\tloggedInLocationPrimaryGrid.primaryGridId = loggedinUser.primaryLocationGRID;\n\t\t\t\tloggedInLocationPrimaryGrid.locations = [...loggedinUser.customerIds].filter(val => val!== null);\n\t\t\t}\n\t\t\treturn of(loggedInLocationPrimaryGrid);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.apiService.getLoggedInUserObs().pipe(\n\t\t\t\tmap(response => (response.statusCode === 200) ? this.processPrimaryGridId(response) : loggedInLocationPrimaryGrid)\n\t\t\t);\n\t\t}\n\n\t}\n\tprocessPrimaryGridId(res: ApiResponse): LocationPrimaryGrid\n\t{\n\t\tconst loggedInPrimaryGrid: LocationPrimaryGrid = { locations: [], primaryGridId: '' };\n\t\tconst user: AuthState = res.data;\n\t\tif(user.customerIds)\n\t\t{\n\t\t\tloggedInPrimaryGrid.locations = [...user.customerIds].filter(val => val!== null);\n\t\t}\n\t\tloggedInPrimaryGrid.primaryGridId = user?.primaryLocationGRID ? user?.primaryLocationGRID : '';\n\t\treturn loggedInPrimaryGrid;\n\t}\n\n\tpublic getLocationValues(): Control[]\n\t{\n\t\tconst locations: LoggedInLocation[] = this.getLoggedInUserLocations();\n\t\tconst assignedLocations: Control[] = [];\n\t\tconst assignedLocationArr: string[] = [];\n\t\tlocations.forEach(element =>\n\t\t{\n\t\t\tconst location: AssignedLocation = {\n\t\t\t\tname: element?.locationLabel ? element.locationLabel : element.locationName,\n\t\t\t\tid: element.locationId,\n\t\t\t\taddress: element.address\n\t\t\t};\n\t\t\tassignedLocations.push(\n\t\t\t\tthis.initialiseFilterControl(\n\t\t\t\t\tlocation.id,\n\t\t\t\t\tlocation.name,\n\t\t\t\t\tControlType.checkbox,\n\t\t\t\t\tlocation.address\n\t\t\t\t)\n\t\t\t);\n\t\t\tassignedLocationArr.push(location.name);\n\t\t});\n\t\tthis.locationNames = [...assignedLocations];\n\t\tthis.locationNamesArr = [...assignedLocationArr];\n\t\treturn assignedLocations;\n\t}\n\n\tpublic getBillingLocationValues(): Control[]\n\t{\n\t\tconst locations: LoggedInLocation[] = this.getLoggedInUserLocations();\n\t\tconst assignedLocations: Control[] = [];\n\t\tconst assignedLocationArr: string[] = [];\n\t\tlocations.forEach(element =>\n\t\t{\n\t\t\tconst location: AssignedLocation = {\n\t\t\t\tname: element?.locationLabel ? element.locationLabel : element.locationName,\n\t\t\t\tid: element.locationId,\n\t\t\t\taddress: element.address\n\t\t\t};\n\t\t\tassignedLocations.push(\n\t\t\t\tthis.initialiseFilterControl(\n\t\t\t\t\tlocation.id,\n\t\t\t\t\tlocation.name,\n\t\t\t\t\tControlType.checkbox,\n\t\t\t\t\tlocation.address\n\t\t\t\t)\n\t\t\t);\n\t\t\tassignedLocationArr.push(location.name);\n\t\t});\n\t\tthis.locationNames = [...assignedLocations];\n\t\tthis.locationNamesArr = [...assignedLocationArr];\n\t\treturn assignedLocations;\n\t}\n\tinitialiseFilterControl(id: string, label: string, type: ControlType, address?: Address)\n\t{\n\t\treturn new Control({\n\t\t\tid: id,\n\t\t\tlabel: label,\n\t\t\ttype: type,\n\t\t\tvalue: false,\n\t\t\tisLocation: (address !== undefined),\n\t\t\taddress: address,\n\t\t\tinputPlaceholderText: '',\n\t\t\tinputIcon: '',\n\t\t\toptions: []\n\t\t});\n\t}\n\n\tinitialiseServiceFilterControl(id: string, label: string, type: ControlType, address?: ServiceManagementAddress)\n\t{\n\t\treturn new Control({\n\t\t\tid: id,\n\t\t\tlabel: label,\n\t\t\ttype: type,\n\t\t\tvalue: false,\n\t\t\tisLocation: (address !== undefined),\n\t\t\taddress: address,\n\t\t\tinputPlaceholderText: '',\n\t\t\tinputIcon: '',\n\t\t\toptions: []\n\t\t});\n\t}\n\n\trequestServiceEquipmentDetails()\n\t{\n\t\tif (this.environmentRef.requestServiceEquipmentDetails)\n\t\t{\n\t\t\twindow.open(this.environmentRef.requestServiceEquipmentDetails, '_blank', 'noopener');\n\t\t}\n\t}\n\n\tpublic displayRepairLines(key: string, value: [{ repairType: string; repairCode: string }], gridObj: KngValueObjState, labels: GridModel | ServiceHistoryLabels)\n\t{\n\t\tconst valueKeys = Object.keys(value[0]);\n\t\tconst repairtypeArr: string[] = [];\n\t\tconst repaircodeArr: string[] = [];\n\t\tvalue.forEach((repairLine: { repairType: string; repairCode: string }) =>\n\t\t{\n\t\t\trepairtypeArr.push(repairLine.repairType);\n\t\t\trepaircodeArr.push(repairLine.repairCode);\n\t\t});\n\t\tconst uniqueRepairtype = new Set(repairtypeArr);\n\t\tlet uniqueRepairtypeArr = [...uniqueRepairtype];\n\t\tconst uniqueRepaircode = new Set(repaircodeArr);\n\t\tlet uniqueRepaircodeArr = [...uniqueRepaircode];\n\t\tuniqueRepairtypeArr = uniqueRepairtypeArr.filter(item => item !== '');\n\t\tuniqueRepaircodeArr = uniqueRepaircodeArr.filter(item => item !== '');\n\t\tthis.setRepairtype(valueKeys, uniqueRepairtypeArr, key, gridObj, labels);\n\t\tthis.setRepaircode(valueKeys, uniqueRepaircodeArr, key, gridObj, labels);\n\t\treturn gridObj;\n\t}\n\n\tpublic getLabel(dataKey: string, labels: GridModel | ServiceHistoryLabels | ChangeRequestHeaderLabel | MyQuotesGridListLabel): string\n\t{\n\t\tlet label = '';\n\t\tObject.entries(labels).forEach(([ key, value ]) =>\n\t\t{\n\t\t\tif (key === dataKey) label = value;\n\t\t});\n\t\treturn label;\n\t}\n\n\tpublic setRepairtype(valueKeys: string[], uniqueRepairtypeArr: string[], key: string, gridObj: KngValueObjState, labels: GridModel | ServiceHistoryLabels)\n\t{\n\t\tconst repairtypelabel = this.getLabel(valueKeys[0], labels);\n\t\tif (uniqueRepairtypeArr.length <= 1 && repairtypelabel !== '')\n\t\t{\n\t\t\tgridObj.values.push(this.setRepairLine(repairtypelabel, uniqueRepairtypeArr, key));\n\t\t}\n\t\telse if (uniqueRepairtypeArr.length > 1 && repairtypelabel !== '')\n\t\t{\n\t\t\tgridObj.values.push(this.setRepairLineMultiple(repairtypelabel, uniqueRepairtypeArr, key));\n\t\t}\n\t\treturn gridObj;\n\t}\n\tpublic setRepaircode(valueKeys: string[], uniqueRepaircodeArr: string[], key: string, gridObj: KngValueObjState, labels: GridModel | ServiceHistoryLabels)\n\t{\n\t\tconst repaircodelabel = this.getLabel(valueKeys[1], labels);\n\t\tif (uniqueRepaircodeArr.length <= 1 && repaircodelabel !== '')\n\t\t{\n\t\t\tgridObj.values.push(this.setRepairLine(repaircodelabel, uniqueRepaircodeArr, key));\n\t\t}\n\t\telse if (uniqueRepaircodeArr.length > 1 && repaircodelabel !== '')\n\t\t{\n\t\t\tgridObj.values.push(this.setRepairLineMultiple(repaircodelabel, uniqueRepaircodeArr, key));\n\t\t}\n\t\treturn gridObj;\n\t}\n\tpublic setRepairLine(label: string, array: string | string[], key: string)\n\t{\n\t\tconst valueState: KngValueListState = {\n\t\t\tlabel: label,\n\t\t\tlabelValue: array[0],\n\t\t\ticon: '',\n\t\t\tcssClass: '',\n\t\t\tcategory: this.checkCategory(key)\n\t\t};\n\t\treturn valueState;\n\t}\n\tpublic setRepairLineMultiple(label: string, array: string | string[], key: string)\n\t{\n\t\tconst valueState: KngValueListState = {\n\t\t\tlabel: label,\n\t\t\tlabelValue: array.length.toString() + ' ' + label + 's',\n\t\t\ticon: '',\n\t\t\tcssClass: '',\n\t\t\tcategory: this.checkCategory(key)\n\t\t};\n\t\treturn valueState;\n\t}\n\tpublic checkCategory(key: string): string\n\t{\n\t\tlet selectedCat: string = FieldType.text;\n\t\tselectedCat = (key === FieldName.status) ? FieldType.invoice : this.sharedUtilService.getFieldType(key);\n\t\treturn selectedCat;\n\t}\n\tpublic getadminEmail()\n\t{\n\t\tconst userProfile = this.localStorageService.getLoggedInUser();\n\t\tlet loggedinUser: LoggedInUser;\n\t\tlet adminEmailId: string = '';\n\t\tif (userProfile)\n\t\t{\n\t\t\tloggedinUser = this.localStorageService.parseJSON(userProfile);\n\t\t\tif (loggedinUser && !this.isEmptyObject(loggedinUser))\n\t\t\t{\n\t\t\t\tadminEmailId = loggedinUser.adminEmailId ? loggedinUser.adminEmailId : '';\n\t\t\t}\n\t\t\treturn of(adminEmailId);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.apiService.getLoggedInUserObs().pipe(\n\t\t\t\tmap(response => (response.statusCode === 200) ? this.processAdminEmailId(response) : adminEmailId)\n\t\t\t);\n\t\t}\n\n\t}\n\n\tpublic updateGetAdminEmail(message: Message): string\n\t{\n\t\tthis.getadminEmail().subscribe({\n\t\t\tnext: (res: string) =>\n\t\t\t{\n\t\t\t\tmessage.tokens = [];\n\t\t\t\tconst token: Token = { name: '$token', text: res, isLink: true };\n\t\t\t\tmessage.tokens.push(token);\n\n\t\t\t\tif (message.tokens && message.tokens.length > 0)\n\t\t\t\t{\n\t\t\t\t\tmessage.tokens.forEach((element) =>\n\t\t\t\t\t{\n\t\t\t\t\t\tmessage.text = message.text.replace(element.name, element.text);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t});\n\t\treturn message.text;\n\t}\n\n\tcheckRouteParams(label: string, querParams:{[key: string]: string })\n\t{\n\t\tif(label === BreadCrumb.addNewLocation && querParams?.['locationId'])\n\t\t{\n\t\t\tlabel = BreadCrumb.locationDetails;\n\t\t}\n\t\treturn label;\n\t}\n\n\tgetLoggedInUserRole(): Observable\n\t{\n\t\tconst loggedInRoleName: string[] = [];\n\t\treturn this.apiService.getLoggedInUserObs().pipe(\n\t\t\tmap(response => (response.statusCode === 200) ? this.processRoleName(response) : loggedInRoleName)\n\t\t);\n\n\t}\n\n\tgetLoggedInUserRoleFromSession(): Observable\n\t{\n\t\tlet loggedinUser: LoggedInUser;\n\t\tconst role: string[] = [];\n\t\tconst userProfile = this.localStorageService.getLoggedInUser();\n\n\t\tif (userProfile && !this.isEmptyObject(userProfile))\n\t\t{\n\t\t\tloggedinUser = this.localStorageService.parseJSON(userProfile);\n\n\t\t\tif (loggedinUser && !this.isEmptyObject(loggedinUser))\n\t\t\t{\n\t\t\t\tloggedinUser.roles?.forEach((item: string) =>\n\t\t\t\t{\n\t\t\t\t\trole.push(item);\n\t\t\t\t});\n\n\t\t\t}\n\t\t\treturn of(role);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.apiService.getLoggedInUserObs().pipe(\n\t\t\t\tmap(response => (response.statusCode === 200) ? this.processRole(response) : role)\n\t\t\t);\n\t\t}\n\n\t}\n\n\tprocessRole(res: ApiResponse): string[]\n\t{\n\t\tconst role: string[] = [];\n\t\tconst user: AuthState = res.data;\n\t\tuser.roles?.forEach((item: string) =>\n\t\t{\n\t\t\trole.push(item);\n\t\t});\n\t\treturn role;\n\t}\n\n\tprocessRoleName(res: ApiResponse): string[]\n\t{\n\t\tconst user: AuthState = res.data;\n\t\tconst loggedInRoleName: string[] = user.roles? user.roles : [];\n\n\t\treturn loggedInRoleName;\n\t}\n\n\tgetErrorState(message: string, contactMessage: Message)\n\t{\n\t\tconst errorState:CommonErrorState = {\n\t\t\tmessages: [{ message: message }, { message: this.updateGetAdminEmail(contactMessage), cssClass: 'error-contact-section' }],\n\t\t\tid: '',\n\t\t\tstatusCode: 401,\n\t\t\timage: this.sharedUtilService.setImageBasedOnStatusCode(401)\n\t\t};\n\n\t\treturn errorState;\n\t}\n\tcheckForIndividualUserRole(roleList: Role[])\n\t{\n\t\tconst indexOfIndividualRole = roleList.findIndex(role=> role.id === individualUserRoleId);\n\t\tif(indexOfIndividualRole !== -1)\n\t\t{\n\t\t\troleList.splice(indexOfIndividualRole, 1);\n\t\t}\n\t\treturn roleList;\n\t}\n\tformatPhoneNumber(value: string): string\n\t{\n\t\tif(value.trim())\n\t {\n\t\t\tlet phoneNumber = value.replace(/[^\\d]/g, '');\n\t\t\tconst phoneNumberLength = phoneNumber.length;\n\t\t\tphoneNumber = phoneNumberLength > 10 ? phoneNumber.slice(-10) : phoneNumber;\n\t\t\tif (phoneNumberLength < 4) return phoneNumber;\n\t\t\tif(phoneNumberLength < 7)\n\t\t return `(${phoneNumber.slice(0, 3)})${phoneNumber.slice(3)}`;\n\t\t\treturn `(${phoneNumber.slice(0, 3)})${phoneNumber.slice(\n\t\t\t\t3, 6\n\t\t\t)}-${phoneNumber.slice(6, 10)}`;\n\t }\n\t return value.trim();\n\t}\n\thandlePhoneInputCursor(event: Event, cursorPosition: number, formattedNumberLength: number)\n\t{\n\t\tconst inputEvent = event as InputEvent;\n\t\tif(this.isCursorAtFormattedValues(cursorPosition, formattedNumberLength, inputEvent) )\n\t\t{\n\t\t\tcursorPosition = cursorPosition+2;\n\t\t}\n\t\telse if([ 1, 4, 8 ].includes(cursorPosition) && inputEvent.inputType !== 'deleteContentBackward')\n\t\t{\n\t\t\tcursorPosition = cursorPosition + 1;\n\t\t}\n\t\treturn cursorPosition;\n\t}\n\tisCursorAtFormattedValues(cursorPosition: number, formattedNumberLength: number, inputEvent: InputEvent)\n\t{\n\t\treturn this.isSequentialInput(cursorPosition, formattedNumberLength, 1, 2) || this.isSequentialInput(cursorPosition, formattedNumberLength, 4, 7) || (this.isSequentialInput(cursorPosition, formattedNumberLength, 9, 11) && inputEvent.inputType !== 'deleteContentBackward');\n\t}\n\tisSequentialInput(cursorPosition: number, formattedNumberLength: number, index: number, length: number)\n\t{\n\t\treturn (cursorPosition === index && formattedNumberLength <= length);\n\t}\n\tgetRoleIdArrObs(): Observable\n\t{\n\t\tlet loggedinUser: LoggedInUser;\n\t\tlet roleIDArr: string[] = [];\n\t\tconst userProfile = this.localStorageService.getLoggedInUser();\n\t\tif (userProfile && !this.isEmptyObject(userProfile))\n\t\t{\n\t\t\tloggedinUser = this.localStorageService.parseJSON(userProfile);\n\t\t\troleIDArr = (loggedinUser && !this.isEmptyObject(loggedinUser) && loggedinUser.roles) ? loggedinUser.roles : [];\n\t\t\treturn of(roleIDArr);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.apiService.getLoggedInUserObs().pipe(\n\t\t\t\tmap(response => (response.statusCode === 200) ? this.processRoleIDArr(response) : roleIDArr)\n\t\t\t);\n\t\t}\n\n\t}\n\tprocessRoleIDArr(res: ApiResponse): string[]\n\t{\n\t\tlet roleIDArr: string[] = [];\n\t\tconst user: AuthState = res.data;\n\t\troleIDArr = user.roles? user.roles : [];\n\t\treturn roleIDArr;\n\t}\n\n\tgetLoggedInUserObs(): Observable\n\t{\n\t\tlet loggedinUser: LoggedInUser;\n\t\tconst userProfile = this.localStorageService.getLoggedInUser();\n\t\tif (userProfile && !this.isEmptyObject(userProfile))\n\t\t{\n\t\t\tloggedinUser = this.localStorageService.parseJSON(userProfile);\n\t\t\treturn of(loggedinUser);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.apiService.getLoggedInUserObs().pipe(\n\t\t\t\tmap(response => (response.statusCode === 200) ? this.processLoggedInUser(response) : loggedinUser)\n\t\t\t);\n\t\t}\n\n\t}\n\n\tgetLoggedInUserLocationsObservable(): Observable\n\t{\n\t\treturn of(this.getLoggedInUserLocations());\n\t}\n\n\tprocessLoggedInUser(res: ApiResponse): LoggedInUser\n\t{\n\t\tconst user: LoggedInUser = res.data;\n\t\treturn user;\n\t}\n\tnullAddressHandler(location: Address, notApplicableValueHandler: boolean = false): Address\n\t{\n\t\tconst address: Address = {\n\t\t\taddressLine1: '',\n\t\t\taddressLine2: '',\n\t\t\tcity: '',\n\t\t\tstate: '',\n\t\t\tzipCode: ''\n\t\t};\n\t\tif(this.isEmptyAddress(location))\n\t\t{\n\t\t\taddress.addressLine1 = notApplicableValueHandler? this.notApplicableValueHandler('') : this.nullValueHandler('');\n\t\t}\n\t\telse\n\t\t{\n\t\t\taddress.addressLine1 = this.emptyStringHandler(location.addressLine1);\n\t\t\tif(location.addressLine2)\n\t\t\t\taddress.addressLine2 = this.emptyStringHandler(location.addressLine2);\n\t\t\taddress.city = this.emptyStringHandler(location.city);\n\t\t\taddress.state = this.emptyStringHandler(location.state);\n\t\t\taddress.zipCode = this.emptyStringHandler(location.zipCode);\n\t\t}\n\t\treturn address;\n\t}\n\n\tisEmptyAddress(location: Address)\n\t{\n\t\treturn (!location || (!location.addressLine1 && !location.addressLine2 && !location.city && !location.state && !location.zipCode));\n\t}\n\n\tisStateCityPresent(city: string, state: string)\n\t{\n\t\tif(city && state)\n\t\t{\n\t\t\treturn (city + ', ' + state);\n\t\t}\n\t\telse if(city)\n\t\t{\n\t\t\treturn city;\n\t\t}\n\t\treturn state || '' ;\n\t}\n\n\tcheckCountryCode(countryCode: string)\n\t{\n\t\tif(countryCode.toLocaleUpperCase() === CountryCode.unitedStates || countryCode.toLocaleUpperCase() === CountryCode.unitedStatesofAmerica || countryCode.toLocaleUpperCase() === CountryCode.unitedStatesFull )\n\t\t{\n\t\t\treturn CountryCode.unitedStatesofAmerica;\n\t\t}\n\t\telse if(countryCode.toLocaleUpperCase() === CountryCode.canada || countryCode.toLocaleUpperCase() === CountryCode.canadaCountry)\n\t\t{\n\t\t\treturn CountryCode.canadaCountry;\n\t\t}\n\t\treturn '';\n\t}\n\n\tformatUserName(firstName: string, lastName: string | undefined)\n\t{\n\t\tif(firstName && lastName)\n\t\t{\n\t\t\treturn (firstName + ' ' + lastName);\n\t\t}\n\t\telse if(firstName)\n\t\t{\n\t\t\treturn firstName;\n\t\t}\n\t\treturn lastName ?? '' ;\n\t}\n\n\tpublic navigateMethod(router : Router, path: string | undefined, params?: string | undefined | boolean | number)\n\t{\n\t\tif(params)\n\t\t{\n\t\t\trouter.navigate([path+'/'+params])?.then(succeeded =>\n\t\t\t{\n\t\t\t\tif(succeeded)\n\t\t\t\t{\n\t\t\t\t\tthis.loggerService.log('navigation succeeded');\n\t\t\t\t}\n\n\t\t\t})\n\t\t\t\t.catch(error =>\n\t\t\t\t{\n\t\t\t\t\tthis.loggerService.error(error);\n\t\t\t\t});;\n\t\t}\n\t\telse\n\t\t{\n\t\t\trouter.navigate([path])?.then(succeeded =>\n\t\t\t{\n\t\t\t\tif(succeeded)\n\t\t\t\t{\n\t\t\t\t\tthis.loggerService.log('navigation succeeded');\n\t\t\t\t}\n\n\t\t\t})\n\t\t\t\t.catch(error =>\n\t\t\t\t{\n\t\t\t\t\tthis.loggerService.error(error);\n\t\t\t\t});\n\t\t}\n\t}\n\n\tpublic validateStringUnique(control: AbstractControl)\n\t{\n\t\tif(control.value)\n\t\t{\n\t const value = control.value?.split(/\\W+/).join('');\n\t\t\tconst firstNum = value ? value[0] : '';\n\t\t\tlet uniq = true;\n\t\t\tfor (const letter of value.split(''))\n\t\t\t{\n\t\t\t\tif (letter !== firstNum)\n\t\t\t\t{\n\t\t\t\t\tuniq = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn uniq ? { unique: true } : null;\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn null;\n\t\t}\n\t}\n\tcheckTableSort(event: KngHeaderObjState, headerName:any)\n\t{\n \tlet field: string = '';\n\t\tconst labels=Object.keys(headerName);\n\t\tconst labelValues = Object.values(headerName);\n\t for (let i = 0; i < labels.length; i++)\n\t {\n\t\t if (event.label === labelValues[i])\n\t\t {\n\t\t\t field = labels[i];\n\t\t }\n\t }\n \tconst sortPayload = {\n \t\tfield: field,\n \t\torder: event.sortOrder === SortOrder.asc ? SortOrder.asc : SortOrder.desc\n \t};\n\t return sortPayload;\n\t}\n\n\n\tpublic getStateProvinceValues(country: string): StateProvince[]\n\t{\n\t\tif(country.includes(CountryCode.unitedStates))\n\t\t{\n\t\t\treturn states;\n\t\t}\n\t\telse if(country.includes(CountryCode.canada))\n\t\t{\n\t\t\treturn provinces;\n\t\t}\n\t\treturn [];\n\t}\n\n\tpublic isInvalidLength(searchData: string)\n\t{\n\t\treturn searchData?.replace(/\\s/g, '').trim().length > 0 && searchData?.replace(/\\s/g, '').trim().length < 4;\n\t}\n\n\tpublic getValidateRemoveLocResponse(removeLocResponse: ApiResponse)\n\t{\n\t\tconst responseObj: ValidateRemoveLocResponse = (removeLocResponse.data);\n\t\tthis.validateRemoveLocResponse.isLastLocation = responseObj.isLastLocation;\n\t\tthis.validateRemoveLocResponse$.next(true);\n\t}\n\n\tpublic validateRemoveLocError(error: HttpErrorResponse)\n\t{\n\t\tthis.loggerService.log(error.error.message);\n\t\tthis.validateRemoveLocResponse$.next(false);\n\t}\n\n\n\tnullHandlerCheck(key: string, value: string)\n\t{\n\t\tlet updatedVal: string = '';\n\t\tif(key === FieldName.location || key === FieldName.assignedLocation )\n\t\t{\n\t\t\tupdatedVal = this.nullLocationHandler(value);\n\t\t}\n\t\telse if(key === FieldName.telematicsStatus)\n\t\t{\n\t\t\tupdatedVal = value;\n\t\t}\n\t\telse if(key === FieldName.batteryStateOfCharge && ((value === null) || (value === undefined) || (value === '')))\n\t\t{\n\t\t\tupdatedVal = batteryStateOfChargeNullValue;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tupdatedVal = this.nullValueHandler(value);\n\t\t}\n\t\treturn updatedVal;\n\t}\n\n\tpublic scrollToTopOfPage()\n\t{\n\t\twindow.scroll({\n\t\t\ttop: 0,\n\t\t\tleft: 0,\n\t\t\tbehavior: 'smooth'\n\t\t });\n\t}\n\tgetEmailAddress()\n\t{\n\t\tconst portalUser = this.localStorageService.getLoggedInUser();\n\t\tconst corporateAdmin = this.localStorageService.getTmhCorporateAdminDetails();\n\t\tif (portalUser)\n\t\t{\n\t\t\treturn this.localStorageService.parseJSON(portalUser).email ?? '';\n\t\t}\n\t\telse if(corporateAdmin)\n\t\t{\n\t\t\treturn this.localStorageService.parseJSON(corporateAdmin)?.email ?? '';\n\t\t}\n\t\treturn '';\n\t}\n\tcustomerServiceMail(errorMessage:string)\n\t{\n\t\tconst mail='customerservice@toyotatmh.com';\n\t\tconst subMessage=/Toyota Customer Service/g;\n\t\tconst message=errorMessage.replace(subMessage, `Toyota Customer Service` );\n\t\treturn message;\n\t}\n}\n","import { MyFleetEndpointFactory } from '../app/components/myfleet/myfleet.endpoint.factory';\nimport { ShellEndpointFactory } from '../app/components/shell/shell.endpoints.factory';\nimport { RolesEndpointFactory, ServiceManagementEndpointFactory, DashboardEndpointFactory } from './interfaces';\nimport { AuthEndpointFactory } from './interfaces/endpoints/auth/auth.endpoint.factory';\nimport { EnvironmentRef } from './interfaces/environment.interface';\n\nconst apiBaseUrl: string = 'https://qa-api.toyotaforklift.com/portal/api/';\nconst aemBaseUrl: string = 'https://stage.toyotaforklift.com';\nconst requestServiceUrl: string = 'https://qa.toyotaforklift.com/parts-and-service/request-a-service-quote';\nconst buyPartsUrl: string = 'https://shop-qa.toyotaforklift.com/en/parts-group?autoLogin=1';\nconst manageFinancingUrl: string = 'https://www.toyotacf.com';\nconst openContactFormUrl: string = 'https://qa.toyotaforklift.com/contact-a-dealer';\nconst requestServiceEquipmentDetails: string = 'https://qa.toyotaforklift.com/parts-and-service/request-a-service-quote';\nconst warrantyPromoBannerUrl: string = 'https://qa.toyotaforklift.com/parts-and-service/360-support';\nconst buyPartsPromoBannerUrl: string = 'https://shop-qa.toyotaforklift.com/en/?autoLogin=1';\nconst azureKey: string = 'ACkF9_n4ZlxeLom-n0lOjQ6qACs74-evw9MXO1BhKLs';\nconst appWalkmeUrl = 'https://cdn.walkme.com/users/5624a3dccd1a4cdeaeaba0672fb40626/qa/walkme_5624a3dccd1a4cdeaeaba0672fb40626_https.js';\nconst shopDeliveryAddressUrl : string = 'https://shop-pre-prod.toyotaforklift.com/en/account-dashboard/delivery-addresses';\nconst zendeskChatbotUrl: string = 'https://static.zdassets.com/ekr/snippet.js?key=4c93daa6-ac63-424b-b653-cc398cee4bb1';\n\nexport const environment: EnvironmentRef = {\n\tproduction: false,\n\tenv: 'qa',\n\tbaseUrl: apiBaseUrl,\n\tendpoints: {\n\t\tauth: AuthEndpointFactory.build(`${apiBaseUrl}`),\n\t\troles: RolesEndpointFactory.build(`${apiBaseUrl}`),\n\t\theader: ShellEndpointFactory.build(`${apiBaseUrl}`),\n\t\tmyfleetlabels: MyFleetEndpointFactory.build(`${apiBaseUrl}`),\n\t\tserviceManagement: ServiceManagementEndpointFactory.build(`${apiBaseUrl}`),\n\t\tdashboard: DashboardEndpointFactory.build(`${apiBaseUrl}`)\n\t},\n\tb2cPolicies: {\n\t\tnames: {\n\t\t\tsignUpSignIn: 'B2C_1A_DXS_SSO_QA_SIGNUPSIGNIN',\n\t\t\teditProfile: ''\n\t\t},\n\t\tauthorities: {\n\t\t\tsignUpSignIn: {\n\t\t\t\tauthority:\n 'https://login.tmhrnd.com/login.tmhrnd.com/B2C_1A_DXS_SSO_QA_SIGNUPSIGNIN'\n\t\t\t},\n\t\t\teditProfile: {\n\t\t\t\tauthority: ''\n\t\t\t}\n\t\t},\n\t\tauthorityDomain: 'login.tmhrnd.com'\n\t},\n\tclientId: '7de8e17c-5379-4a52-b339-140908aac26c',\n\tscope: {\n\t\tread: 'https://login.tmhrnd.com/portal-api/portal.read'\n\t},\n\taemBaseUrl: aemBaseUrl,\n\tappWalkmeUrl: appWalkmeUrl,\n\tzendeskChatbotUrl: zendeskChatbotUrl,\n\tazureMapsApiKey: azureKey,\n\trequestServiceUrl: requestServiceUrl,\n\tbuyPartsUrl: buyPartsUrl,\n\tmanageFinancingUrl: manageFinancingUrl,\n\topenContactFormUrl: openContactFormUrl,\n\trequestServiceEquipmentDetails: requestServiceEquipmentDetails,\n\twarrantyPromoBannerUrl: warrantyPromoBannerUrl,\n\tbuyPartsPromoBannerUrl: buyPartsPromoBannerUrl,\n\tshopDeliveryAddressUrl: shopDeliveryAddressUrl,\n\tanalytics: {\n\t\tscripts: {\n\t\t\tlaunch: {\n\t\t\t\tsrc: 'https://assets.adobedtm.com/81c40e86aed0/bef7f0d1cfa1/launch-414b8a695cd7-staging.min.js'\n\t\t\t}\n\t\t}\n\t}\n};\n","import { AuthEndpoint, AuthEndpointRoutes } from './auth.interface';\n\nexport class AuthEndpointFactory\n{\n\tpublic static build(baseUrl: string): AuthEndpoint\n\t{\n\t\treturn {\n\t\t\tbaseUrl: baseUrl,\n\t\t\troutes: this.buildRoutes(baseUrl)\n\t\t};\n\t}\n\tprivate static buildRoutes(baseUrl: string): AuthEndpointRoutes\n\t{\n\t\treturn {\n\t\t\tauth: {\n\t\t\t\ttoString: () => `${baseUrl}v0/auth`,\n\t\t\t\tvalidUser: {\n\t\t\t\t\ttoString: () => `${baseUrl}v0/auth/validUser`\n\t\t\t\t},\n\t\t\t\tpermissions: {\n\t\t\t\t\ttoString: () => `${baseUrl}v0/auth/permissions`,\n\t\t\t\t\tcategory: {\n\t\t\t\t\t\ttoString: () => `${baseUrl}v0/auth/permissions/category`,\n\t\t\t\t\t\tid: (id: string) => `${baseUrl}v0/auth/permissions/category/${id}`\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} as AuthEndpointRoutes;\n\t}\n}\n","import {\n\tRolesEndpoint,\n\tRolesEndpointRoutes\n} from './roles-permissions.interface';\n\nexport class RolesEndpointFactory \n{\n\tpublic static build(baseUrl: string): RolesEndpoint \n\t{\n\t\treturn {\n\t\t\tbaseUrl: baseUrl,\n\t\t\troutes: this.buildRoutes(baseUrl)\n\t\t};\n\t}\n\tprivate static buildRoutes(baseUrl: string): RolesEndpointRoutes \n\t{\n\t\treturn {\n\t\t\troles: {\n\t\t\t\ttoString: () => `${baseUrl}v0/api`,\n\t\t\t\tgetRoles: {\n\t\t\t\t\ttoString: () => `${baseUrl}v0/role/details`,\n\t\t\t\t\taddRoles: {\n\t\t\t\t\t\ttoString: () => `${baseUrl}v0/role/create`\n\t\t\t\t\t},\n\t\t\t\t\tupdate: {\n\t\t\t\t\t\ttoString: () => `${baseUrl}v0/role/update`\n\t\t\t\t\t},\n\t\t\t\t\tgetRemoveRoleState: {\n\t\t\t\t\t\ttoString: () => `${baseUrl}v0/role/AEMremoveLabels`\n\t\t\t\t\t},\n\t\t\t\t\tdelete: {\n\t\t\t\t\t\ttoString: () => `${baseUrl}v0/role/`\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} as RolesEndpointRoutes;\n\t}\n}\n","import { HeaderNavEndpoint, HeaderNavEndpointRoutes } from './shell.interface';\n\nexport class ShellEndpointFactory \n{\n\tpublic static build(baseUrl: string): HeaderNavEndpoint \n\t{\n\t\treturn {\n\t\t\tbaseUrl: baseUrl,\n\t\t\troutes: this.buildRoutes(baseUrl)\n\t\t};\n\t}\n\tprivate static buildRoutes(baseUrl: string): HeaderNavEndpointRoutes \n\t{\n\t\treturn {\n\t\t\theaderendpoints: {\n\t\t\t\ttoString: () => `${baseUrl}v0/api`,\n\t\t\t\taemheaders: {\n\t\t\t\t\ttoString: () => `${baseUrl}v0/aem/headers`\n\t\t\t\t},\n\t\t\t\taembusinessaccountheader: {\n\t\t\t\t\ttoString: () => `${baseUrl}v0/v1/aem-business-account`\n\t\t\t\t}\n\t\t\t}\n\t\t} as HeaderNavEndpointRoutes;\n\t}\n}\n","import { MyFleetAemEndPoint, MyFleetLabelsEndpointRoutes } from './definitions/myfleet.interface';\n\n\nexport class MyFleetEndpointFactory \n{\n\tpublic static build(baseUrl: string): MyFleetAemEndPoint \n\t{\n\t\treturn {\n\t\t\tbaseUrl: baseUrl,\n\t\t\troutes: this.buildRoutes(baseUrl)\n\t\t};\n\t}\n\tprivate static buildRoutes(baseUrl: string): MyFleetLabelsEndpointRoutes \n\t{\n\t\treturn {\n\t\t\tmyfleet: {\n\t\t\t\ttoString: () => `${baseUrl}v0/api/`,\n\t\t\t\tmyfleetlabels: {\n\t\t\t\t\ttoString: () => `${baseUrl}v0/aemfleetpage/my-fleet-labels`\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t} as MyFleetLabelsEndpointRoutes;\n\t}\n}\n","import {\n\tServiceManagementEndpoint,\n\tServiceManagementEndpointRoutes\n} from './service-management.interface';\n\nexport class ServiceManagementEndpointFactory \n{\n\tpublic static build(baseUrl: string): ServiceManagementEndpoint \n\t{\n\t\treturn {\n\t\t\tbaseUrl: baseUrl,\n\t\t\troutes: this.buildRoutes(baseUrl)\n\t\t};\n\t}\n\tprivate static buildRoutes(baseUrl: string): ServiceManagementEndpointRoutes \n\t{\n\t\treturn {\n\t\t\tserviceManagement: {\n\t\t\t\ttoString: () => `${baseUrl}v0/api`,\n\t\t\t\tgetSpendBreakdownData: {\n\t\t\t\t\ttoString: () => `${baseUrl}v0/service-management/service-history/widget/spend-invoices`\n\t\t\t\t},\n\t\t\t\tgetRepairCodeData: {\n\t\t\t\t\ttoString: () => `${baseUrl}v0/service-management/service-history/widget/top-repair-codes`\n\t\t\t\t},\n\t\t\t\tgetPaymentStatusData: {\n\t\t\t\t\ttoString: () => `${baseUrl}v0/service-management/service-history/widget/payment-status`\n\t\t\t\t}\n\t\t\t}\n\t\t} as ServiceManagementEndpointRoutes;\n\t}\n}\n","import { DashboardEndpoint, DashboardEndpointRoutes } from './dashboard.interface';\n\n\nexport class DashboardEndpointFactory \n{\n\tpublic static build(baseUrl: string): DashboardEndpoint \n\t{\n\t\treturn {\n\t\t\tbaseUrl: baseUrl,\n\t\t\troutes: this.buildRoutes(baseUrl)\n\t\t};\n\t}\n\tprivate static buildRoutes(baseUrl: string): DashboardEndpointRoutes \n\t{\n\t\treturn {\n\t\t\tdashboard: {\n\t\t\t\ttoString: () => `${baseUrl}v0/api`,\n\t\t\t\t\n\t\t\t\tgetNumberOfUnitsData: {\n\t\t\t\t\ttoString: () => 'v0/dashboard/widget/number-units'\n\t\t\t\t},\n\t\t\t\tgetFinancedEquipmentData: {\n\t\t\t\t\ttoString: () => 'v0/dashboard/widget/financed-equipment-count'\n\t\t\t\t},\n\t\t\t\tgetAverageAgeEquipmentData: {\n\t\t\t\t\ttoString: () => 'v0/dashboard/widget/average-age-equipment'\n\t\t\t\t},\n\t\t\t\tgetNewEquipmentOrders: {\n\t\t\t\t\ttoString: () => 'v0/dashboard/widget/equipment-count-status'\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t} as DashboardEndpointRoutes;\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { DateConverterService } from './date-converter.service';\n\n@NgModule({\n\tdeclarations: [],\n\timports: [CommonModule],\n\texports: [],\n\tproviders: [ DateConverterService, DatePipe ]\n})\nexport class DateConverteServiceModule {}\n","import {\n\tRole,\n\tRolesPermissionsState,\n\tRolePermissionLabel\n} from './definitions';\n\n\nexport class RolesPermissionsFactory \n{\n\tpublic static build(): RolesPermissionsState \n\t{\n\t\treturn {\n\t\t\tfoo: 'bar'\n\t\t};\n\t}\n\tpublic static buildRolelist(): Role \n\t{\n\t\treturn {\n\t\t\tid: '',\n\t\t\tname: '',\n\t\t\tdescription: '',\n\t\t\tlocked: false,\n\t\t\tpermissions: [],\n\t\t\tcompany: ''\n\t\t};\n\t}\n\n\tpublic static buildAddRolelist(): Role \n\t{\n\t\treturn {\n\t\t\tid: '',\n\t\t\tname: '',\n\t\t\tdescription: '',\n\t\t\tlocked: false,\n\t\t\tpermissions: [],\n\t\t\tcompany: '',\n\t\t\taction: 'Add'\n\t\t};\n\t}\n\n\tpublic static buildAEMLabels(): RolePermissionLabel \n\t{\n\t\treturn {\n\t\t\tpageHeading: '',\n\t\t\troleListLabel: '',\n\t\t\tpermissionLabel: '',\n\t\t\tdetailHeading: '',\n\t\t\taddRole: '',\n\t\t\tremoveRole: '',\n\t\t\tcopyRole: '',\n\t\t\troleName: '',\n\t\t\tdescription: '',\n\t\t\tsaveChangesBtnText: '',\n\t\t\tunselectAllText: '',\n\t\t\tduplicateRoleNameErrorText: '',\n\t\t\tcustomRoleDefaultDescription: '',\n\t\t\tcustomRoleDefaultName: '',\n\t\t\tunSelectAllLabel: '',\n\t\t\tduplicateRoleErrorText: '',\n\t\t\tdefaultRoleName: '',\n\t\t\tdefaultRoleDescription: '',\n\t\t\troleNameValidationError: '',\n\t\t\ttoggleOffAltText: '',\n\t\t\ttoggleOnAltText: '',\n\t\t\ttoggleOffDisabledAltText: '',\n\t\t\ttoggleOnDisabledAltText: '',\n\t\t\tdeleteConfirmation: [{\n\t\t\t\theadingMain: '',\n\t\t\t\theadingSub: '',\n\t\t\t\tmanageLabel: '',\n\t\t\t\tcancel: '',\n\t\t\t\tremoveRole: '',\n\t\t\t\tusers: ''\n\t\t\t}],\n\t\t\tellipsesIcon: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t},\n\t\t\taddRoleIcon: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t},\n\t\t\tremoveRoleIcon: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t},\n\t\t\tuserIcon: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t},\n\t\t\tcloseIcon: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t},\n\t\t\tpermissionLabels: [{\n\t\t\t\tsectionHeader: '',\n\t\t\t\tcategoryGroup: '',\n\t\t\t\tpermissionArr: [{\n\t\t\t\t\tpermissionKey: '',\n\t\t\t\t\tpermissionDescription: '',\n\t\t\t\t\tpermissionShortDescription: '',\n\t\t\t\t\tpermissionId: ''\n\t\t\t\t}]\n\t\t\t}]\n\t\t};\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject, concatMap, tap } from 'rxjs';\nimport { RolesPermissionsFactory } from './roles-permissions.factory';\nimport { Role, RoleData, RolePermissionLabel, Permission, RemoveRoleModalState, RolesPermissionsPayload, PermissionData } from './definitions';\nimport { ApiService } from '../../services/api/api.service';\nimport { LoggerService } from '../../services/logger/logger.service';\nimport { ToastrService } from 'ngx-toastr';\nimport { ModalState } from 'kinetic-angular';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ApiResponse } from '../../definitions/api-response.interface';\nimport { AnalyticsService } from '../../services/analytics/analytics.service';\nimport { SharedService } from '../../services/shared/shared.service';\nimport { ShellService } from '../shell/shell.service';\nimport { RoutePermissions } from '../../guards/permission/definitions';\nimport { AuthenticationService } from '../../services/authentication/authentication.service';\nimport { LocalStorageService } from '../../services/local-storage/local-storage.service';\nimport { ButtonPosition, ButtonSize, ButtonStyle, CssClass, Icons, PermissionCategory, PermissionDefault } from '../../services/shared/shared-enums';\nimport { individualUserRoleId, mandatoryPermissionIds, removePermissionIdsforCustomRole } from '../../services/shared/shared-constants';\nimport { SharedUtilService } from '../../services/shared/shared-util.service';\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class RolesPermissionsService\n{\n\tprivate readonly selectedRoleIndex$: BehaviorSubject = new BehaviorSubject(0);\n\tprivate readonly roleToBeRemoved: BehaviorSubject = new BehaviorSubject(null);\n\tprivate readonly addRowActive$: BehaviorSubject = new BehaviorSubject(false);\n\tprivate readonly copyRoleActive$: BehaviorSubject = new BehaviorSubject(false);\n\tprivate readonly contentUpdated$: BehaviorSubject = new BehaviorSubject(false);\n\tprivate selectedRoleId: string = '';\n\taddButtonState = this.sharedUtilService.getButtonState(ButtonSize.medium, ButtonStyle.linkPrimary, '', false, { altText: '', iconPath: '' }, ButtonPosition.left);\n\tsaveButtonState = this.sharedUtilService.getButtonState(ButtonSize.medium, ButtonStyle.primary, '', false, { altText: '', iconPath: '' }, ButtonPosition.left);\n\tisDirty: boolean = false;\n\tisSaveSucess$: Subject = new Subject();\n\trolesList: Role[] = [];\n\tpermissionsList: Permission[] = [];\n\tlabels: RolePermissionLabel = RolesPermissionsFactory.buildAEMLabels();\n\troleNameList: string[] = [];\n\tremoveRoleModalState: RemoveRoleModalState | null = null;\n\tcountOfUserstoRemove: number = 0;\n\troleDetailsLoader: boolean = false;\n\tremoveModalState: ModalState = {\n\t\thidden: true,\n\t\tlabel: this.labels.deleteConfirmation[0].headingMain,\n\t\tbuttons: [\n\t\t\t{ label: '', disabled: false, cssClass: CssClass.btnSecondary },\n\t\t\t{ label: this.labels.deleteConfirmation[0].removeRole, disabled: false, cssClass: CssClass.btnDanger, iconPath: Icons.trashIcon }\n\t\t],\n\t\tcssClass: ''\n\t};\n\n\tget selectedRoleIndex(): number\n\t{\n\t\treturn this.selectedRoleIndex$.value;\n\t}\n\tget roleToRemove(): Role | null\n\t{\n\t\treturn this.roleToBeRemoved.value;\n\t}\n\tget addRowActive(): boolean\n\t{\n\t\treturn this.addRowActive$.value;\n\t}\n\tget copyRoleActive(): boolean\n\t{\n\t\treturn this.copyRoleActive$.value;\n\t}\n\tget contentUpdated(): boolean\n\t{\n\t\treturn this.contentUpdated$.value;\n\t}\n\tget currentUserRole(): string\n\t{\n\t\tconst userProfile = this.localStorageService.getLoggedInUser();\n\t\treturn userProfile ? this.localStorageService.parseJSON(userProfile).roles[0] : '';\n\t}\n\tget contentUpdatedObservable$(): Observable\n\t{\n\t\treturn this.contentUpdated$;\n\t}\n\tset updatedContent(value: boolean)\n\t{\n\t\tthis.contentUpdated$.next(value);\n\t}\n\n\tconstructor(public apiService: ApiService, private loggerService: LoggerService, private toastr: ToastrService, private analyticsService: AnalyticsService,\n\t\tprivate sharedService: SharedService, private shellService: ShellService, private authenticationService: AuthenticationService, private localStorageService: LocalStorageService, private sharedUtilService: SharedUtilService)\n\t{\n\t\tthis.rolesList = [];\n\t}\n\n\tpublic trackSaveRoleAnalyticsEvent()\n\t{\n\t\tthis.analyticsService.trackByEvent({ event: 'save changes', link: { name: 'changes:save changes' } });\n\t}\n\tpublic trackLeaveUnsavedChangesAnalyticsEvent()\n\t{\n\t\tthis.analyticsService.trackByEvent({ event: 'discard changes', link: { name: 'changes:leave page' } });\n\t}\n\tpublic trackStayOnPageAnalyticsEvent()\n\t{\n\t\tthis.analyticsService.trackByEvent({ event: 'unsaved changes warning', link: { name: 'changes:stay on page' } });\n\t}\n\tpublic initAnalyticsData(): void\n\t{\n\t\tthis.analyticsService.trackByEvent({ event: 'pageView', page: { name: 'roles and permissions' } });\n\t}\n\tpublic updateSelectedRoleIndex(value: number): void\n\t{\n\t\tthis.selectedRoleIndex$.next(value);\n\t}\n\tpublic updateRoleToBeRemoved(role: Role | null): void\n\t{\n\t\tthis.roleToBeRemoved.next(role);\n\t}\n\tpublic updateAddRowActiveStatus(value: boolean): void\n\t{\n\t\tthis.addRowActive$.next(value);\n\t}\n\tpublic updateCopyRoleActiveStatus(value: boolean): void\n\t{\n\t\tthis.copyRoleActive$.next(value);\n\t}\n\tupdateExistingRoleNameList()\n\t{\n\t\tthis.roleNameList = [];\n\t\tif (this.rolesList !== undefined)\n\t\t\tthis.rolesList.forEach((role) => this.roleNameList.push(role.name));\n\t}\n\tpublic getRolesPermissionsData(): void\n\t{\n\t\tconst payload: RolesPermissionsPayload = { company: '' };\n\t\tthis.roleDetailsLoader = false;\n\t\tthis.sharedService.getLoggedInUserCompanyObs().pipe(tap((companyId: string) =>\n\t\t{\n\t\t\tpayload.company = companyId;\n\t\t}), concatMap(() => this.apiService.getRolesPermissionsData(payload))).subscribe({\n\t\t\tnext: (res: ApiResponse) =>\n\t\t\t{\n\t\t\t\tif (res?.data)\n\t\t\t\t{\n\t\t\t\t\tconst responseObject = res.data;\n\t\t\t\t\tthis.rolesList = responseObject.rolesData;\n\n\t\t\t\t\tconst indexOfIndividualRole = this.rolesList.findIndex(role => role.id === individualUserRoleId);\n\t\t\t\t\tif (indexOfIndividualRole !== -1)\n\t\t\t\t\t\tthis.rolesList.splice(indexOfIndividualRole, 1);\n\t\t\t\t\tthis.selectCurrentRole([this.currentUserRole]);\n\t\t\t\t\tthis.sharedService.getLoggedInUserRole().subscribe((roles: string[]) =>\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.selectCurrentRole(roles);\n\t\t\t\t\t});\n\t\t\t\t\tthis.labels = responseObject.aemPageLabels;\n\t\t\t\t\tthis.labels.unselectAllText = this.labels.unSelectAllLabel;\n\t\t\t\t\tthis.labels.customRoleDefaultDescription = 'This is a custom role, view Roles and Permissions for details.';\n\t\t\t\t\tthis.labels.permissionLabels.forEach(label =>\n\t\t\t\t\t{\n\t\t\t\t\t\tif (!label.permissionArr)\n\t\t\t\t\t\t\tlabel.permissionArr = [];\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel.permissionArr.forEach((permission: PermissionData) =>\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tconst arr = permission.permissionDescription ? permission.permissionDescription.split('. ') : [];\n\t\t\t\t\t\t\t\tpermission.permissionDescription = arr.join('.
');\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tthis.labels.customRoleDefaultName = 'New Role Name';\n\t\t\t\t\tthis.labels.duplicateRoleNameErrorText = this.labels.duplicateRoleErrorText;\n\t\t\t\t\tthis.addButtonState.label = this.labels.addRole;\n\t\t\t\t\tthis.saveButtonState.label = this.labels.saveChangesBtnText;\n\t\t\t\t\tthis.shellService.stateObservable$.subscribe(res => \n\t\t\t\t\t{\n\t\t\t\t\t\tif (!res.isMyInSights && res.isMyInSights !== undefined) \n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.filterPermissionsForMyInsights();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tthis.permissionsList = this.labels.permissionLabels;\n\t\t\t\t\tthis.addButtonState.icon.iconPath = Icons.addLink;\n\t\t\t\t\tthis.updateExistingRoleNameList();\n\t\t\t\t\tthis.updatedContent = true;\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: (error: HttpErrorResponse) =>\n\t\t\t{\n\t\t\t\tthis.roleDetailsLoader = true;\n\t\t\t\tthis.loggerService.log(error.error.message);\n\t\t\t\tthis.toastr.error(error.error.message);\n\t\t\t\tthis.updatedContent = true;\n\t\t\t},\n\t\t\tcomplete: () =>\n\t\t\t{\n\t\t\t\tsetTimeout(() =>\n\t\t\t\t{\n\t\t\t\t\tthis.roleDetailsLoader = true;\n\t\t\t\t\tthis.updatedContent = true;\n\t\t\t\t}, 1000);\n\t\t\t}\n\t\t});\n\t}\n\tprivate filterPermissionsForMyInsights() \n\t{\n\t\tthis.labels.permissionLabels.forEach(permission => \n\t\t{\n\t\t\tif (permission.sectionHeader === 'MyInsights') \n\t\t\t{\n\t\t\t\tpermission.permissionArr = permission.permissionArr.filter(this.isViewMyInsightsMain);\n\t\t\t}\n\t\t});\n\t}\n\tprivate isViewMyInsightsMain(permission: PermissionData) \n\t{\n\t\treturn permission.permissionKey === 'VIEW_MYINSIGHTS_MAIN';\n\t}\n\tselectCurrentRole(roles: string[])\n\t{\n\t\tif (roles)\n\t\t\troles.forEach((role: string) => this.selectedRoleId = role);\n\t\tif (this.selectedRoleId)\n\t\t\tthis.updateSelectedRoleIndex(this.rolesList?.findIndex((role: Role) => role.id === this.selectedRoleId));\n\t}\n\tpublic addCustomRole(): void\n\t{\n\t\tconst newRole = RolesPermissionsFactory.buildAddRolelist();\n\t\tnewRole.name = this.labels.customRoleDefaultName;\n\t\tnewRole.description = this.labels.customRoleDefaultDescription;\n\t\tthis.rolesList.push(newRole);\n\t\tthis.updateSelectedRoleIndex(this.rolesList.length - 1);\n\t}\n\tpublic copyCustomRole(roleIndex: number): void\n\t{\n\t\tconst copiedRole: Role = JSON.parse(JSON.stringify(this.rolesList[roleIndex]));\n\t\tcopiedRole.id = '';\n\t\tcopiedRole.name = ('Copy of ' + copiedRole.name).slice(0, 50);\n\t\tcopiedRole.description = this.labels.customRoleDefaultDescription;\n\t\tcopiedRole.locked = false;\n\t\tcopiedRole.action = 'Copy';\n\t\tthis.rolesList.push(copiedRole);\n\t\tthis.updateSelectedRoleIndex(this.rolesList.length - 1);\n\t}\n\tpublic saveCustomRole(role: Role): void\n\t{\n\t\tconst roleToAdd: Role = role;\n\t\tdelete roleToAdd.id;\n\t\tdelete roleToAdd.isInvalidText;\n\t\tconst actionPerformed = roleToAdd.action;\n\t\tdelete roleToAdd.action;\n\t\trole.permissions = this.updateMandatoryPermissions(role.permissions);\n\t\tthis.sharedService.getLoggedInUserCompanyObs().pipe(tap((companyId: string) =>\n\t\t{\n\t\t\troleToAdd.company = companyId;\n\t\t}), concatMap(() => this.apiService.saveCustomRole(roleToAdd))).subscribe({\n\t\t\tnext: (data: ApiResponse) =>\n\t\t\t{\n\t\t\t\tif (data?.data)\n\t\t\t\t{\n\t\t\t\t\tthis.isSaveSucess$.next(false);\n\t\t\t\t\tconst responseObject: Role = data.data;\n\t\t\t\t\tthis.toastr.success(responseObject?.name + ' successfully saved.');\n\t\t\t\t\tthis.analyticsService.trackByEvent({ event: 'role added', link: { name: 'role:role added' }, role: { roleAdded: responseObject?.name } });\n\t\t\t\t\tconst indexOfRoleToAdd = this.rolesList.findIndex((el: Role) => el.name === role.name);\n\n\t\t\t\t\tif (actionPerformed === 'Add')\n\t\t\t\t\t\tthis.addButtonState.disabled = false;\n\t\t\t\t\telse if (actionPerformed === 'Copy')\n\t\t\t\t\t\tthis.updateCopyRoleActiveStatus(false);\n\n\t\t\t\t\tthis.rolesList[indexOfRoleToAdd].id = responseObject?.id;\n\t\t\t\t\tdelete this.rolesList[indexOfRoleToAdd].action;\n\t\t\t\t\tthis.updateExistingRoleNameList();\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: (error: HttpErrorResponse): void =>\n\t\t\t{\n\t\t\t\tthis.isSaveSucess$.next(true);\n\t\t\t\tthis.loggerService.log(error.error.message);\n\t\t\t\tthis.toastr.error(error.error.message);\n\t\t\t}\n\t\t});\n\t}\n\tpublic updateCustomRole(role: Role)\n\t{\n\t\tconst roleToUpdate: Role = role;\n\t\tdelete roleToUpdate.company;\n\t\tdelete roleToUpdate.locked;\n\t\tdelete roleToUpdate.isInvalidText;\n\t\trole.permissions = this.updateMandatoryPermissions(role.permissions);\n\t\tthis.apiService.updateCustomRole(roleToUpdate).subscribe({\n\t\t\tnext: (res: ApiResponse) =>\n\t\t\t{\n\t\t\t\tif (res?.data)\n\t\t\t\t{\n\t\t\t\t\tthis.isSaveSucess$.next(false);\n\t\t\t\t\tthis.loggerService.log('updated res' + res);\n\t\t\t\t\tthis.toastr.success(roleToUpdate.name + ' has been updated.');\n\t\t\t\t\tthis.updateExistingRoleNameList();\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: (error: HttpErrorResponse) =>\n\t\t\t{\n\t\t\t\tthis.isSaveSucess$.next(true);\n\t\t\t\tthis.loggerService.log(error.error.message);\n\t\t\t\tthis.toastr.error(error.error.message);\n\t\t\t}\n\t\t});\n\t}\n\tpublic removeRole(id: string)\n\t{\n\t\tconst indexOfRoleToBeRemoved = this.rolesList.findIndex((el) => el.id === id);\n\t\tthis.apiService.removeRole(id).subscribe({\n\t\t\tnext: (res: ApiResponse) =>\n\t\t\t{\n\t\t\t\tif (res?.data)\n\t\t\t\t{\n\t\t\t\t\tconst responseObject: RemoveRoleModalState = (res.data);\n\t\t\t\t\tthis.loggerService.log(JSON.stringify(responseObject));\n\t\t\t\t\tthis.toastr.success(this.rolesList[indexOfRoleToBeRemoved].name + ' successfully removed.');\n\t\t\t\t\tthis.analyticsService.trackByEvent({\n\t\t\t\t\t\tevent: 'role removed',\n\t\t\t\t\t\tlink: { name: 'role:role removed' },\n\t\t\t\t\t\trole: { roleRemoved: this.rolesList[indexOfRoleToBeRemoved].name }\n\t\t\t\t\t});\n\t\t\t\t\tthis.rolesList.splice(indexOfRoleToBeRemoved, 1);\n\t\t\t\t\tif (this.selectedRoleIndex >= this.rolesList.length)\n\t\t\t\t\t\tthis.updateSelectedRoleIndex(this.rolesList.length - 1);\n\t\t\t\t\tthis.updateExistingRoleNameList();\n\t\t\t\t\tthis.removeRoleModalState = null;\n\t\t\t\t\tthis.updateRoleToBeRemoved(null);\n\t\t\t\t\tthis.removeModalState.hidden = true;\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: (error: HttpErrorResponse) =>\n\t\t\t{\n\t\t\t\tthis.loggerService.log(error.error.message);\n\t\t\t\tthis.toastr.error(error.error.message);\n\t\t\t\tthis.removeRoleModalState = null;\n\t\t\t\tthis.updateRoleToBeRemoved(null);\n\t\t\t\tthis.removeModalState.hidden = true;\n\t\t\t}\n\t\t});\n\t}\n\tpublic getRemoveRoleState(id: string): void\n\t{\n\t\tthis.apiService.getRemoveRoleState(id).subscribe({\n\t\t\tnext: (res: ApiResponse) =>\n\t\t\t{\n\t\t\t\tif (res?.data)\n\t\t\t\t{\n\t\t\t\t\tconst responseObject: RemoveRoleModalState = (res.data);\n\t\t\t\t\tif (responseObject.userCount > 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.removeRoleModalState = responseObject;\n\t\t\t\t\t\tthis.removeModalState.label = this.labels.deleteConfirmation[0].headingMain;\n\t\t\t\t\t\tthis.removeRoleModalState.manageUserText = this.labels.deleteConfirmation[0].manageLabel;\n\t\t\t\t\t\tthis.removeModalState.buttons[0].label = this.labels.deleteConfirmation[0].cancel;\n\t\t\t\t\t\tthis.removeModalState.buttons[1].label = this.labels.deleteConfirmation[0].removeRole;\n\t\t\t\t\t\tresponseObject.users = this.labels.deleteConfirmation[0].users;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.removeRole(id);\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: (error: HttpErrorResponse) =>\n\t\t\t{\n\t\t\t\tthis.loggerService.log(error.error.message);\n\t\t\t\tthis.toastr.error(error.error.message);\n\t\t\t}\n\t\t});\n\t}\n\tpublic updateShell(value: boolean = true): void\n\t{\n\t\tthis.shellService.updateActionFooterPresent(value);\n\t}\n\tpublic getPermissions(): RoutePermissions | undefined\n\t{\n\t\treturn this.authenticationService.getFetchedPermission({ category: PermissionCategory.rolesPermissions, action: PermissionDefault.viewDetails });\n\t}\n\tupdateMandatoryPermissions(permissions: string[])\n\t{\n\t\tpermissions = permissions.filter(permission => !removePermissionIdsforCustomRole.includes(permission));\n\t\tmandatoryPermissionIds.forEach(permission =>\n\t\t{\n\t\t\tif (!permissions.includes(permission))\n\t\t\t\tpermissions.push(permission);\n\t\t});\n\t\treturn permissions;\n\t}\n}\n","
\n

{{ labels.pageHeading }}

\n
\n
\n
\n
\n

{{ labels.roleListLabel }}

\n \n
\n
\n
\n

{{ labels.detailHeading }}

\n \n
\n
\n
\n \n
\n","import { KngFooterService, KngLoaderState } from 'kinetic-angular';\nimport { AfterViewInit, Component, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core';\nimport { RolePermissionLabel } from './definitions';\nimport { RolesPermissionsService } from './roles-permissions.service';\nimport { Observable } from 'rxjs';\nimport { ComponentCanDeactivate } from '../../guards/pending-changes.guard.service';\nimport { ShellService } from '../shell/shell.service';\nimport { ConfirmLeavePageService } from '../../leave-page-confirm-popup/leave-page-confirm-popup.service';\nimport { LeaveConfirmModalState } from '../../services/shared/shared-interface';\nimport { RoutePermissions } from '../../guards/permission/definitions';\nimport { Icons } from '../../services/shared/shared-enums';\n\n@Component({\n\tselector: 'tmhna-portal-roles-permissions',\n\ttemplateUrl: './template/roles-permissions.component.html',\n\tstyleUrls: ['./template/roles-permissions.component.scss']\n})\nexport class RolesPermissionsComponent implements OnInit, OnDestroy, ComponentCanDeactivate, AfterViewInit\n{\n\tloaderState: KngLoaderState = {\n \timagePath: Icons.loaderWhite\n\t};\n\n\t@Output() leavePagestateChanged: EventEmitter = new EventEmitter();\n\n\tconstructor(\n public service: RolesPermissionsService,\n\tprivate readonly leavePageService: ConfirmLeavePageService,\n private readonly footerService: KngFooterService,\n\tprivate readonly shellService: ShellService\n\t) {}\n\n\tngOnInit(): void\n\t{\n\t\tthis.service.isDirty = false;\n\t\tthis.service.updateCopyRoleActiveStatus(false);\n\t\tthis.service.getRolesPermissionsData();\n\t\tthis.footerService.updateActionFooterPresent(true);\n\t\tthis.service.initAnalyticsData();\n\t}\n\tngOnDestroy(): void\n\t{\n \tthis.service.updateShell(false);\n\t}\n\n\tngAfterViewInit(): void\n\t{\n \tthis.service.updateShell();\n\t}\n\tget labels(): RolePermissionLabel\n\t{\n\t\treturn this.service.labels;\n\t}\n\n\tcanDeactivate(): Observable | boolean\n\t{\n\t\tthis.shellService.isDirty$.next(this.service.isDirty);\n\t\tif(!this.service.isDirty)\n\t\t{\n\t\t\tthis.shellService.shouldLoadPage$.next(true);\n\t\t\treturn true;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.shellService.shouldLoadPage$.next(false);\n\t\t\treturn this.leavePageService.getModalSelectionObservable();\n\t\t}\n\t}\n\n\tsaveChangesEvent(event: boolean)\n\t{\n\t\tthis.service.isDirty = event;\n\t}\n\n\tget editPermissions(): RoutePermissions | undefined\n\t{\n \treturn this.service.getPermissions();\n\t}\n\n}\n","
\n
    \n \n \n \"User\n {{ role.name }}\n
\n \n \n \n\n \n
    \n \n {{ labels.copyRole }}\n \n \n {{ labels.removeRole }}\n \n
\n \n \n \n\n
\n \n \n
\n\n\n\n
\n

\n
\n
{{ roleToBeRemoved.name }}
\n
\n \n {{ removeRoleState.userCount }} {{ removeRoleState.users }}\n
\n \n
\n
\n\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport {\n\tRemoveRoleModalState,\n\tRole,\n\tRolePermissionLabel\n} from '../definitions';\nimport {\n\tKngButtonState,\n\tModalComponent,\n\tModalEvent,\n\tModalState\n} from 'kinetic-angular';\nimport { RolesPermissionsService } from '../roles-permissions.service';\nimport { RoutePermissions } from '../../../guards/permission/definitions';\nimport { Router } from '@angular/router';\nimport { ApplicationPath } from '../../../services/shared/shared-enums';\nimport { SharedService } from '../../../services/shared/shared.service';\nimport { SharedUtilService } from '../../../services/shared/shared-util.service';\n\n@Component({\n\tselector: 'tmhna-portal-roles-permissions-list',\n\ttemplateUrl: './roles-permissions-list.component.html',\n\tstyleUrls: ['./roles-permissions-list.component.scss']\n})\nexport class RolesPermissionsListComponent implements OnInit\n{\n\tget copyRoleActive(): boolean \n\t{\n\t\treturn this.roleService.copyRoleActive;\n\t}\n\tget addButtonState(): KngButtonState \n\t{\n\t\treturn this.roleService.addButtonState;\n\t}\n\n\tpublic screenWidth: number;\n\n @ViewChild(ModalComponent) modalComponent!: ModalComponent;\n @Input() editPermissions!: RoutePermissions | undefined;\n\n constructor(public roleService: RolesPermissionsService, private readonly router: Router, private readonly sharedService : SharedService, private readonly sharedUtilService: SharedUtilService) \n {\n \tthis.screenWidth = window.innerWidth;\n }\n\n ngOnInit(): void \n {\n\t this.addButtonState.disabled = !this.editPermissions?.actions?.includes('EDIT_DETAILS');\n\t \n }\n\n\n isActiveRole(index: number) \n {\n \treturn this.selectedRoleIndex === index;\n }\n\n set selectedRoleIndex(value: number) \n {\n \tthis.roleService.updateSelectedRoleIndex(value);\n }\n\n get currentUserRole(): string \n {\n \treturn this.roleService.currentUserRole;\n }\n\n get rolesList(): Role[] \n {\n \treturn this.roleService.rolesList;\n }\n get selectedRoleIndex(): number \n {\n \treturn this.roleService.selectedRoleIndex;\n }\n get roleToBeRemoved(): Role | null \n {\n \treturn this.roleService.roleToRemove;\n }\n get usersAssignedToRoleToBeRemoved(): number \n {\n \treturn this.roleService.countOfUserstoRemove;\n }\n\n get removeModalState(): ModalState \n {\n \treturn this.roleService.removeModalState;\n }\n\n roleClick(selectedIndex: number) \n {\n \tthis.selectedRoleIndex = selectedIndex;\n \tthis.roleService.updatedContent = true;\n }\n addRole() \n {\n \tthis.roleService.addCustomRole();\n \tthis.roleService.updateAddRowActiveStatus(true);\n \tthis.addButtonState.disabled = true;\n }\n get labels(): RolePermissionLabel \n {\n \treturn this.roleService.labels;\n }\n copyRole(roleIndex: number) \n {\n \tif (!this.copyRoleActive) \n \t{\n \t\tthis.roleService.copyCustomRole(roleIndex);\n \t\tthis.roleService.updateCopyRoleActiveStatus(true);\n \t}\n }\n\n isNameTooLong(name: string) \n {\n \tconst nameArray = name.split(' ');\n \tconst longWordIndex = nameArray.findIndex(\n \t\t(word: string) => word.length > 12\n \t);\n \treturn longWordIndex !== -1;\n }\n\n get removeRoleState(): RemoveRoleModalState | null \n {\n \tif (this.roleService.removeRoleModalState) \n \t{\n \t\tthis.removeModalState.hidden = false;\n \t}\n \treturn this.roleService.removeRoleModalState;\n }\n\n removeRole(index: number, id: string) \n {\n \tthis.roleService.getRemoveRoleState(id);\n \tthis.roleService.updateRoleToBeRemoved(this.rolesList[index]);\n }\n\n removeModalEvent(event: ModalEvent) \n {\n \tif (event.cta.label === 'Remove Role' && this.roleToBeRemoved?.id) \n \t{\n \t\tthis.roleService.removeRole(this.roleToBeRemoved.id);\n \t}\n \tthis.removeModalState.hidden = true;\n \tthis.modalComponent?.closePopup();\n \tthis.removeRoleModalClosed();\n }\n\n removeRoleModalClosed() \n {\n \tthis.roleService.updateRoleToBeRemoved(null);\n \tthis.roleService.removeRoleModalState = null;\n }\n\n highlightDefaultRoleName() \n {\n \tthis.screenWidth = window.innerWidth;\n \tif (!this.removeRoleState?.defaultUserRole) \n \t{\n \t\t\n\t return this.labels.deleteConfirmation[0].headingSub;\n \t}\n\n \tif (this.screenWidth >= 768) \n \t{\n \t\treturn this.removeRoleState?.description.replace(\n \t\t\tnew RegExp(this.removeRoleState?.defaultUserRole, 'gi'),\n \t\t\t(match) => \n \t\t\t{\n \t\t\t\treturn '' + match + '';\n \t\t\t}\n \t\t);\n \t}\n \telse \n \t{\n \t\treturn this.labels.deleteConfirmation[0].headingSub;\n \t}\n }\n\n redirectToUserManagement()\n {\n \tthis.sharedUtilService.hideModalBackdrop();\n\t this.sharedService.navigateMethod(this.router, ApplicationPath.userManagement);\n }\n}\n","
\n
\n
\n \n \n
\n {{ labels.roleNameValidationError}}\n
\n
\n {{ labels.duplicateRoleNameErrorText }}\n
\n
\n\n
\n \n \n
\n
\n\n
\n
{{ labels.permissionLabel }}
\n\n \n
\n
\n {{ permission.sectionHeader }}\n
\n
\n \n {{ labels.unselectAllText }}\n \n
\n
\n 0\">\n \n \n {{ value.permissionShortDescription }}\n
\n
\n
\n \n
\n \n
\n
\n \n \n \n \n\n\n
\n \n
\n","import { Component, DoCheck, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { KngButtonState } from 'kinetic-angular';\nimport { Role, Permission, RolePermissionLabel, PermissionData } from '..';\nimport { RoutePermissions } from '../../../guards/permission/definitions';\nimport { RolesPermissionsService } from '../roles-permissions.service';\n@Component({\n\tselector: 'tmhna-portal-roles-permissions-details',\n\ttemplateUrl: './roles-permissions-details.component.html',\n\tstyleUrls: ['./roles-permissions-details.component.scss']\n})\nexport class RolesPermissionsDetailsComponent implements DoCheck, OnInit\n{\n\n\t@Output() isDirty = new EventEmitter();\n\t@Input() editPermissions!: RoutePermissions | undefined;\n\tdescriptionArray: string[] = [];\n\n\tconstructor(\n\t\tpublic rolesService: RolesPermissionsService,\n\t\tpublic element: ElementRef\n\t) { }\n\tget selectedRole(): Role\n\t{\n\t\treturn this.rolesService.rolesList[this.rolesService.selectedRoleIndex];\n\t}\n\n\tget permissionsList(): Permission[]\n\t{\n\t\treturn this.rolesService.labels.permissionLabels;\n\t}\n\n\tget roleNames(): string[]\n\t{\n\t\treturn this.rolesService.roleNameList;\n\t}\n\n\tget labels(): RolePermissionLabel\n\t{\n\t\treturn this.rolesService.labels;\n\t}\n\n\tget saveButtonState(): KngButtonState\n\t{\n\t\treturn this.rolesService.saveButtonState;\n\t}\n\n\tngDoCheck(): void\n\t{\n\t\tif (this.selectedRole)\n\t\t\tthis.rolesService.saveButtonState.disabled = this.disableSave();\n\t}\n\n\tngOnInit(): void\n\t{\n\t\tthis.rolesService.contentUpdatedObservable$.subscribe((updated)=>\n\t\t{\n\t\t\tif(updated)\n\t\t\t{\n\t\t\t\tsetTimeout(() => \n\t\t\t\t{\n\t\t\t\t\tthis.textAreaAutoSize();\n\t\t\t\t}, 100);\n\t\t\t\tthis.rolesService.updatedContent = false;\n\t\t\t}\n\t\t});\n\t\tthis.rolesService.isSaveSucess$.subscribe((res: boolean) =>\n\t\t{\n\t\t\tthis.isDirty.emit(res);\n\t\t});\n\t}\n\n\tsetPermissonStatus(id: string)\n\t{\n\t\treturn this.selectedRole.permissions.includes(id);\n\t}\n\n\tupdatePermissonStatus(event: Event, id: string)\n\t{\n\t\tthis.isDirty.emit(true);\n\t\tconst index = this.selectedRole.permissions.findIndex((el) => el === id);\n\t\tif ((event.target as HTMLInputElement).checked)\n\t\t{\n\t\t\tif (index === -1)\n\t\t\t{\n\t\t\t\tthis.selectedRole.permissions.push(id);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.selectedRole.permissions.splice(index, 1);\n\t\t}\n\t}\n\n\tunSelectAll(section: Permission)\n\t{\n\t\tthis.isDirty.emit(true);\n\t\tsection.permissionArr.forEach((permission: PermissionData) =>\n\t\t{\n\t\t\tconst indexOfEl = this.selectedRole.permissions.findIndex(\n\t\t\t\t(el) => el === permission.permissionId\n\t\t\t);\n\t\t\tif (indexOfEl !== -1)\n\t\t\t{\n\t\t\t\tthis.selectedRole.permissions.splice(indexOfEl, 1);\n\t\t\t}\n\t\t});\n\t}\n\n\tonChangingDescription()\n\t{\n\t\tthis.isDirty.emit(true);\n\t}\n\tisAllPermissionFalse(section: Permission)\n\t{\n\t\tlet permissionArrLength = 0;\n\t\tsection.permissionArr.forEach((permission: PermissionData) =>\n\t\t{\n\t\t\tconst indexOfEl = this.selectedRole?.permissions.findIndex(\n\t\t\t\t(el) => el === permission.permissionId\n\t\t\t);\n\t\t\tif (indexOfEl === -1)\n\t\t\t{\n\t\t\t\tpermissionArrLength++;\n\t\t\t}\n\t\t});\n\n\t\treturn permissionArrLength === section.permissionArr.length;\n\t}\n\n\troleNameValidation(textData: string | null)\n\t{\n\t\tthis.isDirty.emit(true);\n\t\tthis.selectedRole.isInvalidText = false;\n\t\tif (textData)\n\t\t{\n\t\t\tconst regex = /^[a-zA-Z0-9 ]*$/;\n\t\t\tif (!regex.test(textData))\n\t\t\t{\n\t\t\t\tthis.selectedRole.isInvalidText = true;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.selectedRole.isInvalidText = false;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.selectedRole.isInvalidText = false;\n\t\t}\n\t}\n\n\tisDuplicateName(): boolean\n\t{\n\t\tconst indexOfMatch = this.roleNames.findIndex(\n\t\t\t(el) =>\n\t\t\t\tel.toLowerCase().trim() === this.selectedRole.name.toLowerCase().trim()\n\t\t);\n\t\tif (\n\t\t\tindexOfMatch !== -1 &&\n\t\t\tindexOfMatch !== this.rolesService.selectedRoleIndex\n\t\t)\n\t\t\treturn false;\n\t\treturn true;\n\t}\n\n\tisPermissionConfigured(): boolean\n\t{\n\t\treturn this.selectedRole.permissions.length > 0;\n\t}\n\n\tdisableSave()\n\t{\n\t\tconst regex = /^[a-zA-Z0-9 ]*$/;\n\t\treturn (\n\t\t\tthis.checkSelectedRole() ||\n\t\t\t!this.isDuplicateName() ||\n\t\t\t!this.isPermissionConfigured() ||\n\t\t\t!regex.test(this.selectedRole.name)\n\t\t);\n\t}\n\n\tcheckSelectedRole(): boolean\n\t{\n\t\treturn (\n\t\t\t(this.selectedRole.locked ?? false) ||\n\t\t\tthis.selectedRole.name?.trim() === '' ||\n\t\t\t!this.selectedRole.description\n\t\t);\n\t}\n\n\tsaveRole()\n\t{\n\t\tif (!this.selectedRole.id)\n\t\t{\n\t\t\tthis.rolesService.saveCustomRole(this.selectedRole);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.rolesService.updateCustomRole(this.selectedRole);\n\t\t}\n\t\tthis.rolesService.trackSaveRoleAnalyticsEvent();\n\t}\n\n\n\t@ViewChild('textDescription') textArea!: ElementRef;\n\ttextAreaAutoSize()\n\t{\t\t\n\t\tif(this.textArea)\n\t\t{\n\t\t\tthis.textArea.nativeElement.style.height = 0 + 'px';\n\t\t\tthis.textArea.nativeElement.style.height = (this.textArea.nativeElement.scrollHeight + 4) + 'px';\n\t\t}\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RolesPermissionsComponent } from './roles-permissions.component';\nimport { RolesPermissionsListComponent } from './roles-permissions-list/roles-permissions-list.component';\nimport { RolesPermissionsDetailsComponent } from './roles-permissions-details/roles-permissions-details.component';\nimport { FormsModule } from '@angular/forms';\nimport {\n\tKngButtonModule,\n\tModalModule,\n\tKngFooterModule,\n\tKngFooterService,\n\tKngToasterModule,\n\tKngLoaderModule\n} from 'kinetic-angular';\nimport { RolesPermissionsService } from './roles-permissions.service';\nimport { ToastrModule } from 'ngx-toastr';\nimport { AnalyticsModule } from '../../services/analytics/analytics.module';\nimport { TextAreaAutoSizeDirectiveModule } from '../../services/shared/directives/text-area-auto-size.directive';\nimport { ShellService } from '../shell/shell.service';\n\n@NgModule({\n\tdeclarations: [\n\t\tRolesPermissionsComponent,\n\t\tRolesPermissionsListComponent,\n\t\tRolesPermissionsDetailsComponent\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tFormsModule,\n\t\tKngButtonModule,\n\t\tModalModule,\n\t\tKngToasterModule,\n\t\tKngFooterModule,\n\t\tAnalyticsModule,\n\t\tToastrModule.forRoot({\n\t\t\tpreventDuplicates: true,\n\t\t\tcloseButton: true\n\t\t}),\n\t\tTextAreaAutoSizeDirectiveModule,\n\t\tKngLoaderModule\n\t],\n\texports: [RolesPermissionsComponent],\n\tproviders: [ RolesPermissionsService, KngFooterService, ShellService ]\n})\nexport class RolesPermissionsModule {}\n","/* eslint-disable max-lines */\nimport { MainEntryAemLabels, MainEntryState } from '../components/main-entry';\n\nexport const mockLandingPageAemResponse: MainEntryAemLabels = {\n\tglobalHeader: [\n\t\t{\n\t\t\tisSelected: false,\n\t\t\ticonPath: '/content/dam/tmh/customer-portal/en/portal-images/MyToyota_White.png',\n\t\t\taltText: 'My Toyota logo',\n\t\t\turl: '',\n\t\t\tlabel: '',\n\t\t\tcssClass: '',\n\t\t\tid: '2708cc73-d48c-4301-afa3-ee0bb03002b6',\n\t\t\tsubmenu: []\n\t\t},\n\t\t{\n\t\t\tisSelected: false,\n\t\t\ticonPath: '',\n\t\t\taltText: '',\n\t\t\turl: '',\n\t\t\tlabel: 'Skip Navigation',\n\t\t\tcssClass: '',\n\t\t\tid: '990cdcf6-5612-4d14-9fca-468553692947',\n\t\t\tsubmenu: []\n\t\t}\n\t],\n\tbanner: {\n\t\tbannerImageDesktopView: {\n\t\t\ticonPath: '',\n\t\t\taltText: ''\n\t\t},\n\t\tbannerImageMobileView: {\n\t\t\ticonPath: '',\n\t\t\taltText: ''\n\t\t},\n\t\theader: 'MyToyota Customer Portal is Here!',\n\t\tsubText: 'Now you may register your company and manage locations, users, and permissions to gain 24/7 access.',\n\t\tbulletPoints: [\n\t\t\t{\n\t\t\t\tid: 'a605729f-5c32-42b6-8297-2f4b9302950b',\n\t\t\t\tlabel: 'MyFleet Equipment Management'\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: '56c885b2-cd84-49f0-9e76-1b9dadf487aa',\n\t\t\t\tlabel: 'Open Equipment Orders and Order Tracking'\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: '3f23de83-f375-44e4-9afc-87b7c7aba605',\n\t\t\t\tlabel: 'Lease and Financing Information from Toyota Industries Commercial Finance'\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: '70c1d53b-bd3c-4db1-93a8-72fae67acb00',\n\t\t\t\tlabel: 'MyToyota Store to buy forklift parts and accessories'\n\t\t\t}\n\t\t],\n\t\tregisterButton: 'Register/Login'\n\t},\n\ticonsDeskTopView: [\n\t\t{\n\t\t\ticon: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t},\n\t\t\tlabel: 'MyFleet',\n\t\t\tid: 'ceca2541-a1d3-44b5-bf98-75f987b4873d',\n\t\t\tlink: {}\n\t\t},\n\t\t{\n\t\t\ticon: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t},\n\t\t\tlabel: 'Order Management',\n\t\t\tid: '04802d59-1d31-4176-aa1b-8de105617868',\n\t\t\tlink: {}\n\t\t},\n\t\t{\n\t\t\ticon: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t},\n\t\t\tlabel: 'Financing',\n\t\t\tid: '00dd4c6c-1f05-4e42-beaf-b436d4d80bfc',\n\t\t\tlink: {}\n\t\t},\n\t\t{\n\t\t\ticon: {\n\t\t\t\ticonPath: '', altText: ''\n\t\t\t},\n\t\t\tlabel: 'MyInsights',\n\t\t\tid: '5da9ab50-117f-45b1-a1ce-119056b3c47e',\n\t\t\tlink: {}\n\t\t},\n\t\t{\n\t\t\ticon: {\n\t\t\t\ticonPath: '', altText: ''\n\t\t\t},\n\t\t\tlabel: 'MyToyota Store',\n\t\t\tid: '3a77b49a-4248-4ff1-ac8f-26eac5289ac0',\n\t\t\tlink: {\n\t\t\t\ttext: 'Learn more',\n\t\t\t\turl: '',\n\t\t\t\ticon: {\n\t\t\t\t\ticonPath: '', altText: ''\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t],\n\ticonsMobileView: [\n\t\t{\n\t\t\ticon: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t},\n\t\t\tlabel: 'MyFleet',\n\t\t\tid: 'b7130623-1231-4a4b-87a5-dfbc3ab8a1d7',\n\t\t\tlink: {}\n\t\t},\n\t\t{\n\t\t\ticon: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t},\n\t\t\tlabel: 'Order Management',\n\t\t\tid: 'a5a6cdf2-0650-4a05-9130-65b37f679b1c',\n\t\t\tlink: {}\n\t\t},\n\t\t{\n\t\t\ticon: {\n\t\t\t\ticonPath: '', altText: ''\n\t\t\t},\n\t\t\tlabel: 'Financing',\n\t\t\tid: '767eb6e1-ccca-46f3-b6c5-dea5c84ebe74',\n\t\t\tlink: {}\n\t\t},\n\t\t{\n\t\t\ticon: {\n\t\t\t\ticonPath: '', altText: ''\n\t\t\t},\n\t\t\tlabel: 'MyInsights',\n\t\t\tid: '79a1a192-3fd5-498b-91f8-642f304ab4b4',\n\t\t\tlink: {}\n\t\t},\n\t\t{\n\t\t\ticon: {\n\t\t\t\ticonPath: '', altText: ''\n\t\t\t},\n\t\t\tlabel: 'MyToyota Store',\n\t\t\tid: 'a5f13430-a671-4900-af9e-0f240cf2754e',\n\t\t\tlink: {\n\t\t\t\ttext: 'Learn more',\n\t\t\t\turl: '',\n\t\t\t\ticon: {\n\t\t\t\t\ticonPath: '', altText: ''\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t],\n\tfooter: {\n\t\tribbonImage: '',\n\t\taltText: '',\n\t\tcssClass: '',\n\t\tfootercontent: {\n\t\t\tfixed: false,\n\t\t\thidden: false,\n\t\t\tlogoImagePath: '',\n\t\t\taltText: 'My Toyota logo',\n\t\t\tfootermenu: [\n\t\t\t\t{\n\t\t\t\t\tid: 'd80d21de-9520-48dc-97f5-12125a582254', label: 'Phone', iconPath: '', altText: '', labelValue: ['1.844.965.0182'], url: ''\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'cda2973b-f585-4545-bb17-15f4c4d3c597', label: 'Email', iconPath: '', altText: '', labelValue: ['customerservice@toyotatmh.com'], url: ''\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '5b8ac2b4-995f-43cf-8cb6-7cd4b07febdb', label: '', iconPath: '', altText: '', labelValue: ['Assembled in the USA'], url: ''\n\t\t\t\t}\n\t\t\t],\n\t\t\tcountryLanguage: 'Select a Country/Language',\n\t\t\tcountryLanguageOptions: {\n\t\t\t\tcountryLanguageOptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'United States- English', value: 'United States- English'\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'French', value: 'French'\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\tcopyright: {\n\t\t\t\tlabel: 'Copyright 2023 Toyota Material Handling',\n\t\t\t\tlabelUrl: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Privacy Policy', url: ''\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Do Not Sell or Share My Personal Information', url: ''\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t}\n\t},\n\ttags: [\n\t\t{\n\t\t\tid: '', label: '', description: '', type: ''\n\t\t},\n\t\t{\n\t\t\tid: '', label: '', description: '', type: ''\n\t\t}\n\t]\n};\n\nexport const mockLandingPageLabels: MainEntryState = {\n\tisLoading: false,\n\tsectionTop: {\n\t\tglobalHeader: [\n\t\t\t{\n\t\t\t\tisSelected: false,\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: '',\n\t\t\t\turl: '',\n\t\t\t\tlabel: '',\n\t\t\t\tcssClass: '',\n\t\t\t\tid: '2708cc73-d48c-4301-afa3-ee0bb03002b6',\n\t\t\t\tsubmenu: []\n\t\t\t},\n\t\t\t{\n\t\t\t\tisSelected: false,\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: '',\n\t\t\t\turl: '',\n\t\t\t\tlabel: '',\n\t\t\t\tcssClass: '',\n\t\t\t\tid: '990cdcf6-5612-4d14-9fca-468553692947',\n\t\t\t\tsubmenu: []\n\t\t\t}\n\t\t],\n\t\ttags: [\n\t\t\t{\n\t\t\t\tid: '',\n\t\t\t\tlabel: '',\n\t\t\t\tdescription: '',\n\t\t\t\ttype: ''\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: '',\n\t\t\t\tlabel: '',\n\t\t\t\tdescription: '',\n\t\t\t\ttype: ''\n\t\t\t}\n\t\t]\n\t},\n\tsectionMiddle: {\n\t\tbanner: {\n\t\t\tbannerImageDesktopView: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t},\n\t\t\tbannerImageMobileView: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t},\n\t\t\theader: '',\n\t\t\tsubText: '',\n\t\t\tbulletPoints: [\n\t\t\t\t{\n\t\t\t\t\tid: 'a605729f-5c32-42b6-8297-2f4b9302950b',\n\t\t\t\t\tlabel: ''\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '56c885b2-cd84-49f0-9e76-1b9dadf487aa',\n\t\t\t\t\tlabel: ''\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '3f23de83-f375-44e4-9afc-87b7c7aba605',\n\t\t\t\t\tlabel: ''\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '70c1d53b-bd3c-4db1-93a8-72fae67acb00',\n\t\t\t\t\tlabel: ''\n\t\t\t\t}\n\t\t\t],\n\t\t\tregisterButton: {\n\t\t\t\tsize: 'large',\n\t\t\t\tstyle: 'secondary',\n\t\t\t\tdisabled: false,\n\t\t\t\tlabel: '',\n\t\t\t\ticon: {\n\t\t\t\t\taltText: '',\n\t\t\t\t\ticonPath: ''\n\t\t\t\t},\n\t\t\t\tposition: 'none'\n\t\t\t}\n\t\t},\n\t\ticonsDeskTopView: [\n\t\t\t{\n\t\t\t\ticon: {\n\t\t\t\t\ticonPath: '',\n\t\t\t\t\taltText: ''\n\t\t\t\t},\n\t\t\t\tlabel: '',\n\t\t\t\tid: 'ceca2541-a1d3-44b5-bf98-75f987b4873d',\n\t\t\t\tlink: {}\n\t\t\t},\n\t\t\t{\n\t\t\t\ticon: {\n\t\t\t\t\ticonPath: '',\n\t\t\t\t\taltText: ''\n\t\t\t\t},\n\t\t\t\tlabel: '',\n\t\t\t\tid: '04802d59-1d31-4176-aa1b-8de105617868',\n\t\t\t\tlink: {}\n\t\t\t},\n\t\t\t{\n\t\t\t\ticon: {\n\t\t\t\t\ticonPath: '',\n\t\t\t\t\taltText: ''\n\t\t\t\t},\n\t\t\t\tlabel: '',\n\t\t\t\tid: '00dd4c6c-1f05-4e42-beaf-b436d4d80bfc',\n\t\t\t\tlink: {}\n\t\t\t},\n\t\t\t{\n\t\t\t\ticon: {\n\t\t\t\t\ticonPath: '', altText: ''\n\t\t\t\t},\n\t\t\t\tlabel: '',\n\t\t\t\tid: '5da9ab50-117f-45b1-a1ce-119056b3c47e',\n\t\t\t\tlink: {}\n\t\t\t},\n\t\t\t{\n\t\t\t\ticon: {\n\t\t\t\t\ticonPath: '', altText: ''\n\t\t\t\t},\n\t\t\t\tlabel: '',\n\t\t\t\tid: '3a77b49a-4248-4ff1-ac8f-26eac5289ac0',\n\t\t\t\tlink: {\n\t\t\t\t\ttext: '',\n\t\t\t\t\turl: '',\n\t\t\t\t\ticon: {\n\t\t\t\t\t\ticonPath: '',\n\t\t\t\t\t\taltText: ''\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\ticonsMobileView: [\n\t\t\t{\n\t\t\t\ticon: {\n\t\t\t\t\ticonPath: '',\n\t\t\t\t\taltText: ''\n\t\t\t\t},\n\t\t\t\tlabel: '',\n\t\t\t\tid: 'b7130623-1231-4a4b-87a5-dfbc3ab8a1d7',\n\t\t\t\tlink: {}\n\t\t\t},\n\t\t\t{\n\t\t\t\ticon: {\n\t\t\t\t\ticonPath: '',\n\t\t\t\t\taltText: ''\n\t\t\t\t},\n\t\t\t\tlabel: '',\n\t\t\t\tid: 'a5a6cdf2-0650-4a05-9130-65b37f679b1c',\n\t\t\t\tlink: {}\n\t\t\t},\n\t\t\t{\n\t\t\t\ticon: {\n\t\t\t\t\ticonPath: '',\n\t\t\t\t\taltText: ''\n\t\t\t\t},\n\t\t\t\tlabel: '',\n\t\t\t\tid: '767eb6e1-ccca-46f3-b6c5-dea5c84ebe74',\n\t\t\t\tlink: {}\n\t\t\t},\n\t\t\t{\n\t\t\t\ticon: {\n\t\t\t\t\ticonPath: '',\n\t\t\t\t\taltText: ''\n\t\t\t\t},\n\t\t\t\tlabel: '',\n\t\t\t\tid: '79a1a192-3fd5-498b-91f8-642f304ab4b4',\n\t\t\t\tlink: {}\n\t\t\t},\n\t\t\t{\n\t\t\t\ticon: {\n\t\t\t\t\ticonPath: '',\n\t\t\t\t\taltText: ''\n\t\t\t\t},\n\t\t\t\tlabel: '',\n\t\t\t\tid: 'a5f13430-a671-4900-af9e-0f240cf2754e',\n\t\t\t\tlink: {\n\t\t\t\t\ttext: '',\n\t\t\t\t\turl: '',\n\t\t\t\t\ticon: {\n\t\t\t\t\t\ticonPath: '',\n\t\t\t\t\t\taltText: ''\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t},\n\tsectionBottom: {\n\t\tfooter: {\n\t\t\tribbonImage: '',\n\t\t\taltText: '',\n\t\t\tcssClass: '',\n\t\t\tfootercontent: {\n\t\t\t\tfixed: false,\n\t\t\t\thidden: false,\n\t\t\t\tlogoImagePath: '',\n\t\t\t\taltText: '',\n\t\t\t\tfootermenu: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'd80d21de-9520-48dc-97f5-12125a582254',\n\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\ticonPath: '',\n\t\t\t\t\t\taltText: '',\n\t\t\t\t\t\tlabelValue: [],\n\t\t\t\t\t\turl: ''\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'cda2973b-f585-4545-bb17-15f4c4d3c597',\n\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\ticonPath: '',\n\t\t\t\t\t\taltText: '',\n\t\t\t\t\t\tlabelValue: [],\n\t\t\t\t\t\turl: ''\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: '5b8ac2b4-995f-43cf-8cb6-7cd4b07febdb',\n\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\ticonPath: '',\n\t\t\t\t\t\taltText: '',\n\t\t\t\t\t\tlabelValue: [],\n\t\t\t\t\t\turl: ''\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\tcopyright: {\n\t\t\t\t\tlabel: '',\n\t\t\t\t\tlabelUrl: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\t\turl: ''\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\t\turl: ''\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n","import { Inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { MainEntryAemLabels, MainEntryState } from './definitions';\nimport { LoggerService } from '../../services/logger/logger.service';\nimport { AemApiService } from '../../services/api/api.aem.service';\nimport { ApiResponse } from '../../definitions/api-response.interface';\nimport { MainEntryFactory } from './main-entry.factory';\nimport { expEnvironmentRef } from '../../injection-tokens/environment.injection-token';\nimport { EnvironmentRef } from 'projects/tmhna-portal/src/environments/interfaces';\nimport { Meta, Title } from '@angular/platform-browser';\n\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class MainEntryService\n{\n\tprivate readonly state$: BehaviorSubject =\n\t\tnew BehaviorSubject(MainEntryFactory.build());\n\n\tconstructor(\n\tprivate readonly aemApiService: AemApiService,\n\tpublic loggerService: LoggerService,\n\tprivate readonly metaService: Meta,\n\tprivate readonly titleService: Title,\n\t@Inject(expEnvironmentRef) readonly environmentRef: EnvironmentRef\n\t) {}\n\n\taemBaseUrl: string = this.environmentRef.aemBaseUrl;\n\n\tget state(): MainEntryState\n\t{\n\t\treturn this.state$.value;\n\t}\n\tget stateChanged(): Observable\n\t{\n\t\treturn this.state$.asObservable();\n\t}\n\n\tpublic updateState(value: MainEntryState): void\n\t{\n\t\tthis.state$.next(value);\n\t}\n\n\tpublic getLandingPageAemLabels() \n\t{\n\t\tthis.state.isLoading = true;\n\t\tthis.aemApiService.getLandingPageLabels().subscribe(\n\t\t\t{\n\t\t\t\tnext: (res: ApiResponse) => \n\t\t\t\t{\n\t\t\t\t\tthis.state.isLoading = false;\n\t\t\t\t\tconst landingPageLabels = res.data as MainEntryAemLabels;\n\t\t\t\t\tthis.setSectionTopLabels(landingPageLabels);\n\t\t\t\t\tthis.setSectionMiddleLabels(landingPageLabels);\n\t\t\t\t\tthis.setSectionBottomLabels(landingPageLabels);\n\t\t\t\t\tthis.updateState(this.state);\n\t\t\t\t},\n\t\t\t\terror: () =>\n\t\t\t\t{\n\t\t\t\t\tthis.state.isLoading = false;\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic setSectionTopLabels(landingPageLabels: MainEntryAemLabels): void \n\t{\n\t\tthis.state.sectionTop.globalHeader = landingPageLabels.globalHeader;\n\t\tthis.state.sectionTop.tags = landingPageLabels.tags;\n\t\tthis.state.sectionTop.globalHeader[0].iconPath = this.aemBaseUrl + this.state.sectionTop.globalHeader[0].iconPath;\n\t\tthis.state.sectionTop.tags.forEach(el => \n\t\t{\n\t\t\tif(el.type.toLowerCase() === 'title') \n\t\t\t{\n\t\t\t\tthis.titleService.setTitle(el.description);\n\t\t\t}\n\t\t\tif(el.type.toLowerCase() === 'meta') \n\t\t\t{\n\t\t\t\tthis.metaService.addTag({ name: 'description', content: el.description });\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic setSectionMiddleLabels(landingPageLabels: MainEntryAemLabels): void \n\t{\n\t\tthis.state.sectionMiddle.banner.bannerImageDesktopView = landingPageLabels.banner.bannerImageDesktopView;\n\t\tthis.state.sectionMiddle.banner.bannerImageDesktopView.iconPath = this.aemBaseUrl + landingPageLabels.banner.bannerImageDesktopView.iconPath;\n\t\tthis.state.sectionMiddle.banner.bannerImageMobileView = landingPageLabels.banner.bannerImageMobileView;\n\t\tthis.state.sectionMiddle.banner.bannerImageMobileView.iconPath = this.aemBaseUrl + landingPageLabels.banner.bannerImageMobileView.iconPath;\n\t\tthis.state.sectionMiddle.banner.bulletPoints = landingPageLabels.banner.bulletPoints;\n\t\tthis.state.sectionMiddle.banner.header = landingPageLabels.banner.header;\n\t\tthis.state.sectionMiddle.banner.registerButton.label = landingPageLabels.banner.registerButton;\n\t\tthis.state.sectionMiddle.banner.subText = landingPageLabels.banner.subText;\n\t\tthis.state.sectionMiddle.iconsDeskTopView = landingPageLabels.iconsDeskTopView;\n\t\tthis.state.sectionMiddle.iconsMobileView = landingPageLabels.iconsMobileView;\n\t\tthis.state.sectionMiddle.iconsDeskTopView[0].icon.iconPath = this.aemBaseUrl + this.state.sectionMiddle.iconsDeskTopView[0].icon.iconPath;\n\t\tthis.state.sectionMiddle.iconsDeskTopView[1].icon.iconPath = this.aemBaseUrl + this.state.sectionMiddle.iconsDeskTopView[1].icon.iconPath;\n\t\tthis.state.sectionMiddle.iconsDeskTopView[2].icon.iconPath = this.aemBaseUrl + this.state.sectionMiddle.iconsDeskTopView[2].icon.iconPath;\n\t\tthis.state.sectionMiddle.iconsDeskTopView[3].icon.iconPath = this.aemBaseUrl + this.state.sectionMiddle.iconsDeskTopView[3].icon.iconPath;\n\t\tthis.state.sectionMiddle.iconsDeskTopView[4].icon.iconPath = this.aemBaseUrl + this.state.sectionMiddle.iconsDeskTopView[4].icon.iconPath;\n\t}\n\n\tpublic setSectionBottomLabels(landingPageLabels: MainEntryAemLabels): void \n\t{\n\t\tconst footerMenuObj: {\n\t\t\tid: string;\n\t\t\tlabel: string;\n\t\t\ticonPath: string;\n\t\t\taltText: string;\n\t\t\tlabelValue: string[];\n\t\t} = {\n\t\t\tid: '',\n\t\t\tlabel: landingPageLabels.footer.footercontent.countryLanguage,\n\t\t\ticonPath: '',\n\t\t\taltText: '',\n\t\t\tlabelValue: []\n\t\t};\n\t\tlandingPageLabels.footer.ribbonImage = this.aemBaseUrl + landingPageLabels.footer.ribbonImage;\n\t\tlandingPageLabels.footer.footercontent.countryLanguageOptions.countryLanguageOptions.forEach(el=>\n\t\t{\n\t\t\tfooterMenuObj.labelValue.push(el.value);\n\t\t});\n\t\tthis.state.sectionBottom.footer.altText = landingPageLabels.footer.altText;\n\t\tthis.state.sectionBottom.footer.cssClass = landingPageLabels.footer.cssClass;\n\t\tthis.state.sectionBottom.footer.ribbonImage = landingPageLabels.footer.ribbonImage;\n\t\tthis.state.sectionBottom.footer.footercontent.altText = landingPageLabels.footer.footercontent.altText;\n\t\tthis.state.sectionBottom.footer.footercontent.copyright = landingPageLabels.footer.footercontent.copyright;\n\t\tthis.state.sectionBottom.footer.footercontent.fixed = landingPageLabels.footer.footercontent.fixed;\n\t\tthis.state.sectionBottom.footer.footercontent.hidden = landingPageLabels.footer.footercontent.hidden;\n\t\tthis.state.sectionBottom.footer.footercontent.logoImagePath = landingPageLabels.footer.footercontent.logoImagePath;\n\t\tthis.state.sectionBottom.footer.footercontent.footermenu = landingPageLabels.footer.footercontent.footermenu;\n\t\tconst currentUrl = window?.location.href;\n\t\tif(currentUrl.includes('contact-us') )\n\t\t{\n\t\t\tthis.state.sectionBottom.footer.footercontent.footermenu = landingPageLabels.footer.footercontent.footermenu.filter((item) => item.label !== 'Support'); \n\t\t}\n\t\tthis.state.sectionBottom.footer.footercontent.footermenu.push(footerMenuObj);\n\t\tthis.state.sectionBottom.footer.footercontent.logoImagePath = this.aemBaseUrl + this.state.sectionBottom.footer.footercontent.logoImagePath;\n\t\tthis.state.sectionBottom.footer.footercontent.footermenu[0].iconPath = this.aemBaseUrl + this.state.sectionBottom.footer.footercontent.footermenu[0].iconPath;\n\t\tthis.state.sectionBottom.footer.footercontent.footermenu[1].iconPath = this.aemBaseUrl + this.state.sectionBottom.footer.footercontent.footermenu[1].iconPath;\n\t\tthis.state.sectionBottom.footer.footercontent.footermenu[2].iconPath = this.aemBaseUrl + this.state.sectionBottom.footer.footercontent.footermenu[2].iconPath;\n\t}\n}\n","import { MainEntryState } from './definitions';\n\nimport { mockLandingPageLabels } from '../../constants/main-entry-data';\n\nexport class MainEntryFactory\n{\n\tpublic static build(): MainEntryState \n\t{\n\t\treturn { ...mockLandingPageLabels };\n\t}\n}\n","\n\n
\n
\n
\n \"My\n
\n
\n
\n
=767\n ? 'linear-gradient(90deg, rgba(17, 18, 18, 0.80) 46.08%, rgba(17, 18, 18, 0.00) 100.18%),url('+state.sectionMiddle.banner.bannerImageDesktopView.iconPath+')'\n :'url('+state.sectionMiddle.banner.bannerImageMobileView.iconPath+')'\n }\"\n >\n
\n
\n
\n
\n

{{ state.sectionMiddle.banner.header }}

\n
\n
\n

\n
    \n \n
  • {{ bullet.label }}
  • \n
    \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \"My\n
{{state.sectionMiddle.iconsDeskTopView[0].label}}
\n
\n
\n \"Order\n
{{state.sectionMiddle.iconsDeskTopView[1].label}}
\n
\n
\n \"Financing\n
{{state.sectionMiddle.iconsDeskTopView[2].label}}
\n
\n
\n \"My\n
{{state.sectionMiddle.iconsDeskTopView[3].label}}
\n
\n
\n \"My\n
\n
{{state.sectionMiddle.iconsDeskTopView[4].label}}
\n \n
\n
\n
\n
\n \n
\n","import {\n\tComponent,\n\tInput,\n\tOnDestroy,\n\tOutput,\n\tEventEmitter,\n\tOnInit,\n\tHostListener\n} from '@angular/core';\nimport { KngLoaderState } from 'kinetic-angular';\nimport { Subscription } from 'rxjs';\nimport { LoggerService } from '../../services/logger/logger.service';\nimport { Icons } from '../../services/shared/shared-enums';\nimport { MainEntry, MainEntryState } from './definitions';\nimport { MainEntryService } from './main-entry.service';\nimport { Router } from '@angular/router';\nimport { AnalyticsService } from '../../services/analytics/analytics.service';\n\n@Component({\n\tselector: 'tmhna-portal-main-entry',\n\ttemplateUrl: './template/main-entry.component.html',\n\tstyleUrls: ['./template/main-entry.component.scss']\n})\nexport class MainEntryComponent\nimplements OnDestroy, OnInit, MainEntry\n{\n\tprivate readonly subscriptions: Subscription = new Subscription();\n\tpublic innerWidth: number = window.innerWidth ;\n\n\t@Input() set state(value: MainEntryState)\n\t{\n\t\tthis.service.updateState(value);\n\t}\n\tget state(): MainEntryState\n\t{\n\t\treturn this.service.state;\n\t}\n\t\n\t\n\tpublic loaderState: KngLoaderState = {\n\t\timagePath: Icons.loaderOrange\n\t};\n\t@Output() stateChanged: EventEmitter =\n\t\tnew EventEmitter();\n\n\t\n\t@HostListener('window:resize', ['$event'])\n\tonResize() \n\t{\n\t\tthis.innerWidth = window.innerWidth;\n\t}\n\n\tconstructor(private readonly service: MainEntryService, public loggerService: LoggerService, public router: Router, private readonly analyticsService: AnalyticsService) { }\n\n\tngOnInit(): void \n\t{\n\t\tthis.analyticsService.trackRegistrationByEvent({\n \t\tevent: 'pageView',\n \t\tpage: {\n \t\t\tname: 'Landing page'\n \t\t}\n \t}, '');\n\t\tthis.service.getLandingPageAemLabels();\n\t\tconst stateChangeSubs: Subscription = this.service.stateChanged.subscribe(\n\t\t\t(next: MainEntryState) => this.stateChanged.emit(next)\n\t\t);\n\t\tthis.subscriptions.add(stateChangeSubs);\n\t}\n\n\tngOnDestroy(): void\n\t{\n\t\tthis.destroySubscriptions();\n\t}\n\n\tprivate destroySubscriptions(): void\n\t{\n\t\tthis.subscriptions.unsubscribe();\n\t}\n\t\n\tpublic loginRegisterEvent() \n\t{\n\t\tthis.analyticsService.trackRegistrationByEvent({\n \t\tevent: 'Register /Login',\n \t\tlink: {\n \t\t\tname: 'Register Button'\n \t\t}\n \t}, '');\n\t\tthis.router.navigate(['auth']);\n\t}\n\n\tpublic navigateToShop() \n\t{\n\t\tthis.analyticsService.trackRegistrationByEvent({\n\t\t\tevent: 'Shop Now',\n\t\t\tlink: {\n\t\t\t\tname: 'Shop Now'\n\t\t\t}\n\t\t}, '');\n\t}\n}\n","import {\n\tMsalGuardConfiguration,\n\tMsalInterceptorConfiguration\n} from '@azure/msal-angular';\nimport {\n\tmsalConfig,\n\tprotectedResources\n} from '../../injection-tokens/auth-config.injection-token';\nimport {\n\tInteractionType,\n\tIPublicClientApplication,\n\tPublicClientApplication\n} from '@azure/msal-browser';\n\nexport class AuthenticationServiceFactory\n{\n\tpublic static msalInstanceFactory(): IPublicClientApplication\n\t{\n\t\treturn new PublicClientApplication(msalConfig);\n\t}\n\tpublic static msalGuardConfigFactory(): MsalGuardConfiguration\n\t{\n\t\treturn {\n\t\t\tinteractionType: InteractionType.Redirect\n\t\t};\n\t}\n\tpublic static msalInterceptorConfigFactory(): MsalInterceptorConfiguration\n\t{\n\t\tconst protectedResourceMap = new Map>();\n\t\tprotectedResources.forEach(item => protectedResourceMap.set(item.endpoint, item.scopes));\t\t\n\t\treturn {\n\t\t\tinteractionType: InteractionType.Redirect,\n\t\t\tprotectedResourceMap\n\t\t};\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AuthenticationService } from './authentication.service';\nimport { LoggerServiceModule } from '../logger/logger.module';\nimport {\n\tMsalBroadcastService,\n\tMsalGuard,\n\tMsalInterceptor,\n\tMsalModule,\n\tMsalService,\n\tMSAL_GUARD_CONFIG,\n\tMSAL_INSTANCE,\n\tMSAL_INTERCEPTOR_CONFIG\n} from '@azure/msal-angular';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { AuthenticationServiceFactory } from './authentication-service.factory';\n\n@NgModule({\n\tdeclarations: [],\n\timports: [ CommonModule, LoggerServiceModule, MsalModule ],\n\texports: [],\n\tproviders: [\n\t\tAuthenticationService,\n\t\tMsalService,\n\t\tMsalGuard,\n\t\tMsalBroadcastService,\n\t\t{\n\t\t\tprovide: MSAL_INSTANCE,\n\t\t\tuseFactory: AuthenticationServiceFactory.msalInstanceFactory\n\t\t},\n\t\t{\n\t\t\tprovide: MSAL_GUARD_CONFIG,\n\t\t\tuseFactory: AuthenticationServiceFactory.msalGuardConfigFactory\n\t\t},\n\t\t{\n\t\t\tprovide: HTTP_INTERCEPTORS,\n\t\t\tuseClass: MsalInterceptor,\n\t\t\tmulti: true\n\t\t},\n\t\t{\n\t\t\tprovide: MSAL_INTERCEPTOR_CONFIG,\n\t\t\tuseFactory: AuthenticationServiceFactory.msalInterceptorConfigFactory\n\t\t}\n\t]\n})\nexport class AuthenticationServiceModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MainEntryComponent } from './main-entry.component';\nimport { KngButtonModule, KngFooterModule, KngLoaderModule } from 'kinetic-angular';\nimport { AuthenticationServiceModule } from '../../services/authentication/authentication.module';\nimport { LoggerServiceModule } from '../../services/logger/logger.module';\nimport{ SafeHtmlPipeModule } from '../../../app/pipes/safehtml/safehtml.pipe.module';\n@NgModule({\n\tdeclarations: [MainEntryComponent],\n\timports: [\n\t\tCommonModule,\n\t\tKngButtonModule,\n\t\tKngFooterModule,\n\t\tAuthenticationServiceModule,\n\t\tLoggerServiceModule,\n\t\tKngLoaderModule,\n\t\tSafeHtmlPipeModule\n\t],\n\texports: [MainEntryComponent]\n})\nexport class MainEntryModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SharedService } from './shared.service';\nimport { SharedUtilService } from './shared-util.service';\n\n@NgModule({\n\tdeclarations: [],\n\timports: [CommonModule],\n\tproviders: [ SharedService, SharedUtilService ]\n})\nexport class SharedModule {}\n","/* eslint-disable max-lines */\nimport { ModalEvent } from 'kinetic-angular';\nimport { AdditionalLocationListResponse, SubmitRegistrationResponse, UploadFileLabels } from '../components/registration';\nimport { RegistrationRequestType } from '../services/shared/shared-enums';\nexport const registrationPageData = {\n\tlogo: { iconPath: '', altText: '' },\n\tlogoutLabel: '',\n\tstepLabel: '',\n\tpageHeading: '',\n\tpageDescription: '',\n\tprofileInfo: {\n\t\tlogo: { iconPath: '', altText: '' },\n\t\tstepNumber: '',\n\t\theading: '',\n\t\tdescription: '',\n\t\tfirstName: '',\n\t\tlastName: '',\n\t\temailAddress: '',\n\t\tphoneNumber: '',\n\t\tjobTitle: '',\n\t\tjobTitleAltText: '',\n\t\trequestedRole: { label: '', description: '' },\n\t\trequestedRoleAltText: ''\n\t},\n\tcompanyDetails: {\n\t\tlogo: { iconPath: '', altText: '' },\n\t\theading: '',\n\t\tdescription: '',\n\t\tstepNumber: '',\n\t\tcompanyName: '',\n\t\taddressLine1: '',\n\t\taddressLine2: '',\n\t\taddress2OptionalLabel: '',\n\t\tcountry: '',\n\t\tcity: '',\n\t\tstate: '',\n\t\tstateAltText: '',\n\t\tzipCode: '',\n\t\tcompanyNotFoundErrorModalDescription: '',\n\t companyNotFoundErrorModalHeader: ''\n\t},\n\ttermsConditions: {\n\t\tlogo: { iconPath: '', altText: '' },\n\t\theading: '',\n\t\tdescription: '',\n\t\tstepNumber: '',\n\t\tterms: {\n\t\t\tlabel: '',\n\t\t\ttokenData: [{ name: '', text: '', url: '', isLink: '' }],\n\t\t\tmodal: {\n\t\t\t\theading: '',\n\t\t\t\tcloseIcon: { iconPath: '', altText: '' },\n\t\t\t\tcontent: [''],\n\t\t\t\tagreeButtonLabel: '',\n\t\t\t\tagreedButtonLabel: '',\n\t\t\t\tdisagreeButtonLabel: '',\n\t\t\t\tcheckboxText: ''\n\t\t\t}\n\t\t},\n\t\tprivacy: {\n\t\t\tlabel: '',\n\t\t\ttokenData: [{ name: '', text: '', url: '', isLink: '' }],\n\t\t\tmodal: {\n\t\t\t\theading: '',\n\t\t\t\tcloseIcon: { iconPath: '', altText: '' },\n\t\t\t\tcontent: [''],\n\t\t\t\tagreeButtonLabel: '',\n\t\t\t\tagreedButtonLabel: '',\n\t\t\t\tdisagreeButtonLabel: '',\n\t\t\t\tcheckboxText: ''\n\t\t\t}\n\t\t}\n\t},\n\tprivacypolicy: {\n\t\tlogo: { iconPath: '', altText: '' },\n\t\theading: '',\n\t\tdescription: '',\n\t\tstepNumber: '',\n\t\tterms: {\n\t\t\tlabel: '',\n\t\t\ttokenData: [{ name: '', text: '', url: '', isLink: '' }],\n\t\t\tmodal: {\n\t\t\t\theading: '',\n\t\t\t\tcloseIcon: { iconPath: '', altText: '' },\n\t\t\t\tcontent: [''],\n\t\t\t\tagreeButtonLabel: '',\n\t\t\t\tagreedButtonLabel: '',\n\t\t\t\tdisagreeButtonLabel: '',\n\t\t\t\tcheckboxText: ''\n\t\t\t}\n\t\t},\n\t\tprivacy: {\n\t\t\tlabel: '',\n\t\t\ttokenData: [{ name: '', text: '', url: '', isLink: '' }],\n\t\t\tmodal: {\n\t\t\t\theading: '',\n\t\t\t\tcloseIcon: { iconPath: '', altText: '' },\n\t\t\t\tcontent: [''],\n\t\t\t\tagreeButtonLabel: '',\n\t\t\t\tagreedButtonLabel: '',\n\t\t\t\tdisagreeButtonLabel: '',\n\t\t\t\tcheckboxText: ''\n\t\t\t}\n\t\t}\n\t},\n\taccountType: {\n\t\tdescription: '',\n\t\theading: '',\n\t\tlogo: { iconPath: '', altText: '' },\n\t\tstepNumber: '',\n\t\tindividualAccount: {\n\t\t\tlabel: '',\n\t\t\tdescription1: '',\n\t\t\tdescription2: '',\n\t\t\ttokenData: [{ name: '', text: '', url: '', isLink: '' }]\n\t\t},\n\t\tbusinessAccount: {\n\t\t\tlabel: '',\n\t\t\tdescription1: '',\n\t\t\tdescription2: '',\n\t\t\ttokenData: [{ name: '', text: '', url: '', isLink: '' }]\n\t\t}\n\t},\n\tadditionalLocation: {\n\t\tlocationPageDescription: {\n\t\t\tdescription1: '',\n\t\t\tdescription2: '',\n\t\t\ttokenData: [{ name: '', text: '', url: '', isLink: '' }]\n\t\t},\n\t\theading1: '',\n\t\theadingOr: '',\n\t\theading2: {\n\t\t\tlabel: '',\n\t\t\ticonPath: '',\n\t\t\taltText: ''\n\t\t},\n\t\tlogo: { iconPath: '', altText: '' },\n\t\tstepNumber: '',\n\t\tprimaryLocationHeading: '',\n\t\tselectLocationTableHeader: {\n\t\t\tcompanyName: '',\n\t\t\taddress: '',\n\t\t\tcountry: '',\n\t\t\tselectAll: ''\n\t\t},\n\t\tuploadSuccessText: '',\n\t\tuploadSuccessSubtext: ''\n\t},\n\tsubmitButton: '',\n\tcompanyError: {\n\t\tmessageMain: '',\n\t\tmessageSub: '',\n\t\tactionMessage: '',\n\t\tphoneNumber: {\n\t\t\tlabel: '',\n\t\t\tvalue: ''\n\t\t},\n\t\temail: {\n\t\t\tlabel: '',\n\t\t\tvalue: ''\n\t\t},\n\t\tcustomerServiceName: '',\n\t\taddress: '',\n\t\tcontactDealer: {\n\t\t\tlabel: '',\n\t\t\ticon: ''\n\t\t}\n\t},\n\tdomainInfo: {\n\t\theading: '',\n\t\tdescription: '',\n\t\tstepNumber: '',\n\t\tsubHeading: '',\n\t\tlogo: { iconPath: '', altText: '' },\n\t\tlabelPrefix: '',\n\t\tlabelSuffix: ''\n\t}\n};\nexport const errorCompanyInfo = {\n\tsuccess: true,\n\tmessage: 'Success',\n\tstatusCode: 200,\n\tdata: {\n\t\terrorMessage: 'Company\\'s information was not found in EIL system.',\n\t\tdealerInfo: {\n\t\t\tdealerName: 'Dealer1',\n\t\t\tphoneNumber: '000.000.0000',\n\t\t\temail: 'service@email.com',\n\t\t\taddress: '123 Equipment Ave, Durham, North Carolina 12345'\n\t\t}\n\t}\n};\n\nexport const successCompanyInfo = {\n\tsuccess: true,\n\tmessage: 'Success',\n\tstatusCode: 201,\n\tdata: { successMessage: 'Registration form submitted, Account is pending for approval from Administrator.' }\n};\nexport const registrationFormPayload = {\n\temail: 'user101@accenture.com',\n\tfirstName: 'User',\n\tlastName: 'Test',\n\tjobTitle: 'Purchasing',\n\tphoneNumber: '987654321',\n\taccountName: 'Accenture',\n\taddressLine1: '34A',\n\taddressLine2: 'Egdewater',\n\tcity: 'NewJersey',\n\tstate: 'NY',\n\tpostalCode: '07015',\n\trequestedRole: 'Default User',\n\tcrmPrefill: false,\n\tcountry: 'USA'\n};\nexport const registrationFormPayload1 = {\n\temail: 'user101@accenture.com',\n\tfirstName: 'User',\n\tlastName: 'Test',\n\tjobTitle: 'Purchasing',\n\tphoneNumber: '987654321',\n\taccountName: 'Accenture',\n\taddressLine1: '36A',\n\taddressLine2: 'Egdewater',\n\tcity: 'NewJersey',\n\tstate: 'NY',\n\tpostalCode: '07015',\n\trequestedRole: 'Default User',\n\tcrmPrefill: false,\n\tcountry: 'USA'\n};\nexport const registrationFormPayload2 = {\n\temail: 'user101@accenture.com',\n\tfirstName: 'User',\n\tlastName: 'Test',\n\tjobTitle: 'Purchasing',\n\tphoneNumber: '987654321',\n\taccountName: 'Accenture',\n\taddressLine1: '34A',\n\taddressLine2: 'EgdeWater',\n\tcity: 'NewJersey',\n\tstate: 'NY',\n\tpostalCode: '07015',\n\trequestedRole: 'Default User',\n\tcrmPrefill: false,\n\tcountry: 'USA'\n};\nexport const mockPrefillCompanyDetails = {\n\taddressLine1: '34A',\n\taddressLine2: 'Egdewater',\n\tcompanyName: 'Accenture',\n \tcountry: 'USA',\n\tcity: 'NewJersey',\n\tstate: 'NY',\n\tzipCode: '07015'\n};\nexport const prefillUserDetails = {\n\tcompanyDetails: {\n\t\taddressLine1: '',\n\t\taddressLine2: '',\n\t\tcountry: '',\n\t\tcompanyName: '',\n\t\tstate: '',\n\t\tzipCode: '',\n\t\tcity: ''\n\t},\n\tprofileInformation: {\n\t\tfirstName: '',\n\t\tlastName: '',\n\t\tphoneNumber: '',\n\t\tjobTitle: [{ label: '', id: '' }],\n\t\trequestedRole: [{\n\t\t\tdescription: '',\n\t\t\tid: '',\n\t\t\tname: ''\n\t\t}],\n\t\temail: ''\n\t},\n\ttempIsPrefilled: false,\n\tcrmPrefill: true\n};\nexport const prefillUserDetailsUsa = {\n\tcompanyDetails: {\n\t\taddressLine1: '',\n\t\taddressLine2: '',\n\t\tcountry: 'USA',\n\t\tcompanyName: '',\n\t\tstate: '',\n\t\tzipCode: '',\n\t\tcity: ''\n\t},\n\tprofileInformation: {\n\t\tfirstName: '',\n\t\tlastName: '',\n\t\tphoneNumber: '',\n\t\tjobTitle: [{ label: '', id: '' }],\n\t\trequestedRole: [{\n\t\t\tdescription: '',\n\t\t\tid: '',\n\t\t\tname: ''\n\t\t}],\n\t\temail: ''\n\t},\n\ttempIsPrefilled: false,\n\tcrmPrefill: true\n};\nexport const prefillUserDetailsCan = {\n\tcompanyDetails: {\n\t\taddressLine1: '',\n\t\taddressLine2: '',\n\t\tcountry: 'CA',\n\t\tcompanyName: '',\n\t\tstate: '',\n\t\tzipCode: '',\n\t\tcity: ''\n\t},\n\tprofileInformation: {\n\t\tfirstName: '',\n\t\tlastName: '',\n\t\tphoneNumber: '',\n\t\tjobTitle: [{ label: '', id: '' }],\n\t\trequestedRole: [{\n\t\t\tdescription: '',\n\t\t\tid: '',\n\t\t\tname: ''\n\t\t}],\n\t\temail: ''\n\t},\n\ttempIsPrefilled: false,\n\tcrmPrefill: true\n};\nexport const mockAdditionalLocationResponse: AdditionalLocationListResponse = {\n\tprimaryLocationInfo: {\n\t\tprimaryLocationGRID: '1234',\n\t\tadminLocationID: '16742',\n\t\ttopLevelGrid: '1234',\n\t\tcompanyName: 'TRACTOR SUPPLY',\n\t\taddressLine1: '123 Equipment Ave, Suite 444',\n\t\taddressLine2: '',\n\t\tcity: 'Durham',\n\t\tstate: 'TX',\n\t\tzipCode: '12345',\n\t\tcountry: 'US'\n\t},\n\tlocationList: [\n\t\t{ locationGRID: '1234', companyName: 'Company ABC', addressLine1: '123 Equipment Ave, Suite 000', city: 'Durham', state: 'TX', zipCode: '52633', country: 'US' },\n\t\t{ locationGRID: '1234', companyName: 'Company DEF', addressLine1: '123 Equipment Ave, Suite 111', city: 'Durham', state: 'NY', zipCode: '23432', country: 'USA' },\n\t\t{ locationGRID: '1234', companyName: 'Company XYZ', addressLine1: '123 Equipment Ave, Suite 333', city: 'Durham', state: 'TN', zipCode: '45645', country: 'CA' },\n\t\t{ locationGRID: '1234', companyName: 'Company XYZ', addressLine1: '123 Equipment Ave, Suite 222', city: 'Durham', state: 'NC', zipCode: '66645', country: 'CAN' }],\n\tpendingLocationDetails: {\n\t\toriginalFileName: 'abc.xlsx',\n\t\tupdatedFileName: 'xyz.xlsx'\n\t\t\t }\n};\nexport const mockAdditionalLocationEmptyResponse: AdditionalLocationListResponse = {\n\tprimaryLocationInfo: {\n\t\tprimaryLocationGRID: '',\n\t\tadminLocationID: '',\n\t\ttopLevelGrid: '',\n\t\tcompanyName: '',\n\t\taddressLine1: '',\n\t\taddressLine2: '',\n\t\tcity: '',\n\t\tstate: '',\n\t\tzipCode: '',\n\t\tcountry: ''\n\t},\n\tlocationList: [],\n\tpendingLocationDetails: {\n\t\toriginalFileName: '',\n\t\tupdatedFileName: ''\n\t\t }\n};\nexport const mockBusinessAccountSuccessResponse: SubmitRegistrationResponse = {\n\tregistrationStatus: 'approved',\n\trequestType: RegistrationRequestType.businessAdminUser,\n\tsuccessMessage: 'Submitted'\n};\nexport const mockBusinessUploadListLabel: UploadFileLabels =\n{\n\theading: 'Upload New Locations List',\n\tsubHeading: 'Location List Template',\n\tcontent: [\n\t\t{\n\t\t\tlabel: '',\n\t\t\tdescription: ''\n\t\t}\n\t],\n\tcloseIcon: { iconPath: '', altText: '' },\n\tdownload: {\n\t\tdownloadButton: 'Download Template',\n\t\terrorMessage: ''\n\t},\n\tcancel: 'Cancel',\n\tupload: 'Upload',\n\tclose: 'Close',\n\tuploadFile: {\n\t\tonLoadIcon: { iconPath: '', altText: '' },\n\t\terrorIcon: { iconPath: '', altText: '' },\n\t\tsuccessIcon: { iconPath: '', altText: '' },\n\t\tdragDropLabel: 'Drag & Drop file here',\n\t\torLabel: 'or',\n\t\tuploadButtons: {\n\t\t\tchooseFile: 'Choose File',\n\t\t\treplaceFile: 'Replace File',\n\t\t\ttryAgain: 'Try Again'\n\t\t},\n\t\tsuccess: 'Upload Submitted'\n\t},\n\terrorState:\n\t{\n\t\tmessages: [],\n\t\tid: '',\n\t\tstatusCode: 500,\n\t\timage: {\n\t\t\ticonPath: '',\n\t\t\taltText: ''\n\t\t}\n\t}\n};\nexport const mockFile1: File = {\n\tname: 'BusninessRequestAccount.csv',\n\tsize: 10423,\n\ttype: 'text/csv'\n} as unknown as File;\nexport const mockFile2: File = {\n\tname: 'Corporate_Admin_New Locations_List2.xlsx',\n\tsize: 10,\n\ttype: 'application/vnd.openxmlformats-officedocument.spreadsheetml'\n} as unknown as File;\nexport const mockFile3: File = {\n\tname: 'Corporate_Admin_New Locations_List2.xlsx',\n\tsize: 100000,\n\ttype: 'application/vnd.openxmlformats-officedocument.spreadsheetml'\n} as unknown as File;\nexport const mockFile4: File = {\n\tname: 'BusninessRequestAccount.csv',\n\tsize: 102500,\n\ttype: 'text/csv'\n} as unknown as File;\nexport const mockEvent: ModalEvent = {\n\tstate: {\n\t\thidden: false,\n\t\tlabel: 'Upload New Locations List',\n\t\tbuttons: [\n\t\t\t{ label: 'Cancel', disabled: false, cssClass: 'btn-secondary' },\n\t\t\t{ label: 'Upload', disabled: false, cssClass: 'btn-black' }\n\t\t],\n\t\tcssClass: 'businessRegistrationUploadModal'\n\t},\n\tcta: { label: '', disabled: false, cssClass: 'btn-black' }\n};\n\nexport const customerSupportLabels = {\n\tpageheading: 'Impersonate User',\n\tstartCTA: 'Start Session',\n\ttitle: 'User Details',\n\temail: 'Email Address',\n\tdescription: 'Enter the email id of the user you want to impersonate, which allows you to access and view the user’s account. You won’t be able to make any changes to their permissions, or data.',\n\tstartSession: 'Are you sure you want to start an impersonating session for the following user?',\n\twarningNote: 'You are currently viewing the portal as',\n\treadOnly: 'Read only view.',\n\tendSession: 'End Session',\n\tendSessionNote: 'Are you sure you want to end this impersonating session?',\n\tendSessionCTA: 'No, Continue Session',\n\tcontinueSessionCTA: 'Yes, End Session'\n};\n","/* eslint-disable max-lines */\nimport { ModalState } from 'kinetic-angular';\nimport { registrationPageData } from '../../constants/registration';\nimport { CssClass, Icons, ModalButtonId } from '../../services/shared/shared-enums';\nimport { SharedFactoryDataService } from '../../services/shared/shared-factory-data.service';\nimport { LocationList, RegistrationState, SubmitBusinessPayload, UploadFileLabels } from './definitions';\n\nexport class RegistrationFactory\n{\n\tpublic static build(): RegistrationState\n\t{\n\t\treturn {\n\t\t\ttempFlag: false,\n\t\t\ttempIsPrefilled: false,\n\t\t\tcrmPrefill: false,\n\t\t\tfirstName: '',\n\t\t\tlastName: '',\n\t\t\tcompanyDetails: {\n\t\t\t\taddressLine1: '',\n\t\t\t\taddressLine2: '',\n\t\t\t\tcompanyName: '',\n\t\t\t\tstate: '',\n\t\t\t\tzipCode: '',\n\t\t\t\tcity: '',\n\t\t\t\tcountry: ''\n\t\t\t},\n\t\t\tphoneNumber: '',\n\t\t\tjobTitle: [{\n\t\t\t\tlabel: '',\n\t\t\t\tid: ''\n\t\t\t}],\n\t\t\trequestedRole: [{\n\t\t\t\tdescription: '',\n\t\t\t\tid: '',\n\t\t\t\tname: ''\n\t\t\t}],\n\t\t\taccountName: '',\n\t\t\taddressDetails: {\n\t\t\t\taddressLine1: '',\n\t\t\t\taddressLine2: '',\n\t\t\t\tcity: '',\n\t\t\t\tstate: '',\n\t\t\t\tcountry: '',\n\t\t\t\tzipCode: ''\n\t\t\t},\n\t\t\temail: '',\n\t\t\tprofileInformation: {\n\t\t\t\tfirstName: '',\n\t\t\t\tlastName: '',\n\t\t\t\tphoneNumber: '',\n\t\t\t\tjobTitle: [{\n\t\t\t\t\tlabel: '',\n\t\t\t\t\tid: ''\n\t\t\t\t}],\n\t\t\t\trequestedRole: [{\n\t\t\t\t\tdescription: '',\n\t\t\t\t\tid: '',\n\t\t\t\t\tname: ''\n\t\t\t\t}],\n\t\t\t\temail: ''\n\t\t\t},\n\t\t\tsubmitButton: {\n\t\t\t\tsize: 'large',\n\t\t\t\tstyle: 'primary',\n\t\t\t\tdisabled: true,\n\t\t\t\tlabel: 'Submit Registration',\n\t\t\t\tposition: 'none',\n\t\t\t\ticon: {\n\t\t\t\t\taltText: '',\n\t\t\t\t\ticonPath: ''\n\t\t\t\t}\n\t\t\t},\n\t\t\tverifyInformationButton: {\n\t\t\t\tsize: 'large',\n\t\t\t\tstyle: 'primary',\n\t\t\t\tdisabled: false,\n\t\t\t\tlabel: '',\n\t\t\t\tposition: 'none',\n\t\t\t\ticon: {\n\t\t\t\t\taltText: '',\n\t\t\t\t\ticonPath: ''\n\t\t\t\t}\n\t\t\t},\n\t\t\tmodifyDetailsButton: {\n\t\t\t\tsize: 'large',\n\t\t\t\tstyle: 'secondary',\n\t\t\t\tdisabled: false,\n\t\t\t\tlabel: '',\n\t\t\t\tposition: 'none',\n\t\t\t\ticon: {\n\t\t\t\t\taltText: '',\n\t\t\t\t\ticonPath: ''\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontinueButton: {\n\t\t\t\tsize: 'large',\n\t\t\t\tstyle: 'primary',\n\t\t\t\tdisabled: true,\n\t\t\t\tlabel: '',\n\t\t\t\tposition: 'none',\n\t\t\t\ticon: {\n\t\t\t\t\taltText: '',\n\t\t\t\t\ticonPath: ''\n\t\t\t\t}\n\t\t\t},\n\t\t\ttermsAgreeButton: {\n\t\t\t\tsize: 'medium',\n\t\t\t\tstyle: 'primary',\n\t\t\t\tdisabled: true,\n\t\t\t\tlabel: 'Agree',\n\t\t\t\tposition: 'none',\n\t\t\t\ticon: {\n\t\t\t\t\taltText: '',\n\t\t\t\t\ticonPath: ''\n\t\t\t\t}\n\t\t\t},\n\t\t\tpolicyAgreeButton: {\n\t\t\t\tsize: 'medium',\n\t\t\t\tstyle: 'primary',\n\t\t\t\tdisabled: true,\n\t\t\t\tlabel: 'Agree',\n\t\t\t\tposition: 'none',\n\t\t\t\ticon: {\n\t\t\t\t\taltText: '',\n\t\t\t\t\ticonPath: ''\n\t\t\t\t}\n\t\t\t},\n\t\t\ttermsModal: {\n\t\t\t\thidden: true,\n\t\t\t\tlabel: 'Terms And Conditions',\n\t\t\t\tbuttons: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Agree',\n\t\t\t\t\t\tcssClass: CssClass.btnBlack,\n\t\t\t\t\t\tdisabled: true\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\tcssClass: CssClass.registerModal\n\t\t\t},\n\t\t\tpolicyModal: {\n\t\t\t\thidden: true,\n\t\t\t\tlabel: 'Privacy Policy',\n\t\t\t\tbuttons: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Agree',\n\t\t\t\t\t\tcssClass: CssClass.btnBlack,\n\t\t\t\t\t\tdisabled: true\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\tcssClass: CssClass.registerModal\n\t\t\t},\n\t\t\tdisagreeButton: {\n\t\t\t\tsize: 'medium',\n\t\t\t\tstyle: 'secondary',\n\t\t\t\tdisabled: false,\n\t\t\t\tlabel: 'Disagree',\n\t\t\t\tposition: 'none',\n\t\t\t\ticon: {\n\t\t\t\t\taltText: '',\n\t\t\t\t\ticonPath: ''\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontactDealerButton: {\n\t\t\t\tsize: 'large',\n\t\t\t\tstyle: 'secondary',\n\t\t\t\tdisabled: false,\n\t\t\t\tlabel: '',\n\t\t\t\tposition: 'right',\n\t\t\t\ticon: {\n\t\t\t\t\taltText: '',\n\t\t\t\t\ticonPath: Icons.externalLink\n\t\t\t\t}\n\t\t\t},\n\t\t\tfooter: {\n\t\t\t\tcssClass: '',\n\t\t\t\tribbonImage: '',\n\t\t\t\taltText: '',\n\t\t\t\tfootercontent: {\n\t\t\t\t\tfixed: false,\n\t\t\t\t\thidden: false,\n\t\t\t\t\tlogoImagePath: '',\n\t\t\t\t\taltText: '',\n\t\t\t\t\tfootermenu: SharedFactoryDataService.getFooterMenuDefault(),\n\t\t\t\t\tcopyright: {\n\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\tlabelUrl: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\t\t\turl: ''\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\t\t\turl: ''\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\t\t\turl: ''\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\t\t\turl: ''\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tregistrationPage: registrationPageData,\n\t\t\tdealerInfo: {\n\t\t\t\taddress: '',\n\t\t\t\tdealerName: '',\n\t\t\t\temail: '',\n\t\t\t\tphoneNumber: ''\n\t\t\t},\n\t\t\tloading: true,\n\t\t\tvertexAPIValidationLabels: {\n\t\t\t\tdescription: '',\n\t\t\t\teditAddressLabel: '',\n\t\t\t\theading: '',\n\t\t\t\tuseVerifiedLabel: ''\n\t\t\t},\n\t\t\tmapVertexAddressFailedLabels: {\n\t\t\t\tdescription: '',\n\t\t\t\teditAddressLabel: '',\n\t\t\t\theading: ''\n\t\t\t},\n\t\t\terrorText: {\n\t\t\t\tinvalidCharacterWithNumericErrorMessage: '',\n\t\t\t\trequiredErrorMessage: '',\n\t\t\t\trequiredDropdownErrorMessage: '',\n\t\t\t\tminLengthZipCodeError: '',\n\t\t\t\tcanadaPostalCodeFormatError: '',\n\t\t\t\tphoneLength: '',\n\t\t\t\tphoneSameNumber: '',\n\t\t\t\tphoneSequenceNumber: ''\n\t\t\t},\n\t\t\tadditionalLocationList: {\n\t\t\t\tprimaryLocationInfo: {\n\t\t\t\t\tprimaryLocationGRID: '',\n\t\t\t\t\tadminLocationID: '',\n\t\t\t\t\ttopLevelGrid: '',\n\t\t\t\t\tcompanyName: '',\n\t\t\t\t\taddressLine1: '',\n\t\t\t\t\taddressLine2: '',\n\t\t\t\t\tcity: '',\n\t\t\t\t\tstate: '',\n\t\t\t\t\tzipCode: '',\n\t\t\t\t\tcountry: ''\n\t\t\t\t},\n\t\t\t\tlocationList: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlocationGRID: '',\n\t\t\t\t\t\tcompanyName: '',\n\t\t\t\t\t\taddressLine1: '',\n\t\t\t\t\t\tcity: '',\n\t\t\t\t\t\tstate: '',\n\t\t\t\t\t\tzipCode: '',\n\t\t\t\t\t\tcountry: ''\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\tpendingLocationDetails: {\n\t\t\t\t\toriginalFileName: '',\n\t\t\t\t\tupdatedFileName: ''\n\t\t\t\t }\n\t\t\t},\n\t\t\tadditionalLocationGridHeaderDesktop: [],\n\t\t\tadditionalLocationGrid: [\n\t\t\t\t{\n\t\t\t\t\tlocationGRID: '',\n\t\t\t\t\tcompanyName: '',\n\t\t\t\t\taddress: '',\n\t\t\t\t\tcountry: '',\n\t\t\t\t\tchecked: false\n\t\t\t\t}\n\t\t\t],\n\t\t\tadditionalLocationError: {\n\t\t\t\tmessage: '',\n\t\t\t\tmessageSubText: '',\n\t\t\t\ticon: ''\n\t\t\t},\n\t\t\tribbonClearButton: {\n\t\t\t\tsize: 'medium',\n\t\t\t\tstyle: 'link',\n\t\t\t\tdisabled: false,\n\t\t\t\tlabel: 'Clear All',\n\t\t\t\ticon: {\n\t\t\t\t\taltText: '',\n\t\t\t\t\ticonPath: ''\n\t\t\t\t},\n\t\t\t\tposition: 'none'\n\t\t\t},\n\t\t\tadditionalLocationSubmitButton: {\n\t\t\t\tsize: 'large',\n\t\t\t\tstyle: 'primary',\n\t\t\t\tdisabled: false,\n\t\t\t\tlabel: 'Submit',\n\t\t\t\tposition: 'none',\n\t\t\t\ticon: {\n\t\t\t\t\taltText: '',\n\t\t\t\t\ticonPath: ''\n\t\t\t\t}\n\t\t\t},\n\t\t\tbusinessRegistrationFlowSubmitModalLabels: {\n\t\t\t\theading: '',\n\t\t\t\tcloseIcon: {\n\t\t\t\t\ticonPath: '',\n\t\t\t\t\taltText: ''\n\t\t\t\t},\n\t\t\t\tcancel: '',\n\t\t\t\tproceed: ''\n\t\t\t},\n\t\t\tuploadFileSection: this.businessRegistrationUploadListLabel()\n\t\t};\n\t}\n\tpublic static businessRegistrationUploadListLabel(): UploadFileLabels\n\t{\n\t\treturn {\n\t\t\theading: '',\n\t\t\tsubHeading: '',\n\t\t\tcontent: [\n\t\t\t\t{\n\t\t\t\t\tlabel: '',\n\t\t\t\t\tdescription: ''\n\t\t\t\t}\n\t\t\t],\n\t\t\tcloseIcon: { iconPath: '', altText: '' },\n\t\t\tdownload: {\n\t\t\t\tdownloadButton: '',\n\t\t\t\terrorMessage: ''\n\t\t\t},\n\t\t\tcancel: '',\n\t\t\tupload: '',\n\t\t\tclose: '',\n\t\t\tuploadFile: {\n\t\t\t\tonLoadIcon: { iconPath: '', altText: '' },\n\t\t\t\terrorIcon: { iconPath: '', altText: '' },\n\t\t\t\tsuccessIcon: { iconPath: '', altText: '' },\n\t\t\t\tdragDropLabel: '',\n\t\t\t\torLabel: '',\n\t\t\t\tuploadButtons: {\n\t\t\t\t\tchooseFile: '',\n\t\t\t\t\treplaceFile: '',\n\t\t\t\t\ttryAgain: ''\n\t\t\t\t},\n\t\t\t\tsuccess: ''\n\t\t\t},\n\t\t\terrorState:\n\t\t\t\t{\n\t\t\t\t\tmessages: [],\n\t\t\t\t\tid: '',\n\t\t\t\t\tstatusCode: 500,\n\t\t\t\t\timage: {\n\t\t\t\t\t\ticonPath: '',\n\t\t\t\t\t\taltText: ''\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t};\n\t}\n\tpublic static businessRegistrationUploadListModal(): ModalState\n\t{\n\t\treturn {\n\t\t\thidden: true,\n\t\t\tlabel: '',\n\t\t\tbuttons: [\n\t\t\t\t{ label: '', disabled: false, cssClass: CssClass.btnSecondary, id: ModalButtonId.cancel },\n\t\t\t\t{ label: '', disabled: false, cssClass: CssClass.btnBlack, id: '' },\n\t\t\t\t{ label: '', disabled: false, cssClass: CssClass.btnSecondary, id: ModalButtonId.close }\n\t\t\t],\n\t\t\tcssClass: CssClass.businessRegistrationUploadModal\n\t\t};\n\t}\n\tpublic static buildDefaultTranslationValuesMap(): Map\n\t{\n\t\treturn new Map([\n\t\t\t[ 'United States- English', 'en' ],\n\t\t\t[ 'États-Unis - anglais', 'en' ],\n\t\t\t[ 'French', 'fr' ],\n\t\t\t[ 'Français', 'fr' ]\n\t\t]);\n\t}\n\tpublic static buildCompanyDetails(): { accountName: string; addressLine1: string; addressLine2: string; country: string; city: string; state: string; postalCode: string } \n\t{\n\t\treturn {\n\t\t\taccountName: '', \n\t\t\taddressLine1: '', \n\t\t\taddressLine2: '', \n\t\t\tcountry: '', \n\t\t\tcity: '', \n\t\t\tstate: '', \n\t\t\tpostalCode: ''\n\t\t};\n\t}\n\tpublic static buildSubmitLocationsPayload(selectedGrids: LocationList[]): SubmitBusinessPayload\n\t{\n\t\treturn {\n\t\t\tselectedLocationList: selectedGrids,\n\t\t\tselectionMethod: 'manual',\n\t\t\tclaimDomain: false\n\t\t};\n\t}\n\tpublic static buildSubmitUploadFileLocationsPayload(): SubmitBusinessPayload\n\t{\n\t\treturn {\n\t\t\tselectedLocationList: [],\n\t\t\tselectionMethod: 'document',\n\t\t\tclaimDomain: false\n\t\t};\n\t}\n\tpublic static businessRegistrationFlowSubmitModal(): ModalState\n\t{\n\t\treturn {\n\t\t\thidden: true,\n\t\t\tlabel: '',\n\t\t\tbuttons: [\n\t\t\t\t{ label: '', disabled: false, cssClass: CssClass.btnSecondary, id: ModalButtonId.cancel },\n\t\t\t\t{ label: '', disabled: false, cssClass: CssClass.btnBlack, id: ModalButtonId.proceed }\n\t\t\t],\n\t\t\tcssClass: CssClass.businessRegistrationSubmitModalTitle\n\t\t};\n\t}\n\tpublic static verifyAddressModal(): ModalState \n\t{\n\t\treturn {\n\t\t\thidden: true,\n\t\t\tlabel: '',\n\t\t\tbuttons: [\n\t\t\t\t{ label: '', disabled: false, cssClass: CssClass.btnSecondary, id: ModalButtonId.close },\n\t\t\t\t{ label: '', disabled: false, cssClass: CssClass.btnBlack, id: ModalButtonId.proceed }\n\t\t\t],\n\t\t\tcssClass: CssClass.vertexVerificationModal\n\t\t};\n\t}\n}\n","import { AltText, Icons } from '../../services/shared/shared-enums';\nimport { VertexAPIAddressValidationFailedLabels, VertexAPIValidationLabels } from '../../services/shared/shared-interface';\nimport { AccountType, AdditionalLocations, RegistrationFormError } from './definitions';\n\nexport class RegistrationMappingFactory\n{\n\tpublic static mapAdditionalLocationLabels(): AdditionalLocations\n\t{\n\t\treturn {\n\t\t\tlocationPageDescription: {\n\t\t\t\tdescription1: 'In order to request your ',\n\t\t\t\tdescription2: ', you may select additional locations below, upload a list, or submit with your primary location.',\n\t\t\t\ttokenData: [\n\t\t\t\t\t{\n\t\t\t\t\t\tisLink: 'false',\n\t\t\t\t\t\tname: '$token1',\n\t\t\t\t\t\ttext: 'Business Account',\n\t\t\t\t\t\turl: ''\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\theading1: 'Select Additional Locations',\n\t\t\theadingOr: 'or',\n\t\t\theading2: {\n\t\t\t\tlabel: 'Upload List of Locations',\n\t\t\t\ticonPath: Icons.uploadLocationList,\n\t\t\t\taltText: AltText.uploadFile\n\t\t\t},\n\t\t\tlogo: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: 'Step 6'\n\t\t\t},\n\t\t\tstepNumber: '6',\n\t\t\tprimaryLocationHeading: 'Primary Location',\n\t\t\tselectLocationTableHeader: {\n\t\t\t\tcompanyName: 'Company Name',\n\t\t\t\taddress: 'Address',\n\t\t\t\tcountry: 'Country',\n\t\t\t\tselectAll: 'Select All'\n\t\t\t},\n\t\t\tuploadSuccessText: 'Your file is successfully uploaded.',\n\t\t\tuploadSuccessSubtext: 'Please click submit to complete your registration.'\n\t\t};\n\t}\n\n\tpublic static mapAccountTypeLabels(): AccountType\n\t{\n\t\treturn {\n\t\t\tdescription: '',\n\t\t\theading: 'Account Type',\n\t\t\tlogo: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: 'Step 4'\n\t\t\t},\n\t\t\tstepNumber: '4',\n\t\t\tindividualAccount: {\n\t\t\t\tlabel: 'Submit as',\n\t\t\t\tdescription1: 'Manage your fleet and location(s) with the Individual Account.',\n\t\t\t\tdescription2: 'Please note, this type of Account cannot have multiple users.',\n\t\t\t\ttokenData: [\n\t\t\t\t\t{\n\t\t\t\t\t\tisLink: 'false',\n\t\t\t\t\t\tname: '$token1',\n\t\t\t\t\t\ttext: 'Individual Account',\n\t\t\t\t\t\turl: ''\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\tbusinessAccount: {\n\t\t\t\tlabel: 'Request',\n\t\t\t\tdescription1: 'Manage multiple locations and users with the MyToyota Enterprise Account!',\n\t\t\t\tdescription2: '',\n\t\t\t\ttokenData: [\n\t\t\t\t\t{\n\t\t\t\t\t\tisLink: 'false',\n\t\t\t\t\t\tname: '$token1',\n\t\t\t\t\t\ttext: 'Enterprise Account',\n\t\t\t\t\t\turl: ''\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t};\n\t}\n\tpublic static mapFieldErrorText(): RegistrationFormError\n\t{\n\t\treturn {\n\t\t\trequiredErrorMessage: '$token is a required field.',\n\t\t\trequiredDropdownErrorMessage: '$token must have value.',\n\t\t\tphoneSameNumber: 'Every number cannot be the same.',\n\t\t\tphoneLength: 'Phone number should have 10 numeric characters.',\n\t\t\tphoneSequenceNumber: 'Number cannot be sequential.',\n\t\t\tinvalidCharacterWithNumericErrorMessage: 'Please enter a valid character.',\n\t\t\tminLengthZipCodeError: 'Postal Code should have 5 numeric characters.',\n\t\t\tcanadaPostalCodeFormatError: 'Postal Code format is incorrect. Please enter the correct Postal Code.'\n\t\t};\n\t}\n\tpublic static mapVertexLabels(): VertexAPIValidationLabels\n\t{\n\t\treturn {\n\t\t\theading: 'Verify your address',\n\t\t\tdescription: 'We are not able to verify your address but found a close match',\n\t\t\tuseVerifiedLabel: 'Use as Suggested',\n\t\t\teditAddressLabel: 'Use as Entered'\n\t\t};\n\t}\n\tpublic static mapVertexAddressFailedLabels(): VertexAPIAddressValidationFailedLabels\n\t{\n\t\treturn {\n\t\t\theading: 'Verify your address',\n\t\t\tdescription: 'We are not able to verify your address. Would you like to close and edit the details or proceed with what you have entered?',\n\t\t\teditAddressLabel: 'Entered Details'\n\t\t};\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { AdditionalLocationListResponse, CompanyDetailsSection, GridData, LocationList, RegistrationState, SubmitBusinessPayload, SubmitRegistrationResponse } from './definitions/registration.interface';\nimport { LocalStorageService } from '../../services/local-storage/local-storage.service';\nimport { CountryCode, Icons, RegistrationRequestType, countries, provinces, states, ErrorMessage } from '../../services/shared/shared-enums';\nimport { SharedService } from '../../services/shared/shared.service';\nimport { AnalyticsDataLayer } from '../../services/analytics/definitions';\nimport { AnalyticsService } from '../../services/analytics/analytics.service';\nimport { SharedUtilService } from '../../services/shared/shared-util.service';\nimport { Address } from '../../services/shared/shared-interface';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { KngButtonState } from 'kinetic-angular';\nimport { KngUploadFileState } from 'projects/kinetic-angular/src/lib/components/upload-file';\nimport { RegistrationFactory } from './registration.factory';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class RegistrationUtilService\n{\n\tconstructor(private readonly localStorageService: LocalStorageService, private readonly sharedService: SharedService, private readonly analyticsService: AnalyticsService, private readonly sharedUtilService: SharedUtilService)\n\t{}\n\n\tgetSelectedLocations(locations: LocationList[], selectedLocations: string[])\n\t{\n\t\treturn locations.filter(location=>selectedLocations.includes(location.locationGRID));\n\t}\n\tgetLocationsByGrids(locations: GridData[]) : string[]\n\t{\n\t\treturn locations.map(location=> location.locationGRID);\n\t}\n\tisBusinessAccountRegistration(response: SubmitRegistrationResponse)\n\t{ \n\t\tif(response.requestType === RegistrationRequestType.businessAdminUser)\n\t\t{\n\t\t\tthis.localStorageService.setItems('new_business_account', 'true');\n\t\t}\n\t}\n\tisPrimaryLocationAddressPresent(response: AdditionalLocationListResponse)\n\t{\n\t\treturn !!(response.primaryLocationInfo.addressLine1 && response.primaryLocationInfo.city && response.primaryLocationInfo.state && response.primaryLocationInfo.zipCode && response.primaryLocationInfo.country);\n\t}\n\tdisplayCountry(country: string)\n\t{\n\t\tif(country)\n\t\t{\n\t\t\tconst countryToDisplay = countries.filter(ele => ele.value === country);\n\t\t\treturn countryToDisplay[0].label;\n\t\t}\n\t\treturn '';\n\t}\n\tdisplayState(state: string, country: string) : string\n\t{\n\t\tconst countryCode = this.sharedService.checkCountryCode(country);\n\t\tif(state && this.isValidCountry(countryCode))\n\t\t{\n\t\t\tconst targetArray = countryCode === CountryCode.unitedStatesofAmerica? states : provinces;\n\t\t\tconst ele = targetArray.find(ele=>ele.value === state.toLocaleUpperCase());\n\t\t\treturn ele? ele.label : '';\n\t\t}\n\t\treturn '';\n\t}\n\tisValidCountry(countryCode: string)\n\t{\n\t\treturn countryCode === CountryCode.unitedStatesofAmerica || countryCode === CountryCode.canadaCountry;\n\t}\n\tisPrimaryLocationAvailable(response: AdditionalLocationListResponse)\n\t{\n\t\treturn !!(response.primaryLocationInfo.companyName && this.isPrimaryLocationAddressPresent(response));\n\t}\n\tshowContactDealer(element: HTMLDivElement, email: string) \n\t{\n\t\telement.classList.remove('hidden');\n\t\telement.focus();\n\t\tconst analyticsData: AnalyticsDataLayer = {\n\t\t\tevent: 'error',\n\t\t\tlink: {\n\t\t\t\tname: 'error'\n\t\t\t},\n\t\t\terror: {\n\t\t\t\tmessage: ErrorMessage.companyNotFoundError\n\t\t\t}\n\t\t};\n\t\tthis.analyticsService.trackRegistrationByEvent(analyticsData, email);\n\t}\n\tgetStateProvinceValues(country: string)\n\t{\n\t\treturn this.sharedService.getStateProvinceValues(country);\n\t}\n\tmapAdditionalLocationList(additionalLocationList: AdditionalLocationListResponse, response: AdditionalLocationListResponse)\n\t{\n\t\tadditionalLocationList.primaryLocationInfo.primaryLocationGRID = this.sharedService.emptyStringHandler(response?.primaryLocationInfo?.primaryLocationGRID);\n\t\tadditionalLocationList.primaryLocationInfo.adminLocationID = this.sharedService.emptyStringHandler(response?.primaryLocationInfo?.adminLocationID);\n\t\tadditionalLocationList.primaryLocationInfo.topLevelGrid = this.sharedService.emptyStringHandler(response?.primaryLocationInfo?.topLevelGrid);\n\t\tadditionalLocationList.primaryLocationInfo.companyName = this.sharedService.emptyStringHandler(response?.primaryLocationInfo?.companyName);\n\t\tadditionalLocationList.primaryLocationInfo.addressLine1 = this.sharedService.emptyStringHandler(response?.primaryLocationInfo?.addressLine1);\n\t\tadditionalLocationList.primaryLocationInfo.addressLine2 = this.sharedService.emptyStringHandler(response?.primaryLocationInfo?.addressLine2);\n\t\tadditionalLocationList.primaryLocationInfo.city = this.sharedService.emptyStringHandler(response?.primaryLocationInfo?.city);\n\t\tadditionalLocationList.primaryLocationInfo.state = this.sharedService.emptyStringHandler(this.displayState(response?.primaryLocationInfo?.state, response?.primaryLocationInfo?.country));\n\t\tadditionalLocationList.primaryLocationInfo.zipCode = this.sharedService.emptyStringHandler(this.sharedUtilService.formatZipCode(response?.primaryLocationInfo?.zipCode, this.sharedService.checkCountryCode(response?.primaryLocationInfo?.country)));\n\t\tadditionalLocationList.primaryLocationInfo.country = this.sharedService.emptyStringHandler(this.displayCountry(this.sharedService.checkCountryCode(response?.primaryLocationInfo?.country)));\n\t\treturn additionalLocationList;\n\t}\n\tformatLocationList(locationList: LocationList[])\n\t{\n\t\tconst locations: GridData[] = [];\n\t\tlocationList.forEach(location =>\n\t\t{\n\t\t\tif (location)\n\t\t\t{\n\t\t\t\tlocation.zipCode = location.zipCode?this.sharedUtilService.formatZipCode(location.zipCode, this.sharedService.checkCountryCode(location.country)):'';\n\t\t\t\tconst locationDetails = {\n\t\t\t\t\tlocationGRID: this.sharedService.nullValueHandler(location.locationGRID),\n\t\t\t\t\tcompanyName: this.sharedService.nullValueHandler(location.companyName),\n\t\t\t\t\taddress: this.sharedService.nullValueHandler([ location.addressLine1, location.addressLine2, location.city, location.state, location.zipCode ].filter(Boolean).join(', ')),\n\t\t\t\t\tcountry: this.sharedService.nullValueHandler(this.displayCountry(this.sharedService.checkCountryCode(location.country))),\n\t\t\t\t\tchecked: false\n\t\t\t\t};\n\t\t\t\tlocations.push(locationDetails);\n\t\t\t}\n\t\t});\n\t\treturn locations;\n\t}\n\ttrackAnalyticsForRegistrationError(errorMessage: string, email: string)\n\t{\n\t\tthis.analyticsService.trackRegistrationByEvent({\n\t\t\tevent: 'error',\n\t\t\tlink: {\n\t\t\t\tname: 'error'\n\t\t\t},\n\t\t\terror: {\n\t\t\t\tmessage: errorMessage\n\t\t\t}\n\t\t}, email);\n\t}\n\ttrackAnalyticsEvent(data: AnalyticsDataLayer, email: string): void\n\t{\n\t\tthis.analyticsService.trackRegistrationByEvent(data, email);\n\t}\n\tmapAddress(address: Address, companyDetails: CompanyDetailsSection): Address\n\t{\n\t\taddress.addressLine1 = companyDetails.addressLine1;\n\t\taddress.addressLine2 = companyDetails.addressLine2;\n\t\taddress.country = companyDetails.country;\n\t\taddress.city = companyDetails.city;\n\t\taddress.state = companyDetails.state;\n\t\taddress.zipCode = companyDetails.zipCode? this.sharedUtilService.formatZipCode(companyDetails.zipCode, companyDetails.country) : '';\n\t\treturn address;\t\n\t}\n\tgetUploadFileLabel(res:RegistrationState, uploadFileState:KngUploadFileState)\n\t{\n\t\tuploadFileState.isLoading = false;\n\t uploadFileState.dragDropSection = res.uploadFileSection.uploadFile.dragDropLabel;\n\t\tuploadFileState.or = res.uploadFileSection.uploadFile.orLabel;\n\t\tuploadFileState.successMessage = res.uploadFileSection.uploadFile.success;\n\t\tuploadFileState.uploadButtons = res.uploadFileSection.uploadFile.uploadButtons;\n\t\tuploadFileState.errorImage.altText = res.uploadFileSection.uploadFile.errorIcon.altText;\n\t\tuploadFileState.successImage.altText = res.uploadFileSection.uploadFile.successIcon.altText;\n\t\tuploadFileState.dragDropImage.altText = res.uploadFileSection.uploadFile.onLoadIcon.altText;\n\t\tuploadFileState.errorImage.iconPath = Icons.actionRed;\n\t\tuploadFileState.successImage.iconPath = Icons.checkGreen;\n\t\tuploadFileState.dragDropImage.iconPath = Icons.dragDropIcon;\n\t}\n\tasync handleDownloadCommonError(error: HttpErrorResponse, state:RegistrationState, downloadButtonState: KngButtonState, email: string )\n\t{\n\t\tif (error) \n\t\t{\n\t\t\tconst message = JSON.parse(await error.error.text()).message;\n\t\t\tstate.uploadFileSection.errorState= {\n\t\t\t\tmessages: [{ message: message, cssClass: '' }],\n\t\t\t\tid: '',\n\t\t\t\tstatusCode: 500,\n\t\t\t\timage: { iconPath: '', altText: '' }\n\t\t\t};\n\t\t state.uploadFileSection.download.errorMessage=state.uploadFileSection.errorState.messages[0].message;\n\t\t\tdownloadButtonState.disabled = false;\n\t\t\tthis.analyticsService.trackRegistrationByEvent({\n\t\t\t\tevent: 'Download Failed',\n\t\t\t\tlink: {\n\t\t\t\t\tname: 'Download Template Button'\n\t\t\t\t},\n\t\t\t\terror: {\n\t\t\t\t\tmessage: state.uploadFileSection.errorState.messages[0].message\n\t\t\t\t}\n\t\t\t}, email);\n\t\t}\n\t}\n\tsubmitLocationPayload(isUploadSuccess:boolean, additionalLocations: LocationList[], selectedLocationGrids: string[] )\n\t{\n\t\tlet submitPayload:SubmitBusinessPayload;\n\t\tif(isUploadSuccess)\n\t\t{\n\t\t\tsubmitPayload=RegistrationFactory.buildSubmitUploadFileLocationsPayload();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tsubmitPayload=RegistrationFactory.buildSubmitLocationsPayload(this.getSelectedLocations(additionalLocations, selectedLocationGrids));\n\t\t}\n\t\treturn submitPayload;\n\t}\n}\n","/* eslint-disable max-lines */\nimport { Inject, Injectable, Renderer2 } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { RegistrationFactory } from './registration.factory';\nimport { AdditionalLocationListResponse, BusinessRegistrationFlowSubmitModalLabels, CompanyDetailsSection, DealerData, GridData, LocationList, RegistrationResponse, RegistrationState, SaveBusinessAccountResponse, SaveUserPayload, SubmitBusinessPayload, SubmitRegistrationResponse } from './definitions';\nimport { ApiService } from '../../services/api/api.service';\nimport { ApiResponse } from '../../definitions/api-response.interface';\nimport { KngFooterState, ModalState } from 'kinetic-angular';\nimport { EnvironmentRef } from 'projects/tmhna-portal/src/environments/interfaces';\nimport { expEnvironmentRef } from '../../injection-tokens/environment.injection-token';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { LoggerService } from '../../services/logger/logger.service';\nimport { Router } from '@angular/router';\nimport { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { has as lodashHas, set as lodashSet, noop as lodashNoop, get as lodashGet } from 'lodash';\nimport { ApplicationPath, BooleanValues, ButtonPosition, ButtonSize, ButtonStyle, CountryCode, CssClass, ErrorMessage, FileName, Icons, IsRequestSubmittedForReview, RegistrationStatus, UserType, states, TermsAndConditionPrivacyPolicyInfoBannerText } from '../../services/shared/shared-enums';\nimport { SharedService } from '../../services/shared/shared.service';\nimport { AemApiService } from '../../services/api/api.aem.service';\nimport { UserRegistrationStatus, UserRegistrationStatusValue } from '../../services/api/definitions';\nimport { RoutingFunction } from '../auth';\nimport { SharedUtilService } from '../../services/shared/shared-util.service';\nimport { ToastrService } from 'ngx-toastr';\nimport { VerifiedAddressSuggestion, LocationAddress } from '../../services/shared/shared-interface';\nimport { RegistrationUtilService } from './registration-util.service';\nimport { RegistrationMappingFactory } from './registration-mapping-factory';\nimport { KngUploadFileFactory, KngUploadFileState } from 'projects/kinetic-angular/src/lib/components/upload-file';\nimport { ErrorMessageHeading, ErrorMessageSubHeading } from 'projects/kinetic-angular/src/lib/components';\nimport { AnalyticsService } from '../../services/analytics/analytics.service';\nimport { AnalyticsDataLayer } from '../../services/analytics/definitions';\nimport { companyAdminRoleId } from '../../services/shared/shared-constants';\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class RegistrationService\n{\n\tpublic state$: BehaviorSubject = new BehaviorSubject(RegistrationFactory.build());\n\tcheckAll: boolean = false;\n\tisPrimaryLocationPresent: boolean = false;\n\tdownloadTemplateError: boolean = false;\n\tisIndividualUser: boolean = false;\n\tverifyAddressState: ModalState = RegistrationFactory.verifyAddressModal();\n\tpreFilledCompanyDetails!: CompanyDetailsSection;\n\tvertexFailedWithNoSuggestedAddress: boolean = false;\n\tget state(): RegistrationState\n\t{\n\t\treturn this.state$.value;\n\t}\n\tget stateChanged(): Observable\n\t{\n\t\treturn this.state$.asObservable();\n\t}\n\tset isSavingIndividualUser(val: boolean)\n\t{\n\t\tthis.isIndividualUser = val;\n\t}\n\tget isSavingIndividualUser()\n\t{\n\t\treturn this.isIndividualUser;\n\t}\n\tprivate readonly eventCallback = new Subject();\n\teventCallback$ = this.eventCallback.asObservable();\n\tpublic statesOrProvinces$: BehaviorSubject<{label: string; value: string}[]> = new BehaviorSubject<{label: string; value: string}[]>(states);\n\tpublic profileInformationForm: FormGroup = this.fb.group({});\n\tpublic companyDetailsForm: FormGroup = this.fb.group({});\n\tpublic companyInfoNotFound: boolean = false;\n\tpublic validUserSuccess: boolean = false;\n\tpublic prefillDetailsSuccess: boolean = false;\n\taddressState!: string;\n\tverifiedLocation!: LocationAddress;\n\tverifiedAddress!: VerifiedAddressSuggestion;\n\tformattedPostalCode: string = '';\n\tshowModifyButton: boolean = false;\n\tisModifyButtonClicked: boolean = false;\n\taddressSuggestion: boolean = false;\n\tuseVerifiedAddress: boolean = false;\n\tuserType: string = '';\n\tisTCSection: boolean = false;\n\tisAccountTypeSection: boolean = false;\n\tisSubmitRegistrationButton: boolean = false;\n\tisContinueButton: boolean = false;\n\tisContinueSuccess: boolean = false;\n\tisUploadSuccess: boolean = false;\n\tadditionalLocations: LocationList[] = [];\n\ttermsandPrivacyAgreed: boolean = false;\n\tdisableDomainClaim:boolean = false;\n\tbusinessRegistrationFlowSubmitModalState: ModalState = RegistrationFactory.businessRegistrationFlowSubmitModal();\n\tbusinessRegistrationUploadListModalState:ModalState= RegistrationFactory.businessRegistrationUploadListModal();\n\tuploadFileState: KngUploadFileState = KngUploadFileFactory.build();\n\tpublic stateValue = states;\n\tconstructor(\n\t\tpublic apiService: ApiService, private readonly aemApiService: AemApiService, private readonly loggerService: LoggerService, private readonly sharedUtilService: SharedUtilService, public router: Router, private readonly fb: FormBuilder,\n\t\t@Inject(expEnvironmentRef) private readonly environmentRef: EnvironmentRef, public sharedService: SharedService, private readonly toaster: ToastrService, private readonly registrationUtilService: RegistrationUtilService,\n\t\tprivate readonly analyticsService: AnalyticsService\n\t) { }\n\tpublic updateState(value: RegistrationState): void\n\t{\n\t\tthis.state$.next(value);\n\t}\n\tdownloadButtonState = this.sharedUtilService.getButtonState(ButtonSize.medium, ButtonStyle.secondary, '', false, { altText: '', iconPath: '' }, ButtonPosition.left);\n\tpublic form(): void\n\t{\n\t\tthis.profileInformationForm = this.fb.group({\n\t\t\tfirstName: [\n\t\t\t\t{ value: this.state.firstName, disabled: false },\n\t\t\t\t[ Validators.required, this.sharedService.requiredLength ]\n\t\t\t],\n\t\t\tlastName: [\n\t\t\t\t{ value: this.state.lastName, disabled: false },\n\t\t\t\t[ Validators.required, this.sharedService.requiredLength ]\n\t\t\t],\n\t\t\temail: [{ value: this.state.email, disabled: true }, Validators.required ],\n\t\t\tphoneNumber: [\n\t\t\t\t{ value: this.state.phoneNumber, disabled: false },\n\t\t\t\t[ Validators.required, this.sharedService.validateStringUnique, this.sharedService.validatePhoneSequence, this.sharedService.minLength ]\n\t\t\t],\n\t\t\tjobTitle: [{ value: this.state.profileInformation.job, disabled: false }, Validators.required ],\n\t\t\trequestedRole: [{ value: this.state.profileInformation.role?this.state.profileInformation.role:companyAdminRoleId, disabled: false }, Validators.required ]\n\t\t});\n\t\tthis.companyDetailsForm = this.fb.group({\n\t\t\taccountName: [\n\t\t\t\t{ value: this.state.accountName, disabled: false },\n\t\t\t\t[ Validators.required,\n\t\t\t\t\t(c: AbstractControl) => this.sharedService.alphaSpecialCharValidation(c, 'accountName') ]\n\t\t\t],\n\t\t\taddressLine1: [{ value: this.state.addressDetails.addressLine1, disabled: false }, [ Validators.required, this.sharedService.requiredLength ] ],\n\t\t\taddressLine2: [{ value: this.state.addressDetails.addressLine2, disabled: false }],\n\t\t\tcountry: [{ value: this.state.addressDetails.country? this.state.addressDetails.country : CountryCode.unitedStatesofAmerica, disabled: false }, [ Validators.required, this.sharedService.requiredLength ] ],\n\t\t\tcity: [{ value: this.state.addressDetails.city, disabled: false }, [ Validators.required,\n\t\t\t\t(c: AbstractControl) => this.sharedService.alphaSpecialCharValidation(c, 'city') ] ],\n\t\t\tstate: [{ value: this.state.addressDetails.state, disabled: false }, [ Validators.required, this.sharedService.requiredLength ] ],\n\t\t\tpostalCode: [{ value: this.state.addressDetails.zipCode, disabled: false }, [ Validators.required, this.sharedService.requiredLength ] ]\n\t\t});\n\t\tif(this.companyDetailsForm.controls['accountName'].value !== '')\n\t\t{\n\t\t\tthis.companyDetailsForm.controls['accountName'].markAsDirty();\n\t\t}\n\t}\n\tpublic getFooterData(): void\n\t{\n\t\tthis.aemApiService.getFooterData().subscribe((res: ApiResponse) =>\n\t\t{\n\t\t\tthis.state.footer = res.data;\n\t\t\tthis.state.footer.footercontent.logoImagePath =\n\t\t\t\tthis.environmentRef.aemBaseUrl +\n\t\t\t\tthis.state.footer.footercontent.logoImagePath;\n\t\t\tthis.state.footer.ribbonImage =\n\t\t\t\tthis.environmentRef.aemBaseUrl + this.state.footer.ribbonImage;\n\t\t\tthis.state.footer.footercontent.footermenu.forEach((element: { iconPath: string }) =>\n\t\t\t{\n\t\t\t\tif (element.iconPath)\n\t\t\t\t{\n\t\t\t\t\telement.iconPath = this.environmentRef.aemBaseUrl + element.iconPath;\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.updateState(this.state);\n\t\t});\n\t}\n\tpageLoadHandler()\n\t{\n\t\tsetTimeout(() => { this.state.loading = !(this.validUserSuccess && this.prefillDetailsSuccess); }, 1000);\n\t}\n\tpublic getUserData()\n\t{\n\t\tthis.apiService.getPrefilledUserData().subscribe({\n\t\t\tnext: (res: ApiResponse) =>\n\t\t\t{\n\t\t\t\tthis.state.jobTitle = [];\n\t\t\t\tconst responseObject: RegistrationState = res.data;\n\t\t\t\tresponseObject.companyDetails.country = this.sharedService.checkCountryCode(responseObject.companyDetails.country);\n\t\t\t\tthis.state.tempFlag = responseObject.tempIsPrefilled;\n\t\t\t\tthis.state.crmPrefill = responseObject.crmPrefill;\n\t\t\t\tthis.preFilledCompanyDetails = responseObject.companyDetails;\n\t\t\t\tthis.state.accountName = (responseObject.companyDetails.companyName.replace(/\\u00A0/g, ' '));\n\t\t\t\tthis.state.addressDetails = this.registrationUtilService.mapAddress(this.state.addressDetails, responseObject.companyDetails);\n\t\t\t\tthis.state.phoneNumber = this.sharedService.formatPhoneNumber(responseObject.profileInformation.phoneNumber);\n\t\t\t\tsetTimeout(()=>\n\t \t\t\t{\n\t\t\t\t\tthis.state.jobTitle = responseObject.profileInformation.jobTitle;\n\t\t\t\t}, 0);\n\t\t\t\tthis.state.requestedRole = responseObject.profileInformation.requestedRole;\n\t\t\t\tthis.state.requestedRole = this.sharedService.checkForIndividualUserRole(this.state.requestedRole);\n\t\t\t\tthis.state.profileInformation.role = responseObject.profileInformation.role;\n\t\t\t\tthis.state.profileInformation.job = responseObject.profileInformation.job;\n\n\t\t\t\tthis.form();\n\t\t\t\tif(this.state.addressDetails.country)\n\t\t\t\t{\n\t\t\t\t\tthis.statesOrProvinces$.next(this.registrationUtilService.getStateProvinceValues(this.state.addressDetails.country));\n\t\t\t\t}\n\t\t\t\tthis.updateState(this.state);\n\t\t\t\tthis.prefillDetailsSuccess = true;\n\t\t\t\tthis.pageLoadHandler();\n\t\t\t},\n\t\t\terror: (error: HttpErrorResponse) =>\n\t\t\t{\n\t\t\t\tthis.prefillDetailsSuccess = true;\n\t\t\t\tthis.pageLoadHandler();\n\t\t\t\tthis.loggerService.log(error.error.message);\n\t\t\t}\n\t\t});\n\t\tconst values = Object.values(localStorage);\n\t\tfor (const value of values)\n\t\t{\n\t\t\tif (value.includes('idTokenClaims'))\n\t\t\t{\n\t\t\t\tconst parsedVal = JSON.parse(value);\n\t\t\t\t!lodashHas(parsedVal, 'idTokenClaims.emails') ? lodashSet(parsedVal, 'idTokenClaims.emails', [lodashGet(parsedVal, 'idTokenClaims.email', '')]) : lodashNoop();\n\t\t\t\tthis.state.companyDetails.companyName = parsedVal.idTokenClaims.extension_CompanyName;\n\t\t\t\tthis.state.firstName = parsedVal.idTokenClaims.given_name;\n\t\t\t\tthis.state.lastName = parsedVal.idTokenClaims.family_name;\n\t\t\t\tthis.state.email = parsedVal.idTokenClaims.emails[0];\n\t\t\t\tthis.updateState(this.state);\n\t\t\t}\n\t\t}\n\t\tthis.registrationUtilService.trackAnalyticsEvent({\n\t\t\tevent: 'pageView',\n\t\t\tpage: {\n\t\t\t\tname: 'registration:complete your profile'\n\t\t\t}\n\t\t}, this.state.email);\n\t}\n\tpublic verifyInformation(payload: SaveUserPayload, element: HTMLDivElement)\n\t{\n\t\tif(!this.state.crmPrefill)\n\t\t{\n\t\t\tpayload.crmPrefill = false;\n\t\t}\n\t\tif(this.state.crmPrefill)\n\t\t{\n\t\t\tpayload = this.checkForCompanyDetailsChange(payload);\n\t\t}\n\t\tthis.apiService.saveUserData(payload).subscribe({\n\t\t\tnext: (response: ApiResponse) =>\n\t\t\t{\n\t\t\t\tthis.addressSuggestion = false;\n\t\t\t\tthis.companyInfoNotFound = false;\n\t\t\t\tthis.vertexFailedWithNoSuggestedAddress = false;\n\t\t\t\tif (response.data && (response.statusCode === 200 || response.statusCode === 201))\n\t\t\t\t{\n\t\t\t\t\tthis.successVerifyScenario(response, element);\n\t\t\t\t\tconst analyticsData: AnalyticsDataLayer = {\n\t\t\t\t\t\tevent: 'VerifyInformation Success',\n\t\t\t\t\t\tlink: {\n\t\t\t\t\t\t\tname: 'Verify Information button'\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tthis.analyticsService.trackRegistrationByEvent(analyticsData, this.state.email);\n\t\t\t\t}\n\t\t\t\tif (response.data && response.statusCode === 206)\n\t\t\t\t{\n\t\t\t\t\tthis.showModifyButton = false;\n\t\t\t\t\tthis.isModifyButtonClicked = false;\n\t\t\t\t\tthis.isTCSection = false;\n\t\t\t\t\tthis.isAccountTypeSection = false;\n\t\t\t\t\tthis.vertexApiValidation(response);\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: (error: HttpErrorResponse) =>\n\t\t\t{\n\t\t\t\tthis.eventCallback.next(error.error);\n\t\t\t\tthis.vertexFailedWithNoSuggestedAddress = false;\n\t\t\t\tthis.registrationUtilService.trackAnalyticsForRegistrationError(error.error.message, this.state.email);\n\t\t\t}\n\t\t});\n\t}\n\n\n\tsubmitRegistrationReviewOrCancel(payload:SaveUserPayload)\n\t{\n\t\tthis.apiService.submitRegistrationReviewOrCancel(payload).subscribe({\n\t\t\tnext: (response: ApiResponse) =>\n\t\t\t{\n\t\t\t\tif(response)\n\t\t\t\t{\n\t\t\t\t\tlocalStorage.setItem(IsRequestSubmittedForReview.isRequestSubmittedForReview, BooleanValues.true);\n\t\t\t\t\tthis.router.navigate(['confirmation']);\n\t\t\t }\n\t\t\t},\n\t\t\terror: (error: HttpErrorResponse) =>\n\t\t\t{\n\t\t\t\tthis.state.loading = false;\n\t\t\t\tthis.handleError(error);\n\t\t\t\tthis.registrationUtilService.trackAnalyticsForRegistrationError(error.error.message, this.state.email);\n\n\t\t\t}\n\t\t});\n\t}\n\tcheckForCompanyDetailsChange(payload: SaveUserPayload)\n\t{\n\t\tif(this.checkForCompanyDetailsMandatoryFields(payload) || (payload?.addressLine2!==null && payload?.addressLine2!==this.preFilledCompanyDetails?.addressLine2))\n\t\t{\n\t\t\tpayload.crmPrefill = false;\n\t\t\treturn payload;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpayload.crmPrefill = true;\n\t\t\treturn payload;\n\t\t}\n\t}\n\tcheckForCompanyDetailsMandatoryFields(payload: SaveUserPayload): boolean\n\t{\n\t\tconst isPostalCodeUpdated = this.checkForPostalCodeUpdate(payload?.postalCode, this.preFilledCompanyDetails?.zipCode);\n\t\tif(payload?.addressLine1!==this.preFilledCompanyDetails?.addressLine1 || payload?.city!==this.preFilledCompanyDetails?.city ||\n\t\t\tpayload?.country!==this.preFilledCompanyDetails?.country || payload?.state!==this.preFilledCompanyDetails?.state || isPostalCodeUpdated)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\tcheckForPostalCodeUpdate(payloadPostalCode: string, preFilledPostalCode: string): boolean\n\t{\n\t\tpreFilledPostalCode = this.preFilledCompanyDetails?.country === CountryCode.unitedStatesofAmerica ?\n\t\t\tpreFilledPostalCode.replace(/[^\\d]/g, '') : preFilledPostalCode;\n\n\t\tif(payloadPostalCode.trim() !== preFilledPostalCode.trim())\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\thandleError(error: HttpErrorResponse)\n\t{\n\t\tthis.useVerifiedAddress = false;\n\t\tthis.addressSuggestion = false;\n\t\tthis.companyInfoNotFound = false;\n\t\tif (Array.isArray(error.error.message))\n\t\t{\n\t\t\tthis.toaster.error(error.error.message[0]);\n\t\t\treturn;\n\t\t}\n\t\tthis.toaster.error(error.error.message ? error.error.message : 'Something went wrong, please try again');\n\t}\n\tsuccessVerifyScenario(response: ApiResponse, element: HTMLDivElement)\n\t{\n\t\tconst data: DealerData = response.data as DealerData;\n\t\tconst error: string | undefined = data.errorMessage;\n\n\t\tif (data.requestType)\n\t\t{\n\t\t\tthis.showModifyButton = true;\n\t\t\tthis.state.verifyInformationButton.disabled = true;\n\t\t\tthis.isModifyButtonClicked = false;\n\t\t\tthis.state.loading = false;\n\t\t\tthis.addressSuggestion = false;\n\t\t\tthis.companyInfoNotFound = false;\n\t\t\tthis.profileInformationForm.controls['jobTitle'].disable({ emitEvent: true, onlySelf: false });\n\t\t\tthis.profileInformationForm.controls['requestedRole'].disable({ emitEvent: true, onlySelf: false });\n\t\t\tthis.companyDetailsForm.controls['state'].disable({ emitEvent: true, onlySelf: false });\n\t\t\tthis.companyDetailsForm.controls['country'].disable({ emitEvent: true, onlySelf: false });\n\t\t\tif(data.requestType === UserType.generalUser)\n\t\t\t{\n\t\t\t\tthis.userType = UserType.generalUser;\n\t\t\t\tthis.displayTCSectionWithSubmitButton();\n\t\t\t}\n\t\t\telse if(data.requestType === UserType.individualUser)\n\t\t\t{\n\t\t\t\tthis.userType = UserType.individualUser;\n\t\t\t\tthis.displayTCSectionWithSubmitButton();\n\t\t\t}\n\t\t\telse if(data.requestType === UserType.businessAdminUser)\n\t\t\t{\n\t\t\t\tthis.userType = UserType.businessAdminUser;\n\t\t\t\tthis.displayTCSectionWithSubmitButton();\n\t\t\t\tthis.isAccountTypeSection = true;\n \tthis.isContinueButton = true;\n \tthis.isSubmitRegistrationButton = false;\n\t\t\t}\n\t\t}\n\t\telse if (error)\n\t\t{\n\t\t\tthis.handleVerifyInfoError(data, element);\n\t\t}\n\t}\n\tdisplayTCSectionWithSubmitButton()\n\t{\n\t\tthis.isTCSection = true;\n\t\tthis.isAccountTypeSection = false;\n\t\tthis.isSubmitRegistrationButton = true;\n\t}\n\thandleVerifyInfoError(data: DealerData, element: HTMLDivElement)\n\t{\n\t\tthis.state.dealerInfo = data.dealerInfo;\n\t\tthis.companyInfoNotFound = true;\n\t\tthis.loggerService.log('Company Not Found Error');\n\t\tthis.state.loading = false;\n\t\tthis.addressSuggestion = false;\n\t\tthis.showModifyButton = false;\n\t\tthis.state.verifyInformationButton.disabled = false;\n\t\tthis.isModifyButtonClicked = false;\n\t\tif (this.companyInfoNotFound)\n\t\t{\n\t\t\tthis.state.loading = false;\n\t\t\tthis.registrationUtilService.showContactDealer(element, this.state.email);\n\t\t\tthis.useVerifiedAddress = false;\n\t\t\tthis.isTCSection = false;\n\t\t\tthis.isAccountTypeSection = false;\n\t\t\tthis.isSubmitRegistrationButton = false;\n\t\t\tthis.companyDetailsForm.controls['country'].enable();\n\t\t\tthis.companyDetailsForm.controls['state'].enable();\n\t\t}\n\t}\n\tvertexApiValidation(response: ApiResponse)\n\t{\n\t\tthis.verifiedAddress = response.data as VerifiedAddressSuggestion;\n\t\tthis.state.loading = false;\n\n\t\tif (this.verifiedAddress.verifiedLocation !== undefined)\n\t\t{\n\t\t\tthis.statesOrProvinces$.next(this.registrationUtilService.getStateProvinceValues(this.verifiedAddress.verifiedLocation.country ?? ''));\n\t\t\tthis.addressSuggestion = true;\n\t\t\tthis.vertexFailedWithNoSuggestedAddress = false;\n\t\t\tthis.useVerifiedAddress = true;\n\t\t\tthis.formattedPostalCode = this.formatZipCode(this.verifiedAddress.verifiedLocation.postalCode);\n\t\t\tthis.companyDetailsForm.patchValue({\n\t\t\t\taddressLine1: this.verifiedAddress.verifiedLocation.addressLine1,\n\t\t\t\taddressLine2: this.verifiedAddress.verifiedLocation.addressLine2 ? this.verifiedAddress.verifiedLocation.addressLine2 : '',\n\t\t\t\tcity: this.verifiedAddress.verifiedLocation.city,\n\t\t\t\tstate: this.verifiedAddress.verifiedLocation.state,\n\t\t\t\tcountry: this.verifiedAddress.verifiedLocation.country,\n\t\t\t\tpostalCode: this.formattedPostalCode\n\t\t\t});\n\t\t\tthis.companyDetailsForm.controls['addressLine2'].reset();\n\t\t\tthis.companyDetailsForm.controls['country'].disable({ emitEvent: true, onlySelf: false });\n\t\t\tthis.companyDetailsForm.controls['state'].disable({ emitEvent: true, onlySelf: false });\n\t\t\tthis.verifiedLocation = this.verifiedAddress.verifiedLocation;\n\t\t\tthis.statesOrProvinces$.value.forEach(element =>\n\t\t\t{\n\t\t\t\tif (this.verifiedAddress.verifiedLocation?.state === element.value)\n\t\t\t\t{\n\t\t\t\t\tthis.addressState = element.label;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.addressSuggestion = true;\n\t\t\tthis.vertexFailedWithNoSuggestedAddress = true;\n\t\t\tthis.useVerifiedAddress = false;\n\t\t\tthis.companyDetailsForm.controls['country'].enable();\n\t\t\tthis.companyDetailsForm.controls['state'].enable();\n\t\t\tthis.registrationUtilService.trackAnalyticsForRegistrationError(this.verifiedAddress.errorMessage, this.state.email);\n\t\t}\n\t}\n\tpublic formatZipCode(value: string): string\n\t{\n\t\treturn this.sharedUtilService.formatZipCode(value, this.companyDetailsForm.controls['country']['value']).trim();\n\t}\n\tpublic addLabelsToForm()\n\t{\n\t\tthis.apiService.getRegistrationFormLabels().subscribe({\n\t\t\tnext: (response) =>\n\t\t\t{\n\t\t\t\tconst data = response.data as RegistrationResponse;\n\t\t\t\tif(data)\n\t\t\t\t{\n\t\t\t\t\tthis.mapRegistrationPageCompanyDetails(data);\n\t\t\t\t\tthis.mapRegistrationPageCompanyError(data);\n\t\t\t\t\tthis.mapRegistrationPageProfileInfo(data);\n\t\t\t\t\tthis.mapRegistrationPageTermsAndConditions(data);\n\t\t\t\t\tthis.mapRegistrationPagePrivacyPolicy(data);\n\t\t\t\t\tthis.mapRegistrationPageAccountType(data);\n\t\t\t\t\tthis.mapRegistrationPageAdditionalLocation(data);\n\t\t\t\t\tthis.mapDomainAemLabels(data);\n\t\t\t\t\tthis.state.registrationPage.logo.altText = this.sharedService.emptyStringHandler(data['registration-page'].logo?.altText);\n\t\t\t\t\tthis.state.registrationPage.logo.iconPath = this.sharedService.emptyStringHandler(data['registration-page'].logo?.iconPath);\n\t\t\t\t\tthis.state.registrationPage.logoutLabel = this.sharedService.emptyStringHandler(data['registration-page'].logoutLabel);\n\t\t\t\t\tthis.state.registrationPage.pageDescription = this.sharedService.emptyStringHandler(data['registration-page'].pageDescription);\n\t\t\t\t\tthis.state.registrationPage.pageHeading = this.sharedService.emptyStringHandler(data['registration-page'].pageHeading);\n\t\t\t\t\tthis.state.registrationPage.stepLabel = this.sharedService.emptyStringHandler(data['registration-page'].stepLabel);\n\t\t\t\t\tthis.state.registrationPage.submitButton = this.sharedService.emptyStringHandler(data['registration-page'].submitButton);\n\t\t\t\t\tthis.state.termsModal.label = data['registration-page'].termsConditions?.terms?.modal?.heading;\n\t\t\t\t\tthis.state.additionalLocationGridHeaderDesktop = [];\n\t\t\t\t\tthis.state.additionalLocationGridHeaderDesktop.push( data['registration-page'].additionalLocation?.selectLocationTableHeader?.companyName);\n\t\t\t\t\tthis.state.additionalLocationGridHeaderDesktop.push( data['registration-page'].additionalLocation?.selectLocationTableHeader?.address);\n\t\t\t\t\tthis.state.additionalLocationGridHeaderDesktop.push( data['registration-page'].additionalLocation?.selectLocationTableHeader?.country);\n\t\t\t\t\tthis.mapAdditionalAemLabels();\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: (e: HttpErrorResponse) => this.loggerService.log(e.error.message),\n\t\t\tcomplete: () =>\n\t\t\t{\n\t\t\t\tthis.loggerService.log('Received Labels from AEM');\n\t\t\t}\n\t\t});\n\t}\n\tmapRegistrationPageCompanyDetails(data:RegistrationResponse)\n\t{\n\t\tthis.state.registrationPage.companyDetails.addressLine1 = this.sharedService.emptyStringHandler(data['registration-page'].companyDetails?.addressLine1);\n\t\tthis.state.registrationPage.companyDetails.addressLine2 = this.sharedService.emptyStringHandler(data['registration-page'].companyDetails?.addressLine2);\n\t\tthis.state.registrationPage.companyDetails.address2OptionalLabel = this.sharedService.emptyStringHandler(data['registration-page'].companyDetails?.address2OptionalLabel);\n\t\tthis.state.registrationPage.companyDetails.city = this.sharedService.emptyStringHandler(data['registration-page'].companyDetails?.city);\n\t\tthis.state.registrationPage.companyDetails.companyName = this.sharedService.emptyStringHandler(data['registration-page'].companyDetails?.companyName);\n\t\tthis.state.registrationPage.companyDetails.description = this.sharedService.emptyStringHandler(data['registration-page'].companyDetails?.description);\n\t\tthis.state.registrationPage.companyDetails.heading = this.sharedService.emptyStringHandler(data['registration-page'].companyDetails?.heading);\n\t\tthis.state.registrationPage.companyDetails.logo.altText = this.sharedService.emptyStringHandler(data['registration-page'].companyDetails?.logo?.altText);\n\t\tthis.state.registrationPage.companyDetails.logo.iconPath = this.sharedService.emptyStringHandler(data['registration-page'].companyDetails?.logo?.iconPath);\n\t\tthis.state.registrationPage.companyDetails.country = this.sharedService.emptyStringHandler(data['registration-page'].companyDetails?.country);\n\t\tthis.state.registrationPage.companyDetails.state = this.sharedService.emptyStringHandler(data['registration-page'].companyDetails?.state);\n\t\tthis.state.registrationPage.companyDetails.stateAltText = this.sharedService.emptyStringHandler(data['registration-page'].companyDetails?.stateAltText);\n\t\tthis.state.registrationPage.companyDetails.stepNumber = this.sharedService.emptyStringHandler(data['registration-page'].companyDetails?.stepNumber);\n\t\tthis.state.registrationPage.companyDetails.zipCode = this.sharedService.emptyStringHandler(data['registration-page'].companyDetails?.zipCode);\n\t\tthis.state.registrationPage.companyDetails.companyNotFoundErrorModalDescription = this.sharedService.emptyStringHandler(data['registration-page'].companyDetails?.companyNotFoundErrorModalDescription);\n\t\tthis.state.registrationPage.companyDetails.companyNotFoundErrorModalHeader = this.sharedService.emptyStringHandler(data['registration-page'].companyDetails?.companyNotFoundErrorModalHeader);\n\n\t}\n\tmapRegistrationPageCompanyError(data:RegistrationResponse)\n\t{\n\t\tthis.state.registrationPage.companyError.messageMain = this.sharedService.emptyStringHandler(data['registration-page'].companyError?.messageMain);\n\t\tthis.state.registrationPage.companyError.messageSub = this.sharedService.emptyStringHandler(data['registration-page'].companyError?.messageSub);\n\t\tthis.state.registrationPage.companyError.actionMessage = this.sharedService.emptyStringHandler(data['registration-page'].companyError?.actionMessage);\n\t\tthis.state.registrationPage.companyError.phoneNumber.label = this.sharedService.emptyStringHandler(data['registration-page'].companyError?.phoneNumber?.label);\n\t\tthis.state.registrationPage.companyError.phoneNumber.value = this.sharedService.emptyStringHandler(data['registration-page'].companyError?.phoneNumber?.value);\n\t\tthis.state.registrationPage.companyError.email.label = this.sharedService.emptyStringHandler(data['registration-page'].companyError?.email.label);\n\t\tthis.state.registrationPage.companyError.email.value = this.sharedService.emptyStringHandler(data['registration-page'].companyError?.email.value);\n\t\tthis.state.registrationPage.companyError.customerServiceName = this.sharedService.emptyStringHandler(data['registration-page'].companyError?.customerServiceName);\n\t\tthis.state.registrationPage.companyError.address = this.sharedService.emptyStringHandler(data['registration-page'].companyError?.address);\n\t\tthis.state.registrationPage.companyError.contactDealer.icon = this.sharedService.emptyStringHandler(data['registration-page'].companyError?.contactDealer?.icon);\n\t\tthis.state.registrationPage.companyError.contactDealer.label = this.sharedService.emptyStringHandler(data['registration-page'].companyError?.contactDealer?.label);\n\t}\n\tmapRegistrationPageProfileInfo(data:RegistrationResponse)\n\t{\n\t\tthis.state.registrationPage.profileInfo.description = this.sharedService.emptyStringHandler(data['registration-page'].profileInfo?.description);\n\t\tthis.state.registrationPage.profileInfo.emailAddress = this.sharedService.emptyStringHandler(data['registration-page'].profileInfo?.emailAddress);\n\t\tthis.state.registrationPage.profileInfo.firstName = this.sharedService.emptyStringHandler(data['registration-page'].profileInfo?.firstName);\n\t\tthis.state.registrationPage.profileInfo.heading = this.sharedService.emptyStringHandler(data['registration-page'].profileInfo?.heading);\n\t\tthis.state.registrationPage.profileInfo.jobTitle = this.sharedService.emptyStringHandler(data['registration-page'].profileInfo?.jobTitle);\n\t\tthis.state.registrationPage.profileInfo.jobTitleAltText = this.sharedService.emptyStringHandler(data['registration-page'].profileInfo?.jobTitleAltText);\n\t\tthis.state.registrationPage.profileInfo.lastName = this.sharedService.emptyStringHandler(data['registration-page'].profileInfo?.lastName);\n\t\tthis.state.registrationPage.profileInfo.logo.iconPath = this.sharedService.emptyStringHandler(data['registration-page'].profileInfo?.logo?.iconPath);\n\t\tthis.state.registrationPage.profileInfo.logo.altText = this.sharedService.emptyStringHandler(data['registration-page'].profileInfo?.logo?.altText);\n\t\tthis.state.registrationPage.profileInfo.phoneNumber = this.sharedService.emptyStringHandler(data['registration-page'].profileInfo?.phoneNumber);\n\t\tthis.state.registrationPage.profileInfo.requestedRole.description = this.sharedService.emptyStringHandler(data['registration-page'].profileInfo?.requestedRole?.description);\n\t\tthis.state.registrationPage.profileInfo.requestedRole.label = this.sharedService.emptyStringHandler(data['registration-page'].profileInfo?.requestedRole?.label);\n\t\tthis.state.registrationPage.profileInfo.requestedRoleAltText = this.sharedService.emptyStringHandler(data['registration-page'].profileInfo?.requestedRoleAltText);\n\t\tthis.state.registrationPage.profileInfo.stepNumber = this.sharedService.emptyStringHandler(data['registration-page'].profileInfo?.stepNumber);\n\t}\n\t// eslint-disable-next-line complexity\n\tmapRegistrationPageTermsAndConditions(data:RegistrationResponse)\n\t{\n\t\tthis.state.registrationPage.termsConditions.description = this.sharedService.emptyStringHandler(data['registration-page'].termsConditions?.description);\n\t\tthis.state.registrationPage.termsConditions.heading = this.sharedService.emptyStringHandler(data['registration-page'].termsConditions?.heading);\n\t\tthis.state.registrationPage.termsConditions.logo.altText = this.sharedService.emptyStringHandler(data['registration-page'].termsConditions?.logo?.altText);\n\t\tthis.state.registrationPage.termsConditions.logo.iconPath = this.sharedService.emptyStringHandler(data['registration-page'].termsConditions?.logo?.iconPath);\n\t\tthis.state.registrationPage.termsConditions.privacy.label = this.sharedService.emptyStringHandler(data['registration-page'].termsConditions?.privacy?.label);\n\t\tthis.state.registrationPage.termsConditions.privacy.modal.agreeButtonLabel = this.sharedService.emptyStringHandler(data['registration-page'].termsConditions?.privacy?.modal?.agreeButtonLabel);\n\t\tthis.state.registrationPage.termsConditions.privacy.infoBanner = this.sharedService.emptyStringHandler(data['registration-page'].termsConditions?.privacy?.infoBanner ? this.sharedService.emptyStringHandler(data['registration-page'].termsConditions?.privacy?.infoBanner): TermsAndConditionPrivacyPolicyInfoBannerText.privacyPolicyInfoBannerText);\n\t\tthis.state.registrationPage.termsConditions.privacy.modal.agreedButtonLabel = this.sharedService.emptyStringHandler(data['registration-page'].termsConditions?.privacy?.modal?.agreedButtonLabel);\n\t\tthis.state.registrationPage.termsConditions.privacy.modal.closeIcon.altText = this.sharedService.emptyStringHandler(data['registration-page'].termsConditions?.privacy?.modal?.closeIcon?.altText);\n\t\tthis.state.registrationPage.termsConditions.privacy.modal.closeIcon.iconPath = this.sharedService.emptyStringHandler(data['registration-page'].termsConditions?.privacy?.modal?.closeIcon?.iconPath);\n\t\tthis.state.registrationPage.termsConditions.privacy.modal.content = data['registration-page'].termsConditions?.privacy?.modal?.content?data['registration-page'].termsConditions?.privacy?.modal?.content:[];\n\t\tthis.state.registrationPage.termsConditions.privacy.modal.disagreeButtonLabel = this.sharedService.emptyStringHandler(data['registration-page'].termsConditions?.privacy?.modal?.disagreeButtonLabel);\n\t\tthis.state.registrationPage.termsConditions.privacy.modal.heading = this.sharedService.emptyStringHandler(data['registration-page'].termsConditions?.privacy?.modal?.heading);\n\t\tthis.state.registrationPage.termsConditions.privacy.modal.checkboxText = this.sharedService.emptyStringHandler(data['registration-page'].termsConditions?.privacy?.modal?.checkboxText);\n\t\tthis.state.registrationPage.termsConditions.privacy.tokenData = data['registration-page'].termsConditions?.privacy?.tokenData?data['registration-page'].termsConditions?.privacy?.tokenData:[{ name: '', text: '', url: '', isLink: '' }];\n\t\tthis.state.registrationPage.termsConditions.stepNumber = this.sharedService.emptyStringHandler(data['registration-page'].termsConditions?.stepNumber);\n\t\tthis.state.registrationPage.termsConditions.terms.label = this.sharedService.emptyStringHandler(data['registration-page'].termsConditions?.terms?.label);\n\t\tthis.state.registrationPage.termsConditions.terms.modal.agreeButtonLabel = this.sharedService.emptyStringHandler(data['registration-page'].termsConditions?.terms?.modal?.agreeButtonLabel);\n\t\tthis.state.registrationPage.termsConditions.terms.infoBanner = this.sharedService.emptyStringHandler(data['registration-page'].termsConditions?.terms?.infoBanner ? this.sharedService.emptyStringHandler(data['registration-page'].termsConditions?.terms?.infoBanner): TermsAndConditionPrivacyPolicyInfoBannerText.tandCInfoBannerText);\n\t\tthis.state.registrationPage.termsConditions.terms.modal.agreedButtonLabel = this.sharedService.emptyStringHandler(data['registration-page'].termsConditions?.terms?.modal?.agreedButtonLabel);\n\t\tthis.state.registrationPage.termsConditions.terms.modal.closeIcon.altText = this.sharedService.emptyStringHandler(data['registration-page'].termsConditions?.terms?.modal?.closeIcon?.altText);\n\t\tthis.state.registrationPage.termsConditions.terms.modal.closeIcon.iconPath = this.sharedService.emptyStringHandler(data['registration-page'].termsConditions?.terms?.modal?.closeIcon?.iconPath);\n\t\tthis.state.registrationPage.termsConditions.terms.modal.content = data['registration-page'].termsConditions?.terms?.modal?.content?data['registration-page'].termsConditions?.terms?.modal?.content:[];\n\t\tthis.state.registrationPage.termsConditions.terms.modal.disagreeButtonLabel = this.sharedService.emptyStringHandler(data['registration-page'].termsConditions?.terms?.modal?.disagreeButtonLabel);\n\t\tthis.state.registrationPage.termsConditions.terms.modal.heading = this.sharedService.emptyStringHandler(data['registration-page'].termsConditions?.terms?.modal?.heading);\n\t\tthis.state.registrationPage.termsConditions.terms.modal.checkboxText = this.sharedService.emptyStringHandler(data['registration-page'].termsConditions?.terms?.modal?.checkboxText);\n\t\tthis.state.registrationPage.termsConditions.terms.tokenData = data['registration-page'].termsConditions?.terms?.tokenData?data['registration-page'].termsConditions?.terms?.tokenData:[{ name: '', text: '', url: '', isLink: '' }];\n\t}\n\tmapRegistrationPagePrivacyPolicy(data:RegistrationResponse)\n\t{\n\t\tthis.state.registrationPage.privacypolicy.description = this.sharedService.emptyStringHandler(data['registration-page'].privacypolicy?.description);\n\t\tthis.state.registrationPage.privacypolicy.heading = this.sharedService.emptyStringHandler(data['registration-page'].privacypolicy?.heading);\n\t\tthis.state.registrationPage.privacypolicy.logo.altText = this.sharedService.emptyStringHandler(data['registration-page'].privacypolicy?.logo?.altText);\n\t\tthis.state.registrationPage.privacypolicy.logo.iconPath = this.sharedService.emptyStringHandler(data['registration-page'].privacypolicy?.logo?.iconPath);\n\t\tthis.state.registrationPage.privacypolicy.privacy.label = this.sharedService.emptyStringHandler(data['registration-page'].privacypolicy?.privacy?.label);\n\t\tthis.state.registrationPage.privacypolicy.privacy.infoBanner = this.sharedService.emptyStringHandler(data['registration-page'].privacypolicy?.privacy?.infoBanner);\n\t\tthis.state.registrationPage.privacypolicy.privacy.modal.agreeButtonLabel = this.sharedService.emptyStringHandler(data['registration-page'].privacypolicy?.privacy?.modal?.agreeButtonLabel);\n\t\tthis.state.registrationPage.privacypolicy.privacy.modal.agreedButtonLabel = this.sharedService.emptyStringHandler(data['registration-page'].privacypolicy?.privacy?.modal?.agreedButtonLabel);\n\t\tthis.state.registrationPage.privacypolicy.privacy.modal.closeIcon.altText = this.sharedService.emptyStringHandler(data['registration-page'].privacypolicy?.privacy?.modal?.closeIcon?.altText);\n\t\tthis.state.registrationPage.privacypolicy.privacy.modal.closeIcon.iconPath = this.sharedService.emptyStringHandler(data['registration-page'].privacypolicy?.privacy?.modal?.closeIcon?.iconPath);\n\t\tthis.state.registrationPage.privacypolicy.privacy.modal.content = data['registration-page'].privacypolicy?.privacy?.modal?.content?data['registration-page'].privacypolicy?.privacy?.modal?.content:[];\n\t\tthis.state.registrationPage.privacypolicy.privacy.modal.disagreeButtonLabel = this.sharedService.emptyStringHandler(data['registration-page'].privacypolicy?.privacy?.modal?.disagreeButtonLabel);\n\t\tthis.state.registrationPage.privacypolicy.privacy.modal.heading = this.sharedService.emptyStringHandler(data['registration-page'].privacypolicy?.privacy?.modal?.heading);\n\t\tthis.state.registrationPage.privacypolicy.privacy.modal.checkboxText = this.sharedService.emptyStringHandler(data['registration-page'].privacypolicy?.privacy?.modal?.checkboxText);\n\t\tthis.state.registrationPage.privacypolicy.privacy.tokenData = data['registration-page'].privacypolicy?.privacy?.tokenData?data['registration-page'].privacypolicy?.privacy?.tokenData:[{ name: '', text: '', url: '', isLink: '' }];\n\t\tthis.state.registrationPage.privacypolicy.stepNumber = this.sharedService.emptyStringHandler(data['registration-page'].privacypolicy?.stepNumber);\n\t\tthis.state.registrationPage.privacypolicy.terms.label = this.sharedService.emptyStringHandler(data['registration-page'].privacypolicy?.terms?.label);\n\t\tthis.state.registrationPage.privacypolicy.terms.modal.agreeButtonLabel = this.sharedService.emptyStringHandler(data['registration-page'].privacypolicy?.terms?.modal?.agreeButtonLabel);\n\t\tthis.state.registrationPage.privacypolicy.terms.modal.agreedButtonLabel = this.sharedService.emptyStringHandler(data['registration-page'].privacypolicy?.terms?.modal?.agreedButtonLabel);\n\t\tthis.state.registrationPage.privacypolicy.terms.modal.closeIcon.altText = this.sharedService.emptyStringHandler(data['registration-page'].privacypolicy?.terms?.modal?.closeIcon?.altText);\n\t\tthis.state.registrationPage.privacypolicy.terms.modal.closeIcon.iconPath = this.sharedService.emptyStringHandler(data['registration-page'].privacypolicy?.terms?.modal?.closeIcon?.iconPath);\n\t\tthis.state.registrationPage.privacypolicy.terms.modal.content = data['registration-page'].privacypolicy?.terms?.modal?.content?data['registration-page'].privacypolicy?.terms?.modal?.content:[];\n\t\tthis.state.registrationPage.privacypolicy.terms.modal.disagreeButtonLabel = this.sharedService.emptyStringHandler(data['registration-page'].privacypolicy?.terms?.modal?.disagreeButtonLabel);\n\t\tthis.state.registrationPage.privacypolicy.terms.modal.heading = this.sharedService.emptyStringHandler(data['registration-page'].privacypolicy?.terms?.modal?.heading);\n\t\tthis.state.registrationPage.privacypolicy.terms.modal.checkboxText = this.sharedService.emptyStringHandler(data['registration-page'].privacypolicy?.terms?.modal?.checkboxText);\n\t\tthis.state.registrationPage.privacypolicy.terms.tokenData = data['registration-page'].privacypolicy?.terms?.tokenData?data['registration-page'].privacypolicy?.terms?.tokenData:[{ name: '', text: '', url: '', isLink: '' }];\n\t}\n\tmapRegistrationPageAccountType(data:RegistrationResponse)\n\t{\n\t\tthis.state.registrationPage.accountType.description = this.sharedService.emptyStringHandler(data['registration-page'].accountType?.description);\n\t\tthis.state.registrationPage.accountType.heading = this.sharedService.emptyStringHandler(data['registration-page'].accountType?.heading);\n\t\tthis.state.registrationPage.accountType.logo.altText = this.sharedService.emptyStringHandler(data['registration-page'].accountType?.logo?.altText);\n\t\tthis.state.registrationPage.accountType.logo.iconPath = this.sharedService.emptyStringHandler(data['registration-page'].accountType?.logo?.iconPath);\n\t\tthis.state.registrationPage.accountType.stepNumber = this.sharedService.emptyStringHandler(data['registration-page'].accountType?.stepNumber);\n\t\tthis.state.registrationPage.accountType.individualAccount.label = this.sharedService.emptyStringHandler(data['registration-page'].accountType?.individualAccount?.label);\n\t\tthis.state.registrationPage.accountType.individualAccount.description1 = this.sharedService.emptyStringHandler(data['registration-page'].accountType?.individualAccount?.description1);\n\t\tthis.state.registrationPage.accountType.individualAccount.description2 = this.sharedService.emptyStringHandler(data['registration-page'].accountType?.individualAccount?.description2);\n\t\tthis.state.registrationPage.accountType.individualAccount.tokenData = data['registration-page'].accountType?.individualAccount?.tokenData?data['registration-page'].accountType?.individualAccount?.tokenData:[{ name: '', text: '', url: '', isLink: '' }];\n\t\tthis.state.registrationPage.accountType.businessAccount.label = this.sharedService.emptyStringHandler(data['registration-page'].accountType?.businessAccount?.label);\n\t\tthis.state.registrationPage.accountType.businessAccount.description1 = this.sharedService.emptyStringHandler(data['registration-page'].accountType?.businessAccount?.description1);\n\t\tthis.state.registrationPage.accountType.businessAccount.description2 = this.sharedService.emptyStringHandler(data['registration-page'].accountType?.businessAccount?.description2);\n\t\tthis.state.registrationPage.accountType.businessAccount.tokenData = data['registration-page'].accountType?.businessAccount?.tokenData?data['registration-page'].accountType?.businessAccount?.tokenData:[{ name: '', text: '', url: '', isLink: '' }];\n\t}\n\tmapRegistrationPageAdditionalLocation(data:RegistrationResponse)\n\t{\n\t\tthis.state.registrationPage.additionalLocation.locationPageDescription.description1 = this.sharedService.emptyStringHandler(data['registration-page'].additionalLocation?.locationPageDescription?.description1);\n\t\tthis.state.registrationPage.additionalLocation.locationPageDescription.description2 = this.sharedService.emptyStringHandler(data['registration-page'].additionalLocation?.locationPageDescription?.description2);\n\t\tthis.state.registrationPage.additionalLocation.locationPageDescription.tokenData = data['registration-page'].additionalLocation?.locationPageDescription?.tokenData?data['registration-page'].additionalLocation?.locationPageDescription?.tokenData:[{ name: '', text: '', url: '', isLink: '' }];\n\t\tthis.state.registrationPage.additionalLocation.heading1 = this.sharedService.emptyStringHandler(data['registration-page'].additionalLocation?.heading1);\n\t\tthis.state.registrationPage.additionalLocation.headingOr = this.sharedService.emptyStringHandler(data['registration-page'].additionalLocation?.headingOr);\n\t\tthis.state.registrationPage.additionalLocation.heading2.label = this.sharedService.emptyStringHandler(data['registration-page'].additionalLocation?.heading2?.label);\n\t\tthis.state.registrationPage.additionalLocation.heading2.iconPath = this.sharedService.emptyStringHandler(data['registration-page'].additionalLocation?.heading2?.iconPath);\n\t\tthis.state.registrationPage.additionalLocation.heading2.altText = this.sharedService.emptyStringHandler(data['registration-page'].additionalLocation?.heading2?.altText);\n\t\tthis.state.registrationPage.additionalLocation.logo.iconPath = this.sharedService.emptyStringHandler(data['registration-page'].additionalLocation?.logo?.iconPath);\n\t\tthis.state.registrationPage.additionalLocation.logo.altText = this.sharedService.emptyStringHandler(data['registration-page'].additionalLocation?.logo?.altText);\n\t\tthis.state.registrationPage.additionalLocation.stepNumber = this.sharedService.emptyStringHandler(data['registration-page'].additionalLocation?.stepNumber);\n\t\tthis.state.registrationPage.additionalLocation.primaryLocationHeading = this.sharedService.emptyStringHandler(data['registration-page'].additionalLocation?.primaryLocationHeading);\n\t\tthis.state.registrationPage.additionalLocation.selectLocationTableHeader.companyName = this.sharedService.emptyStringHandler(data['registration-page'].additionalLocation?.selectLocationTableHeader?.companyName);\n\t\tthis.state.registrationPage.additionalLocation.selectLocationTableHeader.address = this.sharedService.emptyStringHandler(data['registration-page'].additionalLocation?.selectLocationTableHeader?.address);\n\t\tthis.state.registrationPage.additionalLocation.selectLocationTableHeader.country = this.sharedService.emptyStringHandler(data['registration-page'].additionalLocation?.selectLocationTableHeader?.country);\n\t\tthis.state.registrationPage.additionalLocation.selectLocationTableHeader.selectAll = this.sharedService.emptyStringHandler(data['registration-page'].additionalLocation?.selectLocationTableHeader?.selectAll);\n\t\tthis.state.registrationPage.additionalLocation.uploadSuccessText = this.sharedService.emptyStringHandler(data['registration-page'].additionalLocation?.uploadSuccessText);\n\t\tthis.state.registrationPage.additionalLocation.uploadSuccessSubtext = this.sharedService.emptyStringHandler(data['registration-page'].additionalLocation?.uploadSuccessSubtext);\n\t}\n\tmapDomainAemLabels(data:RegistrationResponse)\n\t{\n\t\tthis.state.registrationPage.domainInfo.heading = this.sharedService.emptyStringHandler(data['registration-page'].domainInfo?.heading);\n\t\tthis.state.registrationPage.domainInfo.description = this.sharedService.emptyStringHandler(data['registration-page'].domainInfo?.description);\n\t\tthis.state.registrationPage.domainInfo.subHeading = this.sharedService.emptyStringHandler(data['registration-page'].domainInfo?.subHeading);\n\t\tthis.state.registrationPage.domainInfo.stepNumber = this.sharedService.emptyStringHandler(data['registration-page'].domainInfo?.stepNumber);\n\t\tthis.state.registrationPage.domainInfo.logo.iconPath = this.sharedService.emptyStringHandler(data['registration-page'].domainInfo?.logo?.iconPath);\n\t\tthis.state.registrationPage.domainInfo.logo.altText = this.sharedService.emptyStringHandler(data['registration-page'].domainInfo?.logo?.altText);\n\t\tthis.state.registrationPage.domainInfo.labelPrefix = this.sharedService.emptyStringHandler(data['registration-page'].domainInfo?.labelPrefix);\n\t\tthis.state.registrationPage.domainInfo.labelSuffix = this.sharedService.emptyStringHandler(data['registration-page'].domainInfo?.labelSuffix);\n\t}\n\tmapAdditionalAemLabels()\n\t{\n\t\tthis.state.verifyInformationButton.label = 'Verify Information';\n\t\tthis.state.modifyDetailsButton.label = 'Modify Details';\n\t\tthis.state.submitButton.label = 'Submit Registration';\n\t\tthis.state.continueButton.label = 'Continue';\n\t\tthis.state.vertexAPIValidationLabels = RegistrationMappingFactory.mapVertexLabels();\n\t\tthis.state.mapVertexAddressFailedLabels = RegistrationMappingFactory.mapVertexAddressFailedLabels();\n\t\tthis.state.registrationPage.companyError.actionMessage = 'Please update your information below or request access from MyToyota Customer Service.';\n\t\tthis.state.registrationPage.companyError.phoneNumber = { label: 'Call / Text', value: '1.844.965.0182' };\n\t\tthis.state.registrationPage.companyError.email = { label: 'Email', value: 'customerservice@toyotatmh.com' };\n\t\tthis.state.registrationPage.companyError.customerServiceName = 'MyToyota Customer Service';\n\t\tthis.state.contactDealerButton.label = 'Contact Us';\n\t\tthis.state.errorText = RegistrationMappingFactory.mapFieldErrorText();\n\t\tthis.state.ribbonClearButton.label = 'Clear All';\n\t\tthis.state.additionalLocationSubmitButton.label = 'Submit';\n\t}\n\tpublic getGoogleTranslatePanel(renderer: Renderer2): HTMLIFrameElement | null\n\t{\n\t\ttry\n\t\t{\n\t\t\treturn renderer.selectRootElement('div.skiptranslate > iframe');\n\t\t}\n\t\tcatch (error)\n\t\t{\n\t\t\tthis.loggerService.log('trying to select google translate panel', error);\n\t\t\treturn null;\n\t\t}\n\t}\n\tpublic performFirstTimeTranslation(selection: string, renderer: Renderer2): void\n\t{\n\t\tconst googleTranslateMenuLink: HTMLAnchorElement = renderer.selectRootElement('#google_translate_element a');\n\t\trenderer.removeAttribute(googleTranslateMenuLink, 'href');\n\t\trenderer.selectRootElement(googleTranslateMenuLink).click();\n\t\tconst iframeElList: NodeListOf = document.querySelectorAll('iframe.skiptranslate');\n\t\tconst foundLink: unknown = Array.from(iframeElList).find((item: HTMLIFrameElement) =>\n\t\t{\n\t\t\tconst links: NodeListOf | undefined = item.contentWindow !== null ? item.contentWindow.document.querySelectorAll('a') : undefined;\n\t\t\tconst link: HTMLAnchorElement | undefined = links !== undefined ? Array.from(links).find(thisLink => lodashGet(thisLink, 'value') === selection) : undefined;\n\t\t\tlink !== undefined ? renderer.selectRootElement(link).click() : (() => {} )();\n\t\t\treturn link !== undefined;\n\t\t});\n\t\tthis.loggerService.log('found translation link and stopped', foundLink);\n\t}\n\tpublic performSubsequetTranslation(panelAfterFirstTranslation: HTMLIFrameElement, selection: string): void\n\t{\n\t\tconst buttonRestore: HTMLButtonElement | null = (panelAfterFirstTranslation.contentWindow as {document: Document}).document.getElementById(':2.restore') as HTMLButtonElement || null;\n\t\tconst buttonTranslate: HTMLButtonElement | null = (panelAfterFirstTranslation.contentWindow as {document: Document}).document.getElementById(':2.confirm') as HTMLButtonElement || null;\n\t\tselection === 'en' ? (buttonRestore).click() : (buttonTranslate).click();\n\t}\n\tasync canActivatePortal()\n\t{\n\t\tconst status: ApiResponse = await this.getUserRegistrationStatus();\n\t\tconst responseObject = status.data;\n\t\tif(responseObject.hasOwnProperty('registrationStatus') && responseObject.registrationStatus !== undefined)\n\t\t{\n\t\t\tresponseObject.registrationStatus = responseObject.registrationStatus === 'pending_approval' && responseObject.orgAdminPending? 'pending_business_approval' : responseObject.registrationStatus;\n\t\t\tthis.redirectBasedOnRegistrationStatus(responseObject.registrationStatus);\n\t\t}\n\t}\n\tsaveGeneralUser()\n\t{\n\t\tthis.apiService.saveGeneralUser().subscribe({\n\t\t\tnext: (response: ApiResponse) =>\n\t\t\t{\n\t\t\t\tif(response.data && response.statusCode === 201)\n\t\t\t\t{\n\t\t\t\t\tconst responseObject = response.data;\n\t\t\t\t\tthis.isRegistrationStatusPresent(responseObject);\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: (error: HttpErrorResponse) =>\n\t\t\t{\n\t\t\t\tthis.handleCommonError(error.error.message);\n\t\t\t}\n\t\t});\n\t}\n\tisRegistrationStatusPresent(responseObject: UserRegistrationStatus)\n\t{\n\t\tif(responseObject.hasOwnProperty('registrationStatus') && responseObject.registrationStatus !== undefined)\n\t\t{\n\t\t\tresponseObject.registrationStatus = responseObject.registrationStatus === 'pending_approval' && responseObject.orgAdminPending? 'pending_business_approval' : responseObject.registrationStatus;\n\t\t\tthis.redirectBasedOnRegistrationStatus(responseObject.registrationStatus);\n\t\t}\n\t}\n\tsaveIndividualUser()\n\t{\n\t\tthis.apiService.saveIndividualUser().subscribe({\n\t\t\tnext: (response: ApiResponse) =>\n\t\t\t{\n\t\t\t\tthis.isSavingIndividualUser = true;\n\t\t\t\tif(response.data && response.statusCode === 201)\n\t\t\t\t{\n\t\t\t\t\tconst responseObject = response.data;\n\t\t\t\t\tif(responseObject.hasOwnProperty('registrationStatus') && responseObject.registrationStatus !== undefined)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.redirectBasedOnRegistrationStatus(responseObject.registrationStatus);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: (error: HttpErrorResponse) =>\n\t\t\t{\n\t\t\t\tthis.handleCommonError(error.error.message);\n\t\t\t}\n\t\t});\n\t}\n\thandleCommonError(message: string)\n\t{\n\t\tthis.state.loading = false;\n\t\tthis.toaster.error(message);\n\t\tconst analyticsData: AnalyticsDataLayer = {\n\t\t\tevent: 'Submit Registration Failed',\n\t\t\terror: { message: message }\n\t\t};\n\t\tthis.analyticsService.trackRegistrationByEvent(analyticsData, this.state.email);\n\t}\n\tredirectBasedOnRegistrationStatus(registrationStatus: UserRegistrationStatusValue)\n\t{\n\t\tthis.isContinueSuccess = false;\n\t\tif(registrationStatus === 'in_progress')\n\t\t{\n\t\t\tthis.isContinueSuccess = true;\n\t\t}\n\t\tconst routingFunction: RoutingFunction | undefined = this.sharedUtilService.statusValueToRedirectsMap.get(registrationStatus);\n\t\tif (routingFunction !== undefined)\n\t\t{\n\t\t\troutingFunction(this.router)?.then(succeeded =>\n\t\t\t{\n\t\t\t\tif (succeeded)\n\t\t\t\t{\n\t\t\t\t\tthis.loggerService.log('navigation succeeded');\n\t\t\t\t}\n\t\t\t})\n\t\t\t\t.catch(error =>\n\t\t\t\t{\n\t\t\t\t\tthis.loggerService.error(error);\n\t\t\t\t});\n\t\t}\n\t}\n\tprivate async getUserRegistrationStatus(): Promise\n\t{\n\t\ttry\n\t\t{\n\t\t\treturn await this.apiService.getUserRegistrationStatus();\n\t\t}\n\t\tcatch (error)\n\t\t{\n\t\t\tthis.loggerService.log('Error redirecting to logout', error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\tgetAdditionalLocationList()\n\t{\n\t\tthis.state.additionalLocationSubmitButton.disabled = false;\n\t\tthis.state.loading = true;\n\t\tthis.apiService.getAdditionalLocations().subscribe({\n\t\t\tnext: (res: ApiResponse) =>\n\t\t\t{\n\t\t\t\tif (res?.data)\n\t\t\t\t{\n\t\t\t\t\tconst responseObj: AdditionalLocationListResponse = res.data;\n\t\t\t\t\tif(responseObj.pendingLocationDetails)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.isUploadSuccess = true;\n\t\t\t\t\t}\n\t\t\t\t\tthis.state.additionalLocationList = this.registrationUtilService.mapAdditionalLocationList(this.state.additionalLocationList, responseObj);\n\t\t\t\t\tthis.additionalLocations = responseObj.locationList;\n\t\t\t\t\tconst locations: GridData[] = this.registrationUtilService.formatLocationList(responseObj.locationList);\n\t\t\t\t\tthis.state.additionalLocationGrid = [...locations];\n\t\t\t\t\tthis.checkForSelectAll();\n\t\t\t\t\tthis.isPrimaryLocationPresent = this.registrationUtilService.isPrimaryLocationAvailable(responseObj);\n\t\t\t\t\tif(this.state.additionalLocationGrid.length === 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.state.additionalLocationError = {\n\t\t\t\t\t\t\tmessage: 'No additional locations were found with your Company Details.',\n\t\t\t\t\t\t\tmessageSubText: 'Please press \"Submit\" to complete your Enterprise Account registration for your Primary Location only or upload a list of additional locations by clicking the link above.',\n\t\t\t\t\t\t\ticon: Icons.noResult\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: (err) =>\n\t\t\t{\n\t\t\t\tthis.state.loading = false;\n\t\t\t\tthis.state.additionalLocationGrid = [];\n\t\t\t\tthis.state.additionalLocationError = {\n\t\t\t\t\tmessage: 'Unable to load list of locations, please try again later.',\n\t\t\t\t\tmessageSubText: '',\n\t\t\t\t\ticon: Icons.apiIssue\n\t\t\t\t};\n\t\t\t\tthis.state.additionalLocationSubmitButton.disabled = true;\n\t\t\t\tthis.trackAnalyticsOnListFailure();\n\t\t\t\tthrow err;\n\t\t\t},\n\t\t\tcomplete: () =>\n\t\t\t{\n\t\t\t\tsetTimeout(() =>\n\t\t\t\t{\n\t\t\t\t\tthis.state.loading = false;\n\t\t\t\t\tthis.state.additionalLocationSubmitButton.disabled = false;\n\t\t\t\t}, 1000);\n\t\t\t}\n\t\t});\n\t}\n\ttrackAnalyticsOnListFailure()\n\t{\n\t\tconst analyticsData: AnalyticsDataLayer = {\n\t\t\tevent: 'Additional Locations List Failed',\n\t\t\terror: {\n\t\t\t\tmessage: 'Unable to load list of locations, please try again later.'\n\t\t\t}\n\t\t};\n\t\tthis.analyticsService.trackRegistrationByEvent(analyticsData, this.state.email);\n\t}\n\tcheckForSelectAll(): void\n\t{\n\t\tif(this.state.additionalLocationGrid.length === 0)\n\t\t{\n\t\t\tthis.checkAll = false;\n\t\t}\n\t}\n\ttrackAnalyticsDataOnSubmit()\n\t{\n\t\tconst analyticsData: AnalyticsDataLayer = {\n\t\t\tevent: 'Submit Registration',\n\t\t\tlink: {\n\t\t\t\tname: 'Submit Registration button'\n\t\t\t}\n\t\t};\n\t\tthis.analyticsService.trackRegistrationByEvent(analyticsData, this.state.email);\n\t}\n\tsubmitAdditionalLocation(selectedLocationGrids: string[], claimDomain: boolean = false)\n\t{\n\t\tlet payload: SubmitBusinessPayload = {\n\t\t\tselectedLocationList: [],\n\t\t\tselectionMethod: 'manual',\n\t\t\tclaimDomain: false\n\t\t};\n\t\tpayload = this.registrationUtilService.submitLocationPayload(this.isUploadSuccess, this.additionalLocations, selectedLocationGrids);\n\t\tpayload.claimDomain = claimDomain;\n\t\tthis.apiService.submitAdditionalLocation(payload)\n\t\t\t.subscribe({\n\t\t\t\tnext: (res: ApiResponse) =>\n\t\t\t\t{\n\t\t\t\t\tthis.handleSuccessForBusinessAccount(res);\n\t\t\t\t},\n\t\t\t\terror: (error: HttpErrorResponse) =>\n\t\t\t\t{\n\t\t\t\t\tif(error.status === 504)\n\t\t\t\t\t\tthis.handleCommonError(ErrorMessage.registration504Error);\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.handleCommonError(error.error.message);\n\t\t\t\t}\n\t\t\t});\n\t}\n\thandleSuccessForBusinessAccount(response: ApiResponse)\n\t{\n\t\tif (response.data)\n\t\t{\n\t\t\tthis.trackAnalyticsDataOnSubmit();\n\t\t\tthis.isSavingIndividualUser = true;\n\t\t\tconst responseObj: SubmitRegistrationResponse = response.data;\n\t\t\tthis.registrationUtilService.isBusinessAccountRegistration(responseObj);\n\t\t\tthis.router.navigate([ApplicationPath.dashboard]);\n\t\t}\n\t}\n\tsaveBusinessUser()\n\t{\n\t\tthis.state.loading = true;\n\t\tthis.apiService.saveBusinessUser().subscribe({\n\t\t\tnext: (res: ApiResponse) =>\n\t\t\t{\n\t\t\t\tthis.handleSuccessForSaveBusinessUser(res);\n\t\t\t},\n\t\t\terror: (err) =>\n\t\t\t{\n\t\t\t\tthis.state.loading = false;\n\t\t\t\tthis.toaster.error(err.error.message);\n\t\t\t}\n\t\t});\n\t}\n\thandleSuccessForSaveBusinessUser(response: ApiResponse)\n\t{\n\t\tif (response.data)\n\t\t{\n\t\t\tconst responseObj: SaveBusinessAccountResponse = response.data;\n\t\t\tthis.isStatusInProgress(responseObj.registrationStatus);\n\t\t\tthis.sharedService.scrollToTopOfPage();\n\t\t}\n\t}\n\tisStatusInProgress(registrationStatus: UserRegistrationStatusValue)\n\t{\n\t\tif(registrationStatus === RegistrationStatus.inProgress)\n\t\t{\n\t\t\tthis.redirectBasedOnRegistrationStatus(RegistrationStatus.inProgress);\n\t\t}\n\t}\n\tpublic getBusinessRegistrationFlowSubmitModalLabels()\n\t{\n\t\tthis.apiService.getBusinessRegistrationFlowSubmitModalLabels().subscribe((res: BusinessRegistrationFlowSubmitModalLabels) =>\n\t\t{\n\t\t\tif (res)\n\t\t\t{\n\t\t\t\tthis.state.businessRegistrationFlowSubmitModalLabels.heading = res.heading;\n\t\t\t\tthis.businessRegistrationFlowSubmitModalState.buttons[0].label = res.cancel;\n\t\t\t\tthis.businessRegistrationFlowSubmitModalState.buttons[1].label = res.proceed;\n\t\t\t}\n\t\t});\n\t}\n\tgetBusinessRegistrationLocationDownload()\n\t{\n\t\tthis.downloadButtonState.disabled = true;\n\t\tthis.apiService.getBusinessRegistrationLocationDownload().subscribe({\n\t\t\tnext: (res) =>\n\t\t\t{\n\t\t\t\tthis.sharedService.downloadExcel(FileName.userLocationListUploadTemplate, res);\n\t\t\t\tthis.downloadButtonState.disabled = false;\n\t\t\t\tthis.downloadTemplateError = false;\n\t\t\t\tthis.analyticsService.trackRegistrationByEvent({\n\t\t\t\t\tevent: 'Download Success',\n\t\t\t\t\tlink: {\n\t\t\t\t\t\tname: 'Download Template Button'\n\t\t\t\t\t},\n\t\t\t\t\tdownload: {\n\t\t\t\t\t\tfileName: FileName.userLocationListUploadTemplate+'.xlsx',\n\t\t\t\t\t\tfileType: 'Download Template'\n\t\t\t\t\t}\n\t\t\t\t}, this.state.email);\n\t\t\t},\n\t\t\terror: (error: HttpErrorResponse) =>\n\t\t\t{\n\t\t\t\tthis.downloadTemplateError = true;\n\t\t\t\tthis.registrationUtilService.handleDownloadCommonError(error, this.state, this.downloadButtonState, this.state.email);\n\t\t\t}\n\t\t});\n\t}\n\tgetBusinessRegistrationUploadListModalLabels()\n\t{\n\t\tthis.apiService.getBusinessRegistrationUploadListModalLabels().subscribe((res:RegistrationState ) =>\n\t\t{\n\t\t\tif (res?.uploadFileSection)\n\t\t\t{\n\t\t\t\tthis.state.uploadFileSection.heading = this.sharedService.nullValueHandler(res.uploadFileSection.heading);\n\t\t\t\tthis.state.uploadFileSection.subHeading = this.sharedService.nullValueHandler(res.uploadFileSection.subHeading);\n\t\t\t\tthis.downloadButtonState.label =this.sharedService.nullValueHandler(res.uploadFileSection.download.downloadButton);\n\t\t\t\tthis.state.uploadFileSection.upload=this.sharedService.nullValueHandler(res.uploadFileSection.upload);\n\t\t\t\tthis.state.uploadFileSection.cancel=this.sharedService.nullValueHandler(res.uploadFileSection.cancel);\n\t\t\t\tthis.state.uploadFileSection.close=this.sharedService.nullValueHandler(res.uploadFileSection.close);\n\t\t\t\tthis.state.uploadFileSection.content = res.uploadFileSection.content;\n\t\t\t\tthis.registrationUtilService.getUploadFileLabel(res, this.uploadFileState);\n\t\t\t}\n\t\t});\n\t}\n\tresetFileStateModel()\n\t{\n\t\tthis.uploadFileState.isSuccessClient = true;\n\t\tthis.uploadFileState.isSuccessServer = false;\n\t\tthis.uploadFileState.isError = false;\n\t\tthis.uploadFileState.errorHeading = '';\n\t\tthis.uploadFileState.errorSubHeading = '';\n\t}\n\tcheckServerValidationUploadFile(item: File)\n\t{\n\t\tthis.uploadFileState.isLoading = true;\n\t\tthis.businessRegistrationUploadListModalState.buttons[0].hidden = true;\n\t\tthis.businessRegistrationUploadListModalState.buttons[1].hidden = true;\n\t\tthis.businessRegistrationUploadListModalState.buttons[2].label = this.state.uploadFileSection.close;\n\t\tthis.businessRegistrationUploadListModalState.buttons[2].hidden = false;\n\t\tthis.businessRegistrationUploadListModalState.buttons[2].cssClass = CssClass.btnBlack;\n\t\tthis.businessRegistrationUploadListModalState.buttons[2].disabled = true;\n\t\tthis.downloadButtonState.disabled = true;\n\t\tconst ele = document.getElementById('kng-modal-close');\n\t\tif(ele)\n\t\t\tele.setAttribute('disabled', 'true');\n\t\tthis.apiService.getBAUploadLocation(item).subscribe({\n\t\t\tnext: (res: ApiResponse) =>\n\t\t\t{\n\t\t\t\tif (res?.data)\n\t\t\t\t{\n\t\t\t\t\tthis.businessRegistrationUploadListModalState.buttons[0].hidden = true;\n\t\t\t\t\tthis.businessRegistrationUploadListModalState.buttons[1].hidden = true;\n\t\t\t\t\tthis.businessRegistrationUploadListModalState.buttons[2].label = this.state.uploadFileSection.close;\n\t\t\t\t\tthis.businessRegistrationUploadListModalState.buttons[2].hidden = false;\n\t\t\t\t\tthis.businessRegistrationUploadListModalState.buttons[2].disabled = false;\n\t\t\t\t\tthis.businessRegistrationUploadListModalState.buttons[2].cssClass = CssClass.btnBlack;\n\t\t\t\t\tthis.uploadFileState.isLoading = false;\n\t\t\t\t\tthis.isUploadSuccess = true;\n\t\t\t\t\tthis.uploadFileState.isError = false;\n\t\t\t\t\tthis.uploadFileState.isSuccessClient = true;\n\t\t\t\t\tthis.uploadFileState.isSuccessServer = true;\n\t\t\t\t\tif(ele)\n\t\t\t\t\t\tele.removeAttribute('disabled');\n\t\t\t\t\tthis.downloadButtonState.disabled = false;\n\t\t\t\t\tthis.analyticsService.trackRegistrationByEvent({\n\t\t\t\t\t\tevent: 'Upload Success',\n\t\t\t\t\t\tlink: {\n\t\t\t\t\t\t\tname: 'Upload File'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tupload: {\n\t\t\t\t\t\t\tfileName: item.name,\n\t\t\t\t\t\t\tfileType: 'Locations List'\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this.state.email);\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: (error: HttpErrorResponse): void =>\n\t\t\t{\n\t\t\t\tthis.handleUploadLocationError(ele, error);\n\t\t\t},\n\t\t\tcomplete: () =>\n\t\t\t{\n\t\t\t\tsetTimeout(() =>\n\t\t\t\t{\n\t\t\t\t\tthis.uploadFileState.isLoading = false;\n\t\t\t\t\tthis.isUploadSuccess = true;\n\t\t\t\t}, 1000);\n\t\t\t}\n\t\t});\n\t}\n\thandleUploadLocationError(ele: HTMLElement| null, error: HttpErrorResponse)\n\t{\n\t\tthis.businessRegistrationUploadListModalState.buttons[0].hidden = false;\n\t\tthis.businessRegistrationUploadListModalState.buttons[0].disabled = false;\n\t\tthis.businessRegistrationUploadListModalState.buttons[0].label = this.state.uploadFileSection.cancel;\n\t\tthis.businessRegistrationUploadListModalState.buttons[1].hidden = true;\n\t\tthis.businessRegistrationUploadListModalState.buttons[2].hidden = true;\n\t\tthis.uploadFileState.isLoading = false;\n\t\tthis.isUploadSuccess = false;\n\t\tthis.uploadFileState.isError = true;\n\t\tthis.uploadFileState.isSuccessClient = true;\n\t\tthis.uploadFileState.isSuccessServer = false;\n\t\tif(ele)\n\t\t\tele.removeAttribute('disabled');\n\t\tthis.downloadButtonState.disabled = false;\n\t\tif(error.error.statusCode === 400)\n\t\t{\n\t\t\tthis.uploadFileState.isSuccessClient = false;\n\t\t\tthis.uploadFileState.errorHeading = ErrorMessageHeading.uploadFailed;\n\t\t\tthis.uploadFileState.errorSubHeading = ErrorMessageSubHeading.templateMismatch;\n\t\t\tthis.analyticsService.trackRegistrationByEvent({\n\t\t\t\tevent: 'Upload Error',\n\t\t\t\terror: {\n\t\t\t\t\tmessage: ErrorMessageSubHeading.templateMismatch\n\t\t\t\t}\n\t\t\t}, this.state.email);\n\t\t}\n\t\telse if(error.error.statusCode === 403 || 500)\n\t\t{\n\t\t\tthis.uploadFileState.errorHeading = ErrorMessageHeading.uploadFailed;\n\t\t\tthis.uploadFileState.errorSubHeading = ErrorMessageSubHeading.apiError;\n\t\t\tthis.analyticsService.trackRegistrationByEvent({\n\t\t\t\tevent: 'Upload Error',\n\t\t\t\terror: {\n\t\t\t\t\tmessage: ErrorMessageSubHeading.apiError\n\t\t\t\t}\n\t\t\t}, this.state.email);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.uploadFileState.errorHeading = ErrorMessageHeading.uploadFailed;\n\t\t\tthis.uploadFileState.errorSubHeading = error.error.message;\n\t\t\tthis.analyticsService.trackRegistrationByEvent({\n\t\t\t\tevent: 'Upload Error',\n\t\t\t\terror: {\n\t\t\t\t\tmessage: error.error.message\n\t\t\t\t}\n\t\t\t}, this.state.email);\n\t\t}\n\t}\n\tverifyDomainClaimed(email: string)\n\t{\n\t\tconst payload = {\n\t\t\tname: email\n\t\t};\n\t\tthis.apiService.verifyDomain(payload).subscribe({\n\t\t\tnext: (res: ApiResponse) =>\n\t\t\t{\n\t\t\t\tconst domainData = res.data;\n\t\t\t\tif (domainData && domainData?.length > 0)\n\t\t\t\t{\n\t\t\t\t\tthis.disableDomainClaim = true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n","
\n
\n \n
\n

\n {{ state.registrationPage.stepLabel }}\n

\n

\n {{ state.registrationPage.pageHeading }}\n

\n

\n {{ state.registrationPage.pageDescription }}\n

\n

\n {{state.registrationPage.additionalLocation.locationPageDescription.description1}}{{state.registrationPage.additionalLocation.locationPageDescription.tokenData[0].text}}{{state.registrationPage.additionalLocation.locationPageDescription.description2}}\n

\n
\n\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n","import {\n\tComponent, Input, OnDestroy, OnInit, Output,\n\tEventEmitter, Renderer2, HostListener\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { Registration, RegistrationState } from './definitions';\nimport { RegistrationService } from './registration.service';\nimport { KngLoaderState } from 'kinetic-angular';\nimport { LoggerService } from '../../services/logger/logger.service';\nimport { Icons, UserType } from '../../services/shared/shared-enums';\nimport { SharedService } from '../../services/shared/shared.service';\nimport { AuthenticationService } from '../../services/authentication/authentication.service';\nimport { LocalStorageService } from '../../services/local-storage/local-storage.service';\nimport { Router } from '@angular/router';\nimport { RegistrationFactory } from './registration.factory';\nimport { get as lodashGet } from 'lodash';\nimport { RegistrationUtilService } from './registration-util.service';\nimport { AnalyticsService } from '../../services/analytics/analytics.service';\nimport { AnalyticsDataLayer } from '../../services/analytics/definitions';\n@Component({\n\tselector: 'tmhna-portal-registration',\n\ttemplateUrl: './template/registration.component.html',\n\tstyleUrls: ['./template/registration.component.scss']\n})\nexport class RegistrationComponent implements Registration, OnInit, OnDestroy\n{\n\tprivate readonly subscriptions: Subscription = new Subscription();\n\t\n\tloading: boolean = false;\n\t\n\t@Input() set state(value: RegistrationState)\n\t{\n\t\tthis.service.updateState(value);\n\t}\n\tget state(): RegistrationState\n\t{\n\t\treturn this.service.state;\n\t}\n\n\tpublic loaderState: KngLoaderState = {\n\t\timagePath: Icons.loaderWhite\n\t};\n\t@Output() stateChanged: EventEmitter = new EventEmitter();\n\n\tconstructor(public service: RegistrationService, private readonly loggerService: LoggerService, \n\t\tpublic sharedService: SharedService, private readonly authService: AuthenticationService, private readonly localStorageService: LocalStorageService, private readonly registrationUtilService: RegistrationUtilService, private readonly router: Router,\n\t\tprivate readonly renderer2: Renderer2, private readonly analyticsService: AnalyticsService)\n\t{}\n\n\tngOnInit()\n\t{\n\t\tthis.service.canActivatePortal()?.then(()=>\n\t\t{\n\t\t\tthis.service.validUserSuccess = true;\n\t\t\tthis.service.pageLoadHandler();\n\t\t}\n\t\t).catch(error => \n\t\t{\n\t\t\tthis.service.validUserSuccess = true;\n\t\t\tthis.service.pageLoadHandler();\n\t\t\tthis.loggerService.error(error);\n\t\t});\n\t\tconst ele: HTMLElement = this.renderer2.selectRootElement('html', true);\n\t\tconst value = ele.getAttribute('lang');\n\t\tif(value)\n\t\t{\n\t\t\tthis.localStorageService.setLanguage(value);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.localStorageService.setLanguage('en');\n\t\t}\n\t\tthis.service.getFooterData();\n\t\tthis.service.addLabelsToForm();\n\t\tthis.initSubscriptions();\n\t}\n\t\n\t@HostListener('window:beforeunload', ['$event'])\n\tonBackButtonClick() \n\t{\n\t\tthis.router.navigate(['/auth']);\n\t}\n\tngOnDestroy(): void\n\t{\n\t\tthis.destroySubscriptions();\n\t\tthis.service.state.loading = false;\n\t}\n\n\tprivate initSubscriptions(): void\n\t{\n\t\tconst stateChangeSubs: Subscription = this.service.stateChanged.subscribe(\n\t\t\t(next: RegistrationState) => this.stateChanged.emit(next)\n\t\t);\n\t\tthis.subscriptions.add(stateChangeSubs);\n\t}\n\tprivate destroySubscriptions(): void\n\t{\n\t\tthis.subscriptions.unsubscribe();\n\t}\n\n\tlogout()\n\t{\n\t\tthis.authService.logout()?.catch(error => \n\t\t{\n\t\t\tthis.loggerService.error(error);\n\t\t});\n\t\tthis.localStorageService.clearStorage();\n\t}\n\n\tnotifyLanguageChange(selection: string): void\n\t{\n\t\tconst translationValues: Map = RegistrationFactory.buildDefaultTranslationValuesMap();\n\t\tconst selectionId: string | undefined = translationValues.get(selection);\n\t\tif (selectionId === undefined)\n\t\t{\n\t\t\tthrow new Error(`Can't translate to \"${selection}\". Supported values are:\\n${JSON.stringify(translationValues)}`);\n\t\t}\n\t\tthis.loading = true;\n\t\tconst panelAfterFirstTranslation: HTMLIFrameElement | null = this.service.getGoogleTranslatePanel(this.renderer2);\n\t\tconst isValidSecondTimeTranslation: boolean = lodashGet(panelAfterFirstTranslation, 'contentWindow.document', undefined) !== undefined;\n\t\tisValidSecondTimeTranslation ?\n\t\t\tthis.service.performSubsequetTranslation(panelAfterFirstTranslation as HTMLIFrameElement, selectionId) :\n\t\t\tthis.service.performFirstTimeTranslation(selectionId, this.renderer2);\n\t\tthis.localStorageService.setLanguage(selectionId);\n\t\tsetTimeout(() =>\n\t\t{\n\t\t\tthis.loading = false;\n\t\t}, 500);\n\t}\n\n\tisTermsandPrivacyAgreed(event: boolean)\n\t{\n\t\tthis.service.termsandPrivacyAgreed = event;\n\t\tif(this.service.termsandPrivacyAgreed)\n\t\t{\n\t\t\tthis.state.submitButton.disabled = false;\n\t\t\tthis.state.continueButton.disabled = false;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.state.submitButton.disabled = true;\n\t\t\tthis.state.continueButton.disabled = true;\n\t\t}\n\t}\n\tdisplayContinueButton(event: boolean)\n\t{\n\t\tif(event === true)\n\t\t{\n\t\t\tthis.service.isContinueButton = true;\n\t\t\tthis.service.isSubmitRegistrationButton = false;\n\t\t\tif(this.service.termsandPrivacyAgreed)\n\t\t\t{\n\t\t\t\tthis.state.continueButton.disabled = false;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.service.isContinueButton = false;\n\t\t\tthis.service.isSubmitRegistrationButton = true;\n\t\t}\n\t}\n\n\tonSubmitRegistration()\n\t{\n\t\tthis.trackAnalyticsOnSubmit();\n\t\tthis.state.loading = true;\n\t\tif(this.service.userType === UserType.generalUser)\n\t\t{\n\t\t\tthis.service.saveGeneralUser();\n\t\t}\n\t\telse if(this.service.userType === UserType.individualUser)\n\t\t{\n\t\t\tthis.service.saveIndividualUser();\n\t\t}\n\t\telse if(this.service.userType === UserType.businessAdminUser && this.service.isSubmitRegistrationButton)\n\t\t{\n\t\t\tthis.service.saveIndividualUser();\n\t\t}\n\t}\n\n\tonContinue()\n\t{\n\t\tthis.trackAnalyticsOnContinue();\n\t\tthis.service.saveBusinessUser();\n\t}\n\n\ttrackAnalyticsOnSubmit()\n\t{\n\t\tconst analyticsData: AnalyticsDataLayer = {\n\t\t\tevent: 'Submit Registration',\n\t\t\tlink: {\n\t\t\t\tname: 'Submit Registration button'\n\t\t\t}\n\t\t};\n\t\tthis.analyticsService.trackRegistrationByEvent(analyticsData, this.state.email);\n\t}\n\ttrackAnalyticsOnContinue()\n\t{\n\t\tconst analyticsData: AnalyticsDataLayer = {\n\t\t\tevent: 'Continue Registration',\n\t\t\tlink: {\n\t\t\t\tname: 'Continue Button'\n\t\t\t}\n\t\t};\n\t\tthis.analyticsService.trackRegistrationByEvent(analyticsData, this.state.email);\n\t}\n}\n","
\n
\n

\n {{ state.registrationPage.companyError.messageMain }}\n

\n
\n {{ state.registrationPage.companyError.actionMessage }}\n
\n
\n
{{ state.registrationPage.companyError.customerServiceName }}
\n
\n {{ state.registrationPage.companyError.phoneNumber.label }} : {{\n state.registrationPage.companyError.phoneNumber.value }}\n
\n
\n {{ state.registrationPage.companyError.email.label }} : {{ state.registrationPage.companyError.email.value }}\n
\n
\n \n \n \n
\n
\n
\n
\n
\n
\n
\n {{ state.registrationPage.profileInfo.stepNumber }}\n
\n

{{ state.registrationPage.profileInfo.heading }}

\n
\n
\n {{ state.registrationPage.profileInfo.description }}\n
\n
\n
\n
\n
\n \n \n
\n
\n {{ getRequiredErrorMessage(state.registrationPage.profileInfo.firstName) }}\n
\n
\n
\n
\n \n \n
\n
\n {{ getRequiredErrorMessage(state.registrationPage.profileInfo.lastName) }}\n
\n
\n
\n
\n \n \n
\n
\n {{ getRequiredErrorMessage(state.registrationPage.profileInfo.emailAddress) }}\n
\n
\n
\n
\n \n \n
\n
\n
\n {{ getRequiredErrorMessage(state.registrationPage.profileInfo.phoneNumber) }}\n
\n
\n {{ state.errorText.phoneLength }}\n
\n
\n {{state.errorText.phoneSameNumber}}\n
\n
\n {{state.errorText.phoneSequenceNumber}}\n
\n
\n
\n
\n
\n \n
\n \n \n {{ title.label }}\n \n \n
\n
\n \n
\n
\n
\n {{ getRequiredErrorMessage(state.registrationPage.profileInfo.jobTitle, true) }}\n
\n
\n
\n
\n \n
\n
\n \n \n {{ role.name}}\n \n \n
\n
\n \n
\n
\n {{ getRequiredErrorMessage(state.registrationPage.profileInfo.requestedRole.label, true) }}\n
\n

\n {{\n state.registrationPage.profileInfo.requestedRole.description\n }}\n

\n

\n {{ getRoleDescription(service.profileInformationForm.controls['requestedRole'].value) }}\n

\n
\n
\n
\n
\n
\n
\n
\n
\n
\n {{ state.registrationPage.companyDetails.stepNumber }}\n
\n

{{ state.registrationPage.companyDetails.heading }}

\n
\n

\n {{ state.registrationPage.companyDetails.description }}\n

\n
\n
\n
\n
\n \n \n
\n
{{ accountNameMaxLengthMessage }}
\n \n
\n {{ getRequiredErrorMessage(state.registrationPage.companyDetails.companyName) }}\n
\n
\n {{ state.errorText.invalidCharacterWithNumericErrorMessage }}\n
\n
\n
\n
\n
\n \n \n
\n
\n {{ getRequiredErrorMessage(state.registrationPage.companyDetails.addressLine1) }}\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n
\n \n \n {{ country.label }}\n \n \n
\n
\n \n
\n
\n
\n {{ getRequiredErrorMessage(state.registrationPage.companyDetails.country) }}\n
\n
\n
\n
\n \n \n
\n
\n
\n {{ getRequiredErrorMessage(state.registrationPage.companyDetails.city) }}\n
\n
\n {{ state.errorText.invalidCharacterWithNumericErrorMessage }}\n
\n
\n
\n
\n
\n \n
\n \n \n {{ state.label }}\n \n \n
\n
\n \n
\n
\n
\n {{ getRequiredErrorMessage(state.registrationPage.companyDetails.state) }}\n
\n
\n
\n
\n \n \n
\n
\n
\n {{ getRequiredErrorMessage(state.registrationPage.companyDetails.zipCode) }}\n
\n
\n
\n {{ state.errorText.minLengthZipCodeError }}\n
\n \n {{ state.errorText.canadaPostalCodeFormatError }}\n
\n
\n
\n
\n \n \n
\n \n \n \n
\n \n
\n
\n
{{ state.mapVertexAddressFailedLabels.description }}\n
\n
{{ state.vertexAPIValidationLabels.description }}\n
\n
\n
\n \n {{ state.mapVertexAddressFailedLabels.editAddressLabel }}\n \n
\n {{initialAddressInput?.addressLine1}},
\n {{initialAddressInput?.city}}, {{initialAddressInput?.state}}, {{initialAddressInput.postalCode}}\n
\n
\n
\n
\n \n
\n \n \n {{ state.vertexAPIValidationLabels.useVerifiedLabel }}\n \n \n \n
\n {{service.verifiedAddress.verifiedLocation?.addressLine1}},
\n {{service.verifiedAddress.verifiedLocation?.city}}, {{service.addressState}}, {{service.formattedPostalCode}}\n
\n
\n
\n \n \n {{ state.vertexAPIValidationLabels.editAddressLabel }}\n \n \n
\n {{initialAddressInput?.addressLine1}},
\n {{initialAddressInput?.city}}, {{initialAddressInput?.state}}, {{initialAddressInput.postalCode}}\n
\n
\n
\n
\n
\n
\n
\n \n
\n
{{state.registrationPage.companyDetails.companyNotFoundErrorModalDescription}}
\n
\n
\n \n ","import { Component, Input, ViewChild } from '@angular/core';\nimport { RegistrationService } from '../../registration.service';\nimport { RegistrationState, SaveUserPayload } from '../../definitions';\nimport { RegistrationFactory } from '../../registration.factory';\nimport { CountryCode, RemovalSubmissionButton, UseVerifiedOrEditAddress, WarningMessage, countries, provinces, states } from '../../../../services/shared/shared-enums';\nimport { canadaZipFormat } from '../../../../services/shared/shared-constants';\nimport { SharedService } from '../../../../services/shared/shared.service';\nimport { Role } from '../../../../services/shared/shared-interface';\nimport { SharedUtilService } from '../../../../services/shared/shared-util.service';\nimport { ControlName } from '../../../../services/shared/shared-mapping';\nimport { FormControl } from '@angular/forms';\nimport { RegistrationUtilService } from '../../registration-util.service';\nimport { AnalyticsService } from 'projects/tmhna-portal/src/app/services/analytics/analytics.service';\nimport { AnalyticsDataLayer } from 'projects/tmhna-portal/src/app/services/analytics/definitions';\nimport { ModalComponent, ModalEvent, ModalState } from 'kinetic-angular';\n\n@Component({\n\tselector: 'tmhna-portal-registration-profile-company-information',\n\ttemplateUrl: './registration-profile-company-information.component.html',\n\tstyleUrls: ['./registration-profile-company-information.component.scss']\n})\nexport class RegistrationProfileCompanyInformationComponent \n{\n\t@Input() state: RegistrationState = RegistrationFactory.build();\n\tinitialAddressInput = RegistrationFactory.buildCompanyDetails();\n\t@ViewChild(ModalComponent) modalComponent!: ModalComponent;\n\t@ViewChild('confirmVerifiedAddress') confirmVerifiedAddress!: ModalComponent;\n\treadonly countries = countries;\n\tverifyInformationButtonClicked: boolean = false;\n\tproceedInputedAddress: boolean = false;\n\tshowUserInfosNotFound: boolean = false;\n\tcompanyNotFoundErrorModalDescription: string = '';\n\tverifyInfopayload! : SaveUserPayload;\n\taccountNameMaxLengthMessage: string = '';\n\tget statesValue() \n\t{\n\t\treturn this.service.statesOrProvinces$.value;\n\t}\n\n\tget verifyAddressModal(): ModalState \n\t{\n\t\treturn this.service.verifyAddressState;\n\t}\n\tget companyNotFoundErrorModal(): ModalState\n\t{\n\t\treturn this.service.verifyAddressState;\n\t}\n\n\tconstructor(public service: RegistrationService, public sharedService: SharedService, \n\t\tprivate readonly sharedUtilService: SharedUtilService, private readonly registatrationUtilService: RegistrationUtilService,\n\t\tprivate readonly analyticsService: AnalyticsService) \n\t{\n\t\tthis.service.getUserData();\n\t\tthis.service.form();\n\t\tservice.eventCallback$.subscribe(errorResponse => \n\t\t{\n\t\t\tthis.noCompanyOrEmailDetailsInCRM(errorResponse);\n\t\t});\n\t}\n\n\tgetRoleDescription(roleId: string) \n\t{\n\t\tconst selectedRole: Role | undefined = this.state.requestedRole.find(role => role.id === roleId);\n\t\treturn selectedRole ? selectedRole.description : '';\n\t}\n\n\tnoCompanyOrEmailDetailsInCRM(errorResponse : {}) \n\t{\n\t\tif(errorResponse) \n\t\t{\n\t\t\tthis.state.loading = false;\n\t\t\tthis.showUserInfosNotFound = true;\n\t\t\tthis.companyNotFoundErrorModal.hidden = false;\n\t\t\tthis.companyNotFoundErrorModal.cssClass = '';\n\t\t\tthis.companyNotFoundErrorModal.label = this.state.registrationPage.companyDetails.companyNotFoundErrorModalHeader;\n\t\t\tthis.companyNotFoundErrorModal.buttons[0].hidden = false;\n\t\t\tthis.companyNotFoundErrorModal.buttons[0].label = RemovalSubmissionButton.cancel;\n\t\t\tthis.companyNotFoundErrorModal.buttons[1].hidden = false;\n\t\t\tthis.companyNotFoundErrorModal.buttons[1].label = RemovalSubmissionButton.submit;\n\t\t}\n\t}\n\n\tpublic validateProfileInformation(field: string): boolean \n\t{\n\t\treturn (this.service.profileInformationForm.controls[field].invalid && \n\t\t\t(this.service.profileInformationForm.controls[field].dirty || this.service.profileInformationForm.controls[field].touched || this.verifyInformationButtonClicked));\n\t}\n\n\tpublic validateCompanyDetails(field: string): boolean \n\t{\n\t\treturn (this.service.companyDetailsForm.controls[field].invalid &&\n\t\t\t(this.service.companyDetailsForm.controls[field].dirty || this.service.companyDetailsForm.controls[field].touched || this.verifyInformationButtonClicked));\n\t}\n\n\tpublic validateZipCodeLength(): boolean \n\t{\n\t\tconst value = this.service.companyDetailsForm.controls['postalCode']['value'];\n\t\tconst length = value?.length;\n\t\tconst isBetweenOneAndFiveCharacters: boolean = (length > 0 && length < 5);\n\t\treturn isBetweenOneAndFiveCharacters;\n\t}\n\n\tpublic validateCanadaZipCode(): boolean \n\t{\n\t\tconst value = this.service.companyDetailsForm.controls['postalCode']['value'];\n\t\tconst isCanadianPostalCode: boolean = (this.service.companyDetailsForm.controls['country']['value'] === CountryCode.canadaCountry);\n\t\treturn isCanadianPostalCode && value?.length > 0 && !canadaZipFormat.test(value);\n\t}\n\n\tpublic inputFormatterCompanyInfo(controlName: string): void \n\t{\n\t\tObject.keys(this.service.companyDetailsForm.controls).forEach((key: string) => \n\t\t{\n\t\t\tconst control = this.service.companyDetailsForm.get(key);\n\t\t\tif(key === controlName && control instanceof FormControl)\n\t\t\t{\n\t\t\t\tif([ ControlName.companyName.toString(), ControlName.addressLine1.toString(), ControlName.addressLine2.toString(), ControlName.city.toString() ].includes(key))\n\t\t\t\t{\n\t\t\t\t\tcontrol.setValue(this.sharedUtilService.formatValue(control.value, key));\n\t\t\t\t}\n\t\t\t\telse if(ControlName.postalCode === key)\n\t\t\t\t{\n\t\t\t\t\tcontrol.setValue(this.formatZipCode(control.value));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tphoneNumberHandler(event: Event, inputElement: HTMLInputElement)\n\t{\n\t\tlet cursorPosition = inputElement.selectionStart ?? 0;\n\t\tthis.formatPhoneNumber((event.target as HTMLInputElement).value);\n\t\n\t\tconst formattedNumberLength = this.service.profileInformationForm.get('phoneNumber')?.value.length;\n\t\tcursorPosition = this.sharedService.handlePhoneInputCursor(event, cursorPosition, formattedNumberLength);\n\t\tinputElement.setSelectionRange(cursorPosition, cursorPosition);\n\t}\n\tpublic formatPhoneNumber(value: string): void \n\t{\n\t\tthis.service.profileInformationForm.patchValue({\n\t\t\tphoneNumber: this.sharedService.formatPhoneNumber(value)\n\t\t});\n\t}\n\tpublic formatZipCode(value: string): string \n\t{\n\t\treturn this.sharedUtilService.formatZipCode(value, this.service.companyDetailsForm.controls['country']['value']).trim();\n\t}\n\n\tnonNumericSpaceRestriction(value: string, name: string) \n\t{\n\t\tconst newValue = value.replace(/\\u00A0/g, ' ');\n\t\tif (name === ControlName.city) \n\t\t{\n\t\t\tthis.service.companyDetailsForm.patchValue({\n\t\t\t\tcity: this.sharedService.nonNumericSpaceRestriction(newValue)\n\t\t\t});\n\t\t}\n\t\telse if (name === ControlName.accountName) \n\t\t{\n\t\t\tconst trimmedValue = newValue.trimLeft();\n\t\t\tthis.service.companyDetailsForm.patchValue({\n\t\t\t\taccountName: this.sharedUtilService.formatValue(newValue, name)\n\t\t\t});\n\t\t\tif (trimmedValue.length >= 40) this.accountNameMaxLengthMessage = WarningMessage.max40CharactersLimit;\n\t\t\telse this.accountNameMaxLengthMessage = '';\n\t\t}\n\t}\n\n\tupdateCountrySelection() \n\t{\n\t\tthis.service.companyDetailsForm.controls['postalCode'].reset();\n\t\tthis.service.companyDetailsForm.controls['state'].reset();\n\t\tthis.service.companyDetailsForm.controls['city'].reset();\n\t\tthis.service.companyDetailsForm.controls['state'].setValue('');\n\n\t\tconst country: string = this.service.companyDetailsForm.controls['country'].value;\n\t\tthis.service.statesOrProvinces$.next([]);\n\t\tcountry === CountryCode.unitedStatesofAmerica ? setTimeout(() => this.service.statesOrProvinces$.next(states), 0) : setTimeout(() => this.service.statesOrProvinces$.next(provinces), 0);\n\t}\n\n\tvalidateZipcode()\n\t{\n\t\tconst postalCodeValue = this.service.companyDetailsForm.controls['postalCode']['value'];\n\t\treturn this.service.companyDetailsForm.controls['country']['value'] === CountryCode.unitedStatesofAmerica ? postalCodeValue.length >= 5 : (postalCodeValue?.length > 0 && canadaZipFormat.test(postalCodeValue));\n\t}\n\n\tpublic verifyInformation(element: HTMLDivElement): void \n\t{\n\t\tthis.verifyInformationButtonClicked = true;\n\t\tif (this.service.companyDetailsForm.status === 'VALID' && this.service.profileInformationForm.status === 'VALID' && this.validateZipcode()) \n\t\t{\n\t\t\tthis.service.useVerifiedAddress = false;\n\t\t\tthis.service.isModifyButtonClicked = false;\n\t\t\tconst phoneNumber = this.service.profileInformationForm.controls['phoneNumber']['value'].replace(/[^\\d]/g, '');\n\t\t\tconst postalCode = this.service.companyDetailsForm.controls['country']['value'] === CountryCode.unitedStatesofAmerica ?\n\t\t\t\tthis.service.companyDetailsForm.controls['postalCode']['value'].replace(/[^\\d]/g, '') :\n\t\t\t\tthis.service.companyDetailsForm.controls['postalCode']['value'].trim();\n\t\t\tconst tempIsPrefilled = this.state.tempFlag;\n\t\t\tif(this.service.vertexFailedWithNoSuggestedAddress) \n\t\t\t{\n\t\t\t\tthis.proceedInputedAddress = true;\n\t\t\t}\n\t\t\tconst proceedWithInputtedAddress = this.proceedInputedAddress;\n\t\t\tconst profileInfo = {\n\t\t\t\t...this.service.profileInformationForm.value,\n\t\t\t\tphoneNumber: phoneNumber,\n\t\t\t\tlastName: this.service.profileInformationForm.controls['lastName']['value'],\n\t\t\t\tfirstName: this.service.profileInformationForm.controls['firstName']['value'],\n\t\t\t\temail: this.service.profileInformationForm.controls['email']['value'].toLocaleLowerCase(),\n\t\t\t\tjobTitle: this.service.profileInformationForm.controls['jobTitle']['value'],\n\t\t\t\trequestedRole: this.service.profileInformationForm.controls['requestedRole']['value']\n\t\t\t};\n\t\t\tconst companyInfo = {\n\t\t\t\t...this.service.companyDetailsForm.value,\n\t\t\t\tcountry: this.service.companyDetailsForm.controls['country']['value'],\n\t\t\t\tstate: this.service.companyDetailsForm.controls['state']['value'],\n\t\t\t\tpostalCode: postalCode\n\t\t\t};\n\t\t\tthis.initialAddressInput = companyInfo;\n\t\t\tthis.verifyInfopayload = { ...profileInfo, ...companyInfo, tempIsPrefilled, proceedWithInputtedAddress };\n\t\t\tthis.state.loading = true;\n\t\t\tthis.service.verifyInformation(this.verifyInfopayload, element);\n\t\t\tthis.verifyAddressModal.hidden = false;\n\t\t\tthis.verifyAddressModal.cssClass = UseVerifiedOrEditAddress.cssClass;\n\t\t\tthis.verifyAddressModal.label = UseVerifiedOrEditAddress.label;\n\t\t\tthis.verifyAddressModal.buttons[0].hidden = false;\n\t\t\tthis.verifyAddressModal.buttons[0].label = 'Close';\n\t\t\tthis.verifyAddressModal.buttons[1].hidden = false;\n\t\t\tthis.verifyAddressModal.buttons[1].label = 'Proceed';\n\t\t\tthis.proceedInputedAddress = false;\n\t\t}\n\t}\n\n\tgetRequiredErrorMessage(fieldName: string, isDropdown: boolean = false)\n\t{\n\t\treturn this.sharedService.capitalizeFirstLetter(this.sharedService.updateMessage(isDropdown? this.state.errorText.requiredDropdownErrorMessage:this.state.errorText.requiredErrorMessage, '$token', fieldName).toLowerCase());\n\t}\n\n\tonAddressOptionChange(option: string) \n\t{\n\t\tif (option.toLocaleLowerCase() === UseVerifiedOrEditAddress.useVerifiedAddress.toLocaleLowerCase()) \n\t\t{\n\t\t\t\n\t\t\tthis.service.statesOrProvinces$.next(this.registatrationUtilService.getStateProvinceValues(this.service.verifiedLocation.country ?? ''));\n\t\t\tthis.service.useVerifiedAddress = true;\n\t\t\tthis.service.companyDetailsForm.patchValue({\n\t\t\t\taccountName: this.initialAddressInput.accountName,\n\t\t\t\taddressLine1: this.service.verifiedLocation.addressLine1,\n\t\t\t\taddressLine2: this.service.verifiedLocation.addressLine2 ? this.service.verifiedLocation.addressLine2 : '',\n\t\t\t\tcountry: this.service.verifiedLocation.country,\n\t\t\t\tcity: this.service.verifiedLocation.city,\n\t\t\t\tstate: this.service.verifiedLocation.state,\n\t\t\t\tpostalCode: this.service.formattedPostalCode\n\t\t\t});\n\t\t\tthis.service.companyDetailsForm.controls['addressLine2'].reset();\n\t\t\tthis.service.companyDetailsForm.controls['state'].disable({ emitEvent: true, onlySelf: false });\n\t\t\tthis.service.companyDetailsForm.controls['country'].disable({ emitEvent: true, onlySelf: false });\n\t\t}\n\t\telse if (option.toLocaleLowerCase() === UseVerifiedOrEditAddress.editAddress.toLocaleLowerCase()) \n\t\t{\n\t\t\tthis.proceedInputedAddress = true;\n\t\t\tthis.cancelModalWithFormEnable();\n\t\t}\n\t}\n\tisCompanySectionDisabled()\n\t{\n\t\treturn (this.service.useVerifiedAddress || this.service.showModifyButton) ? true : null;\n\t}\n\n\tisProfileSectionDisabled()\n\t{\n\t\treturn (this.service.showModifyButton ? true : null);\n\t}\n\n\thandleModifyDetailsButtonClick()\n\t{\n\t\tthis.service.isModifyButtonClicked = true;\n\t\tthis.proceedInputedAddress = false;\n\t\tthis.service.showModifyButton = false;\n\t\tthis.service.isContinueButton = false;\n\t\tthis.service.isSubmitRegistrationButton = false;\n\t\tthis.service.state.verifyInformationButton.disabled = false;\n\t\tthis.service.state.submitButton.disabled = true;\n\t\tthis.service.state.continueButton.disabled = true;\n\t\tthis.service.termsandPrivacyAgreed = false;\n\t\tthis.service.profileInformationForm.controls['jobTitle'].enable();\n\t\tthis.service.profileInformationForm.controls['requestedRole'].enable();\n\t\tthis.service.companyDetailsForm.controls['state'].enable();\n\t\tthis.service.companyDetailsForm.controls['country'].enable();\n\t\tthis.service.isTCSection = false;\n\t\tthis.service.isAccountTypeSection = false;\n\t\tthis.service.state.termsModal.buttons[0].label = this.state.registrationPage.termsConditions.terms.modal.agreeButtonLabel;\n\t\tthis.service.state.policyModal.buttons[0].label = this.state.registrationPage.termsConditions.privacy.modal.agreeButtonLabel;\n\t\tconst analyticsData: AnalyticsDataLayer = {\n\t\t\tevent: 'ModifyDetails',\n\t\t\tlink: {\n\t\t\t\tname: 'Modify Details Button'\n\t\t\t}\n\t\t};\n\t\tthis.analyticsService.trackRegistrationByEvent(analyticsData, this.state.email);\n\t}\n\n\t\n\tproceedWithAddressOrCancel(event: ModalEvent, element: HTMLDivElement) \n\t{\n\t\tif(event.cta.label === 'Close') \n\t\t{\n\t\t\tthis.cancelModalWithFormEnable();\n\t\t\tthis.closeModalOnCancelandProceedActions();\n\t\t\tthis.service.vertexFailedWithNoSuggestedAddress = false;\n\t\t\tthis.proceedInputedAddress = false;\n\t\t}\n\t\telse \n\t\t{\n\t\t\tthis.closeModalOnCancelandProceedActions();\n\t\t\tthis.verifyInformation(element);\n\t\t}\n\t}\n\n\tsubmitRegistrationReviewOrCancel(event: ModalEvent) : void \n\t{\n\t\tif(event.cta.label === 'Cancel') \n\t\t{\n\t\t\tthis.cancelModalWithFormEnable();\n\t\t\tthis.closeSubmitReviewModal();\n\t\t}\n\t\telse \n\t\t{\n\t\t\tthis.state.loading = true;\n\t\t\tthis.closeSubmitReviewModal();\n\t\t\tthis.service.submitRegistrationReviewOrCancel(this.verifyInfopayload);\n\t\t}\n\t}\n\n\tcloseSubmitReviewModal() \n\t{\n\t\tthis.companyNotFoundErrorModal.hidden = true;\n\t\tthis.showUserInfosNotFound = false;\n\t\tthis.hideModalBackdrop();\n\t}\n\t\n\tcancelModalWithFormEnable() \n\t{\n\t\tthis.service.useVerifiedAddress = false;\n\t\tthis.service.companyDetailsForm.controls['state'].enable();\n\t\tthis.service.companyDetailsForm.controls['country'].enable();\n\t\tthis.service.companyDetailsForm.patchValue({\n\t\t\taccountName: this.initialAddressInput.accountName,\n\t\t\taddressLine1: this.initialAddressInput.addressLine1,\n\t\t\taddressLine2: this.initialAddressInput.addressLine2,\n\t\t\tcountry: this.initialAddressInput.country,\n\t\t\tcity: this.initialAddressInput.city,\n\t\t\tstate: this.initialAddressInput.state,\n\t\t\tpostalCode: this.formatZipCode(this.initialAddressInput.postalCode)\n\t\t});\n\t}\n\n\t\n\tcloseModalOnCancelandProceedActions() \n\t{\n\t\tthis.verifyAddressModal.hidden = true;\n\t\tthis.service.addressSuggestion = false;\n\t\tthis.hideModalBackdrop();\n\t}\n\n\t\n\thideModalBackdrop() \n\t{\n\t\tdocument.body.classList.remove('modal-open');\n\t\tdocument.body.removeAttribute('style');\n\t\tconst backdrop = document.querySelector('.modal-backdrop');\n\t\tbackdrop?.remove();\n\t}\n\n\t\n\tverifyAddressModalClosed(): void \n\t{\n\t\tthis.hideModalBackdrop();\n\t\tthis.cancelModalWithFormEnable();\n\t\tthis.closeModalOnCancelandProceedActions();\n\t\tthis.service.vertexFailedWithNoSuggestedAddress = false;\n\t\tthis.proceedInputedAddress = false;\n\t}\n\tsubmitReviewModalClosed(): void \n\t{\n\t\tthis.cancelModalWithFormEnable();\n\t\tthis.closeSubmitReviewModal();\n\t}\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { RegistrationState } from '../../definitions/registration.interface';\nimport { RegistrationService } from '../../registration.service';\nimport { UserType } from 'projects/tmhna-portal/src/app/services/shared/shared-enums';\n\n@Component({\n\tselector: 'tmhna-portal-registration-account-type',\n\ttemplateUrl: './registration-account-type.component.html',\n\tstyleUrls: ['./registration-account-type.component.scss']\n})\nexport class RegistrationAccountTypeComponent\n{\n\tselectedRadioOption: string = UserType.businessAdminUser;\n\t@Input() set state(value: RegistrationState)\n\t{\n\t\tthis.service.updateState(value);\n\t}\n\tget state(): RegistrationState\n\t{\n\t\treturn this.service.state;\n\t}\n\t@Output() showContinueButton: EventEmitter = new EventEmitter();\n\n\tconstructor(private readonly service: RegistrationService) {}\n\n\tonOptionChange(option: string)\n\t{\n\t\tif(option === UserType.individualUser)\n\t\t{\n\t\t\tthis.showContinueButton.emit(false);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.showContinueButton.emit(true);\n\t\t}\n\t}\n}\n","\n","
\n
\n
\n
\n {{ state.registrationPage.termsConditions.stepNumber }}\n
\n

{{ state.registrationPage.termsConditions.heading }}

\n
\n

\n {{ state.registrationPage.termsConditions.description }}\n

\n
\n
\n
\n
\n \n
\n \n
\n
\n
\n \n
\n \n
\n
\n
\n
\n\n
\n
\n

{{state.registrationPage.termsConditions.terms.infoBanner}}

\n
\n

\n
\n
\n
\n\n
\n\n
\n
\n

{{state.registrationPage.termsConditions.privacy.infoBanner}}

\n
\n

\n
\n
\n
","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { RegistrationState } from '../../definitions/registration.interface';\nimport { RegistrationService } from '../../registration.service';\nimport { TermsAndPrivacy } from 'projects/tmhna-portal/src/app/services/shared/shared-enums';\nimport { ModalEvent } from 'kinetic-angular';\n\n@Component({\n\tselector: 'tmhna-portal-registration-terms-and-conditions',\n\ttemplateUrl: './registration-terms-and-conditions.component.html',\n\tstyleUrls: ['./registration-terms-and-conditions.component.scss']\n})\nexport class RegistrationTermsAndConditionsComponent implements OnInit\n{\n\ttermsChecked: boolean = false;\n\tprivacyChecked: boolean = false;\n\t@Input() set state(value: RegistrationState)\n\t{\n\t\tthis.service.updateState(value);\n\t}\n\tget state(): RegistrationState\n\t{\n\t\treturn this.service.state;\n\t}\n\n\tpublic termsAndConditions: boolean = false;\n\tpublic termsAndConditionsDisabled: boolean = true;\n\tcheckBoxTerms: string = '';\n\tcheckBoxPrivacy: string = '';\n\tcheckBoxTickedFlagTandC: boolean = false;\n\tcheckBoxTickedFlagPrivacy: boolean = false;\n\tisAtBottomTandC: boolean = false;\n\tisAtBottomPrivacy: boolean = false;\n\tcheckBoxDisabledFlagTandC: boolean = true;\n\tcheckBoxDisabledFlagPrivacy: boolean = true;\n\tpublic privacyPolicy: boolean = false;\n\tpublic privacyPolicyDisabled: boolean = true;\n\t@ViewChild('terms') terms: ElementRef | undefined;\n\t@ViewChild('policy') policy: ElementRef | undefined;\n\t@Output() termsAndPolicyConditionAgreed: EventEmitter = new EventEmitter();\n\n\tconstructor(public service: RegistrationService) {}\n\n\tngOnInit()\n\t{\n\t\tthis.state.termsModal.buttons[0].disabled = true;\n\t\tthis.state.policyModal.buttons[0].disabled = true;\n\t\tthis.state.termsModal.isCheckBox = true;\n\t\tthis.state.policyModal.isCheckBox = true;\n\t}\n\tonScrollTandC(event: Event)\n\t{\n\t\tconst target = event.target as HTMLElement;\n\t\tthis.isAtBottomTandC = target.scrollTop + target.clientHeight >= target.scrollHeight - 10;\n\t\tif(this.isAtBottomTandC && !this.termsAndConditions)\n\t\t{\n\t\t\tthis.checkBoxDisabledFlagTandC = false;\n\t\t}\n\t}\n\n\tonScrollPrivacy(event: Event)\n\t{\n\t\tconst target = event.target as HTMLElement;\n\t\tthis.isAtBottomPrivacy = target.scrollTop + target.clientHeight >= target.scrollHeight - 10;\n\t\tif(this.isAtBottomPrivacy && !this.privacyPolicy)\n\t\t{\n\t\t\tthis.checkBoxDisabledFlagPrivacy = false;\n\t\t}\n\t}\n\tcheckBoxTermsData() \n\t{\n\t\tthis.checkBoxTerms = this.state.registrationPage.termsConditions.terms.modal.checkboxText;\n\t\treturn this.checkBoxTerms;\n\t}\n\tcheckBoxPrivacyData()\n\t{\n\t\tthis.checkBoxPrivacy = this.state.registrationPage.termsConditions.privacy.modal.checkboxText;\n\t\treturn this.checkBoxPrivacy;\n\t}\n\tpublic agreeToConditionsOrPolicyAgreement(event: ModalEvent): void\n\t{\n\t\tlet privacyPolicyLinkElement: HTMLElement | null = null;\n\t\tif (event.state.label === TermsAndPrivacy.termsAndConditions)\n\t\t{\n\t\t\tthis.termsAndConditions = true;\n\t\t\tthis.service.state.termsModal.buttons[0].disabled = true;\n\t\t\tthis.service.state.termsModal.buttons[0].label = this.state.registrationPage.termsConditions.terms.modal.agreedButtonLabel;\n\t\t\tprivacyPolicyLinkElement = document.getElementById('privacyPolicy');\n\t\t\tthis.checkBoxTickedFlagTandC = true;\n\t\t\tthis.checkBoxDisabledFlagTandC = true;\n\t\t}\n\t\telse if (event.state.label === TermsAndPrivacy.privacyPolicy)\n\t\t{\n\t\t\tthis.privacyPolicy = true;\n\t\t\tthis.service.state.policyModal.buttons[0].disabled = true;\n\t\t\tthis.service.state.policyModal.buttons[0].label = this.state.registrationPage.termsConditions.privacy.modal.agreedButtonLabel;\n\t\t\tthis.checkBoxTickedFlagPrivacy = true;\n\t\t\tthis.checkBoxDisabledFlagPrivacy = true;\n\t\t}\n\t\tevent.state.hidden = true;\n\t\tconst ele = document.getElementById('kng-modal-close');\n\t\tif (ele)\n\t\t{\n\t\t\tele.click();\n\t\t}\n\t\tif (privacyPolicyLinkElement !== null)\n\t\t{\n\t\t\tprivacyPolicyLinkElement.focus();\n\t\t}\n\t\tthis.checkIfBothTnCAndPrivacyPolicyAgreed();\n\t}\n\n\tcheckIfBothTnCAndPrivacyPolicyAgreed()\n\t{\n\t\tif(this.termsAndConditions && this.privacyPolicy)\n\t\t{\n\t\t\tthis.termsAndPolicyConditionAgreed.emit(true);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.termsAndPolicyConditionAgreed.emit(false);\n\t\t}\n\t}\n\n\tcheckIfTermsAgreed(event : boolean)\n\t{\n\t\tthis.termsChecked = event;\n\n\t\tthis.service.state.termsModal.buttons[0].disabled = !(this.termsChecked && !this.termsAndConditions);\n\t}\n\tcheckIfPrivacyAgreed(event: boolean)\n\t{\n\t\tthis.privacyChecked = event;\n\t\tthis.service.state.policyModal.buttons[0].disabled = !(this.privacyChecked && !this.privacyPolicy);\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tpublic handleCheckboxClick(event: any): void\n\t{\n\t\tthis.openModal(event.target.name);\n\t\tevent.preventDefault();\n\t}\n\n\tpublic openModal(id: string): void\n\t{\n\t\tif (id === 'terms')\n\t\t{\n\t\t\tthis.state.termsModal.hidden = false;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.state.policyModal.hidden = false;\n\t\t}\n\t\tthis.service.updateState(this.state);\n\t}\n\n\tpublic closeModal(): void\n\t{\n\t\tthis.state.policyModal.hidden = true;\n\t\tthis.state.termsModal.hidden = true;\n\t\tthis.privacyChecked = this.privacyPolicy;\n\t\tthis.termsChecked = this.termsAndConditions;\n\t\tthis.checkIfTermsAgreed(this.termsChecked);\n\t\tthis.checkIfPrivacyAgreed(this.privacyChecked);\n\t}\n}\n","
\n
\n
\n
\n {{ state.registrationPage.domainInfo.stepNumber }}\n
\n
\n

{{ state.registrationPage.domainInfo.heading }}

\n
{{ state.registrationPage.domainInfo.description }}
\n
\n
\n
{{ state.registrationPage.domainInfo.description }}
\n
\n
\n {{ state.registrationPage.domainInfo.subHeading }}\n
\n
\n {{userDomain}} \n
\n
\n {{ state.registrationPage.domainInfo.labelPrefix }} \"{{ userDomain }}\" {{ state.registrationPage.domainInfo.labelSuffix }} \n \n
\n {{ errorMessage }} {{contactUs.label}} \n
\n
\n
\n
\n
\n\n
\n\n
\n
\n
\n
\n {{ state.registrationPage.additionalLocation.stepNumber }}\n
\n

{{ state.registrationPage.additionalLocation.heading1 }}

\n
\n
{{ state.registrationPage.additionalLocation.headingOr }}
\n
\n \n
\n
\n
\n
\n
\n {{ state.registrationPage.additionalLocation.stepNumber }}\n
\n

{{ state.registrationPage.additionalLocation.heading2?.label }}

\n
\n
\n
\n
{{state.registrationPage.additionalLocation.uploadSuccessText}}
\n
{{state.registrationPage.additionalLocation.uploadSuccessSubtext}}
\n
\n
\n

{{ state.registrationPage.additionalLocation.primaryLocationHeading }}

\n \n
{{ state.additionalLocationList.primaryLocationInfo.companyName }}\n
\n
\n
{{ state.additionalLocationList.primaryLocationInfo.addressLine1 }}
\n
{{ state.additionalLocationList.primaryLocationInfo.addressLine2 }}
\n
\n {{ state.additionalLocationList.primaryLocationInfo.city }}, {{ state.additionalLocationList.primaryLocationInfo.state }}, {{ state.additionalLocationList.primaryLocationInfo.zipCode }}\n
\n
{{ state.additionalLocationList.primaryLocationInfo.country }}
\n
\n
\n \n
_
\n
\n
\n\n
0\">\n
\n
\n
\n \n
\n
{{countOfSelectedRequests()}}  items selected
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
{{countOfSelectedRequests()}}  items selected
\n
\n
\n
\n\n
\n \n \n \n \n \n \n \n 0\">\n \n \n \n \n \n \n \n
\n  \n \n \n {{header}}\n
\n  \n \n \n
{{row.companyName}}
\n
\n
{{row.address}}
\n
\n
{{row.country}}
\n
\n
\n \"no\n
{{state?.additionalLocationError?.message}}
\n
{{state?.additionalLocationError?.messageSubText}}
\n
\n
\n\n
\n \n \n \n \n \n \n \n 0\">\n \n \n \n \n \n
\n  \n \n \n {{state.registrationPage.additionalLocation.selectLocationTableHeader.selectAll}}\n
\n  \n \n \n
\n
{{state.registrationPage.additionalLocation.selectLocationTableHeader.companyName}}
\n
{{row.companyName}}
\n
\n
\n
{{state.registrationPage.additionalLocation.selectLocationTableHeader.address}}
\n
{{row.address}}
\n
\n
\n
{{state.registrationPage.additionalLocation.selectLocationTableHeader.country}}
\n
{{row.country}}
\n
\n
\n
\n \"no\n
{{state?.additionalLocationError?.message}}
\n
{{state?.additionalLocationError?.messageSubText}}
\n
\n
\n\n
\n
\n Showing {{ pager.startIndex + 1 | number\n }}-{{(state.additionalLocationGrid).length > pager.pageSize * (pager.currentPage) ?\n pager.pageSize * (pager.currentPage): (state.additionalLocationGrid).length | number }} of {{\n (state.additionalLocationGrid)?.length | number }}\n
\n \n
\n\n
\n \n
\n
\n\n\n\n\n
\n
\n
{{state.uploadFileSection.subHeading}}
\n
    \n
  1. \n {{content.label}}: \n {{content.description}} \n
  2. \n
\n
\n
\n \n \n
\n
\n
\n

{{this.state.uploadFileSection.download.errorMessage}}

\n
\n\n
\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { GridData, RegistrationState } from '../../definitions';\nimport { RegistrationService } from '../../registration.service';\nimport { KngButtonState, KngGridPager, ModalComponent, ModalEvent, ModalState } from 'kinetic-angular';\nimport { ButtonState, ErrorMessageHeading, ErrorMessageSubHeading, KngUploadFileComponent, PagerService } from 'projects/kinetic-angular/src/lib/components';\nimport { RegistrationUtilService } from '../../registration-util.service';\nimport { CssClass, ModalButtonId } from '../../../../services/shared/shared-enums';\nimport { SharedUtilService } from '../../../../services/shared/shared-util.service';\nimport { AnalyticsService } from 'projects/tmhna-portal/src/app/services/analytics/analytics.service';\nimport { AnalyticsDataLayer } from 'projects/tmhna-portal/src/app/services/analytics/definitions';\n\n@Component({\n\tselector: 'tmhna-portal-registration-additional-locations',\n\ttemplateUrl: './registration-additional-locations.component.html',\n\tstyleUrls: ['./registration-additional-locations.component.scss']\n})\nexport class RegistrationAdditionalLocationsComponent implements OnInit\n{\n\tallSelected: boolean = false;\n\tselectedGridData: GridData[] = [];\n\tpageNumber: number = 1;\n\tcurrentPage: number = 1;\n\tpager: KngGridPager = {\n\t\ttotalPages: 1,\n\t\tcurrentPage: this.currentPage,\n\t\tendIndex: 0,\n\t\tendPage: 1,\n\t\tpageSize: 50,\n\t\tstartIndex: 0,\n\t\tstartPage: 1,\n\t\ttotalItems: this.state.additionalLocationGrid.length\n\t};\n\terrorMessage:string = 'This domain is already taken! Need assistance?';\n\tcontactUs = {\n\t\tlabel: 'Contact Us',\n\t\turl: '/contact-us'\n\t};\n\tclaimDomain: boolean = false;\n\t@ViewChild('confirmSubmit') confirmSubmit!: ModalComponent;\n\t@ViewChild('uploadModal') uploadModal!: ModalComponent;\n\t@ViewChild(KngUploadFileComponent, { static: false }) fileUploadComponent: | KngUploadFileComponent | undefined;\n\t@Input() set state(value: RegistrationState)\n\t{\n\t\tthis.service.updateState(value);\n\t}\n\tget state(): RegistrationState\n\t{\n\t\treturn this.service.state;\n\t}\n\tget businessRegistrationFlowSubmitModalState(): ModalState\n\t{\n\t\treturn this.service.businessRegistrationFlowSubmitModalState;\n\t}\n\tget businessRegistrationUploadListModalState(): ModalState\n\t{\n\t\treturn this.service.businessRegistrationUploadListModalState;\n\t}\n\tget downloadButtonState(): KngButtonState \n\t{\n\t\treturn this.service.downloadButtonState;\n\t}\n\n\tget userDomain(): string\n\t{\n\t\tif(this.state.email)\n\t\t{\n\t\t\treturn this.state.email.split('@')[1];\n\t\t}\n\t\treturn '';\n\t}\n\tconstructor(public service: RegistrationService, public pagerService: PagerService, private readonly registrationUtilService: RegistrationUtilService, private readonly sharedUtilService: SharedUtilService,\n\t\tprivate readonly analyticsService: AnalyticsService) {}\n\n\tngOnInit()\n\t{\n\t\tthis.service.verifyDomainClaimed(this.userDomain);\n\t\tthis.service.getAdditionalLocationList();\n\t\tthis.service.getBusinessRegistrationFlowSubmitModalLabels();\n\t\tthis.service.getBusinessRegistrationUploadListModalLabels();\n\t\tthis.setPage(1);\n\t\tconst analyticsData: AnalyticsDataLayer = {\n\t\t\tevent: 'pageView',\n\t\t\tpage: {\n\t\t\t\tname: 'Complete your Profile'\n\t\t\t}\n\t\t};\n\t\tthis.analyticsService.trackRegistrationByEvent(analyticsData, this.state.email);\n\t}\n\n\tsetAll(completed: boolean) \n\t{\n\t\tthis.service.checkAll = completed;\n\t\tthis.allSelected = completed;\n\t\tthis.state.additionalLocationGrid.forEach(t => (t.checked = completed));\n\t\tif(completed)\n\t\t\tthis.selectedGridData = [...this.state.additionalLocationGrid];\n\t\telse\n\t\t\tthis.selectedGridData = [];\n\t}\n\n\tcountOfSelectedRequests() \n\t{\n\t\tconst countOfSelectedRequests = this.selectedGridData.length;\n\t\treturn countOfSelectedRequests;\n\t}\n\tcancelSelection() \n\t{\n\t\tthis.state.additionalLocationGrid.forEach((row) => { row.checked = false; });\n\t\tthis.allSelected = false;\n\t\tthis.service.checkAll = false;\n\t\tthis.selectedGridData = [];\n\t}\n\tpartiallySelected(): boolean \n\t{\n\t\treturn this.state.additionalLocationGrid.filter(t => t.checked).length > 0 && !this.allSelected;\n\t}\n\tupdateAllSelected() \n\t{\n\t\tthis.selectedGridData = [];\n\t\tthis.allSelected = this.state.additionalLocationGrid.every(row => row.checked);\n\t\tif(this.allSelected)\n\t\t{\n\t\t\tthis.service.checkAll = true;\n\t\t}\n\t\tthis.state.additionalLocationGrid.forEach(ele =>\n\t\t{\n\t\t\tif(ele.checked)\n\t\t\t\tthis.selectedGridData.push(ele);\n\t\t});\n\t}\n\tsetPage(e: number) \n\t{\n\t\tthis.pager.totalPages = Math.ceil(this.state.additionalLocationGrid.length / 50);\n\t\tthis.pageNumber = e;\n\t\tif (e < 1 || e > this.pager.totalPages) \n\t\t{\n\t\t\treturn;\n\t\t}\n\t\telse \n\t\t{\n\t\t\tthis.pager.currentPage = e;\n\t\t}\n\n\t\tthis.currentPage = e;\n\t\tthis.pager = this.pagerService.getPager(this.state.additionalLocationGrid.length, e, 50);\n\t}\n\tsubmitAdditionalLocation(proceedWithoutLocation: boolean = false)\n\t{\n\t\tif(this.isLocationSelected(proceedWithoutLocation))\n\t\t{\n\t\t\tconst selectedLocationGrids:string[] = this.registrationUtilService.getLocationsByGrids(this.selectedGridData);\n\t\t\tthis.service.submitAdditionalLocation(selectedLocationGrids, this.claimDomain);\n\t\t\treturn;\n\t\t}\n\t\tif(this.service.isUploadSuccess)\n\t\t{\n\t\t\tthis.service.submitAdditionalLocation([], this.claimDomain);\n\t\t\treturn;\n\t\t}\n\t\tthis.openModalLocationNotSelected();\n\t}\n\tisLocationSelected(proceedWithoutLocation: boolean)\n\t{\n\t\treturn (this.state.additionalLocationGrid.length === 0 || (this.state.additionalLocationGrid.length > 0 && this.selectedGridData.length > 0)) || proceedWithoutLocation;\n\t}\n\topenModalLocationNotSelected()\n\t{\n\t\tthis.businessRegistrationFlowSubmitModalState.hidden = false;\n\t\tthis.businessRegistrationFlowSubmitModalState.label = this.state.businessRegistrationFlowSubmitModalLabels.heading;\n\t}\n\tconfirmRemovalModalEvent(event: ModalEvent)\n\t{\n\t\tif(event.cta.id === ModalButtonId.cancel)\n\t\t{\n\t\t\tthis.businessRegistrationFlowSubmitModalState.hidden = false;\n\t\t\tthis.confirmSubmit.closePopup();\n\t\t\tthis.businessRegistrationFlowSubmitModalState.hidden = true;\n\t\t}\n\t\tif (event.cta.id === ModalButtonId.proceed)\n\t\t{\n\t\t\tthis.confirmSubmit.closePopup();\n\t\t\tthis.businessRegistrationFlowSubmitModalState.hidden = true;\n\t\t\tthis.sharedUtilService.hideModalBackdrop();\n\t\t\tthis.submitAdditionalLocation(true);\n\t\t}\n\t}\n\tuploadListLocation()\n\t{\n\t\tthis.openUploadModal();\n\t}\n\topenUploadModal()\n\t{\n\t\tthis.state.uploadFileSection.download.errorMessage='';\n\t\tthis.service.downloadTemplateError = false;\n\t\tthis.state.additionalLocationGrid.forEach(t => (t.checked = false));\n\t\tthis.allSelected = false;\n\t\tthis.service.checkAll = false;\n\t\tthis.selectedGridData = [];\n\t\tthis.businessRegistrationUploadListModalState.hidden = false;\n\t\tthis.businessRegistrationUploadListModalState.label = this.state.uploadFileSection.heading;\n\t\tthis.businessRegistrationUploadListModalState.buttons[0].label=this.state.uploadFileSection.cancel;\n\t\tthis.businessRegistrationUploadListModalState.buttons[1].label=this.state.uploadFileSection.upload;\n\t\tthis.businessRegistrationUploadListModalState.buttons[2].hidden = true;\n\t\tthis.businessRegistrationUploadListModalState.buttons[1].disabled = true;\n\t\tthis.analyticsService.trackRegistrationByEvent({\n \t\tevent: 'Upload Locations',\n \t\tlink: {\n \t\t\tname: 'Upload Locations'\n \t\t}\n \t}, this.state.email);\n\t}\n\tcloseModalUpload(event? : ModalEvent)\n\t{\n\t\tthis.service.resetFileStateModel();\n\t\tthis.businessRegistrationUploadListModalState.buttons[0].disabled = false;\n\t\tthis.businessRegistrationUploadListModalState.buttons[0].hidden = false;\n\t\tthis.businessRegistrationUploadListModalState.buttons[1].hidden = false;\n\t\tthis.businessRegistrationUploadListModalState.buttons[1].disabled = true;\n\t\tthis.businessRegistrationUploadListModalState.buttons[0].label = this.state.uploadFileSection.cancel;\n\t\tthis.businessRegistrationUploadListModalState.buttons[0].cssClass = CssClass.btnSecondary;\n\t\tthis.businessRegistrationUploadListModalState.hidden = true;\n\t\tif(this.fileUploadComponent)\n\t\t\tthis.fileUploadComponent.files = [];\n\t\tif(event?.cta.id !== ModalButtonId.close)\n\t\t{\n\t\t\tthis.analyticsService.trackRegistrationByEvent({\n\t\t\t\tevent: 'Upload Cancel',\n\t\t\t\tlink: {\n\t\t\t\t\tname: 'Upload Cancel'\n\t\t\t\t}\n\t\t\t}, this.state.email);\n\t\t}\n\t\tthis.sharedUtilService.hideModalBackdrop();\t\n\t}\n\tconfirmUserListModalEvent(event: ModalEvent)\n\t{\n\t\tconst btnIndex = event.state.buttons.findIndex((cta: ButtonState) => cta.label === event.cta.label);\n\t\tif (btnIndex === 1)\n\t\t{\n\t\t\tif(this.fileUploadComponent)\n\t\t\t\tthis.uploadFileServerValidation(this.fileUploadComponent.files[0]);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.businessRegistrationUploadListModalState.hidden = false;\n\t\t\tthis.businessRegistrationUploadListModalState.hidden = true;\n\t\t\tthis.closeModalUpload(event);\n\t\t\tthis.sharedUtilService.hideModalBackdrop();\n\t\t}\n\t}\n\tdownloadLocationTemplate()\n\t{\n\t\tthis.service.getBusinessRegistrationLocationDownload();\n\t}\n\tuploadFileServerValidation(item: File)\n\t{\n\t\tthis.service.checkServerValidationUploadFile(item);\n\t}\n\treplaceFileEventEmitter()\n\t{\n\t\tthis.businessRegistrationUploadListModalState.buttons[0].disabled = false;\n\t\tthis.businessRegistrationUploadListModalState.buttons[1].hidden = false;\n\t\tthis.businessRegistrationUploadListModalState.buttons[1].disabled = true;\n\t\tif(this.fileUploadComponent)\n\t\t\tthis.fileUploadComponent.files = [];\n\t}\n\tfileValidationCheck(item: File)\n\t{\n\t\tconst fileNameArr = item.name.split('.');\n \tfileNameArr.pop();\n \tconst fileName = fileNameArr.join('.');\n\t\tif(fileNameArr.length !== 1 || fileName.trim().length === 0 || fileName.includes('/') || /\\\\/.exec(fileName) || item.name.split('.').pop()!=='xlsx') \n\t\t{\n\t\t\tthis.service.uploadFileState.errorHeading = ErrorMessageHeading.uploadFailed;\n\t\t\tthis.service.uploadFileState.errorSubHeading = ErrorMessageSubHeading.wrongFormat;\n\t\t\tthis.emptyUploadFilesArray();\n\t\t\tthis.analyticsService.trackRegistrationByEvent({\n\t\t\t\tevent: 'Upload Error',\n\t\t\t\terror: {\n\t\t\t\t\tmessage: ErrorMessageSubHeading.wrongFormat\n\t\t\t\t}\n\t\t\t}, this.state.email);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.checkOtherFileValidation(item);\n\t\t}\n\t}\n\tcheckOtherFileValidation(item: File)\n\t{\n\t\tconst fileSize = Math.round((item.size / 1024));\n\t\tif(fileSize > 102400 || fileSize < 9.58) \n\t\t{\n\t\t\tthis.service.uploadFileState.errorHeading = ErrorMessageHeading.uploadFailed;\n\t\t\tthis.service.uploadFileState.errorSubHeading = ErrorMessageSubHeading.incorrectSize;\n\t\t\tthis.emptyUploadFilesArray();\n\t\t\tthis.analyticsService.trackRegistrationByEvent({\n\t\t\t\tevent: 'Upload Error',\n\t\t\t\terror: {\n\t\t\t\t\tmessage: ErrorMessageSubHeading.incorrectSize\n\t\t\t\t}\n\t\t\t}, this.state.email);\n\t\t}\n\t\telse \n\t\t{\n\t\t\tif(this.fileUploadComponent)\n\t\t\t\tthis.fileUploadComponent.files[0] = item;\n\t\t\tthis.businessRegistrationUploadListModalState.buttons[1].disabled = false;\n\t\t\tthis.businessRegistrationUploadListModalState.buttons[1].hidden = false;\n\t\t\tthis.service.uploadFileState.isSuccessClient = true;\n\t\t\tthis.service.uploadFileState.isSuccessServer = false;\n\t\t}\n\t}\n\temptyUploadFilesArray()\n\t{\n\t\tthis.businessRegistrationUploadListModalState.buttons[1].hidden = true;\n\t\tthis.service.uploadFileState.isError = true;\n\t\tthis.service.uploadFileState.isSuccessClient = false;\n\t\tthis.service.uploadFileState.isSuccessServer = false;\n\t\tif(this.fileUploadComponent)\n\t\t\tthis.fileUploadComponent.files = [];\n\t}\n\t\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RegistrationComponent } from './registration.component';\nimport { RegistrationService } from './registration.service';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { KngLoaderModule, ModalModule, KngButtonModule, KngFooterModule } from 'kinetic-angular';\nimport { AnalyticsModule } from '../../services/analytics/analytics.module';\nimport { MatRadioModule } from '@angular/material/radio';\nimport{ SafeHtmlPipeModule } from '../../../app/pipes/safehtml/safehtml.pipe.module';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { RegistrationProfileCompanyInformationComponent } from './sub-modules/registration-profile-company-information/registration-profile-company-information.component';\nimport { RegistrationAccountTypeComponent } from './sub-modules/registration-account-type/registration-account-type.component';\nimport { RegistrationTermsAndConditionsComponent } from './sub-modules/registration-terms-and-conditions/registration-terms-and-conditions.component';\nimport { RegistrationAdditionalLocationsComponent } from './sub-modules/registration-additional-locations/registration-additional-locations.component';\nimport { NgxPaginationModule } from 'ngx-pagination';\nimport { KngUploadFileModule } from 'projects/kinetic-angular/src/lib/components/upload-file';\n\n@NgModule({\n\tdeclarations: [ RegistrationComponent, RegistrationProfileCompanyInformationComponent, RegistrationAccountTypeComponent, RegistrationTermsAndConditionsComponent, RegistrationAdditionalLocationsComponent ],\n\timports: [\n\t\tCommonModule,\n\t\tKngFooterModule,\n\t\tKngButtonModule,\n\t\tMatSelectModule,\n\t\tMatIconModule,\n\t\tReactiveFormsModule,\n\t\tModalModule,\n\t\tKngLoaderModule,\n\t\tAnalyticsModule,\n\t\tMatRadioModule,\n\t\tSafeHtmlPipeModule,\n\t\tMatCheckboxModule,\n\t\tFormsModule,\n\t\tNgxPaginationModule,\n\t\tKngUploadFileModule\n\t],\n\texports: [RegistrationComponent],\n\tproviders: [RegistrationService]\n})\nexport class RegistrationModule {}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { IdleUserTimes } from '../../services/shared/shared-enums';\n\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class IdleUserService \n{\n\tpublic timeoutId: any;\n\tpublic countdownId: any;\n\tpublic countdownValue: number = 0;\n\n\tuserInactive: BehaviorSubject = new BehaviorSubject(false);\n\n\tconstructor() \n\t{\n\t\tthis.reset();\n\t\tthis.initListener();\n\t}\n\n\tinitListener() \n\t{\n\t\twindow.addEventListener('mousemove', () => this.reset());\n\t\twindow.addEventListener('click', () => this.reset());\n\t\twindow.addEventListener('keypress', () => this.reset());\n\t\twindow.addEventListener('DOMMouseScroll', () => this.reset());\n\t\twindow.addEventListener('mousewheel', () => this.reset());\n\t\twindow.addEventListener('touchmove', () => this.reset());\n\t\twindow.addEventListener('MSPointerMove', () => this.reset());\n\t}\n\n\treset() \n\t{\n\t\tclearTimeout(this.timeoutId);\n\t\tclearTimeout(this.countdownId);\n\t\tthis.startIdleTimer();\n\t\tthis.userInactive.next(false);\n\n\t}\n\n\tstartIdleTimer() \n\t{\n\t\tthis.timeoutId = setTimeout(() => \n\t\t{\n\t\t\tthis.startCountdown();\n\t\t}, IdleUserTimes.idleTime);\n\t}\n\n\tstartCountdown() \n\t{\n\t\tthis.countdownValue = IdleUserTimes.countdownTime / 1000;\n\t\tthis.countdownId = setInterval(() => \n\t\t{\n\t\t\tthis.countdownValue--;\n\t\t\tif (this.countdownValue <= 0) \n\t\t\t{\n\t\t\t\tclearInterval(this.countdownId);\n\t\t\t\tthis.userInactive.next(true);\n\t\t\t}\n\t\t}, 1000);\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { KngBannerFactory } from './kng-banner.factory';\nimport { KngBannerState } from './definitions';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class KngBannerService \n{\n\tprivate state$: BehaviorSubject =\n\t\tnew BehaviorSubject(KngBannerFactory.buildState());\n\tget state(): KngBannerState \n\t{\n\t\treturn this.state$.value;\n\t}\n\tget stateChanged(): Observable \n\t{\n\t\treturn this.state$.asObservable();\n\t}\n\n\tpublic updateState(value: KngBannerState): void \n\t{\n\t\tthis.state$.next(value);\n\t}\n}\n","import { KngBannerState } from './definitions';\nexport class KngBannerFactory \n{\n\tpublic static buildState(): KngBannerState \n\t{\n\t\treturn {\n\t\t\tbannerIcon: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t},\n\t\t\tbannerMessage: '',\n\t\t\ttokenData: [\n\t\t\t\t{\n\t\t\t\t\tlabel: '',\n\t\t\t\t\tvalue: '',\n\t\t\t\t\thref: ''\n\t\t\t\t}\n\t\t\t],\n\t\t\tcloseIcon: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t},\n\t\t\topen: false,\n\t\t\tstartDate: new Date('2005-12-31T23:59:59.999Z'),\n\t\t\tendDate: new Date('2050-12-31T23:59:59.999Z')\n\t\t};\n\t}\n}\n","\n
\n
\n
\n \"{{\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n\n 0\">\n \n
\n
\n
\n \"action\"\n
\n
\n
\n \n
\n
\n
\n","import {\n\tComponent,\n\tInput,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tEventEmitter\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { KngBanner, KngBannerState } from './definitions';\nimport { KngBannerService } from './kng-banner.service';\n\n@Component({\n\tselector: 'kng-banner',\n\ttemplateUrl: './template/kng-banner.component.html',\n\tstyleUrls: ['./template/kng-banner.component.scss']\n})\nexport class KngBannerComponent implements KngBanner, OnInit, OnDestroy \n{\n\tprivate subscriptions: Subscription = new Subscription();\n\n @Input() set state(value: KngBannerState) \n\t{\n\t\tthis.service.updateState(value);\n\t}\n get state(): KngBannerState \n {\n \treturn this.service.state;\n }\n\n @Output() stateChanged: EventEmitter = new EventEmitter();\n @Output() bannerClickEvent: EventEmitter = new EventEmitter();\n @Output() bannerClosed: EventEmitter = new EventEmitter();\n @Output() alertBannerClosed: EventEmitter = new EventEmitter();\n constructor(private service: KngBannerService) {}\n\n ngOnInit(): void \n {\n \tthis.initSubscriptions();\n }\n ngOnDestroy(): void \n {\n \tthis.destroySubscriptions();\n }\n\n private initSubscriptions(): void \n {\n \tconst stateChangeSubs: Subscription = this.service.stateChanged.subscribe(\n \t\t(next: KngBannerState) => this.stateChanged.emit(next)\n \t);\n \tthis.subscriptions.add(stateChangeSubs);\n }\n private destroySubscriptions(): void \n {\n \tthis.subscriptions.unsubscribe();\n }\n\n public hideBanner() \n {\n \tthis.state.open = false;\n }\n bannerClickHandler(event: MouseEvent | TouchEvent)\n {\n \tthis.bannerClickEvent.emit(event);\n }\n headerBannerCloseHandler(index: number)\n {\n \tthis.bannerClosed.emit(index);\n \tthis.alertBannerClosed.emit(true);\n }\n handleBannerStyle(index: number)\n {\n \tconst result= this.state.alertBanner?.findIndex(val => val.display.toLocaleLowerCase() === 'true');\n \tif (result !== -1)\n \t\treturn index === result;\n \telse\n \t\treturn false;\n }\n}\n","\n\n\n
\n
    1\" tabindex=\"-1\">\n \n
  1. \n \n {{ breadcrumb.label }}\n \n \n {{ breadcrumb.label }}\n \n
  2. \n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n\n
\n\n
\n
\n \n
\n {{service.termsAndCondition.tooltip?.content}}
\n
\n
\n
\n

{{service.termsAndConditionAEMlabels.updatedTerms.alertNote}}

\n
\n

\n
\n
\n
\n
\n\n
\n\n
\n \n
\n {{service.policyState.tooltip?.content}}
\n
\n
\n
\n

{{service.policyAEMlabels.updatedPrivacy.alertNote}}

\n
\n

\n
\n
\n
\n\n\n
\n

\n {{confirmLeavePagestate.headingSub}}\n

\n
\n
\n
\n \n
\n \n

\n {{ service.businessAccountRegistrationSuccess.mainText }}\n

\n

\n {{ service.businessAccountRegistrationSuccess.subText }}

\n
\n
\n \n
\n

\n {{customerState.endSessionNote}}\n

\n
\n
\n\n\n
\n

\n {{customerState.inativityMessage}}\n

\n

\n {{customerState.inactivityConfirmation}}\n

\n
\n
\n
\n","/* eslint-disable no-comments/disallowComments */\n/* eslint-disable complexity */\n/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, AfterViewInit, ViewChild, OnDestroy, OnInit, Renderer2, Input, Output, EventEmitter, ElementRef, HostListener, AfterContentChecked } from '@angular/core';\nimport { NavigationCancel, NavigationEnd, NavigationError, NavigationStart, Router, Event, ActivatedRoute } from '@angular/router';\nimport { CssClass, KngHeaderNavOptionSelectOn, KngShellComponent, ModalEvent, ModalState, KngLoaderState, KngShellState, ModalComponent } from 'kinetic-angular';\nimport { catchError, distinctUntilChanged, filter, forkJoin, map, Observable, of, Subscription } from 'rxjs';\nimport { browserRefresh } from '../../app.component';\nimport { AuthenticationService } from '../../services/authentication/authentication.service';\nimport { BreadCrumb, ConfirmLeavePageButtons, Icons, ModalButtonId, serviceCampaignClass } from '../../services/shared/shared-enums';\nimport { ShellService } from './shell.service';\nimport { CustomerState, IBreadCrumb, SwitchAccountPayload } from '../shell/shell.interface';\nimport { LocalStorageService } from '../../services/local-storage/local-storage.service';\nimport { SharedService } from '../../services/shared/shared.service';\nimport { SharedApiService } from '../../services/shared/shared-api-call.service';\nimport { ShellFactory } from './shell.factory';\nimport { get as lodashGet } from 'lodash';\nimport { AnalyticsService } from '../../services/analytics/analytics.service';\nimport { AuthState, ProfileLocation, TMHCorporateAdminAuthState } from '../auth';\nimport { LoggerService } from '../../services/logger/logger.service';\nimport { SharedUtilService } from '../../services/shared/shared-util.service';\nimport { LeaveConfirmModalState } from '../../services/shared/shared-interface';\nimport { ConfirmLeavePageService } from '../../leave-page-confirm-popup/leave-page-confirm-popup.service';\nimport { Location } from 'projects/kinetic-angular/src/lib/components/nav/header-nav/definitions/kng-header-nav.interface';\nimport { KngBannerState } from 'projects/kinetic-angular/src/lib/components/banner/definitions';\nimport { accountManagerRoleId } from '../../services/shared/shared-constants';\nimport { IdleUserService } from './idle-user.service';\n@Component({\n\tselector: 'tmhna-portal-shell',\n\ttemplateUrl: './template/shell.component.html',\n\tstyleUrls: ['./template/shell.component.scss']\n})\nexport class ShellComponent implements AfterViewInit, AfterContentChecked, OnDestroy, OnInit \n{\n\tpublic breadcrumbs!: IBreadCrumb[];\n\tprivate readonly subscription$: Subscription = new Subscription();\n\tstate!: KngShellState;\n\ttnc: boolean = false;\n\tpolicyFlag: boolean = false;\n\tisSignOutClicked: boolean = false;\n\tprivate readonly subscriptions: Subscription = new Subscription();\n\tshellBannerAdded: boolean = false;\n\tportalHeaderHeight: number = 0;\n\tsessionHeaderHeight: number = 0;\n\theaderAlertHeight: number = 0;\n\tcheckBoxDisabledFlag: boolean = true;\n\tcheckBoxDisabledFlagForPrivacy: boolean = true;\n\tget customerState(): CustomerState\n\t{\n\t\treturn this.service.customerSupportData;\n\t}\n\tget stateObservable$(): Observable \n\t{\n\t\treturn this.service.stateObservable$;\n\t}\n\tloaderState: KngLoaderState = {\n\t\timagePath: Icons.loaderWhite\n\t};\n\tshowTermsAndConditionsTooltip = false;\n\tshowPrivacyPolicyTooltip = false;\n\tswitchAccountPayload: SwitchAccountPayload = { selectedLocation: '' };\n\t@Input() set confirmLeavePagestate(value: LeaveConfirmModalState) \n\t{\n\t\tthis.leavePageService.updateState(value);\n\t}\n\tget confirmLeavePagestate(): LeaveConfirmModalState \n\t{\n\t\treturn this.leavePageService.state;\n\t}\n\tget leaveConfirmModalState(): ModalState \n\t{\n\t\treturn this.leavePageService.leaveConfirmModalState;\n\t}\n\tget endSessionModalState(): ModalState\n\t{\n\t\treturn this.service.endSessionModalState;\n\t}\n\tget inactiveSessionModalState(): ModalState\n\t{\n\t\treturn this.service.inactiveSessionModalState;\n\t}\n\tget bannerState(): KngBannerState\n\t{\n\t\treturn this.service.bannerState;\n\t}\n\t@Output() leavePagestateChanged: EventEmitter = new EventEmitter();\n\t@ViewChild('confirmRemoval') confirmLeavePage!: ModalComponent;\n\t@ViewChild('confirmEndSession') confirmEndSession!: ModalComponent;\n\t@ViewChild('inactiveSession') inactiveSession!: ModalComponent;\n\ttermsChecked: boolean = false;\n\tprivacyChecked: boolean = false;\n\t@ViewChild('terms') terms!: HTMLDivElement;\n\t@ViewChild('kngShellComponent') shell!: KngShellComponent;\n\t@ViewChild('confirmTerms') confirmTerms!: ModalComponent;\n\t@ViewChild('confirmPolicy') confirmPolicy!: ModalComponent;\n\tmodalTerms: ModalState = ShellFactory.buildTnC();\n\tmodalPolicyState: ModalState = ShellFactory.buildPolicy();\n\tconstructor(private readonly authService: AuthenticationService, private readonly localStorageService: LocalStorageService, private readonly sharedService: SharedService, private readonly sharedApiService: SharedApiService, public service: ShellService, private readonly router: Router, private readonly activatedRoute: ActivatedRoute, private readonly analyticsService: AnalyticsService, private readonly loggerService: LoggerService, public sharedUtilService: SharedUtilService, private readonly leavePageService: ConfirmLeavePageService, public readonly renderer2: Renderer2, public elementRef: ElementRef, private readonly idleUserService: IdleUserService) \n\t{\n\t\tthis.breadcrumbs = this.buildBreadCrumb(this.activatedRoute.root);\n\t}\n\tasync ngOnInit() \n\t{\t\n\t\tif(this.sharedUtilService.isTmhCustomerSupportRole || this.sharedUtilService.isTmhCorporateAdmin)\n\t\t{\n\t\t\tthis.sharedUtilService.isCustomerSupportSession$.subscribe((res) =>\n\t\t\t{\n\t\t\t\tthis.handleRoleChange(res);\n\t\t\t\tthis.service.getCustomerAemLabels();\n\t\t\t\tif(res)\n\t\t\t\t{\n\t\t\t\t\tthis.idleUserService.userInactive.subscribe(isIdle => \n\t\t\t\t\t{\n\t\t\t\t\t\tif(isIdle && this.sharedUtilService.isCustomerSupportSession)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.inactiveSessionModalState.hidden = !isIdle ;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.handleRoleChange(false);\n\t\t}\n\t}\n\n\tasync handleRoleChange(isTmhSupportRole: boolean = false)\n\t{\n\t\tthis.service.loading = true;\n\t\tthis.checkIfNewBusinessAccount();\n\t\tthis.service.stateObservable$.subscribe((res) => { this.state = res; });\n\t\tawait this.sharedUtilService.isLoggedInUserPresent();\n\t\tconst hideServiceHistory: boolean = await this.service.getServiceCount();\n\t\tconst miniMumHeader = !isTmhSupportRole;\n\t\tthis.service.state.header = miniMumHeader ? ShellFactory.buildMinimumAccessHaeder() : ShellFactory.buildState().header;\n\t\tif(this.sharedUtilService.isAccountManagerCredential)\n\t\t{\n\t\t\tthis.service.getAdminLocationList();\n\t\t}\n\t\tthis.service.getHeaderAlertBanner();\n\t\tthis.service.getHeaderNavState(hideServiceHistory);\n\t\tthis.service.getFooterData();\n\t\tthis.leavePageService.getConfirmLeavePageAemData();\n\t\tthis.router.events.pipe(filter((event: Event) => event instanceof NavigationEnd), distinctUntilChanged()\n\t\t).subscribe(() => \n\t\t{\n\t\t\tthis.breadcrumbs = this.buildBreadCrumb(this.activatedRoute.root);\n\t\t});\n\t\tthis.service.shouldLoadPage$.subscribe((res: boolean) => \n\t\t{\n\t\t\tthis.service.loading = res;\n\t\t});\n\t\tthis.checkForUnsavedChanges();\n\t\tif (browserRefresh) \n\t\t\tthis.service.loading = true;\n\t\tthis.detectNavigationChange();\n\t\tconst isSupportFlag = ( this.sharedUtilService.isTmhCorporateAdmin ||this.sharedUtilService.isTmhCustomerSupportRole) && !isTmhSupportRole;\n\t\tisSupportFlag ? this.handleTmhCorporateAdminProfileDetails(isSupportFlag) : this.handleProfileDetails();\n\t\tthis.sharedApiService.isUnreadNotificationObservable$.subscribe(unread => { this.updateNotificationIcon(unread); });\n\t\tthis.service.adminLocationList$.subscribe(list => { this.updateLocationList(list); });\n\t\tthis.sharedService.userNameObservable$.subscribe(userName => \n\t\t{\n\t\t\tconst filteredHeader = this.state.header.filter((elem) => elem.cssClass === CssClass.global);\n\t\t\tif (filteredHeader.length > 0 && filteredHeader[0].menu[4]) \n\t\t\t\tfilteredHeader[0].menu[4].label = userName;\n\t\t\tthis.service.customerSupportData.username = userName;\n\t\t});\n\t\tconst ele: HTMLElement = this.renderer2.selectRootElement('html', true);\n\t\tconst value = ele.getAttribute('lang');\n\t\tif (value) \n\t\t\tthis.localStorageService.setLanguage(value);\n\t\telse \n\t\t\tthis.localStorageService.setLanguage('en');\n\t\tthis.initSubscriptions();\n\t\tthis.observeDomChanges();\n\t}\n\tngAfterContentChecked(): void \n\t{\n\t\tthis.adjustHeaderPosition();\n\t}\n\tobserveDomChanges()\n\t{\n\t\tconst targetNode = document.body;\n\t\tconst observer = new MutationObserver((mutations) => \n\t\t{\n\t\t\tmutations.forEach((mutation) => \n\t\t\t{\n\t\t\t\tif (mutation.type === 'childList') \n\t\t\t\t{\n\t\t\t\t\tmutation.addedNodes.forEach((addedNode) => \n\t\t\t\t\t{\n\t\t\t\t\t\tif (addedNode.nodeType === 1 && (addedNode as HTMLElement).classList.contains('kng-shell__banner')) \n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.shellBannerAdded = true;\n\t\t\t\t\t\t\tthis.adjustHeaderPosition();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tmutation.removedNodes.forEach((removedNode) =>\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( removedNode.nodeType === 1 && (removedNode as HTMLElement).classList.contains('kng-shell__banner')) \n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.shellBannerAdded = false;\n\t\t\t\t\t\t \tthis.adjustHeaderPosition();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tconst config = { childList: true, subtree: true };\n\t\tobserver.observe(targetNode, config);\n\t}\n\t@HostListener('window:resize', ['$event'])\n\tonResize(event: Event): void \n\t{\n\t\tthis.checkIfAdjustPosition(event);\n\t}\n\talertBannerClosed(event:boolean)\n\t{\n\t\tthis.checkIfAdjustPosition(event);\n\t}\n\tcheckIfAdjustPosition(event: Event | boolean)\n\t{\n\t\tif(event)\n\t\t{\n\t\t\tthis.adjustHeaderPosition();\n\t\t}\n\t}\n\tadjustHeaderPosition()\n\t{\n\t\tconst headerAlert = this.elementRef.nativeElement.querySelector('#header-alert-banner');\n\t\tconst sessionBanner = this.elementRef.nativeElement.querySelector('#session-header');\n\t\tconst portalHeader = this.elementRef.nativeElement.querySelector('#portal-header');\n\t\tthis.headerAlertHeight = headerAlert?.clientHeight;\n\t\tthis.portalHeaderHeight = portalHeader?.clientHeight;\n\t\tthis.sessionHeaderHeight = this.customerState.hidden ? 0 : sessionBanner?.clientHeight;\n\t\n\t\tif(portalHeader) this.renderer2.setStyle(portalHeader, 'top', `${this.headerAlertHeight + this.sessionHeaderHeight}px`);\n\t\tif(sessionBanner) this.renderer2.setStyle(headerAlert, 'top', `${this.sessionHeaderHeight}px`);\n\t\tthis.adjustMainContentMargin();\n\t}\n\tadjustMainContentMargin()\n\t{\n\t\tconst mainContent = this.elementRef.nativeElement.querySelector('#mainContent');\n\t\tif(this.shellBannerAdded)\n\t\t{\n\t\t\tconst banner = this.elementRef.nativeElement.querySelector('#bannerNotAlert');\n\t\t\tif(banner)this.renderer2.setStyle(banner, 'margin-top', `${this.headerAlertHeight + this.portalHeaderHeight + this.sessionHeaderHeight}px`);\n\t\t\tif(mainContent) this.renderer2.setStyle(mainContent, 'margin-top', '0px');\n\t\t}\n\t\telse if(!this.shellBannerAdded && mainContent)\n\t\t{\n\t\t\tthis.renderer2.setStyle(mainContent, 'margin-top', `${this.headerAlertHeight + this.portalHeaderHeight + this.sessionHeaderHeight}px`);\n\t\t}\n\t}\n\tinitSubscriptions() \n\t{\n\t\tconst leavePageStateChangeSubs: Subscription = this.leavePageService.stateChanged.subscribe((next: LeaveConfirmModalState) => this.leavePagestateChanged.emit(next));\n\t\tthis.subscriptions.add(leavePageStateChangeSubs);\n\t}\n\tupdateNotificationIcon(unread: boolean) \n\t{\n\t\tthis.state.header.find(header => header.cssClass === CssClass.global)?.menu.forEach(item => \n\t\t{\n\t\t\tif (/notif/i.exec(item.iconPath)) \n\t\t\t{\n\t\t\t\titem.iconPath = unread ? this.service.unreadNotificationPath.iconPath : this.service.notificationPath.iconPath;\n\t\t\t\titem.altText = unread ? this.service.unreadNotificationPath.altText : this.service.notificationPath.altText;\n\t\t\t}\n\t\t});\n\t}\n\tupdateLocationList(list: Location[]) \n\t{\n\t\tthis.state.header.find(header => header.cssClass === CssClass.global)?.menu?.forEach(item => \n\t\t{\n\t\t\tif (/location/i.exec(item.iconPath)) \n\t\t\t{\n\t\t\t\titem.locations = list;\n\t\t\t}\n\t\t});\n\t\tthis.state.header.find(header => header.cssClass === CssClass.mobile)?.menu?.forEach(item => \n\t\t{\n\t\t\tif (/ACCOUNT MANAGER/i.exec(item.label)) \n\t\t\t{\n\t\t\t\titem.locations = list;\n\t\t\t}\n\t\t});\n\t}\n\tcheckForUnsavedChanges() \n\t{\n\t\tthis.service.isDirty$.subscribe((res: boolean) => \n\t\t{\n\t\t\tif (!res) \n\t\t\t\tthis.leaveConfirmModalState.hidden = true;\n\t\t\telse \n\t\t\t\tthis.leaveConfirmModalState.hidden = false;\n\t\t});\n\t}\n\thandleProfileDetails() \n\t{\n\t\tforkJoin([ this.sharedApiService.getLoggedInUserDetails().pipe(this.handleRequest().bind(this)), this.sharedApiService.getLoggedInUserLocations().pipe(this.handleRequest().bind(this)) ]).subscribe({\n\t\t\tnext: (res) => \n\t\t\t{\n\t\t\t\tif (res[0] && res[1]) \n\t\t\t\t{\n\t\t\t\t\tthis.service.loading = false;\n\t\t\t\t\tconst user: AuthState = (res[0]?.data);\n\t\t\t\t\tthis.sharedApiService.mapUserSession(user);\n\t\t\t\t\tconst locations: ProfileLocation = (res[1]?.data);\n\t\t\t\t\tthis.localStorageService.setLoggedInUserLocation(this.localStorageService.striginifyJSON(locations));\n\t\t\t\t}\n\t\t\t\telse \n\t\t\t\t\tthis.service.loading = false;\n\t\t\t\tthis.handleBrowserRefresh();\n\t\t\t}\n\t\t});\n\t}\n\thandleTmhCorporateAdminProfileDetails(isCustomerSupport: boolean = false)\t \n\t{\n\t\tif(isCustomerSupport)\n\t\t{\n\t\t\tthis.sharedApiService.getTmhCustomerSupportDetails().pipe(this.handleRequest().bind(this)).subscribe({\n\t\t\t\tnext: (res) => \n\t\t\t\t{\n\t\t\t\t\tif (res) \n\t\t\t\t\t{\n\t\t\t\t\t\tthis.service.loading = false;\n\t\t\t\t\t\tconst user: TMHCorporateAdminAuthState = (res?.data);\n\t\t\t\t\t\tthis.sharedApiService.mapTmhCustomerSupportUserSession(user);\n\t\t\t\t\t}\n\t\t\t\t\telse \n\t\t\t\t\t{\n\t\t\t\t\t\tthis.service.loading = false;\n\t\t\t\t\t}\n\t\t\t\t\tthis.handleBrowserRefresh();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.sharedApiService.getTmhCorporateAdminDetails().pipe(this.handleRequest().bind(this)).subscribe({\n\t\t\t\tnext: (res) => \n\t\t\t\t{\n\t\t\t\t\tif (res) \n\t\t\t\t\t{\n\t\t\t\t\t\tthis.service.loading = false;\n\t\t\t\t\t\tconst user: TMHCorporateAdminAuthState = (res?.data);\n\t\t\t\t\t\tthis.sharedApiService.mapTmhCorporateAdminUserSession(user);\n\t\t\t\t\t}\n\t\t\t\t\telse \n\t\t\t\t\t{\n\t\t\t\t\t\tthis.service.loading = false;\n\t\t\t\t\t}\n\t\t\t\t\tthis.handleBrowserRefresh();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\n\t}\n\thandleBrowserRefresh()\n\t{\n\t\tif (browserRefresh) \n\t\t{\n\t\t\tthis.service.loading = true;\n\t\t\tsetTimeout(() => { this.service.loading = false; }, 1000);\n\t\t}\n\t}\n\thandleRequest() \n\t{\n\t\treturn function (observable: Observable) \n\t\t{\n\t\t\treturn observable.pipe(map((result) => { return result; }), catchError(() => { return of(null); }));\n\t\t};\n\t}\n\tbuildBreadCrumb(route: ActivatedRoute, url: string = '', breadcrumbs: IBreadCrumb[] = []): IBreadCrumb[] \n\t{\n\t\tlet label = route.routeConfig?.data ? route.routeConfig.data['breadcrumb'] : '';\n\t\tconst path = route.routeConfig?.data ? route.routeConfig.path : '';\n\t\tconst nextUrl = path ? `${url}/${path}` : url;\n\t\tthis.activatedRoute.queryParams.subscribe((params) => { label = this.sharedService.checkRouteParams(label, params); });\n\t\tconst breadcrumb: IBreadCrumb = { label: label, url: nextUrl };\n\t\tconst newBreadcrumbs = breadcrumb.label ? [ ...breadcrumbs, breadcrumb ] : [...breadcrumbs];\n\t\tif (route.firstChild) \n\t\t\treturn this.buildBreadCrumb(route.firstChild, nextUrl, newBreadcrumbs);\n\t\treturn newBreadcrumbs;\n\t}\n\tngAfterViewInit(): void \n\t{\n\t\tconst bottomClickEventSubscription: Subscription = this.shell.headerComponent.clickEventBottom.subscribe((event: KngHeaderNavOptionSelectOn) => this.service.changeRoute(event.selection.url));\n\t\tthis.subscription$.add(bottomClickEventSubscription);\n\t}\n\tredirectToSection(event: KngHeaderNavOptionSelectOn) \n\t{\n\t\tconst isCustomerSupport = this.sharedUtilService.isCustomerSupportSession && (event.selection.url.includes('toyotaforklift.com') || event.selection.url.includes('/notification'));\n\t\tif (!(/settings/i.exec(event.selection.iconPath)) && !isCustomerSupport) \n\t\t{\n\t\t\tif (event.selection.url) \n\t\t\t{\n\t\t\t\tthis.sharedService.navigateMethod(this.router, event.selection.url);\n\t\t\t\tthis.detectNavigationChange();\n\t\t\t}\n\t\t}\n\t\tif (/shop/i.exec(event.selection.label)) \n\t\t{\n\t\t\tthis.router.navigate([]).then(() => \n\t\t\t{\n\t\t\t\tthis.sharedUtilService.navigateWithCustomerSupport(event.selection.url);\n\t\t\t}).catch(error => { this.loggerService.error(error); });\n\t\t}\n\t\tif (event.selection.label === 'Sign Out') \n\t\t{\n\t\t\tsetTimeout(() => \n\t\t\t{\n\t\t\t\tthis.isSignOutClicked = true;\n\t\t\t\tif (this.leaveConfirmModalState.hidden) \n\t\t\t\t{\n\t\t\t\t\tthis.roleBasedSignOut();\n\t\t\t\t}\n\t\t\t}, 0);\n\t\t}\n\t}\n\troleBasedSignOut()\n\t{\n\t\tlet adminId = '';\n\t\tthis.sharedService.getLoggedInUserAdminLocationIdObs().subscribe(adminLocID => adminId = adminLocID);\n\t\tif(this.sharedService.getRoleId() === accountManagerRoleId && adminId !== this.sharedService.getDefaultGrid())\n\t\t{\n\t\t\tthis.resetToDefaultAccount();\n\t\t}\n\t\telse if(this.sharedUtilService.isTmhCustomerSupportRole && this.sharedUtilService.isCustomerSupportSession)\n\t\t{\n\t\t\tthis.endCustomerSession();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.logOut();\n\t\t}\n\t}\n\taccountManagerSelectedCompany(location:Location)\n\t{\n\t\tif(location)\n\t\t{\n\t\t\tthis.service.loading = true;\n\t\t\tthis.switchAccountPayload.selectedLocation = location.locationGRID;\n\t\t\tthis.service.switchAccount(this.switchAccountPayload);\n\t\t}\n\t}\n\tdetectNavigationChange() \n\t{\n\t\tthis.router.events.pipe(filter((event: Event) =>\n\t\t\tevent instanceof NavigationStart || event instanceof NavigationEnd ||\n\t\t\tevent instanceof NavigationCancel || event instanceof NavigationError\n\t\t)).subscribe((event: Event) => \n\t\t{\n\t\t\tif (event instanceof NavigationStart) \n\t\t\t{\n\t\t\t\tthis.service.loading = true;\n\t\t\t\tthis.sharedService.scrollToTopOfPage();\n\t\t\t}\n\t\t\telse \n\t\t\t\tsetTimeout(() => { this.service.loading = false; }, 1000);\n\t\t});\n\t}\n\tngOnDestroy(): void \n\t{\n\t\tthis.subscription$.unsubscribe();\n\t\tthis.destroySubscriptions();\n\t}\n\tprivate destroySubscriptions(): void \n\t{\n\t\tthis.subscriptions.unsubscribe();\n\t}\n\trouterLink(id: string) \n\t{\n\t\tif ((id === '/account-settings' && (this.breadcrumbs[1].label === BreadCrumb.addNewDomain || this.breadcrumbs[1].label === BreadCrumb.editDomain))) \n\t\t\tid = '/account-settings/domain';\n\t\tconst newUrl = '/app' + id;\n\t\tthis.sharedService.navigateMethod(this.router, newUrl);\n\t}\n\tgetLocalstorageItems() \n\t{\n\t\tthis.sharedApiService.flagObservable$.subscribe((res) => \n\t\t{\n\t\t\tthis.tnc = res.tnc;\n\t\t\tthis.policyFlag = res.policyFlag;\n\t\t\tif (this.policyFlag && !this.tnc) \n\t\t\t{\n\t\t\t\tthis.service.policyState.hidden = false;\n\t\t\t\tthis.service.getAEMdetailsPolicy();\n\t\t\t\tthis.modalPolicyState.buttons[1].disabled = true;\n\t\t\t}\n\t\t\tif (this.tnc) \n\t\t\t{\n\t\t\t\tthis.service.termsAndCondition.hidden = false;\n\t\t\t\tthis.service.getAEMdetailsTerms();\n\t\t\t\tthis.modalTerms.buttons[1].disabled = true;\n\t\t\t}\n\t\t});\n\t}\n\tconfirmTcEvent(event: ModalEvent) \n\t{\n\t\tif (event.cta.id === ModalButtonId.agree) \n\t\t{\n\t\t\tthis.service.termsAndCondition.hidden = true;\n\t\t\tthis.checkBoxDisabledFlag = true;\n\t\t\tthis.service.submitTnC(this.service.payload);\n\t\t\tif (this.policyFlag === true) \n\t\t\t{\n\t\t\t\tthis.service.policyState.hidden = false;\n\t\t\t\tthis.service.getAEMdetailsPolicy();\n\t\t\t}\n\t\t\tthis.sharedUtilService.hideModalBackdrop();\n\t\t}\n\t\tif (event.cta.id === ModalButtonId.cancel) \n\t\t{\n\t\t\tthis.localStorageService.clearStorage();\n\t\t\tthis.authService.logout()?.catch(error => { this.loggerService.error(error); });\n\t\t}\n\t}\n\tcheckIfTermsAgreed(event: boolean)\n\t{\n\t\tthis.service.termsAndCondition.buttons[1].disabled = !event;\n\t}\n\tcheckIfPrivacyAgreed(event: boolean) \n\t{\n\t\tthis.service.policyState.buttons[1].disabled = !event;\n\t}\n\tconfirmPolicyEvent(event: ModalEvent) \n\t{\n\t\tif (event.cta.id === ModalButtonId.agree) \n\t\t{\n\t\t\tthis.service.policyState.hidden = true;\n\t\t\tthis.service.submitPolicy(this.service.payload);\n\t\t\tthis.closeModal();\n\t\t\tthis.sharedUtilService.hideModalBackdrop();\n\t\t}\n\t\tif (event.cta.id === ModalButtonId.cancel) \n\t\t{\n\t\t\tthis.service.policyState.hidden = true;\n\t\t\tthis.localStorageService.clearStorage();\n\t\t\tthis.authService.logout()?.catch(error => { this.loggerService.error(error); });\n\t\t}\n\t}\n\tpublic closeModal(): void \n\t{\n\t\tthis.service.policyState.hidden = true;\n\t\tthis.service.termsAndCondition.hidden = true;\n\t}\n\tpublic updateApplicationLanguage(selection: string): void \n\t{\n\t\tthis.service.loading = true;\n\t\tsetTimeout(() => { this.service.loading = false; }, 1000);\n\t\tconst translationValues: Map = ShellFactory.buildDefaultTranslationValuesMap();\n\t\tconst selectionId: string | undefined = translationValues.get(selection);\n\t\tif (selectionId === undefined) \n\t\t\tthrow new Error(`Can't translate to \"${selection}\". Supported values are:\\n${JSON.stringify(translationValues)}`);\n\t\tconst panelAfterFirstTranslation: HTMLIFrameElement | null = this.service.getGoogleTranslatePanel(this.renderer2);\n\t\tconst isValidSecondTimeTranslation: boolean = lodashGet(panelAfterFirstTranslation, 'contentWindow.document', undefined) !== undefined;\n\t\tisValidSecondTimeTranslation ? this.service.performSubsequetTranslation(panelAfterFirstTranslation as HTMLIFrameElement, selectionId) :\tthis.service.performFirstTimeTranslation(selectionId, this.renderer2);\n\t\tthis.localStorageService.setLanguage(selectionId);\n\t}\n\tbannerClickHandler(event: MouseEvent | TouchEvent) \n\t{\n\t\tif ((event.target as HTMLInputElement).className === serviceCampaignClass) \n\t\t\tthis.analyticsService.trackByEvent({ event: 'contact dealer', link: { name: 'service campaign banner click' } });\n\t}\n\tconfirmLeaveEvent(event: ModalEvent) \n\t{\n\t\tthis.leaveConfirmModalState.hidden = true;\n\t\tthis.confirmLeavePage?.closePopup();\n\t\tthis.sharedUtilService.hideModalBackdrop();\n\t\tif (event.cta.label.toLocaleLowerCase() === ConfirmLeavePageButtons.stay.toLocaleLowerCase()) \n\t\t{\n\t\t\tthis.isSignOutClicked = false;\n\t\t\tthis.leavePageService.setModalSelectionObservable(false);\n\t\t\tthis.analyticsService.trackByEvent({ event: 'unsaved changes warning', link: { name: 'changes:stay on page' } });\n\t\t}\n\t\telse \n\t\t{\n\t\t\tthis.service.isDirty$.next(false);\n\t\t\tthis.service.shouldLoadPage$.next(true);\n\t\t\tthis.analyticsService.trackByEvent({ event: 'discard changes', link: { name: 'unsaved changes:leave' } });\n\t\t\tthis.leavePageService.setModalSelectionObservable(true);\n\t\t\tif (this.isSignOutClicked) \n\t\t\t{\n\t\t\t\tthis.authService.logout()?.catch(error => { this.loggerService.error(error); });\n\t\t\t\tthis.localStorageService.clearStorage();\n\t\t\t}\n\t\t}\n\t}\n\tcloseModalPopup() \n\t{\n\t\tthis.isSignOutClicked = false;\n\t}\n\tshowTooltip(label: string) \n\t{\n\t\tif (label.toLowerCase() === this.service.termsAndCondition.label.toLowerCase()) \n\t\t\tthis.showTermsAndConditionsTooltip = true;\n\t\tif (label.toLowerCase() === this.service.policyState.label.toLowerCase()) \n\t\t\tthis.showPrivacyPolicyTooltip = true;\n\t}\n\tcheckIfNewBusinessAccount() \n\t{\n\t\tthis.localStorageService.getItems('new_business_account').then((value) => \n\t\t{\n\t\t\tif (value === 'true') \n\t\t\t{\n\t\t\t\tthis.service.getBusinessAccountSuccessLabels();\n\t\t\t\tthis.service.businessAccountRegistrationSuccess.modal.hidden = false;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.getLocalstorageItems();\n\t\t});\n\t}\n\tcloseCongratulatoryModal() \n\t{\n\t\tthis.service.businessAccountRegistrationSuccess.modal.hidden = true;\n\t\tthis.localStorageService.removeItem('new_business_account');\n\t\tthis.sharedUtilService.hideModalBackdrop();\n\t\tthis.getLocalstorageItems();\n\t}\n\theaderBannerClosed(index: number)\n\t{\n\t\tconst alertBanner = this.service.bannerState.alertBanner;\n\t\tif (alertBanner?.[index])\n\t\t{\n\t\t alertBanner[index].display = 'false';\n\t\t \n\t\t}\n\t\tlocalStorage.setItem('headerAlertBanner', JSON.stringify(alertBanner));\n\t\tthis.analyticsService.trackByEvent({\n\t\t\tevent: 'Exit Banner',\n\t\t\tlink: {\n\t\t\t\tname: 'Close Icon'\n\t\t\t}\n\t\t});\n\t}\n\tlogOut()\n\t{\n\t\tthis.authService.logout()?.catch(error => { this.loggerService.error(error); });\n\t\tthis.localStorageService.clearStorage();\n\t}\n\tresetToDefaultAccount()\n\t{\n\t\tthis.service.resetToDefaultAccount().subscribe({\n\t\t\tnext: () => \n\t\t\t{\n\t\t\t\tthis.logOut();\n\t\t\t},\n\t\t\terror: () => \n\t\t\t{\n\t\t\t\tthis.logOut();\n\t\t\t}\n\t\t});\n\t}\n\n\tendCustomerSession()\n\t{\n\t\tthis.endSessionModalState.hidden = false;\n\t}\n\tconfirmEndSessionEvent(event: ModalEvent)\n\t{\n\t\tif(event.cta.id === ModalButtonId.proceed)\n\t\t{\n\t\t\tthis.service.endImpersonationSession();\n\t\t\tthis.customerState.hidden = true;\n\n\t\t}\n\t\tthis.endSessionModalState.hidden = true;\n\t\tthis.confirmEndSession?.closePopup();\n\t}\n\tconfirmInactiveSessionEvent(event: ModalEvent)\n\t{\n\t\tif(event.cta.id === ModalButtonId.proceed)\n\t\t{\n\t\t\tthis.service.endImpersonationSession();\n\t\t\tthis.customerState.hidden = true;\n\n\t\t}\n\t\tthis.inactiveSessionModalState.hidden = true;\n\t\tthis.inactiveSession?.closePopup();\n\t\tthis.idleUserService.reset();\n\t}\n\n\tonScrollTandC(event: any)\n\t{\n\t\tconst target = event.target as HTMLElement;\n\t\tconst isAtBottomTandC = target.scrollTop + target.clientHeight >= target.scrollHeight - 10;\n\t\tif(isAtBottomTandC)\n\t\t{\n\t\t\tthis.checkBoxDisabledFlag = false;\n\t\t}\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { KngBannerComponent } from './kng-banner.component';\nimport { KngBannerService } from './kng-banner.service';\n\n@NgModule({\n\tdeclarations: [KngBannerComponent],\n\timports: [CommonModule],\n\texports: [KngBannerComponent],\n\tproviders: [KngBannerService]\n})\nexport class KngBannerModule {}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ShellComponent } from './shell.component';\nimport { KngShellModule, ModalModule, KngLoaderModule } from 'kinetic-angular';\nimport { ShellService } from './shell.service';\nimport { RouterModule } from '@angular/router';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { LoggerServiceModule } from '../../services/logger/logger.module';\nimport{ SafeHtmlPipeModule } from '../../../app/pipes/safehtml/safehtml.pipe.module';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { ToastrModule } from 'ngx-toastr';\nimport { KngBannerModule } from 'projects/kinetic-angular/src/lib/components/banner';\n@NgModule({\n\tdeclarations: [ShellComponent],\n\timports: [ CommonModule, KngShellModule, RouterModule, KngLoaderModule, ModalModule, MatTooltipModule, LoggerServiceModule, SafeHtmlPipeModule, FormsModule, MatCheckboxModule, KngBannerModule,\n\t\tToastrModule.forRoot({\n\t\t\tpreventDuplicates: true,\n\t\t\tcloseButton: true\n\t\t}) ],\n\texports: [ShellComponent],\n\tproviders: [ShellService]\n})\nexport class ShellModule\n{\n\tstatic forRoot(): ModuleWithProviders\n\t{\n\t\treturn {\n\t\t\tngModule: ShellModule,\n\t\t\tproviders: [ShellService]\n\t\t};\n\t}\n}\n\n","\nimport { Inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { KngFooterState } from 'kinetic-angular';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { AnalyticsDataLayer } from './../../../../services/analytics/definitions/analytics.interface';\nimport { AnalyticsService } from './../../../../services/analytics/analytics.service';\nimport { ApiResponse } from '../../../../definitions/api-response.interface';\nimport { ConfirmRegistrationFactory } from './confirm-registration.factory';\nimport { ConfirmPageLabels, ConfirmPageSections, ConfirmRegistrationState } from './definitions';\nimport { EnvironmentRef } from '../../../../../environments/interfaces';\nimport { expEnvironmentRef } from '../../../../injection-tokens/environment.injection-token';\nimport { AemApiService } from '../../../../services/api/api.aem.service';\nimport { ApplicationPath, IsRequestSubmittedForReview } from '../../../../services/shared/shared-enums';\nimport { SharedService } from '../../../../services/shared/shared.service';\nimport { has as lodashHas, set as lodashSet, noop as lodashNoop, get as lodashGet } from 'lodash';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class ConfirmRegistrationService\n{\n\tprivate readonly state$: BehaviorSubject = new BehaviorSubject(\n\t\tConfirmRegistrationFactory.build()\n\t);\n\tget state(): ConfirmRegistrationState\n\t{\n\t\treturn this.state$.value;\n\t}\n\tget stateChanged(): Observable\n\t{\n\t\treturn this.state$.asObservable();\n\t}\n\tconstructor(\n\t\tprivate readonly aemApiService: AemApiService,\n\t\tprivate readonly router: Router,\n\t\tprivate readonly sharedService: SharedService,\n private readonly analyticsService: AnalyticsService,\n\n @Inject(expEnvironmentRef) private readonly environmentRef: EnvironmentRef\n\t){}\n\n\tpublic updateState(value: ConfirmRegistrationState): void\n\t{\n\t\tthis.state$.next(value);\n\t}\n\n\tpublic navigateForUserRegistrationStatus(): void\n\t{\n\t\tthis.sharedService.navigateMethod(this.router, ApplicationPath.authentication);\n\t}\n\tpublic getFooterData():void\n\t{\n\t\tthis.aemApiService.getFooterData().subscribe((res:ApiResponse)=>\n\t\t{\n\t\t\tthis.state.footer= res.data;\n\t\t\tthis.state.footer.footercontent.logoImagePath=this.environmentRef.aemBaseUrl+this.state.footer.footercontent.logoImagePath;\n\t\t\tthis.state.footer.ribbonImage=this.environmentRef.aemBaseUrl+this.state.footer.ribbonImage;\n\t\t\tthis.state.footer.footercontent.footermenu.forEach(element =>\n\t\t\t{\n\t\t\t\tif(element.iconPath)\n\t\t\t\t{\n\t\t\t\t\telement.iconPath=this.environmentRef.aemBaseUrl+element.iconPath;\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.updateState(this.state);\n\t\t});\n\t}\n\tpublic trackAnalyticsEvent(data: AnalyticsDataLayer)\n\t{\n\t\tconst values = Object.values(localStorage);\n\t\tfor (const value of values)\n\t\t{\n\t\t\tif (value.includes('idTokenClaims'))\n\t\t\t{\n\t\t\t\tconst parsedVal = JSON.parse(value);\n\t\t\t\t!lodashHas(parsedVal, 'idTokenClaims.emails') ? lodashSet(parsedVal, 'idTokenClaims.emails', [lodashGet(parsedVal, 'idTokenClaims.email', '')]) : lodashNoop();\n\t\t\t\tthis.analyticsService.trackRegistrationByEvent(data, parsedVal.idTokenClaims.emails[0]);\n\t\t\t}\n\t\t}\n\t}\n\tpublic getPageLabels()\n\t{\n\t\tthis.aemApiService.getPendingApprovalLabels().subscribe((response: ApiResponse) =>\n\t\t{\n\t\t\tconst responseObj: ConfirmPageSections = response.data;\n\t\t\tthis.state.pageLabels = responseObj;\n\t\t\tconst isRegistrationSubmittedForReview = localStorage.getItem(IsRequestSubmittedForReview.isRequestSubmittedForReview);\n\t\t\tif(isRegistrationSubmittedForReview) this.updatePageLabels(this.state.pageLabels.submittedRegistrationForReview);\n\t\t\telse this.router.url === ApplicationPath.pendingBusinessApproval? this.updatePageLabels(this.state.pageLabels.pendingBusinessAccountApproval) : this.updatePageLabels(this.state.pageLabels.pendingApproval);\n\t\t});\n\t}\n\tupdatePageLabels(labels: ConfirmPageLabels)\n\t{\n\t\tthis.state.pageHeading = labels.mainText;\n\t\tthis.state.pageDescription = this.sharedService.customerServiceMail(labels.subText);\n\t\tthis.state.refreshPageButton.label = labels.refreshButton.label;\n\t\tthis.state.logo.altText = labels.logo.altText;\n\t}\n}\n","\nimport { SharedFactoryDataService } from 'projects/tmhna-portal/src/app/services/shared/shared-factory-data.service';\nimport { ConfirmPageLabels, ConfirmRegistrationState } from './definitions';\n\nexport class ConfirmRegistrationFactory \n{\n\tpublic static build(): ConfirmRegistrationState \n\t{\n\t\treturn {\n\t\t\trefreshPageButton: {\n\t\t\t\tsize: 'medium',\n\t\t\t\tstyle: 'primary',\n\t\t\t\tdisabled: false,\n\t\t\t\tlabel: '',\n\t\t\t\ticon: {\n\t\t\t\t\taltText: '',\n\t\t\t\t\ticonPath: ''\n\t\t\t\t},\n\t\t\t\tposition: 'left'\n\t\t\t},\n\t\t\tlogo: {\n\t\t\t\taltText: '',\n\t\t\t\ticonPath: ''\n\t\t\t},\n\t\t\tpageDescription: '',\n\t\t\tpageHeading: '',\n\t\t\tfooter: {\n\t\t\t\tcssClass: '',\n\t\t\t\tribbonImage: '',\n\t\t\t\taltText: '',\n\t\t\t\tfootercontent: {\n\t\t\t\t\tfixed: false,\n\t\t\t\t\thidden: false,\n\t\t\t\t\tlogoImagePath: '',\n\t\t\t\t\taltText: '',\n\t\t\t\t\tfootermenu: SharedFactoryDataService.getFooterMenuDefault(),\n\t\t\t\t\tcopyright:\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\tlabelUrl: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\t\t\turl: ''\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\t\t\turl: ''\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\t\t\turl: ''\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\t\t\turl: ''\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tpageLabels: {\n\t\t\t\tpendingApproval: this.buildPageLabels(),\n\t\t\t\tpendingBusinessAccountApproval: this.buildPageLabels(),\n\t\t\t\tsubmittedRegistrationForReview: this.buildPageLabels()\n\t\t\t}, \n\t\t\tloading: false\n\t\t};\n\t}\n\tpublic static buildPageLabels(): ConfirmPageLabels \n\t{\n\t\treturn {\n\t\t\tlogo: SharedFactoryDataService.buildImage('', ''),\n\t\t\tmainText: '',\n\t\t\trefreshButton: { label: '', id: '' },\n\t\t\tsubText: ''\n\t\t};\n\t}\n}\n","
\n
\n
\n
\n
\n \n

{{ state.pageHeading }}

\n

\n {{ state.pageDescription }}\n

\n
\n \n
\n
\n
\n \n
\n\n
\n \n
","import { AnalyticsDataLayer } from './../../../../services/analytics/definitions/analytics.interface';\nimport { Component, Input, OnDestroy, OnInit, Output, EventEmitter } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ConfirmRegistration, ConfirmRegistrationState } from './definitions';\nimport { ConfirmRegistrationService } from './confirm-registration.service';\nimport { RegistrationService } from '../../registration.service';\nimport { KngLoaderState } from 'kinetic-angular';\nimport { Icons, IsRequestSubmittedForReview } from '../../../../services/shared/shared-enums';\nimport { SharedService } from 'projects/tmhna-portal/src/app/services/shared/shared.service';\n\n@Component({\n\tselector: 'tmhna-portal-confirm-registration',\n\ttemplateUrl: './template/confirm-registration.component.html',\n\tstyleUrls: ['./template/confirm-registration.component.scss']\n})\nexport class ConfirmRegistrationComponent implements ConfirmRegistration, OnInit, OnDestroy\n{\n\tprivate readonly subscriptions: Subscription = new Subscription();\n\tpublic loaderState: KngLoaderState = {\n\t\timagePath: Icons.loaderWhite\n\t};\n @Input() set state(value: ConfirmRegistrationState)\n\t{\n\t\tthis.service.updateState(value);\n\t}\n get state(): ConfirmRegistrationState\n {\n \treturn this.service.state;\n }\n\n @Output() stateChanged: EventEmitter = new EventEmitter();\n\n constructor(\n private readonly service: ConfirmRegistrationService, private readonly registrationService: RegistrationService, public sharedService: SharedService\n ) { }\n\n ngOnInit(): void\n {\n \tthis.state.loading = true;\n \tthis.registrationService.canActivatePortal()?.then(()=>\n \t{\n \t\tsetTimeout(() => \n \t\t{ \n \t\t\tthis.state.loading = false;\n \t\t\tconst confirmReg = document.getElementById('confirm-registration');\n \t\t\tif (confirmReg) \n \t\t\t{\n \t\t\t\tconfirmReg.focus();\n \t\t\t\tthis.sharedService.scrollToTopOfPage();\n \t\t\t}\n \t\t}, 1000);\n \t}).catch(() => \n \t{\n \t\tsetTimeout(() => { this.state.loading = false; }, 1000);\n \t}); \n \tthis.service.getPageLabels();\n \tthis.service.getFooterData();\n \tthis.initSubscriptions();\n \tconst analyticsData: AnalyticsDataLayer = {\n \t\tevent: 'pageView',\n \t\tpage: {\n \t\t\tname: 'registration:email sent',\n \t\t\ttype: 'login'\n \t\t}\n \t};\n \tthis.service.trackAnalyticsEvent(analyticsData);\n }\n ngOnDestroy(): void\n {\n \tthis.destroySubscriptions();\n }\n public refreshPage(): void\n {\t\n \tthis.service.navigateForUserRegistrationStatus();\n }\n\n private initSubscriptions(): void\n {\n \tconst stateChangeSubs: Subscription = this.service.stateChanged.subscribe(\n \t\t(next: ConfirmRegistrationState) => this.stateChanged.emit(next)\n \t);\n \tthis.subscriptions.add(stateChangeSubs);\n }\n private destroySubscriptions(): void\n { \n \tlocalStorage.removeItem(IsRequestSubmittedForReview.isRequestSubmittedForReview);\n \tthis.subscriptions.unsubscribe();\n }\n}\n","/* eslint-disable complexity */\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Route, Router, UrlTree } from '@angular/router';\nimport { AuthState, ProfileLocation, RoutingFunction, TMHCorporateAdminAuthState } from '../components/auth/definitions';\nimport { CommonErrorService } from '../components/common-error/common-error.service';\nimport { AppConstants, expAppConstants } from '../constants/portal-constants';\nimport { ApiResponse } from '../definitions/api-response.interface';\nimport { ApiService } from '../services/api/api.service';\nimport { UserRegistrationStatus } from '../services/api/definitions';\nimport { LocalStorageService } from '../services/local-storage/local-storage.service';\nimport { LoggerService } from '../services/logger/logger.service';\nimport { SharedService } from '../services/shared/shared.service';\nimport { SharedUtilService } from '../services/shared/shared-util.service';\nimport { AuthFactory } from '../components/auth';\nimport { ApplicationPath, ErrorMessage } from '../services/shared/shared-enums';\nimport { SharedApiService } from '../services/shared/shared-api-call.service';\n\n@Injectable({ providedIn: 'root' })\nexport class AccessGuard implements CanActivate \n{\n\tuser:AuthState= AuthFactory.buildState();\n\tconstructor(private router: Router,\n private errorService: CommonErrorService,\n private apiService: ApiService,\n private loggerService: LoggerService,\n\t\tprivate localStorageService: LocalStorageService,\n\t\tprivate sharedService: SharedService,\n\t\tprivate sharedUtilService: SharedUtilService,\n\t\tprivate sharedApiService: SharedApiService,\n @Inject(expAppConstants) readonly appConstantsRef: AppConstants)\n\t{ \n\t}\n\n\tasync canActivate(route:ActivatedRouteSnapshot): Promise\n\t{\n\t\ttry \n\t\t{\t\t\t\n\t\t\tconst status: ApiResponse = await this.getUserRegistrationStatus();\n\t\t\tconst responseObject = status.data;\n\t\t\tresponseObject.registrationStatus = responseObject.registrationStatus === 'pending_approval' && responseObject.orgAdminPending? 'pending_business_approval' : responseObject.registrationStatus;\n\t\t\tconst routingFunction: RoutingFunction | undefined = this.sharedUtilService.getRoutingFunction(responseObject);\n\t\t\tconst isTmhCustomerSupportRole = this.localStorageService.getCustomerToDashboard();\n\t\t\treturn new Promise((resolve) => \n\t\t\t{\n\t\t\t\tif (routingFunction !== undefined) \n\t\t\t\t{\n\t\t\t\t\tif(this.sharedUtilService.isCustomerSupportUser(responseObject, isTmhCustomerSupportRole))\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.sharedUtilService.isTmhCustomerSupportRole = true;\n\t\t\t\t\t\tthis.localStorageService.setItems('isTmhCustomerSupportRole', 'true');\n\t\t\t\t\t\treturn resolve(this.handleTmhCustomerSupportRouting(routingFunction, route));\n\t\t\t\t\t}\n\t\t\t\t\tif(this.sharedUtilService.isTmhCorporateAdminUser(responseObject, isTmhCustomerSupportRole))\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.sharedUtilService.isTmhCorporateAdmin = true;\n\t\t\t\t\t\tthis.localStorageService.setItems('isTmhCorporateAdmin', 'true');\n\t\t\t\t\t\treturn resolve(this.handleTmhCorporateAdminRouting(routingFunction, route));\n\t\t\t\t\t}\n\t\t\t\t\telse if (responseObject.hasOwnProperty('registrationStatus') && responseObject.registrationStatus === 'approved' || isTmhCustomerSupportRole) \n\t\t\t\t\t{\n\t\t\t\t\t\tthis.localStorageService.setItems('isPortalUser', 'true');\n\t\t\t\t\t\tthis.handleTmhNonCorporateAdminRouting(route, isTmhCustomerSupportRole);\n\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t}\n\t\t\t\t\telse \n\t\t\t\t\t{\n\t\t\t\t\t\tthis.handlePendingAndNotApproved(responseObject, routingFunction);\n\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t});\n\n\t\t}\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\t\n\t\tcatch (error: any) \n\t\t{\n\t\t\treturn new Promise((resolve) => \n\t\t\t{\n\t\t\t\tthis.redirectOnError(error);\n\t\t\t\tresolve(false);\n\t\t\t});\n\t\t\t\t\n\t\t}\n\t\t\t\n\t}\n\n\tprivate handlePendingAndNotApproved(response : UserRegistrationStatus, routingFunction: RoutingFunction | undefined)\n\t{\n\t\tthis.sharedUtilService.handlePendingAndNotApprovedState(response);\n\t\tthis.sharedUtilService.handleRoutingFunction(routingFunction, this.router);\n\t}\n\n\tprivate redirectOnError(error: HttpErrorResponse) \n\t{\n\t\tconst errorMessage =\n error?.error?.statusCode === 401\n \t? error.error.message\n \t: this.appConstantsRef.messages.filter(\n \t\t(x) => x.category === 'Error' && x.tags.includes('default')\n \t)[0]?.value;\n\t\tthis.sharedUtilService.triggerErrorService(errorMessage, error?.error?.statusCode, error?.error?.id);\n\t\tthis.sharedService.navigateMethod(this.router, ApplicationPath.unAuthError);\n\t}\n\n\tprivate async getUserRegistrationStatus(): Promise \n\t{\n\t\ttry \n\t\t{\n\t\t\treturn await this.apiService.getUserRegistrationStatus();\n\t\t}\n\t\tcatch (error) \n\t\t{\n\t\t\tthis.loggerService.log('Error redirecting to logout', error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tgetLoggedInUserDetails() \n\t{\n\t\tthis.apiService.getLoggedInUserObs().subscribe({\n\t\t\tnext: (res: ApiResponse) =>\n\t\t\t{\n\n\t\t\t\tconst user = (res.data);\n\t\t\t\tif (user)\n\t\t\t\t{\n\t\t\t\t\tthis.user = user;\n\t\t\t\t\tthis.localStorageService.setLoggedInUser(this.localStorageService.striginifyJSON(user));\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: () =>\n\t\t\t{\n\t\t\t\tthis.sharedUtilService.triggerErrorService(ErrorMessage.commonError, 100, '401');\n\t\t\t\tthis.sharedService.navigateMethod(this.router, ApplicationPath.authError);\n\t\t\t}\n\t\t});\n\t\tthis.apiService.getLoggedInUserLocations().subscribe({\n\t\t\tnext: (res: ApiResponse) =>\n\t\t\t{\n\t\t\t\tconst locations:ProfileLocation = (res.data);\n\t\t\t\tif (locations)\n\t\t\t\t{\n\t\t\t\t\tthis.localStorageService.setLoggedInUserLocation(this.localStorageService.striginifyJSON(locations));\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: () =>\n\t\t\t{\n\t\t\t\tthis.handleCommonError(ErrorMessage.commonError, 100, '401');\n\t\t\t}\n\t\t});\n\t}\n\tisRouteMatchingPath(route: Route | null, applicationPath: string)\n\t{\n\t\treturn !!(route?.path?.includes(applicationPath.slice(1)));\n\t}\n\thandleTmhCorporateAdminRouting(routingFunction: RoutingFunction, route: ActivatedRouteSnapshot)\n\t{\n\t\tthis.getCorporateAdminDetails(routingFunction);\n\t\tif(this.isRouteMatchingPath(route.routeConfig, ApplicationPath.customerportal))\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t\telse if(!this.isRouteMatchingPath(route.routeConfig, ApplicationPath.authError))\n\t\t{\n\t\t\tthis.handleCommonError(ErrorMessage.unauthorizedError, 401, '');\n\t\t\treturn false;\n\t\t}\n\t\treturn false;\n\t}\n\thandleTmhCustomerSupportRouting(routingFunction: RoutingFunction, route: ActivatedRouteSnapshot)\n\t{\n\t\tthis.getCustomerSupportDetails(routingFunction);\n\t\tif(this.isRouteMatchingPath(route.routeConfig, ApplicationPath.customerSupport))\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t\telse if(!this.isRouteMatchingPath(route.routeConfig, ApplicationPath.authError))\n\t\t{\n\t\t\tthis.handleCommonError(ErrorMessage.unauthorizedError, 401, '');\n\t\t\treturn false;\n\t\t}\n\t\treturn false;\n\t}\n\tprivate getCorporateAdminDetails(routingFunction: RoutingFunction | undefined)\n\t{\n\t\tif(!this.localStorageService.getTmhCorporateAdminDetails())\n\t\t\tthis.getLoggedInTmhCorporateAdminDetails(routingFunction);\n\t}\n\tgetCustomerSupportDetails(routingFunction: RoutingFunction | undefined)\n\t{\n\t\tif(!this.localStorageService.getTmhCustomerSupportDetails())\n\t\t\tthis.getLoggedInTmhCustomerSupportDetails(routingFunction);\n\t}\n\thandleTmhNonCorporateAdminRouting(route: ActivatedRouteSnapshot, isTmhCustomerSupportRole: boolean = false)\n\t{\n\t\tif(!this.localStorageService.getLoggedInUser())\n\t\t\tthis.getLoggedInUserDetails();\n\t\tif(this.isRouteMatchingPath(route.routeConfig, ApplicationPath.customerportal) && !isTmhCustomerSupportRole)\n\t\t{\t\n\t\t\tthis.handleCommonError(ErrorMessage.unauthorizedError, 401, '');\n\t\t}\n\t}\n\tgetLoggedInTmhCorporateAdminDetails(routingFunction : RoutingFunction | undefined)\n\t{\n\t\tthis.apiService.getLoggedInTmhCorporateAdminDetails().subscribe({ next: (res)=>\n\t\t{\n\t\t\tif(res)\n\t\t\t{\n\t\t\t\tconst user = (res.data);\n\t\t\t\tthis.sharedApiService.mapTmhCorporateAdminUserSession(user);\n\t\t\t\tif(this.localStorageService.getTmhCorporateAdminDetails())\n\t\t\t\t{\n\t\t\t\t\tthis.sharedUtilService.handleRoutingFunction(routingFunction, this.router);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.handleCommonError(ErrorMessage.commonError, 100, '401');\n\t\t\t}\n\t\t}\n\t\t});\n\t}\n\tgetLoggedInTmhCustomerSupportDetails(routingFunction : RoutingFunction | undefined)\n\t{\n\t\tthis.apiService.getLoggedInTmhCustomerSupportDetails().subscribe({ next: (res)=>\n\t\t{\n\t\t\tif(res)\n\t\t\t{\n\t\t\t\tconst user = (res.data);\n\t\t\t\tthis.sharedApiService.mapTmhCustomerSupportUserSession(user);\n\t\t\t\tif(this.localStorageService.getTmhCustomerSupportDetails())\n\t\t\t\t{\n\t\t\t\t\tthis.sharedUtilService.handleRoutingFunction(routingFunction, this.router);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.handleCommonError(ErrorMessage.commonError, 100, '401');\n\t\t\t}\n\t\t}\n\t\t});\n\t}\n\thandleCommonError(status: string, statusCode: number, id:string)\n\t{\n\t\tthis.sharedUtilService.triggerErrorService(status, statusCode, id);\n\t\tthis.sharedService.navigateMethod(this.router, ApplicationPath.authError);\n\t}\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { CanActivate, Router, UrlTree } from '@angular/router';\nimport { ApiResponse } from '../../definitions/api-response.interface';\nimport { ApiService } from '../../services/api/api.service';\nimport { LoggerService } from '../../services/logger/logger.service';\nimport { UserRegistrationStatus } from '../../services/api/definitions';\nimport { RoutingFunction } from '../../components/auth';\nimport { SharedUtilService } from '../../services/shared/shared-util.service';\nimport { ApplicationPath } from '../../services/shared/shared-enums';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { SharedService } from '../../services/shared/shared.service';\nimport { AppConstants, expAppConstants } from '../../constants/portal-constants';\nimport { LocalStorageService } from '../../services/local-storage/local-storage.service';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class AuthGuard implements CanActivate \n{\n\tconstructor(private apiService: ApiService, private loggerService: LoggerService, private sharedUtilService: SharedUtilService, private router: Router, private localStorageService: LocalStorageService,\n\t\tprivate sharedService: SharedService, @Inject(expAppConstants) readonly appConstantsRef: AppConstants)\n\t{}\n\tasync canActivate(): Promise\n\t{\n\t\ttry \n\t\t{\n\t\t\tconst status: ApiResponse = await this.getUserRegistrationStatus();\n\t\t\tconst responseObject = status.data;\n\t\t\tresponseObject.registrationStatus = responseObject.registrationStatus === 'pending_approval' && responseObject.orgAdminPending? 'pending_business_approval' : responseObject.registrationStatus;\n\t\t\tconst routingFunction: RoutingFunction | undefined = this.sharedUtilService.getRoutingFunction(responseObject);\n\t\t\tthis.setUserStatusInStorage(responseObject);\n\t\t\treturn new Promise((resolve) => \n\t\t\t{\n\t\t\t\tif (routingFunction !== undefined) \n\t\t\t\t{\n\t\t\t\t\tif (this.sharedUtilService.isTmhCorporateAdminUser(responseObject) || !this.checkRegistrationStatus(responseObject)) \n\t\t\t\t\t{\n\t\t\t\t\t\tthis.router.navigate([ApplicationPath.authentication]);\n\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t}\n\t\t\t\t\telse if (this.checkRegistrationStatus(responseObject) && !this.sharedUtilService.isTmhCorporateAdminUser(responseObject)) \n\t\t\t\t\t{\n\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\t\n\t\tcatch (error: any) \n\t\t{\n\t\t\treturn new Promise((resolve) => \n\t\t\t{\n\t\t\t\tthis.redirectOnError(error);\n\t\t\t\tresolve(false);\n\t\t\t});\n\t\t}\n\t}\n\tcheckRegistrationStatus(responseObject: UserRegistrationStatus)\n\t{\n\t\treturn !!(responseObject.hasOwnProperty('registrationStatus') && responseObject.registrationStatus !== undefined && [ null, 'pending_approval', 'pending_business_approval', 'in_progress' ].includes(responseObject.registrationStatus));\n\t}\n\tprivate async getUserRegistrationStatus(): Promise \n\t{\n\t\ttry \n\t\t{\n\t\t\treturn await this.apiService.getUserRegistrationStatus();\n\t\t}\n\t\tcatch (error) \n\t\t{\n\t\t\tthis.loggerService.log('Error redirecting to logout', error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tprivate redirectOnError(error: HttpErrorResponse) \n\t{\n\t\tconst errorMessage =\n error?.error?.statusCode === 401\n \t? error.error.message\n \t: this.appConstantsRef.messages.filter(\n \t\t(x) => x.category === 'Error' && x.tags.includes('default')\n \t)[0]?.value;\n\t\tthis.sharedUtilService.triggerErrorService(errorMessage, error?.error?.statusCode, error?.error?.id);\n\t\tthis.sharedService.navigateMethod(this.router, ApplicationPath.unAuthError);\n\t}\n\tsetUserStatusInStorage(responseObject: UserRegistrationStatus)\n\t{\n\t\tif(responseObject.hasOwnProperty('registrationStatus') && (responseObject.registrationStatus === undefined || [ null, 'approved', 'pending_approval', 'pending_business_approval', 'in_progress' ].includes(responseObject.registrationStatus)))\n\t\t\tthis.localStorageService.setRegistrationStatus(responseObject.registrationStatus ?? 'loggedIn');\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { Router, CanActivate } from '@angular/router';\n\n@Injectable({ providedIn: 'root' })\nexport class LoginGuard implements CanActivate \n{\n\n\tconstructor(private router: Router) { }\n\n\tcanActivate(): boolean \n\t{\n\t\tif (localStorage.getItem('userDetails')) \n\t\t{\n\t\t\tthis.router.navigateByUrl('/app/dashboard');\n\t\t\treturn false;\n\t\t}\n\t\telse if(localStorage.getItem('userStatus'))\n\t\t{\n\t\t\tthis.router.navigateByUrl('/registration');\n\t\t}\n\t\treturn true;\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { Router, CanActivate } from '@angular/router';\nimport { RegistrationService } from '../components/registration';\n\n@Injectable({ providedIn: 'root' })\nexport class LandingPageGuard implements CanActivate \n{\n\n\tconstructor(private router: Router, private registrationService: RegistrationService) { }\n\n\tcanActivate(): boolean \n\t{\n\t\tif (localStorage.getItem('userDetails') || this.registrationService.isSavingIndividualUser || localStorage.getItem('tmhCorporateAdminDetails') || localStorage.getItem('tmhCustomerSupportDetails')) \n\t\t{\n\t\t\tthis.registrationService.isSavingIndividualUser = false;\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.router.navigate(['/']);\n\t\treturn false;\n\t}\n}\n","import { of } from 'rxjs';\nimport { BusinessAccountRequestLabel, BusinessAccountRequestState, BusinessAccountsGridData, EditAdminCompanyDetailsAemLabels, Grid } from '../components/business-account-request';\nimport { mockData } from './mock-auth-data';\nimport { ApiResponse } from '../definitions/api-response.interface';\nimport { SharedFactoryDataService } from '../services/shared/shared-factory-data.service';\nimport { AprRejBtnType, AprRejUserData, GridValue } from 'kinetic-angular';\nimport { mockUploadFileAemResponse } from './business-account-request-upload-data';\nimport { locationHeirarchyObject } from './location-heirarchy-mock';\n\nexport const mockGridData: Grid = {\n\theaders: [\n\t\t{ id: '001', label: 'Requested On' },\n\t\t{ id: '002', label: 'Primary GRID' },\n\t\t{ id: '003', label: 'Primary Company Details' },\n\t\t{ id: '004', label: 'Contact' },\n\t\t{ id: '005', label: 'Locations List' },\n\t\t{ id: '006', label: 'Business Account Approval' }],\n\taccept: { label: 'Accept', iconPath: '', altText: 'Accept' },\n\treject: { label: 'Reject', iconPath: '', altText: 'Reject' },\n\ttooltip: 'Please review \\'Locations List\\' to activate Accept/Reject button',\n\tuploadFile: 'Upload New',\n\tcompanyGridLabel: 'GRID',\n\tnoResult: { label: 'No business account requests', iconPath: '', altText: '' },\n\tuploadFileLabels: mockUploadFileAemResponse\n};\nexport const mockBusinessAccountHeaders: BusinessAccountRequestLabel =\n{\n\tpageHeading: 'Business Account Request Management',\n\ttableHeading: 'Business Account Requests',\n\tgrid: mockGridData\n};\nexport const mockBusinessAccountData: BusinessAccountsGridData[] = [{\n\tprofileInformation: {\n\t\tfirstName: 'Test-BA',\n\t\tlastName: 'Test-BA',\n\t\temail: 'ba-test@yopmail.com',\n\t\tphoneNumber: '123456789'\n\t},\n\tcompanyDetails: {\n\t\tprimaryLocationGRID: '1234',\n\t\tcompanyName: 'TRACTOR',\n\t\taddressLine1: '5401 Virginia Way',\n\t\taddressLine2: '',\n\t\tcity: 'Brentwood',\n\t\tstate: 'TN',\n\t\tzipCode: '37027-7536',\n\t\tcountry: 'US',\n\t\tadminGrid: '456720'\n\t},\n\tpendingLocationDetails: {\n\t\terroredFileName: 'TMH Approval File Name',\n\t\toriginalFileName: 'TMH Approval File Name',\n\t\tupdatedFileName: 'TMH Approval File Name',\n\t\tlocationListReviewed: false,\n\t\tprimaryGridOnly: false\n\t},\n\ttempUserID: 'dfa1c3a1-777f-4f93-8e12-d013b5bc3eae111',\n\trequestedOn: 1688110318300,\n\ttopLevelGrid: '1234'\n}];\nexport const mockEditAdminCompanyDetailsAemLabels: EditAdminCompanyDetailsAemLabels =\n{\n\theading: '',\n\tcloseIcon: { iconPath: '', altText: '' },\n\terrorText: {\n\t\tinvalidCharacterWithNumericErrorMessage: 'Please enter only letters, numbers, hyphens, apostrophe, commas or periods',\n\t\tinvalidCharacterWithoutNumericErrorMessage: 'Please enter a valid character',\n\t\trequiredErrorMessage: '$token is a required field',\n\t\tminLengthZipCodeError: 'Postal code should have 5 numeric characters',\n\t\tcanadaPostalCodeFormatError: 'Postal Code format is incorrect. Please enter the correct Postal Code'\n\t},\n\tpageLabels: {\n\t\tcompanyName: { id: '', label: 'Company Name' },\n\t\taddressLine1: { id: '', label: 'Address Line 1' },\n\t\taddressLine2: { id: '', label: 'Address Line 2 (Optional)' },\n\t\tcountry: { id: '', label: 'Country' },\n\t\tcity: { id: '', label: 'City' },\n\t\tstate: { id: '', label: 'State/Province' },\n\t\tzipCode: { id: '', label: 'Postal Code' }\n\t},\n\tpageButtons: [{ cancel: { id: '', label: 'Cancel' }, save: { id: '', label: 'Save' } }]\n};\n\nexport const mockedState: BusinessAccountRequestState = {\n\tsectionTop: { pageHeading: '' },\n\tsectionMiddle: {\n\t\ttableHeading: '',\n\t\tgrid: mockGridData,\n\t\ttableState: {\n\t\t\tgridHeaders: [{ label: '' }, { label: '' }, { label: '' }, { label: '' }, { label: '' }, { label: '' }],\n\t\t\tgridData: [\n\t\t\t\t{\n\t\t\t\t\tvalues: [{\n\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\tvalue: '',\n\t\t\t\t\t\tctaList: [{\n\t\t\t\t\t\t\tid: '',\n\t\t\t\t\t\t\tclassName: AprRejBtnType.singleApprove,\n\t\t\t\t\t\t\tstate: {\n\t\t\t\t\t\t\t\tsize: 'medium',\n\t\t\t\t\t\t\t\tstyle: 'link',\n\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\t\t\ticon: { altText: '', iconPath: '' },\n\t\t\t\t\t\t\t\tposition: 'none'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: '',\n\t\t\t\t\t\t\tclassName: AprRejBtnType.singleReject,\n\t\t\t\t\t\t\tstate: {\n\t\t\t\t\t\t\t\tsize: 'medium',\n\t\t\t\t\t\t\t\tstyle: 'link',\n\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\t\t\ticon: { altText: '', iconPath: '' },\n\t\t\t\t\t\t\t\tposition: 'none'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t}, \n\t\t\t\t\t{ label: '', value: '', ctaList: [] },\n\t\t\t\t\t{ label: '', value: '', ctaList: [] },\n\t\t\t\t\t{ label: '', value: '', ctaList: [] },\n\t\t\t\t\t{ label: '', value: '', ctaList: [] },\n\t\t\t\t\t{ label: '', value: '', ctaList: [] }],\n\t\t\t\t\tid: '1234',\n\t\t\t\t\temail: '',\n\t\t\t\t\tstate: '',\n\t\t\t\t\tcompany: '',\n\t\t\t\t\troles: [],\n\t\t\t\t\tportalApprovedCustomerID: [],\n\t\t\t\t\tphoneNumber: '',\n\t\t\t\t\troleName: ''\n\t\t\t\t}\n\t\t\t],\n\t\t\tloading: false,\n\t\t\tisTooltipPresent: true,\n\t\t\ttooltip: { content: '', closeIcon: SharedFactoryDataService.buildImage('/assets/tooltip-close-icon.svg', '') },\n\t\t\tid: 'business-account',\n\t\t\tribbon: {\n\t\t\t\tctaList: [],\n\t\t\t\tcancelButton: {\n\t\t\t\t\tsize: 'medium',\n\t\t\t\t\tstyle: 'link',\n\t\t\t\t\tdisabled: false,\n\t\t\t\t\tlabel: '',\n\t\t\t\t\ticon: { altText: '', iconPath: '' },\n\t\t\t\t\tposition: 'none'\n\t\t\t\t}\n\t\t\t},\n\t\t\tisCheckbox: false,\n\t\t\tisRibbon: false,\n\t\t\titemsSelected: '',\n\t\t\tnoResult: {\n\t\t\t\timage: { iconPath: '/assets/access-requests-not-found.svg', altText: '' },\n\t\t\t\ttext: ''\n\t\t\t}\n\t\t},\n\t\terrorState: { messages: [], id: '', statusCode: 401, image: { iconPath: '', altText: '' } },\n\t\tbusinessAccountData: []\n\t}\n};\nexport const mockCompanyDetailsResponse: BusinessAccountsGridData = {\n\tprofileInformation: {\n\t\tfirstName: 'Test-BA',\n\t\tlastName: 'Test-BA',\n\t\temail: 'ba-test@yopmail.com',\n\t\tphoneNumber: '123456789'\n\t},\n\tcompanyDetails: {\n\t\tprimaryLocationGRID: '1234',\n\t\tcompanyName: 'TRACTOR SUPPLY COMPANY',\n\t\taddressLine1: '5401 Virginia Way',\n\t\taddressLine2: '',\n\t\tcity: 'Brentwood',\n\t\tstate: 'TN',\n\t\tzipCode: '37027-7536',\n\t\tcountry: 'US',\n\t\tadminGrid: '106727'\n\t},\n\tpendingLocationDetails: {\n\t\terroredFileName: '',\n\t\toriginalFileName: '',\n\t\tupdatedFileName: '',\n\t\tlocationListReviewed: false,\n\t\tprimaryGridOnly: false\n\t},\n\ttempUserID: 'dfa1c3a1-777f-4f93-8e12-d013b5bc3eae111',\n\trequestedOn: 1688110318300,\n\ttopLevelGrid: '106727'\n};\n\nexport const mockPendingBaList: BusinessAccountsGridData[] = [{\n\tprofileInformation: {\n\t\tfirstName: 'Test-BA',\n\t\tlastName: 'Test-BA',\n\t\temail: 'vivek.mayya@accenture.com',\n\t\tphoneNumber: '123456789'\n\t},\n\tcompanyDetails: {\n\t\tprimaryLocationGRID: '104802',\n\t\tcompanyName: 'TRACTOR SUPPLY COMPANY',\n\t\taddressLine1: '4035 Piedmont Pkwy',\n\t\taddressLine2: '',\n\t\tcity: 'Brentwood',\n\t\tstate: 'TN',\n\t\tzipCode: '37027-7536',\n\t\tcountry: 'US',\n\t\tadminGrid: '106727'\n\t},\n\tpendingLocationDetails: {\n\t\toriginalFileName: '',\n\t\tupdatedFileName: '',\n\t\terroredFileName: '',\n\t\tlocationListReviewed: false,\n\t\tprimaryGridOnly: false\n\t},\n\ttempUserID: 'dfa1c3a1-777f-4f93-8e12-d013b5bc3eae111',\n\trequestedOn: 1688110318300,\n\ttopLevelGrid: '37503594'\n}];\nexport const mockSectionMiddleTableStateGrid = [{\n\tchecked: false,\n\temail: 'abc@gmail.com',\n\tid: '123',\n\tstate: 'WI',\n\tvalues: [],\n\tcompany: 'ACTIS MANUFACTURING LLC',\n\troles: ['d345b32d-642e-45d9-a5dd-f273b1e2203b'],\n\tportalApprovedCustomerID: ['2137935'],\n\tphoneNumber: '9876543210',\n\troleName: 'Default User'\n},\n{\n\tchecked: false,\n\temail: 'xyz@gmail.com',\n\tid: '789',\n\tstate: 'WI',\n\tvalues: [],\n\tcompany: 'ACTIS MANUFACTURING LLC',\n\troles: ['d345b32d-642e-45d9-a5dd-f273b1e2203c'],\n\tportalApprovedCustomerID: ['2137936'],\n\tphoneNumber: '9876543210',\n\troleName: 'Default User'\n}];\nexport const mockRejectedUser : AprRejUserData[] = [{ id: '', email: 'abc@gmail.com', state: '' }];\nexport const mockSectionMiddleTableStateGrid1: GridValue[] = [{\n\tvalues: [\n\t\t{ label: '', value: '', ctaList: [] },\n\t\t{ label: '', value: '', ctaList: [] },\n\t\t{ label: '', value: '', ctaList: [] },\n\t\t{ label: '', value: '', ctaList: [] },\n\t\t{ label: '', value: '', ctaList: [] },\n\t\t{\n\t\t\tlabel: '',\n\t\t\tvalue: '',\n\t\t\tctaList: [{\n\t\t\t\tid: '',\n\t\t\t\tclassName: AprRejBtnType.bulkApprove,\n\t\t\t\tstate: {\n\t\t\t\t\tsize: 'medium',\n\t\t\t\t\tstyle: 'link',\n\t\t\t\t\tdisabled: false,\n\t\t\t\t\tlabel: '',\n\t\t\t\t\ticon: { altText: '', iconPath: '' },\n\t\t\t\t\tposition: 'none'\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: '',\n\t\t\t\tclassName: AprRejBtnType.bulkReject,\n\t\t\t\tstate: {\n\t\t\t\t\tsize: 'medium',\n\t\t\t\t\tstyle: 'link',\n\t\t\t\t\tdisabled: false,\n\t\t\t\t\tlabel: '',\n\t\t\t\t\ticon: { altText: '', iconPath: '' },\n\t\t\t\t\tposition: 'none'\n\t\t\t\t}\n\t\t\t}]\n\t\t}],\n\tid: 'dfa1c3a1-777f-4f93-8e12-d013b5bc3eae1113',\n\temail: '',\n\tstate: '',\n\tcompany: '',\n\troles: [],\n\tportalApprovedCustomerID: [],\n\tphoneNumber: '',\n\troleName: ''\n}];\nexport class FakeApiService \n{\n\tpublic getBusinessAccountRequestAemLabel() \n\t{\n\t\treturn of(mockBusinessAccountHeaders);\n\t}\n\tpublic getEditAdminCompanyDetailsAemLabels() \n\t{\n\t\treturn of(mockEditAdminCompanyDetailsAemLabels);\n\t}\n\tpublic getLoggedInUserObs() \n\t{\n\t\treturn of({ data: mockData });\n\t}\n\tpublic getLoggedInUserLocations() \n\t{\n\t\treturn of({ data: locationHeirarchyObject });\n\t}\n\tpublic getBusinessAccountRequestData() \n\t{\n\t\treturn of({ data: mockBusinessAccountData });\n\t}\n\tpublic rejectBusinessAccount() \n\t{\n\t\treturn of({\n\t\t\tsuccess: true,\n\t\t\tmessage: 'User updated successfully',\n\t\t\tstatusCode: 200,\n\t\t\tdata: {}\n\t\t} as unknown as ApiResponse);\n\t}\n\tpublic downloadLocationList() \n\t{\n\t\treturn of({});\n\t}\n\tpublic updateAdminCompanyDetails() \n\t{\n\t\treturn of({\n\t\t\tsuccess: true,\n\t\t\tmessage: 'Grid and Address Udpated',\n\t\t\tstatusCode: 200,\n\t\t\tdata: {}\n\t\t});\n\t}\n\tpublic approveBusinessAdminAccount()\n\t{\n\t\treturn of({\n\t\t\tstatusCode: 201,\n\t\t\tsuccess: true,\n\t\t\tmessage: 'Request successfully approved.',\n\t\t\tdata: {}\n\t\t} as unknown as ApiResponse);\n\t}\n\tpublic getServerValidationUploadFile()\n\t{\n\t\treturn of({\n\t\t\tsuccess: true,\n\t\t\tmessage: 'Success',\n\t\t\tstatusCode: 201,\n\t\t\tdata: {\n\t\t\t\tfileStatus: 'Upload Submitted',\n\t\t\t\tupdatedFileName: 'TMH Approve File_Corporate_Admin_New Locations_List1_success_data_paluser_1692702271812.xlsx'\n\t\t\t}\n\t\t});\n\t}\n}\n","import { ModalEvent } from 'kinetic-angular';\nimport { UploadFileLabels } from '../components/business-account-request';\nimport { ApiResponse } from '../definitions/api-response.interface';\n\nexport const mockUploadFileAemResponse: UploadFileLabels = {\n\theading: 'Upload Location List',\n\tsubHeading: 'Please be sure the AdminGRID location is included in the Excel upload and matches the AdminGRID listed on the Dashboard before you click \\\"Upload\\\".',\n\tmodelButtons: { close: 'Close', cancel: 'Cancel', upload: 'Upload' },\n\tcloseIcon: { iconPath: '', altText: '' },\n\tuploadFile: {\n\t\tonLoadIcon: { iconPath: '', altText: '' },\n\t\terrorIcon: { iconPath: '', altText: '' },\n\t\tsuccessIcon: { iconPath: '', altText: '' },\n\t\tdragDropLabel: 'Drag and Drop',\n\t\torLabel: 'or',\n\t\tuploadButtons: { chooseFile: 'Choose File', replaceFile: 'Replace File', tryAgain: 'Try Again' },\n\t\tsuccess: 'Uploaded Submitted'\n\t}\n};\n\nexport const mockFile1: File = {\n\tname: 'BusninessRequestAccount.csv',\n\tsize: 10423,\n\ttype: 'text/csv'\n} as unknown as File;\n\nexport const mockFile2: File = {\n\tname: 'Corporate_Admin_New Locations_List2.xlsx',\n\tsize: 1000023,\n\ttype: 'application/vnd.openxmlformats-officedocument.spreadsheetml'\n} as unknown as File;\n\nexport const mockFile3: File = {\n\tname: 'Corporate_Admin_New Locations_List2.xlsx',\n\tsize: 10423,\n\ttype: 'application/vnd.openxmlformats-officedocument.spreadsheetml'\n} as unknown as File;\n\nexport const mockEvent: ModalEvent = {\n\tstate: {\n\t\thidden: false,\n\t\tlabel: 'Upload New Locations List',\n\t\tbuttons: [\n\t\t\t{ label: 'Cancel', disabled: false, cssClass: 'btn-secondary' },\n\t\t\t{ label: 'Upload', disabled: false, cssClass: 'btn-black' }\n\t\t],\n\t\tcssClass: 'uploadFileTitle'\n\t},\n\tcta: { label: '', disabled: false, cssClass: 'btn-black' } \n};\n\nexport const mockApiFailure: ApiResponse = {\n\tsuccess: false,\n\tstatusCode: 403,\n\tmessage: 'File should be less than 100 MB and should be in xlsx/csv format',\n\tdata: {}\n};\n\nexport const mockWrongFormat: ApiResponse = {\n\tsuccess: false,\n\tstatusCode: 400,\n\tmessage: 'Please ensure the data in the file is in the correct format and try again, and at a minimum the Primary GRID must be entered',\n\tdata: {}\n};\n","\nimport { ModalState } from 'kinetic-angular';\nimport { BusinessAccountRequestState, EditAdminCompanyDetailsAemLabels } from './definitions';\nimport { CssClass, ModalButtonId } from '../../services/shared/shared-enums';\nimport { mockedState } from '../../constants/business-account-request-data';\n\nexport class BusinessAccountRequestFactory \n{\n\tpublic static build(): BusinessAccountRequestState \n\t{\n\t\treturn { ...mockedState };\n\t}\n\tpublic static buildEditAdminCompanyDetails(): EditAdminCompanyDetailsAemLabels \n\t{\n\t\treturn {\n\t\t\theading: '',\n\t\t\tcloseIcon: { altText: '', iconPath: '' },\n\t\t\terrorText: {\n\t\t\t\tinvalidCharacterWithNumericErrorMessage: 'Please enter only letters, numbers, hyphens, apostrophe, commas or periods',\n\t\t\t\tinvalidCharacterWithoutNumericErrorMessage: 'Please enter a valid character',\n\t\t\t\trequiredErrorMessage: '$token is a required field',\n\t\t\t\tminLengthZipCodeError: 'Postal code should have 5 numeric characters',\n\t\t\t\tcanadaPostalCodeFormatError: 'Postal Code format is incorrect. Please enter the correct Postal Code'\n\t\t\t},\n\t\t\tpageLabels: {\n\t\t\t\tcompanyName: { id: '', label: '' },\n\t\t\t\taddressLine1: { id: '', label: '' },\n\t\t\t\taddressLine2: { id: '', label: '' },\n\t\t\t\tcountry: { id: '', label: '' },\n\t\t\t\tcity: { id: '', label: '' },\n\t\t\t\tstate: { id: '', label: '' },\n\t\t\t\tzipCode: { id: '', label: '' }\n\t\t\t},\n\t\t\tpageButtons: [{\n\t\t\t\tcancel: { id: '', label: '' },\n\t\t\t\tsave: { id: '', label: '' }\n\t\t\t}]\n\t\t};\n\t}\n\tpublic static buildEditAdminCompanyDetailsModalState(): ModalState \n\t{\n\t\treturn {\n\t\t\thidden: true,\n\t\t\tlabel: '',\n\t\t\tbuttons: [\n\t\t\t\t{ label: '', disabled: false, cssClass: CssClass.btnSecondary, id: ModalButtonId.cancel },\n\t\t\t\t{ label: '', disabled: false, cssClass: CssClass.btnBlack, id: ModalButtonId.save }\n\t\t\t],\n\t\t\tcssClass: CssClass.removeLocationTitle\n\t\t};\n\t}\n\tpublic static buildUploadModelState(): ModalState\n\t{\n\t\treturn {\n\t\t\thidden: true,\n\t\t\tlabel: '',\n\t\t\tbuttons: [\n\t\t\t\t{ label: '', disabled: false, cssClass: CssClass.btnSecondary },\n\t\t\t\t{ label: '', disabled: false, cssClass: CssClass.btnBlack }\n\t\t\t],\n\t\t\tcssClass: CssClass.uploadFileTitle\n\t\t};\n\t}\n}\n","import { KngTableState, UploadFileSection } from 'kinetic-angular';\nimport { CommonErrorState } from '../../common-error';\nimport { IdLabelPair, Image } from '../../../services/shared/shared-interface';\n\nexport interface BusinessAccountRequest {\n state: BusinessAccountRequestState;\n}\nexport interface BusinessAccountRequestState {\n sectionTop: BusinessAccountRequestSectionTop;\n sectionMiddle: BusinessAccountRequestSectionMiddle;\n}\n\nexport interface BusinessAccountRequestSectionTop {\n pageHeading: string;\n}\n\nexport interface BusinessAccountRequestSectionMiddle {\n tableHeading: string;\n grid: Grid;\n tableState: KngTableState;\n errorState:CommonErrorState;\n isError?:boolean;\n loading?: boolean;\n businessAccountData: BusinessAccountsGridData[];\n}\n\nexport interface Grid {\n headers: IdLabelPair[];\n accept: AccountApproval;\n reject: AccountApproval;\n tooltip: string;\n uploadFile: string;\n companyGridLabel:string;\n noResult: AccountApproval;\n uploadFileLabels: UploadFileLabels;\n}\nexport interface AccountApproval {\n label: string;\n iconPath: string;\n altText: string;\n}\nexport interface BusinessAccountRequestLabel {\n pageHeading: string;\n tableHeading: string;\n grid: Grid;\n}\nexport interface HeaderObj {\n id?: string;\n label: string;\n category?: string;\n}\nexport enum AccountGrid {\n requestedOn = '001',\n topLevelGrid = '002',\n adminCompanyDetails = '003',\n contact = '004',\n locationList='005',\n businessAccountApproval = '006',\n}\nexport interface BusinessAccounttGridDefinition {\n gridData: BusinessAccountsGridData[];\n}\n\nexport interface BusinessAccountsGridData {\n profileInformation: Contact;\n companyDetails: AdminCompanyDetails;\n pendingLocationDetails: LocationList;\n tempUserID: string;\n requestedOn: number;\n topLevelGrid:string;\n\n}\nexport interface Contact {\n firstName: string;\n lastName: string;\n email: string;\n phoneNumber: string;\n}\nexport interface AdminCompanyDetails {\n primaryLocationGRID?: string;\n companyName: string;\n addressLine1: string;\n addressLine2?: string;\n city: string;\n state: string;\n zipCode: string;\n country: string;\n adminGrid?:string;\n tempUserID?: string;\n}\nexport interface LocationList {\n erroredFileName: string;\n originalFileName: string;\n updatedFileName: string;\n locationListReviewed: boolean;\n primaryGridOnly: boolean;\n}\nexport interface RejectBusinessAccountPayload {\n email: string;\n}\nexport interface EditAdminCompanyDetailsAemLabels {\n heading: string;\n closeIcon: Image;\n errorText: {\n invalidCharacterWithoutNumericErrorMessage: string;\n invalidCharacterWithNumericErrorMessage: string;\n requiredErrorMessage: string;\n minLengthZipCodeError: string;\n canadaPostalCodeFormatError: string;\n };\n pageLabels: PageLabels;\n pageButtons: [{\n cancel: IdLabelPair;\n save: IdLabelPair;\n }];\n}\n\nexport interface PageLabels {\n companyName: IdLabelPair;\n addressLine1: IdLabelPair;\n addressLine2: IdLabelPair;\n country: IdLabelPair;\n city: IdLabelPair;\n state: IdLabelPair;\n zipCode: IdLabelPair;\n}\n\nexport interface ValidateAdminForm {\n accountName: boolean;\n addressLine1: boolean;\n country: boolean;\n city: boolean;\n state: boolean;\n postalCode: boolean;\n}\nexport interface UploadFileLabels {\n heading: string;\n subHeading: string;\n closeIcon: Image;\n modelButtons: ModelButtons;\n uploadFile: UploadFileSection;\n}\nexport interface ModelButtons {\n close: string;\n cancel: string;\n upload: string;\n}\nexport interface UploadSuccessResponse {\n fileStatus: string;\n updatedFileName: string;\n}\nexport interface ApproveBusinessAdminPayload {\n tempUserId: string;\n}\n","import { Injectable } from '@angular/core';\nimport { nullCheckValue } from '../../services/shared/shared-constants';\nimport { SharedService } from '../../services/shared/shared.service';\nimport { AccountGrid, BusinessAccountRequestState, BusinessAccountsGridData, UploadFileLabels } from './definitions/business-account-request.interface';\nimport { Address } from '../../services/shared/shared-interface';\nimport { AprRejBtnType, CtaList, GridValueData, HeaderObj, KngUploadFileState, ModalState } from 'kinetic-angular';\nimport { AbstractControl, FormBuilder, Validators } from '@angular/forms';\nimport { ToastrService } from 'ngx-toastr';\nimport { LoggerService } from '../../services/logger/logger.service';\nimport { SharedUtilService } from '../../services/shared/shared-util.service';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Icons, ErrorMessage, BusinessAccountCategory, AltText, CssClass, CountryCode } from '../../services/shared/shared-enums';\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class BusinessAccountRequestUtilService \n{\n\tshowActionBtn!: boolean;\n\tconstructor(private sharedService: SharedService, private fb: FormBuilder, private loggerService: LoggerService, public toaster: ToastrService, private sharedUtilService: SharedUtilService) { }\n\n\ttruncateFileName(fileName: string): string \n\t{\n\t\tconst maxLength = window.innerWidth >= 768 ? 10 : 12;\n\t\tconst extensionIndex = fileName.lastIndexOf('.');\n\t\tif (extensionIndex > -1) \n\t\t{\n\t\t\tconst extension = fileName.substring(extensionIndex);\n\t\t\tconst fileNameWithoutExtension = fileName.substring(0, extensionIndex);\n\t\t\tconst truncatedName = fileNameWithoutExtension.length > maxLength ? `${fileNameWithoutExtension.substring(0, maxLength)}..` : fileNameWithoutExtension;\n\t\t\treturn `${truncatedName}${extension}`;\n\t\t}\n\t\treturn fileName;\n\t}\n\tcheckIfValuePresent(value1: string, value2: string, value3: string) \n\t{\n\t\tif ((value1 && value1.trim() !== '') || (value2 && value2.trim() !== '')) \n\t\t\treturn this.sharedService.emptyStringHandler(value1);\n\t\tthis.sharedService.nullValueHandler(value3);\n\t\treturn nullCheckValue;\n\t}\n\tsetDefaultValues(obj: BusinessAccountsGridData) \n\t{\n\t\treturn {\n\t\t\tvalues: [],\n\t\t\tchecked: false,\n\t\t\tid: obj.tempUserID,\n\t\t\temail: obj.profileInformation.email,\n\t\t\tstate: '',\n\t\t\tportalUserId: '',\n\t\t\tcompany: obj.companyDetails.companyName ? obj.companyDetails.companyName : '',\n\t\t\ttempIsPrefilled: false,\n\t\t\tportalApprovedCustomerID: [],\n\t\t\tadminLocationID: obj.tempUserID,\n\t\t\troles: [],\n\t\t\tphoneNumber: obj.profileInformation.phoneNumber,\n\t\t\troleName: ''\n\t\t};\n\t}\n\tpublic updateHeaderObj(id: string, label: string) \n\t{\n\t\tconst isTooltip = (id === AccountGrid.businessAccountApproval);\n\t\tconst headerObj: HeaderObj = { id: id, label: label, isTooltip: isTooltip };\n\t\treturn headerObj;\n\t}\n\tformatAddress(obj: BusinessAccountsGridData) \n\t{\n\t\tconst address: Address = {\n\t\t\taddressLine1: obj.companyDetails.addressLine1,\n\t\t\taddressLine2: obj.companyDetails.addressLine2,\n\t\t\tcity: obj.companyDetails.city,\n\t\t\tstate: obj.companyDetails.state,\n\t\t\tzipCode: obj.companyDetails.country === CountryCode.canada || obj.companyDetails.country === CountryCode.canadaCountry ? obj.companyDetails.zipCode :\n\t\t\t\tthis.formatZipcode(obj.companyDetails.zipCode)\n\t\t};\n\t\treturn this.sharedService.formatAddress(address, true);\n\t}\n\tformatZipcode(value: string): string\n\t{\n\t\tlet formattedZip = value;\n\t\tif(!(value.includes('-')))\n\t\t{\n\t\t\tconst zipCode = value.replace(/[^\\d]/g, '');\n\t\t\tconst zipCodeLength = zipCode.length;\n\t\t\tformattedZip = zipCodeLength < 6 ? zipCode : `${zipCode.slice(0, 5)}-${zipCode.slice(5, 9)}`;\n\t\t}\n\t\treturn formattedZip;\n\t}\n\tbuildForm() \n\t{\n\t\treturn this.fb.group({\n\t\t\taccountName: [{ value: '', disabled: false }, [ Validators.required, (c: AbstractControl) => this.sharedService.alphaSpecialCharValidation(c, 'accountName') ] ],\n\t\t\taddressLine1: [{ value: '', disabled: false }, [ Validators.required, this.sharedService.characterValidationWithNumerics, this.sharedService.noWhitespaceValidator ] ],\n\t\t\taddressLine2: [{ value: '', disabled: false }, [this.sharedService.characterValidationWithNumerics] ],\n\t\t\tcountry: [{ value: '', disabled: false }, Validators.required ],\n\t\t\tcity: [{ value: '', disabled: false }, [ Validators.required, (c: AbstractControl) => this.sharedService.alphaSpecialCharValidation(c, 'city') ] ],\n\t\t\tstate: [{ value: '', disabled: false }, Validators.required ],\n\t\t\tpostalCode: [{ value: '', disabled: false }, [ Validators.required, this.sharedService.zipCodeLengthCheck, this.sharedService.noWhitespaceValidator ] ]\n\t\t});\n\t}\n\tgetCtaList(showActionBtn: boolean, acceptLabel: string, rejectLabel: string): CtaList[] \n\t{\n\t\treturn [\n\t\t\t{\n\t\t\t\tid: '',\n\t\t\t\tclassName: AprRejBtnType.singleApprove,\n\t\t\t\tstate: {\n\t\t\t\t\tsize: 'small',\n\t\t\t\t\tstyle: 'secondary',\n\t\t\t\t\tdisabled: !showActionBtn,\n\t\t\t\t\tlabel: acceptLabel,\n\t\t\t\t\ticon: {\n\t\t\t\t\t\taltText: '',\n\t\t\t\t\t\ticonPath: !showActionBtn ? Icons.checkAcceptDisabled : Icons.approveIcon\n\t\t\t\t\t},\n\t\t\t\t\tposition: 'left'\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: '',\n\t\t\t\tclassName: AprRejBtnType.singleReject,\n\t\t\t\tstate: {\n\t\t\t\t\tsize: 'small',\n\t\t\t\t\tstyle: 'secondary',\n\t\t\t\t\tdisabled: !showActionBtn,\n\t\t\t\t\tlabel: rejectLabel,\n\t\t\t\t\ticon: {\n\t\t\t\t\t\taltText: '',\n\t\t\t\t\t\ticonPath: !showActionBtn ? Icons.closeRejectDisabled : Icons.rejectIcon\n\t\t\t\t\t},\n\t\t\t\t\tposition: 'left'\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\tasync handleError(error: HttpErrorResponse, selectedRowIndex: number, state: BusinessAccountRequestState)\n\t{\n\t\tconst message = JSON.parse(await error.error.text()).message;\n\t\tthis.toaster.error(message);\n\t\tthis.locationLinkStatusChecked(false, selectedRowIndex, state);\n\t}\n\tgetErrorResponse()\n\t{\n\t\treturn {\n\t\t\tmessages: [{ message: ErrorMessage.productionSupport, cssClass: CssClass.errorBusinessSection }],\n\t\t\tid: '',\n\t\t\tstatusCode: 401,\n\t\t\timage: this.sharedUtilService.setImageBasedOnStatusCode(401)\n\t\t};\n\t}\n\tmapRemainAccessGridData(id: string, obj: BusinessAccountsGridData, valueListState: GridValueData, state: BusinessAccountRequestState) \n\t{\n\t\tif (id === AccountGrid.locationList) \n\t\t{\n\t\t\tvalueListState.category = BusinessAccountCategory.uploadFile;\n\t\t\tvalueListState.firstLineValue = this.truncateFileName(obj.pendingLocationDetails.updatedFileName);\n\t\t\tvalueListState.icon = { iconPath: !obj.pendingLocationDetails.locationListReviewed ? Icons.uploadDisabled : Icons.uploadFile, altText: AltText.uploadFile };\n\t\t\tvalueListState.thirdLineValue = state.sectionMiddle.grid.uploadFile;\n\t\t}\n\t\tif (id === AccountGrid.businessAccountApproval) \n\t\t{\n\t\t\tvalueListState.category = BusinessAccountCategory.button;\n\t\t\tvalueListState.isTooltip = true;\n\t\t\tif(obj.pendingLocationDetails?.primaryGridOnly) \n\t\t\t{\n\t\t\t\tthis.showActionBtn = true;\n\t\t\t}\n\t\t\telse if(obj.pendingLocationDetails.locationListReviewed === true)\n\t\t\t{\n\t\t\t\tthis.showActionBtn = true;\n\t\t\t}\n\t\t\telse \n\t\t\t{\n\t\t\t\tthis.showActionBtn = false;\n\t\t\t}\n\t\t\tvalueListState.ctaList = this.getCtaList(this.showActionBtn, state.sectionMiddle.grid.accept.label, state.sectionMiddle.grid.reject.label);\n\t\t}\n\t}\n\tgetHeaderLabel(id: string, state: BusinessAccountRequestState) \n\t{\n\t\tconst header = state.sectionMiddle.tableState.gridHeaders.find((header: HeaderObj) => header.id === id);\n\t\treturn header ? header.label : '';\n\t}\n\tpublic updateAccessGridData(id: string, obj: BusinessAccountsGridData, state: BusinessAccountRequestState): GridValueData \n\t{\n\t\tconst valueListState: GridValueData = {\n\t\t\tlabel: this.getHeaderLabel(id, state),\n\t\t\tvalue: '',\n\t\t\tcategory: BusinessAccountCategory.primary,\n\t\t\tctaList: []\n\t\t};\n\t\tvalueListState.label = this.getHeaderLabel(id, state);\n\t\tif (id === AccountGrid.requestedOn) \n\t\t{\n\t\t\tvalueListState.category = BusinessAccountCategory.date;\n\t\t\tvalueListState.value = obj.requestedOn;\n\t\t}\n\t\telse if (id === AccountGrid.topLevelGrid) \n\t\t{\n\t\t\tvalueListState.category = BusinessAccountCategory.primary;\n\t\t\tvalueListState.value = this.sharedService.nullValueHandler(obj.topLevelGrid);\n\t\t}\n\t\telse if (id === AccountGrid.adminCompanyDetails) \n\t\t{\n\t\t\tvalueListState.category = BusinessAccountCategory.editData;\n\t\t\tvalueListState.firstLineValue = obj.companyDetails.companyName;\n\t\t\tvalueListState.secondLineValue = this.formatAddress(obj);\n\t\t\tvalueListState.thirdLineValue = this.sharedService.formatUserName(state.sectionMiddle.grid.companyGridLabel, obj.companyDetails.primaryLocationGRID);\n\t\t\tvalueListState.icon = { iconPath: Icons.editCompanyDetail, altText: AltText.editAdmingCompanyDetail };\n\t\t\tvalueListState.firstLineValue = this.checkIfValuePresent(valueListState.firstLineValue, valueListState.secondLineValue, valueListState.thirdLineValue);\n\t\t}\n\t\telse if (id === AccountGrid.contact) \n\t\t{\n\t\t\tvalueListState.category = BusinessAccountCategory.multiline;\n\t\t\tvalueListState.firstLineValue = this.sharedService.formatUserName(obj.profileInformation.firstName, obj.profileInformation.lastName);\n\t\t\tvalueListState.secondLineValue = this.sharedService.emptyStringHandler(obj.profileInformation.email);\n\t\t\tvalueListState.thirdLineValue = this.sharedService.formatPhoneNumber(obj.profileInformation.phoneNumber);\n\t\t\tvalueListState.firstLineValue = this.checkIfValuePresent(valueListState.firstLineValue, valueListState.secondLineValue, valueListState.thirdLineValue);\n\t\t}\n\t\tthis.mapRemainAccessGridData(id, obj, valueListState, state);\n\t\treturn valueListState;\n\t}\n\tbuttonStatusChecked(disabled: boolean, selectedRowIndex: number, state: BusinessAccountRequestState)\n\t{\n\t\tstate.sectionMiddle.tableState.gridData[selectedRowIndex].values[5].ctaList[0].state.icon.iconPath = Icons.approveIcon;\n\t\tstate.sectionMiddle.tableState.gridData[selectedRowIndex].values[5].ctaList[0].state.disabled = disabled;\n\t\tstate.sectionMiddle.tableState.gridData[selectedRowIndex].values[5].ctaList[1].state.icon.iconPath = Icons.rejectIcon;\n\t\tstate.sectionMiddle.tableState.gridData[selectedRowIndex].values[5].ctaList[1].state.disabled = disabled;\n\t\tstate.sectionMiddle.tableState.gridData[selectedRowIndex].values[4].icon = { iconPath: disabled ? Icons.uploadDisabled : Icons.uploadFile, altText: AltText.uploadFile };\n\t}\n\tlocationLinkStatusChecked(disabled: boolean, selectedRowIndex: number, state: BusinessAccountRequestState)\n\t{\n\t\tstate.sectionMiddle.tableState.gridData[selectedRowIndex].values[4].disabled = disabled;\n\t}\n\tmapUploadFilePopup(data: UploadFileLabels, uploadFileState: KngUploadFileState)\n\t{\n\t\tuploadFileState.isLoading = false;\n\t\tuploadFileState.dragDropSection = data.uploadFile.dragDropLabel;\n\t\tuploadFileState.or = data.uploadFile.orLabel;\n\t\tuploadFileState.successMessage = data.uploadFile.success;\n\t\tuploadFileState.uploadButtons = data.uploadFile.uploadButtons;\n\t\tuploadFileState.errorImage.altText = data.uploadFile.errorIcon.altText;\n\t\tuploadFileState.successImage.altText = data.uploadFile.successIcon.altText;\n\t\tuploadFileState.dragDropImage.altText = data.uploadFile.onLoadIcon.altText;\n\t\tuploadFileState.errorImage.iconPath = Icons.actionRed;\n\t\tuploadFileState.successImage.iconPath = Icons.checkGreen;\n\t\tuploadFileState.dragDropImage.iconPath = Icons.dragDropIcon;\n\t}\n\tmapUploadModelState(data: UploadFileLabels, uploadModelState: ModalState)\n\t{\n\t\tuploadModelState.label = data.heading;\n\t\tuploadModelState.buttons[0].disabled = false;\n\t\tuploadModelState.buttons[0].label = data.modelButtons.cancel;\n\t\tuploadModelState.buttons[1].disabled = true;\n\t\tuploadModelState.buttons[1].label = data.modelButtons.upload;\n\t}\n\tresetUploadFileModelFlags(uploadFileState: KngUploadFileState)\n\t{\n\t\tuploadFileState.isSuccessClient = true;\n\t\tuploadFileState.isSuccessServer = false;\n\t\tuploadFileState.isError = false;\n\t\tuploadFileState.errorHeading = '';\n\t\tuploadFileState.errorSubHeading = '';\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { BusinessAccountRequestFactory } from './business-account-request.factory';\nimport { AccountGrid, AdminCompanyDetails, ApproveBusinessAdminPayload, BusinessAccountRequestLabel, BusinessAccountRequestState, BusinessAccountsGridData, EditAdminCompanyDetailsAemLabels, ModelButtons, RejectBusinessAccountPayload, UploadSuccessResponse } from './definitions';\nimport { ApiService } from '../../services/api/api.service';\nimport { GridValue, HeaderObj, AprRejUserData, ModalState, KngUploadFileState, KngUploadFileFactory, ErrorMessageSubHeading, ErrorMessageHeading } from 'kinetic-angular';\nimport { CssClass } from '../../services/shared/shared-enums';\nimport { SharedService } from '../../services/shared/shared.service';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { LoggerService } from '../../services/logger/logger.service';\nimport { SharedUtilService } from '../../services/shared/shared-util.service';\nimport { ToastrService } from 'ngx-toastr';\nimport { ApiResponse } from '../../definitions/api-response.interface';\nimport { FormGroup } from '@angular/forms';\nimport { BusinessAccountRequestUtilService } from './business-account-request-util.service';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class BusinessAccountRequestService \n{\n\tprivate state$: BehaviorSubject = new BehaviorSubject(BusinessAccountRequestFactory.build());\n\tprivate editAdminCompanyDetailsAemLabelsState$: BehaviorSubject = new BehaviorSubject(BusinessAccountRequestFactory.buildEditAdminCompanyDetails());\n\tget editAdminCompanyDetailsAemLabelsState(): EditAdminCompanyDetailsAemLabels \n\t{\n\t\treturn this.editAdminCompanyDetailsAemLabelsState$.value;\n\t}\n\tget state(): BusinessAccountRequestState \n\t{\n\t\treturn this.state$.value;\n\t}\n\tget stateChanged(): Observable \n\t{\n\t\treturn this.state$.asObservable();\n\t}\n\teditAdminCompanyDetailsModalState: ModalState = BusinessAccountRequestFactory.buildEditAdminCompanyDetailsModalState();\n\tbusinessAccountData: BusinessAccountsGridData[] = [];\n\tupdateAdminDetailsErrorMessage: string = '';\n\tisAdminDetailsUpdated$: BehaviorSubject = new BehaviorSubject(false);\n\tuploadFileState: KngUploadFileState = KngUploadFileFactory.build();\n\tuploadModelState: ModalState = BusinessAccountRequestFactory.buildUploadModelState();\n\tuploadModelSubheading: string = '';\n\tmodifiedFileName: string = '';\n\ttempUserId: string = '';\n\tmodelButtons: ModelButtons = BusinessAccountRequestFactory.build().sectionMiddle.grid.uploadFileLabels.modelButtons;\n\tpublic buildEditDetailsForm: FormGroup = this.businessAccountUtilService.buildForm();\n\n\tconstructor(public apiService: ApiService, private sharedService: SharedService, private loggerService: LoggerService, private sharedUtilService: SharedUtilService, private toaster: ToastrService, public businessAccountUtilService: BusinessAccountRequestUtilService) { }\n\n\tpublic updateState(value: BusinessAccountRequestState): void \n\t{\n\t\tthis.state$.next(value);\n\t}\n\tpublic updateEditAdminCompanyDetailsState(value: EditAdminCompanyDetailsAemLabels): void \n\t{\n\t\tthis.editAdminCompanyDetailsAemLabelsState$.next(value);\n\t}\n\tpublic getBusinessAccountRequestPageAemLabel() \n\t{\n\t\tthis.apiService.getBusinessAccountRequestAemLabel().subscribe({\n\t\t\tnext: (res: BusinessAccountRequestLabel) => \n\t\t\t{\n\t\t\t\tif (res) \n\t\t\t\t{\n\t\t\t\t\tthis.mapBusinessAccountRequestLabel(res);\n\t\t\t\t\tthis.getBusinessAccountRequestGridData();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tpublic mapBusinessAccountRequestLabel(data: BusinessAccountRequestLabel) \n\t{\n\t\tconst sectionTop = this.state.sectionTop;\n\t\tconst sectionMiddle = this.state.sectionMiddle;\n\t\tsectionTop.pageHeading = data.pageHeading;\n\t\tsectionMiddle.tableHeading = data.tableHeading;\n\t\tsectionMiddle.grid.companyGridLabel = data.grid.companyGridLabel;\n\t\tif (sectionMiddle.tableState.tooltip) \n\t\t\tsectionMiddle.tableState.tooltip.content = data.grid.tooltip;\n\t\tsectionMiddle.tableState.noResult.image.altText = data.grid.noResult.altText ? data.grid.noResult.altText : '';\n\t\tsectionMiddle.tableState.noResult.text = data.grid.noResult.label ? data.grid.noResult.label : '';\n\t\tconst headers: HeaderObj[] = [];\n\t\tdata.grid.headers.forEach((header) => \n\t\t{\n\t\t\theaders.push(this.businessAccountUtilService.updateHeaderObj(header.id, header.label));\n\t\t});\n\t\tthis.state.sectionMiddle.tableState.gridHeaders = headers;\n\t\tthis.modelButtons = data.grid.uploadFileLabels.modelButtons;\n\t\tthis.uploadModelSubheading = data.grid.uploadFileLabels.subHeading;\n\t\tthis.businessAccountUtilService.mapUploadFilePopup(data.grid.uploadFileLabels, this.uploadFileState);\n\t\tthis.businessAccountUtilService.mapUploadModelState(data.grid.uploadFileLabels, this.uploadModelState);\t\t\n\t\tthis.resetUploadFileModelFlags();\n\t}\n\tresetUploadFileModelFlags()\n\t{\n\t\tthis.businessAccountUtilService.resetUploadFileModelFlags(this.uploadFileState);\n\t}\n\tcheckServerValidationUploadFile(item: File)\n\t{\n\t\tthis.uploadFileState.isLoading = true;\n\t\tthis.uploadModelState.buttons[0].disabled = true;\n\t\tthis.uploadModelState.buttons[1].hidden = true;\n\t\tconst ele = document.getElementById('kng-modal-close');\n\t\tif(ele)\n\t\t\tele.setAttribute('disabled', 'true');\n\t\tthis.apiService.getServerValidationUploadFile(item, this.tempUserId).subscribe({\n\t\t\tnext: (res: ApiResponse) => \n\t\t\t{\n\t\t\t\tif (res?.data)\n\t\t\t\t{\n\t\t\t\t\tconst responseObject: UploadSuccessResponse = (res.data);\n\t\t\t\t\tthis.modifiedFileName = responseObject.updatedFileName;\n\t\t\t\t\tthis.uploadModelState.buttons[0].hidden = false;\n\t\t\t\t\tthis.uploadModelState.buttons[1].hidden = true;\n\t\t\t\t\tthis.uploadModelState.buttons[0].disabled = false;\n\t\t\t\t\tthis.uploadModelState.buttons[0].label = this.modelButtons.close;\n\t\t\t\t\tthis.uploadModelState.buttons[0].cssClass = CssClass.btnBlack;\n\t\t\t\t\tthis.uploadFileState.isLoading = false;\n\t\t\t\t\tthis.uploadFileState.isError = false;\n\t\t\t\t\tthis.uploadFileState.isSuccessClient = true;\n\t\t\t\t\tthis.uploadFileState.isSuccessServer = true;\n\t\t\t\t\tif(ele)\n\t\t\t\t\t\tele.removeAttribute('disabled');\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: (error: HttpErrorResponse): void => \n\t\t\t{\n\t\t\t\tthis.uploadModelState.buttons[0].disabled = false;\n\t\t\t\tthis.uploadModelState.buttons[1].hidden = true;\n\t\t\t\tthis.uploadFileState.isLoading = false;\n\t\t\t\tthis.uploadFileState.isError = true;\n\t\t\t\tthis.uploadFileState.isSuccessClient = true;\n\t\t\t\tthis.uploadFileState.isSuccessServer = false;\n\t\t\t\tif(ele)\n\t\t\t\t\tele.removeAttribute('disabled');\n\t\t\t\tif(error.error.statusCode === 400)\n\t\t\t\t{\n\t\t\t\t\tthis.uploadFileState.isSuccessClient = false;\n\t\t\t\t\tthis.uploadFileState.errorHeading = ErrorMessageHeading.wrongData;\n\t\t\t\t\tthis.uploadFileState.errorSubHeading = ErrorMessageSubHeading.wrongData;\n\t\t\t\t}\n\t\t\t\telse if(error.error.statusCode === 403)\n\t\t\t\t{\n\t\t\t\t\tthis.uploadFileState.errorHeading = ErrorMessageHeading.uploadFailed;\n\t\t\t\t\tthis.uploadFileState.errorSubHeading = ErrorMessageSubHeading.apiFailure;\n\t\t\t\t}\n\t\t\t},\n\t\t\tcomplete: () => \n\t\t\t{\n\t\t\t\tsetTimeout(() => \n\t\t\t\t{\n\t\t\t\t\tthis.uploadFileState.isLoading = false;\n\t\t\t\t}, 1000);\n\t\t\t\tthis.getBusinessAccountRequestGridData();\n\t\t\t}\n\t\t});\n\t}\n\tpublic getBusinessAccountRequestGridData() \n\t{\n\t\tthis.state.sectionMiddle.tableState.loading = true;\n\t\tthis.apiService.getBusinessAccountRequestData().subscribe({\n\t\t\tnext: (response) => \n\t\t\t{\n\t\t\t\tthis.state.sectionMiddle.isError = false;\n\t\t\t\tconst data = response.data as BusinessAccountsGridData[];\n\t\t\t\tthis.businessAccountData = data;\n\t\t\t\tif (data) \n\t\t\t\t\tthis.mapToTableState(data);\n\t\t\t},\n\t\t\terror: (error: HttpErrorResponse): void => \n\t\t\t{\n\t\t\t\tif (error) \n\t\t\t\t{\n\t\t\t\t\tthis.state.sectionMiddle.isError = true;\n\t\t\t\t\tthis.state.sectionMiddle.errorState= this.businessAccountUtilService.getErrorResponse();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcomplete: () => \n\t\t\t{\n\t\t\t\tsetTimeout(() => \n\t\t\t\t{\n\t\t\t\t\tthis.state.sectionMiddle.tableState.loading = false;\n\t\t\t\t}, 1000);\n\t\t\t}\n\t\t});\n\t}\n\tmapToTableState(res: BusinessAccountsGridData[]) \n\t{\n\t\tsetTimeout(() => \n\t\t{\n\t\t\tconst rowValue: GridValue[] = [];\n\t\t\tconst resources: BusinessAccountsGridData[] = res;\n\t\t\tthis.state.sectionMiddle.businessAccountData = resources;\n\t\t\tresources.forEach((obj: BusinessAccountsGridData) => \n\t\t\t{\n\t\t\t\tconst valueObj: GridValue = this.businessAccountUtilService.setDefaultValues(obj);\n\t\t\t\tvalueObj.values.push(this.businessAccountUtilService.updateAccessGridData(AccountGrid.requestedOn, obj, this.state));\n\t\t\t\tvalueObj.values.push(this.businessAccountUtilService.updateAccessGridData(AccountGrid.topLevelGrid, obj, this.state));\n\t\t\t\tvalueObj.values.push(this.businessAccountUtilService.updateAccessGridData(AccountGrid.adminCompanyDetails, obj, this.state));\n\t\t\t\tvalueObj.values.push(this.businessAccountUtilService.updateAccessGridData(AccountGrid.contact, obj, this.state));\n\t\t\t\tvalueObj.values.push(this.businessAccountUtilService.updateAccessGridData(AccountGrid.locationList, obj, this.state));\n\t\t\t\tvalueObj.values.push(this.businessAccountUtilService.updateAccessGridData(AccountGrid.businessAccountApproval, obj, this.state));\n\t\t\t\trowValue.push(valueObj);\n\t\t\t});\n\t\t\tthis.state.sectionMiddle.tableState.gridData = rowValue;\n\t\t});\n\t}\n\trejectUsers(usersList: AprRejUserData[]) \n\t{\n\t\tthis.state.sectionMiddle.loading = true;\n\t\tif (usersList?.length > 0) \n\t\t{\n\t\t\tconst rejectBusinessAccountPayload: RejectBusinessAccountPayload = { email: usersList[0].email };\n\t\t\tthis.apiService.rejectBusinessAccount(rejectBusinessAccountPayload).subscribe({\n\t\t\t\tnext: (res: ApiResponse) => \n\t\t\t\t{\n\t\t\t\t\tif (res) \n\t\t\t\t\t{\n\t\t\t\t\t\tthis.state.sectionMiddle.loading = false;\n\t\t\t\t\t\tthis.getBusinessAccountRequestGridData();\n\t\t\t\t\t\tthis.toaster.success(res.message);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: (error: HttpErrorResponse): void => \n\t\t\t\t{\n\t\t\t\t\tif (error) \n\t\t\t\t\t{\n\t\t\t\t\t\tthis.state.sectionMiddle.loading = false;\n\t\t\t\t\t\tthis.loggerService.error(error.error);\n\t\t\t\t\t\tthis.toaster.error(error.error.message);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\tpublic getEditAdminCompanyDetailsAemLabels() \n\t{\n\t\tthis.apiService.getEditAdminCompanyDetailsAemLabels().subscribe({\n\t\t\tnext: (response: EditAdminCompanyDetailsAemLabels) => \n\t\t\t{\n\t\t\t\tif (response) \n\t\t\t\t\tthis.mapEditAdminCompanyDetailsLabels(response);\t\t\t\t\t\n\t\t\t}\n\t\t});\n\t}\n\tmapEditAdminCompanyDetailsLabels(response: EditAdminCompanyDetailsAemLabels) \n\t{\n\t\tthis.editAdminCompanyDetailsAemLabelsState.heading = response.heading;\n\t\tthis.editAdminCompanyDetailsAemLabelsState.pageLabels.companyName.label = response.pageLabels.companyName.label;\n\t\tthis.editAdminCompanyDetailsAemLabelsState.pageLabels.addressLine1.label = response.pageLabels.addressLine1.label;\n\t\tthis.editAdminCompanyDetailsAemLabelsState.pageLabels.addressLine2.label = response.pageLabels.addressLine2.label;\n\t\tthis.editAdminCompanyDetailsAemLabelsState.pageLabels.country.label = response.pageLabels.country.label;\n\t\tthis.editAdminCompanyDetailsAemLabelsState.pageLabels.state.label = response.pageLabels.state.label;\n\t\tthis.editAdminCompanyDetailsAemLabelsState.pageLabels.city.label = response.pageLabels.city.label;\n\t\tthis.editAdminCompanyDetailsAemLabelsState.pageLabels.zipCode.label = response.pageLabels.zipCode.label;\n\t\tthis.editAdminCompanyDetailsAemLabelsState.errorText.requiredErrorMessage = response.errorText.requiredErrorMessage;\n\t\tthis.editAdminCompanyDetailsAemLabelsState.errorText.minLengthZipCodeError = response.errorText.minLengthZipCodeError;\n\t\tthis.editAdminCompanyDetailsAemLabelsState.errorText.canadaPostalCodeFormatError = response.errorText.canadaPostalCodeFormatError;\n\t\tthis.editAdminCompanyDetailsModalState.buttons[0].label = response.pageButtons[0].cancel.label;\n\t\tthis.editAdminCompanyDetailsModalState.buttons[1].label = response.pageButtons[0].save.label;\n\t}\n\tpublic patchEditDetailsForm(data: BusinessAccountsGridData): void \n\t{\n\t\tthis.buildEditDetailsForm.patchValue({\n\t\t\taccountName: data.companyDetails.companyName,\n\t\t\taddressLine1: data.companyDetails.addressLine1,\n\t\t\taddressLine2: data.companyDetails.addressLine2,\n\t\t\tcountry: this.sharedService.checkCountryCode(data.companyDetails.country),\n\t\t\tcity: data.companyDetails.city,\n\t\t\tstate: data.companyDetails.state,\n\t\t\tpostalCode: this.sharedUtilService.formatZipCode(data.companyDetails.zipCode, data.companyDetails.country)\n\t\t});\n\t}\n\tformatZipCode(value: string) \n\t{\n\t\tconst countryValue = this.buildEditDetailsForm.controls['country'].value;\n\t\tthis.buildEditDetailsForm.patchValue({ postalCode: this.sharedUtilService.formatZipCode(value, countryValue) });\n\t}\n\tpublic downloadLocationList(tempUserID: string) \n\t{\n\t\tconst selectedRowIndex: number = this.state.sectionMiddle.tableState.gridData.findIndex(row => row.id === tempUserID);\n\t\tconst fileName: string = this.businessAccountData[selectedRowIndex].pendingLocationDetails.updatedFileName;\n\t\tthis.businessAccountUtilService.locationLinkStatusChecked(true, selectedRowIndex, this.state);\n\t\tthis.apiService.downloadLocationList(tempUserID).subscribe(\n\t\t\t{\n\t\t\t\tnext: (res) => \n\t\t\t\t{\n\t\t\t\t\tif (res) \n\t\t\t\t\t{\n\t\t\t\t\t\tthis.sharedService.downloadExcel(fileName, res);\n\t\t\t\t\t\tthis.businessAccountUtilService.buttonStatusChecked(false, selectedRowIndex, this.state);\n\t\t\t\t\t\tthis.businessAccountUtilService.locationLinkStatusChecked(false, selectedRowIndex, this.state);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: (error): void => \n\t\t\t\t{\n\t\t\t\t\tif (error) \n\t\t\t\t\t\tthis.businessAccountUtilService.handleError(error, selectedRowIndex, this.state);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\tupdateAdminCompanyDetails(payload: AdminCompanyDetails) \n\t{\n\t\tthis.state.sectionMiddle.loading = true;\n\t\tthis.apiService.updateAdminCompanyDetails(payload).subscribe({\n\t\t\tnext: (response: ApiResponse) => \n\t\t\t{\n\t\t\t\tif (response?.success && response?.statusCode === 200) \n\t\t\t\t{\n\t\t\t\t\tthis.updateAdminDetailsErrorMessage = '';\n\t\t\t\t\tthis.isAdminDetailsUpdated$.next(true);\n\t\t\t\t\tthis.toaster.success(response.message);\n\t\t\t\t\tthis.getBusinessAccountRequestGridData();\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: (error: HttpErrorResponse) => \n\t\t\t{\n\t\t\t\tthis.updateAdminDetailsErrorMessage = error.error.message;\n\t\t\t\tthis.state.sectionMiddle.loading = false;\n\t\t\t},\n\t\t\tcomplete: () => \n\t\t\t{\n\t\t\t\tsetTimeout(() => \n\t\t\t\t{\n\t\t\t\t\tthis.state.sectionMiddle.loading = false;\n\t\t\t\t}, 1000);\n\t\t\t}\n\t\t});\n\t}\n\tpublic approveBusinessAdmin(payload: ApproveBusinessAdminPayload)\n\t{\n\t\tthis.state.sectionMiddle.loading = true;\n\t\tthis.apiService.approveBusinessAdminAccount(payload).subscribe({\n\t\t\tnext: (response: ApiResponse) =>\n\t\t\t{\n\t\t\t\tif (response?.success && (response?.statusCode === 201 || response?.statusCode === 202))\n\t\t\t\t{\n\t\t\t\t\tthis.state.sectionMiddle.loading = false;\n\t\t\t\t\tthis.toaster.success(response.message);\n\t\t\t\t\tthis.getBusinessAccountRequestGridData();\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: (error: HttpErrorResponse): void =>\n\t\t\t{\n\t\t\t\tif (error)\n\t\t\t\t{\n\t\t\t\t\tthis.state.sectionMiddle.loading = false;\n\t\t\t\t\tif (error.error.statusCode === 400 || error.error.statusCode === 500)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.toaster.error(error.error.message);\n\t\t\t\t\t}\n\t\t\t\t\tthis.loggerService.error(error.error);\n\t\t\t\t}\n\t\t\t},\n\t\t\tcomplete: () => \n\t\t\t{\n\t\t\t\tsetTimeout(() => \n\t\t\t\t{\n\t\t\t\t\tthis.state.sectionMiddle.loading = false;\n\t\t\t\t}, 1000);\n\t\t\t}\n\t\t});\n\t}\n}\n","\n\n\n
\n

{{service.updateAdminDetailsErrorMessage}}

\n
\n
\n
\n\n
\n
\n \n \n
\n
\n {{ getRequiredErrorMessage( editAdminCompanyDetailsAemLabelsState.pageLabels.companyName.label) }}\n
\n
\n {{ editAdminCompanyDetailsAemLabelsState.errorText.invalidCharacterWithNumericErrorMessage }}\n
\n
\n
\n\n
\n \n \n
\n {{ getRequiredErrorMessage( editAdminCompanyDetailsAemLabelsState.pageLabels.addressLine1.label) }}\n
\n
\n\n
\n \n \n
\n
\n\n
\n
\n \n
\n \n {{country.label}}\n \n
\n\n
\n \n
\n
\n {{getRequiredErrorMessage(editAdminCompanyDetailsAemLabelsState.pageLabels.country.label)}}\n
\n
\n\n
\n \n \n
\n
\n {{getRequiredErrorMessage(editAdminCompanyDetailsAemLabelsState.pageLabels.city.label)}}\n
\n
\n {{ editAdminCompanyDetailsAemLabelsState.errorText.invalidCharacterWithoutNumericErrorMessage }}\n
\n
\n
\n\n
\n \n
\n \n \n {{ state.label }}\n \n \n
\n
\n \n
\n
\n {{ getRequiredErrorMessage(editAdminCompanyDetailsAemLabelsState.pageLabels.state.label) }}\n
\n
\n\n
\n \n \n
\n \n {{getRequiredErrorMessage(editAdminCompanyDetailsAemLabelsState.pageLabels.zipCode.label)}}\n
\n
\n {{ editAdminCompanyDetailsAemLabelsState.errorText.minLengthZipCodeError }}\n
\n
\n {{ editAdminCompanyDetailsAemLabelsState.errorText.canadaPostalCodeFormatError }}\n
\n
\n\n
\n
\n\n \n \n
\n\n
\n

{{ service.uploadModelSubheading }}

\n
\n \n \n
\n","import { Component, Input, OnDestroy, OnInit, Output, EventEmitter, ViewChild } from '@angular/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { AdminCompanyDetails, ApproveBusinessAdminPayload, BusinessAccountRequest, BusinessAccountRequestState, BusinessAccountsGridData, EditAdminCompanyDetailsAemLabels, ValidateAdminForm } from './definitions';\nimport { BusinessAccountRequestService } from './business-account-request.service';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { AprRejActionData, AprRejBtnType, ButtonState, ErrorMessageHeading, ErrorMessageSubHeading, GridValue, KngDialogTooltipComponent, KngLoaderState, KngUploadFileComponent, ModalComponent, ModalEvent, ModalState } from 'kinetic-angular';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { CssClass, Icons, ModalButtonId, countries, provinces, states } from '../../services/shared/shared-enums';\nimport { SharedService } from '../../services/shared/shared.service';\nimport { SharedUtilService } from '../../services/shared/shared-util.service';\nimport { MatSelectChange } from '@angular/material/select';\nimport { ControlName } from '../../services/shared/shared-mapping';\nimport { AnalyticsDataLayer } from '../../services/analytics/definitions';\nimport { AnalyticsService } from '../../services/analytics/analytics.service';\n\n\n@Component({\n\tselector: 'tmhna-portal-business-account-request',\n\ttemplateUrl: './template/business-account-request.component.html',\n\tstyleUrls: ['./template/business-account-request.component.scss']\n})\nexport class BusinessAccountRequestComponent implements BusinessAccountRequest, OnInit, OnDestroy \n{\n\n\tprivate subscriptions: Subscription = new Subscription();\n\tprivate statesOrProvinces$: BehaviorSubject<{ label: string; value: string }[]> = new BehaviorSubject<{ label: string; value: string }[]>(\n\t\t[]\n\t);\n\tcountries = countries;\n\tvalidateEditForm: ValidateAdminForm = {\n\t\taccountName: false,\n\t\taddressLine1: false,\n\t\tcountry: false,\n\t\tcity: false,\n\t\tstate: false,\n\t\tpostalCode: false\n\t};\n\ttempUserId: string = '';\n\tloaderState: KngLoaderState = { imagePath: Icons.loaderWhite };\n\tdialogRef!: MatDialogRef;\n\n\t@ViewChild('editAdminCompanyDetailsModal') editAdminCompanyDetailsModal!: ModalComponent;\n\t@ViewChild('uploadFile') uploadFile!: ModalComponent;\n\t@ViewChild(KngUploadFileComponent, { static: false }) fileUploadComponent: | KngUploadFileComponent | undefined;\n\n\t@Output() isDirty = new EventEmitter();\n\t@Output() stateChanged: EventEmitter = new EventEmitter();\n\n\t@Input() set state(value: BusinessAccountRequestState) \n\t{\n\t\tthis.service.updateState(value);\n\t}\n\tget state(): BusinessAccountRequestState \n\t{\n\t\treturn this.service.state;\n\t}\n\tset statesValue(value: { label: string; value: string }[]) \n\t{\n\t\tthis.statesOrProvinces$.next(value);\n\t}\n\tget statesValue(): { label: string; value: string }[] \n\t{\n\t\treturn this.statesOrProvinces$.value;\n\t}\n\tget editAdminCompanyDetailsModalState(): ModalState \n\t{\n\t\treturn this.service.editAdminCompanyDetailsModalState;\n\t}\n\t@Input() set editAdminCompanyDetailsAemLabelsState(value: EditAdminCompanyDetailsAemLabels) \n\t{\n\t\tthis.service.updateEditAdminCompanyDetailsState(value);\n\t}\n\tget editAdminCompanyDetailsAemLabelsState(): EditAdminCompanyDetailsAemLabels \n\t{\n\t\treturn this.service.editAdminCompanyDetailsAemLabelsState;\n\t}\n\tget buildEditDetailsForm() \n\t{\n\t\treturn this.service.buildEditDetailsForm;\n\t}\n\n\tconstructor(public service: BusinessAccountRequestService, private sharedService: SharedService,\n\t\tpublic dialog: MatDialog, private overlay: Overlay, private sharedUtilService: SharedUtilService,\n\t\tprivate analyticsService: AnalyticsService) { }\n\n\tngOnInit(): void \n\t{\n\t\tthis.initSubscriptions();\n\t\tthis.service.getBusinessAccountRequestPageAemLabel();\n\t\tthis.service.getEditAdminCompanyDetailsAemLabels();\n\t\tthis.service.buildEditDetailsForm?.get('country')?.valueChanges.subscribe({\n\t\t\tnext: value => \n\t\t\t{\n\t\t\t\tthis.statesValue = [];\n\t\t\t\tif (value?.includes('US')) \n\t\t\t\t{\n\t\t\t\t\tsetTimeout(() => \n\t\t\t\t\t{\n\t\t\t\t\t\tthis.statesValue = states;\n\t\t\t\t\t}, 0);\n\t\t\t\t\tthis.service.buildEditDetailsForm.controls['postalCode'].removeValidators([this.sharedService.zipCodeCanadaValidCheck]);\n\t\t\t\t\tthis.service.buildEditDetailsForm.controls['postalCode'].addValidators([this.sharedService.zipCodeLengthCheck]);\n\t\t\t\t\tthis.service.buildEditDetailsForm.controls['postalCode'].updateValueAndValidity();\n\t\t\t\t}\n\t\t\t\telse if (value?.includes('CA')) \n\t\t\t\t{\n\t\t\t\t\tsetTimeout(() => \n\t\t\t\t\t{\n\t\t\t\t\t\tthis.statesValue = provinces;\n\t\t\t\t\t}, 0);\n\t\t\t\t\tthis.service.buildEditDetailsForm.controls['postalCode'].removeValidators([this.sharedService.zipCodeLengthCheck]);\n\t\t\t\t\tthis.service.buildEditDetailsForm.controls['postalCode'].addValidators([this.sharedService.zipCodeCanadaValidCheck]);\n\t\t\t\t\tthis.service.buildEditDetailsForm.controls['postalCode'].updateValueAndValidity();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tthis.service.isAdminDetailsUpdated$.subscribe(data => \n\t\t{\n\t\t\tif (data) \n\t\t\t{\n\t\t\t\tthis.closeModal();\n\t\t\t}\n\t\t});\n\t\tthis.trackAnalyticsOnLoad();\n\t}\n\ttrackAnalyticsOnLoad()\n\t{\n\t\tconst analyticsData: AnalyticsDataLayer = {\n\t\t\tevent: 'pageView',\n\t\t\tpage: {\n\t\t\t\tname: 'Business Account Request Management'\n\t\t\t}\n\t\t};\n\t\tthis.analyticsService.trackByEvent(analyticsData);\n\t}\n\tngOnDestroy(): void \n\t{\n\t\tthis.destroySubscriptions();\n\t}\n\n\tprivate initSubscriptions(): void \n\t{\n\t\tconst stateChangeSubs: Subscription = this.service.stateChanged.subscribe(\n\t\t\t(next: BusinessAccountRequestState) => this.stateChanged.emit(next)\n\t\t);\n\t\tthis.subscriptions.add(stateChangeSubs);\n\t}\n\tprivate destroySubscriptions(): void \n\t{\n\t\tthis.subscriptions.unsubscribe();\n\t}\n\tshowTooltip(id: string) \n\t{\n\t\tthis.dialogRef = this.dialog.open(KngDialogTooltipComponent, {\n\t\t\twidth: '320px',\n\t\t\tdata: { state: this.state.sectionMiddle.tableState.tooltip, positionRelativeToElement: document.getElementById('tooltip-' + id) },\n\t\t\trestoreFocus: true,\n\t\t\tscrollStrategy: this.overlay.scrollStrategies.noop(),\n\t\t\tpanelClass: 'kng-dialog-tooltip-container'\n\t\t});\n\t\tthis.dialogRef?.afterClosed().subscribe(\n\t\t\t() => \n\t\t\t{\n\t\t\t\tthis.dialogRef.close();\n\t\t\t});\n\t}\n\n\tapproveRejectUser(data: AprRejActionData) \n\t{\n\t\tif (data?.action === AprRejBtnType.singleReject) \n\t\t{\n\t\t\tthis.service.rejectUsers(data.selectedUserData);\n\t\t}\n\t\tif (data?.action === AprRejBtnType.singleApprove)\n\t\t{\n\t\t\tconst approveBusinessAdminPayload: ApproveBusinessAdminPayload = {\n\t\t\t\ttempUserId: data.selectedUserDataForApprove[0]?.id\n\t\t\t};\n\t\t\tthis.service.approveBusinessAdmin(approveBusinessAdminPayload);\n\t\t}\n\t}\n\topenEditAdminCompanyDetailsModal(id: string) \n\t{\n\t\tthis.service.updateAdminDetailsErrorMessage = '';\n\t\tthis.sharedUtilService.hideModalBackdrop();\n\t\tthis.editAdminCompanyDetailsModalState.hidden = false;\n\t\tthis.editAdminCompanyDetailsModalState.label = this.editAdminCompanyDetailsAemLabelsState.heading;\n\t\tconst businessAccountData: BusinessAccountsGridData | undefined = this.state.sectionMiddle.businessAccountData.find((data) =>\n\t\t\tdata.tempUserID === id\n\t\t);\n\t\tif (businessAccountData) \n\t\t{\n\t\t\tthis.tempUserId = businessAccountData.tempUserID;\n\t\t\tthis.service.patchEditDetailsForm(businessAccountData);\n\t\t}\n\t}\n\n\n\teditAdminCompanyDetailsModalEvent(event: ModalEvent) \n\t{\n\t\tif (event.cta.id === ModalButtonId.cancel) \n\t\t{\n\t\t\tthis.closeModal();\n\t\t}\n\t\telse if (this.isEditAdminFormValid()) \n\t\t{\n\t\t\tthis.service.updateAdminCompanyDetails(this.getUpdateAdminCompanyDetailsPayload());\n\t\t}\n\t}\n\n\tgetUpdateAdminCompanyDetailsPayload(): AdminCompanyDetails \n\t{\n\t\tconst payload: AdminCompanyDetails = {\n\t\t\tcompanyName: this.service.buildEditDetailsForm.controls['accountName']['value'],\n\t\t\taddressLine1: this.service.buildEditDetailsForm.controls['addressLine1']['value'],\n\t\t\taddressLine2: this.service.buildEditDetailsForm.controls['addressLine2']['value'],\n\t\t\tcountry: this.service.buildEditDetailsForm.controls['country']['value'],\n\t\t\tcity: this.service.buildEditDetailsForm.controls['city']['value'],\n\t\t\tstate: this.service.buildEditDetailsForm.controls['state']['value'],\n\t\t\tzipCode: this.service.buildEditDetailsForm.controls['postalCode']['value'],\n\t\t\ttempUserID: this.tempUserId\n\t\t};\n\t\treturn payload;\n\t}\n\n\tisEditAdminFormValid(): boolean \n\t{\n\t\tthis.validateEditForm = {\n\t\t\taccountName: this.validateEditAdminCompanyDetailsForm('accountName'),\n\t\t\taddressLine1: this.validateEditAdminCompanyDetailsForm('addressLine1'),\n\t\t\tcountry: this.validateEditAdminCompanyDetailsForm('country'),\n\t\t\tcity: this.validateEditAdminCompanyDetailsForm('city'),\n\t\t\tstate: this.validateEditAdminCompanyDetailsForm('state'),\n\t\t\tpostalCode: this.validateEditAdminCompanyDetailsForm('postalCode')\n\t\t};\n\t\treturn !(this.isFormFieldCheck());\n\t}\n\n\tisFormFieldCheck(): boolean \n\t{\n\t\treturn (this.validateEditForm.accountName || this.validateEditForm.addressLine1 || this.validateEditForm.country || this.validateEditForm.city\n\t\t\t|| this.validateEditForm.state || this.validateEditForm.postalCode);\n\t}\n\n\tcloseModal() \n\t{\n\t\tthis.editAdminCompanyDetailsModalState.hidden = false;\n\t\tthis.editAdminCompanyDetailsModal?.closePopup();\n\t\tthis.editAdminCompanyDetailsModalState.hidden = true;\n\t}\n\n\tpublic validateEditAdminCompanyDetailsForm(field: string): boolean \n\t{\n\t\treturn (\n\t\t\tthis.buildEditDetailsForm.controls[field]?.invalid &&\n\t\t\t(this.buildEditDetailsForm.controls[field].dirty ||\n\t\t\t\tthis.buildEditDetailsForm.controls[field].touched)\n\t\t);\n\t}\n\n\tcountryChange(event: MatSelectChange) \n\t{\n\t\tthis.isDirty.emit(true);\n\t\tif (event) \n\t\t{\n\t\t\tthis.service.buildEditDetailsForm.controls['state'].reset();\n\t\t\tthis.service.buildEditDetailsForm.controls['state'].setValue('');\n\t\t\tthis.service.buildEditDetailsForm.controls['postalCode'].reset();\n\t\t\tthis.service.buildEditDetailsForm.controls['city'].reset();\n\t\t\tthis.service.buildEditDetailsForm.controls['state'].markAsDirty();\n\t\t\tthis.service.buildEditDetailsForm.controls['postalCode'].markAsDirty();\n\t\t\tthis.service.buildEditDetailsForm.controls['city'].markAsDirty();\n\t\t}\n\t}\n\tgetRequiredErrorMessage(fieldName: string) \n\t{\n\t\treturn this.sharedService.updateMessage(this.editAdminCompanyDetailsAemLabelsState.errorText.requiredErrorMessage, '$token', fieldName);\n\t}\n\n\tformatZipCode(value: string) \n\t{\n\t\tthis.isDirty.emit(true);\n\t\tthis.service.formatZipCode(value);\n\t}\n\tnonNumericSpaceRestriction(value: string, name: string) \n\t{\n\t\tconst newValue = value.replace(/\\u00A0/g, ' ');\n\t\tif (name === ControlName.city) \n\t\t{\n\t\t\tthis.service.buildEditDetailsForm.patchValue({\n\t\t\t\tcity: this.sharedService.nonNumericSpaceRestriction(newValue)\n\t\t\t});\n\t\t}\n\t\telse if (name === ControlName.accountName) \n\t\t{\n\t\t\tthis.service.buildEditDetailsForm.patchValue({\n\t\t\t\taccountName: this.sharedUtilService.formatValue(newValue, name)\n\t\t\t});\n\t\t}\n\t}\n\tdownloadLocationListData(id: string) \n\t{\n\t\tthis.service.downloadLocationList(id);\n\t}\n\tcloseModalUpload()\n\t{\n\t\tthis.service.resetUploadFileModelFlags();\n\t\tthis.service.uploadModelState.buttons[0].disabled = false;\n\t\tthis.service.uploadModelState.buttons[0].hidden = false;\n\t\tthis.service.uploadModelState.buttons[1].hidden = false;\n\t\tthis.service.uploadModelState.buttons[1].disabled = true;\n\t\tthis.service.uploadModelState.buttons[0].label = this.service.modelButtons.cancel;\n\t\tthis.service.uploadModelState.buttons[0].cssClass = CssClass.btnSecondary;\n\t\tthis.service.uploadModelState.hidden = true;\n\t\tif(this.fileUploadComponent)\n\t\t\tthis.fileUploadComponent.files = [];\n\t}\n\tuploadFileModalBtnEvent(event: ModalEvent)\n\t{\n \tconst btnIndex = event.state.buttons.findIndex((cta: ButtonState) => cta.label === event.cta.label);\n\t\tif (btnIndex === 1)\n\t\t{\n\t\t\tif(this.fileUploadComponent)\n\t\t\t\tthis.uploadFileServerValidation(this.fileUploadComponent.files[0]);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.uploadFile?.closePopup();\n\t\t\tthis.closeModalUpload();\n\t\t}\n\t}\n\tuploadFileServerValidation(item: File)\n\t{\n\t\tthis.service.checkServerValidationUploadFile(item);\n\t}\n\treplaceFileEventEmitter()\n\t{\n\t\tthis.service.uploadModelState.buttons[0].disabled = false;\n\t\tthis.service.uploadModelState.buttons[1].hidden = false;\n\t\tthis.service.uploadModelState.buttons[1].disabled = true;\n\t\tif(this.fileUploadComponent)\n\t\t\tthis.fileUploadComponent.files = [];\n\t}\n\topenUploadSection(row: GridValue) \n\t{\n\t\tthis.service.tempUserId = row.adminLocationID ?? '';\n\t\tthis.sharedUtilService.hideModalBackdrop();\n\t\tthis.service.uploadModelState.hidden = false;\n\t\tthis.service.uploadFileState.isLoading = false;\n\t}\n\tfileValidationCheck(item: File)\n\t{\n\t\tconst fileNameArr = item.name.split('.');\n \tfileNameArr.pop();\n \tconst fileName = fileNameArr.join('.');\n\t\tif(fileNameArr.length !== 1 || fileName.trim().length === 0 || fileName.includes('/') || /\\\\/.exec(fileName) || item.name.split('.').pop()!=='xlsx') \n\t\t{\n\t\t\tthis.service.uploadFileState.errorHeading = ErrorMessageHeading.uploadFailed;\n\t\t\tthis.service.uploadFileState.errorSubHeading = ErrorMessageSubHeading.wrongFormat;\n\t\t\tthis.emptyUploadFilesArray();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.checkOtherFileValidation(item);\n\t\t}\n\t}\n\tcheckOtherFileValidation(item: File)\n\t{\n\t\tconst fileSize = Math.round((item.size / 1024));\n\t\tif(fileSize > 102400) \n\t\t{\n\t\t\tthis.service.uploadFileState.errorHeading = ErrorMessageHeading.sizeExceed;\n\t\t\tthis.service.uploadFileState.errorSubHeading = ErrorMessageSubHeading.sizeExceed;\n\t\t\tthis.emptyUploadFilesArray();\n\t\t}\n\t\telse \n\t\t{\n\t\t\tif(this.fileUploadComponent)\n\t\t\t\tthis.fileUploadComponent.files[0] = item;\n\t\t\tthis.service.uploadModelState.buttons[1].disabled = false;\n\t\t\tthis.service.uploadModelState.buttons[1].hidden = false;\n\t\t\tthis.service.uploadFileState.isSuccessClient = true;\n\t\t\tthis.service.uploadFileState.isSuccessServer = false;\n\t\t}\n\t}\n\temptyUploadFilesArray()\n\t{\n\t\tthis.service.uploadModelState.buttons[1].hidden = true;\n\t\tthis.service.uploadFileState.isError = true;\n\t\tthis.service.uploadFileState.isSuccessClient = false;\n\t\tthis.service.uploadFileState.isSuccessServer = false;\n\t\tif(this.fileUploadComponent)\n\t\t\tthis.fileUploadComponent.files = [];\n\t}\n}\n","import { ModalState } from 'kinetic-angular';\nimport { CustomerSupportState, CustomerData } from './definition/customer-support.interface';\nimport { CssClass, ModalButtonId } from '../../services/shared/shared-enums';\nexport class CustomerSupportFactory \n{\n\tpublic static build(): CustomerSupportState \n\t{ \n\t\treturn {\n\t\t\tpageHeading: '',\n\t\t\tstartCTA: {\n\t\t\t\tsize: 'large',\n\t\t\t\tstyle: 'primary',\n\t\t\t\tdisabled: true,\n\t\t\t\tlabel: '',\n\t\t\t\tposition: 'none',\n\t\t\t\ticon: { iconPath: '', altText: '' }\n\t\t\t},\n\t\t\ttitle: '',\n\t\t\temail: '',\n\t\t\tdescription: '',\n\t\t\tstartSession: '',\n\t\t\tmodalNote: '',\n\t\t\tloading: false,\n\t\t\temailErrorMessage: '',\n\t\t\tisInvalid: false\n\t\t};\n\t}\n\n\tpublic static buildconfirmSession(): ModalState \n\t{\n\t\treturn {\n\t\t\thidden: true,\n\t\t\tlabel: 'Impersonate User',\n\t\t\tbuttons: [\n\t\t\t\t{ label: '', disabled: false, cssClass: CssClass.btnSecondary, iconPath: '', id: ModalButtonId.cancel },\n\t\t\t\t{ label: '', iconPath: '', disabled: false, cssClass: CssClass.btnBlack, id: ModalButtonId.proceed }\n\t\t\t],\n\t\t\tcssClass: ''\n\t\t};\n\t}\n\tpublic static buildUserData(): CustomerData \n\t{\n\t\treturn {\n\t\t\temail: '',\n\t\t\tname: '',\n\t\t\trole: ''\n\t\t};\n\t}\n\n}\n","/* eslint-disable no-comments/disallowComments */\nimport { Injectable } from '@angular/core';\nimport { ApiService } from '../../services/api/api.service';\nimport { CustomerSupportState, CustomerSupportAemLabel, CustomerUserRawData } from './definition/customer-support.interface';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { CustomerSupportFactory } from './customer-support.factory';\nimport { LocalStorageService } from '../../services/local-storage/local-storage.service';\nimport { ApiResponse } from '../../definitions/api-response.interface';\nimport { Router } from '@angular/router';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { SharedUtilService } from '../../services/shared/shared-util.service';\nimport { AemApiService } from '../../services/api/api.aem.service';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class CustomerSupportService \n{\n\tpublic state$: BehaviorSubject = new BehaviorSubject(CustomerSupportFactory.build());\n\tconstructor(private readonly apiService: ApiService, private readonly aemApiService:AemApiService, public localStorageService: LocalStorageService, private readonly router: Router, public sharedUtilService: SharedUtilService ) { }\n\tconfirmSession = CustomerSupportFactory.buildconfirmSession();\n\tuserData = CustomerSupportFactory.buildUserData();\n\tget state(): CustomerSupportState \n\t{\n\t\treturn this.state$.value;\n\t}\n\n\tpublic updateState(value: CustomerSupportState): void \n\t{\n\t\tthis.state$.next(value);\n\t}\n\tget stateChanged(): Observable \n\t{\n\t\treturn this.state$.asObservable();\n\t}\n\tpublic getCustomerSupportState(): void \n\t{\n\t\tthis.state.loading= false;\n\t\tconst customerLabel = this.localStorageService.getCustomerAemLabels();\n\t\tif(customerLabel !== null && customerLabel !== undefined)\n\t\t{\n\t\t\tconst labels: CustomerSupportAemLabel = JSON.parse(customerLabel);\n\t\t\tthis.mapCustomerSupportState(labels);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.apiService.getCustomerSupportLabels().subscribe({\n\t\t\t\tnext: (response: ApiResponse) => \n\t\t\t\t{\n\t\t\t\t\tif (response) \n\t\t\t\t\t{\n\t\t\t\t\t\tconst responseObj = response.data;\n\t\t\t\t\t\tthis.localStorageService.setCustomerAemLabels(JSON.stringify(responseObj));\n\t\t\t\t\t\tthis.mapCustomerSupportState(responseObj);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: () => \n\t\t\t\t{\n\t\t\t\t\tthis.state.loading = false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tmapCustomerSupportState(res: CustomerSupportAemLabel): void\n\t{\n\t\tthis.state.pageHeading= res.pageHeading;\n\t\tthis.state.startCTA.label = res.startCTA;\n\t\tthis.state.title= res.title;\n\t\tthis.state.email= res.email;\n\t\tthis.state.startSession= res.startSession;\n\t\tthis.state.description= res.description;\n\t\tthis.state.modalNote= res.modalNote;\n\t\tthis.state.loading= false;\n\t\tthis.confirmSession.label = res.pageHeading;\n\t}\n\n\tstartImpersonationSession(email: string, inboudUrl: boolean = false)\n\t{\n\t\tconst payload = { email: email };\n\t\tthis.apiService.startImpersonationSession(payload).subscribe({\n\t\t\tnext: (res: ApiResponse) => \n\t\t\t{\n\t\t\t\tconst responseObj = res.data;\n\t\t\t\tthis.state.loading = false;\n\t\t\t\tthis.localStorageService.setImpersonateUser(JSON.stringify(responseObj));\n\t\t\t\tthis.localStorageService.setCustomerToDashboard('true');\n\t\t\t\tthis.sharedUtilService.isCustomerSupportSession$.next(true);\n\t\t\t\tif(inboudUrl)\n\t\t\t\t{\n\t\t\t\t\tconst url = localStorage.getItem('inboudUrl');\n\t\t\t\t\tthis.router.navigate([url]);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.router.navigate(['/app/dashboard']);\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: (error: HttpErrorResponse) => \n\t\t\t{\n\t\t\t\tthis.state.isInvalid = true;\n\t\t\t\tthis.state.emailErrorMessage = error.error.message;\n\t\t\t\tthis.state.loading = false;\n\t\t\t}\n\t\t});\n\t}\n\n\tvalidateImpersonationSession(email: string)\n\t{\n\t\tconst payload = { email: email };\n\t\tthis.state.loading = true;\n\t\tthis.apiService.getValidImpersonateUserDetails(payload).subscribe({\n\t\t\tnext: (res: ApiResponse) => \n\t\t\t{\n\t\t\t\tconst responseObj = res.data;\n\t\t\t\tthis.userData.email = responseObj.email;\n\t\t\t\tthis.userData.name = responseObj.name;\n\t\t\t\tthis.userData.role = responseObj.roleName;\n\t\t\t\tthis.confirmSession.hidden = false;\n\t\t\t\tthis.state.loading = false;\n\t\t\t\tthis.localStorageService.setUserName(responseObj.name);\n\t\t\t},\n\t\t\terror: (error: HttpErrorResponse) => \n\t\t\t{\n\t\t\t\tthis.state.isInvalid = true;\n\t\t\t\tthis.state.emailErrorMessage = error.error.message;\n\t\t\t\tthis.confirmSession.hidden = true;\n\t\t\t\tthis.state.loading = false;\n\t\t\t}\n\t\t});\n\t}\n}\n","
\n
\n
\n

{{ state.pageHeading }}

\n
\n
\n
\n
\n
{{state.title }}
\n
{{state.description }}
\n
\n
\n \n \n
\n {{state.emailErrorMessage}}\n
\n
\n
\n \n
\n
\n
\n
\n\n\n
\n {{state.startSession}}\n
\n
\n
\n
Email ID
\n
{{ service.userData.email }}
\n
\n
\n
Name
\n
{{ service.userData.name }}
\n
\n
\n
Role
\n
{{ service.userData.role }}
\n
\n
\n
\n \n
\n \n
\n \n \n ","import { Component, OnInit, Input, EventEmitter, Output, OnDestroy, ViewChild } from '@angular/core';\nimport { CustomerSupportState } from './definition/customer-support.interface';\nimport { CustomerSupportService } from './customer-support.service';\nimport { ErrorMessage, Icons, ModalButtonId, RemovalSubmissionButton } from '../../services/shared/shared-enums';\nimport { KngLoaderState, ModalComponent, ModalEvent, ModalState } from 'kinetic-angular';\nimport { Subscription } from 'rxjs';\nimport { Router } from '@angular/router';\nimport { LocalStorageService } from '../../services/local-storage/local-storage.service';\n\n@Component({\n\tselector: 'tmhna-portal-app-customer-support',\n\ttemplateUrl: './template/customer-support.component.html',\n\tstyleUrls: ['./template/customer-support.component.scss']\n})\nexport class CustomerSupportComponent implements OnInit, OnDestroy\n{\n\n\tconstructor(public service: CustomerSupportService, public router: Router, public localStorageService: LocalStorageService) { }\n\tprivate readonly subscriptions: Subscription = new Subscription();\n\t@Input() showHr: boolean = true;\n\t@ViewChild('confirmSessionState') confirmSessionState!: ModalComponent;\n\tloaderState: KngLoaderState = {\n\t\timagePath: Icons.loaderWhite\n\t};\n\temail: string = '';\n\t@Output() stateChanged: EventEmitter = new EventEmitter();\n\t@Input() set state(value: CustomerSupportState) \n\t{\n\t\tthis.service.updateState(value);\n\t}\n\tget state(): CustomerSupportState\n\t{\n\t\treturn this.service.state;\n\t}\n\tget confirmSession(): ModalState \n\t{\n\t\treturn this.service.confirmSession;\n\t}\n\n\tngOnInit(): void \n\t{\n\t\tthis.initSubscriptions();\n\t\tthis.service.getCustomerSupportState();\n\t\tthis.checkEmail();\n\t\tthis.confirmSession.buttons[0].label = RemovalSubmissionButton.cancel;\n\t\tthis.confirmSession.buttons[1].label = RemovalSubmissionButton.proceed;\n\t\tconst redirectedUser = this.localStorageService.getRedirectedUser();\n\t\tif(redirectedUser)\n\t\t{\n\t\t\tthis.service.startImpersonationSession(redirectedUser, true);\n\t\t\tthis.localStorageService.removeRedirectedUser();\n\t\t}\n\t}\n\n\tprivate initSubscriptions(): void\n\t{\n\t\tconst stateChangeSubs: Subscription = this.service.stateChanged.subscribe(\n\t\t\t(next: CustomerSupportState) => this.stateChanged.emit(next)\n\t\t);\n\t\tthis.subscriptions.add(stateChangeSubs);\n\t}\n\tprivate destroySubscriptions(): void\n\t{\n\t\tthis.subscriptions.unsubscribe();\n\t}\n\n\tngOnDestroy(): void \n\t{\n\t\tthis.destroySubscriptions();\n\t}\n\tasync startSession()\n\t{\n\t\tthis.handleValidation();\n\t\tif(this.state.isInvalid) return;\n\t\tthis.service.validateImpersonationSession(this.email);\n\t}\n\thandleValidation()\n\t{\n\t\tconst emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;\n\t\tif (this.email.trim() === '' || this.email.length < 5 || this.email.length > 50 || !emailRegex.test(this.email))\n\t\t{\n\t\t\tthis.state.isInvalid = true;\n\t\t\tthis.state.emailErrorMessage = ErrorMessage.invalidEmailFormat;\n\t\t}\n\t\telse \n\t\t{\n\t\t\tthis.state.isInvalid = false;\n\t\t\tthis.state.emailErrorMessage = '';\n\t\t}\n\t}\n\tconfirmModalEvent(event: ModalEvent) \n\t{\n\t\tif (event.cta.id === ModalButtonId.proceed) \n\t\t{\n\t\t\tthis.service.startImpersonationSession(this.email);\n\t\t}\n\t\tthis.confirmSession.hidden = false;\n\t\tthis.confirmSessionState.closePopup();\n\t}\n\tcheckEmail()\n\t{\n\t\tthis.state.isInvalid = false;\n\t\tif(this.email.trim() === '')\n\t\t{\n\t\t\tthis.state.startCTA.disabled = true;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.state.startCTA.disabled = false;\n\t\t}\n\t}\n}\n","","import { Component, OnInit } from '@angular/core';\nimport { MatTabChangeEvent } from '@angular/material/tabs';\n\n@Component({\n\tselector: 'tmhna-portal-customer-portal',\n\ttemplateUrl: './customer-portal.component.html',\n\tstyleUrls: ['./customer-portal.component.scss']\n})\nexport class CustomerPortalComponent implements OnInit \n{\n\n\tbusinessAccount = 'Business Account Requests';\n\tinviteUsers = 'Invite Users';\n\tcustomerSupport = 'Impersonate User';\n\tpageTitle = 'User Management';\n\tpublic activeTab: string = '';\n\ttabIndex: number = 0;\n\tconstructor() { }\n\tngOnInit(): void \n\t{\n\t\tconst endCorpSession = localStorage.getItem('endCorpSession');\n\t\tif(endCorpSession && endCorpSession !== null )\n\t\t{\n\t\t\tthis.activeTab = this.customerSupport;\n\t\t\tthis.tabIndex = 2;\n\t\t\tlocalStorage.removeItem('endCorpSession');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.tabIndex = 0;\n\t\t\tthis.activeTab= this.businessAccount;\n\t\t}\n\t}\n\n\tupdateTabView(event: MatTabChangeEvent) \n\t{\n\t\tthis.activeTab = event.tab.textLabel;\n\t}\n}\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BusinessAccountRequestComponent } from './business-account-request.component';\nimport { BusinessAccountRequestService } from './business-account-request.service';\nimport { CommonErrorModule } from '../common-error';\nimport { KngDialogTooltipModule, KngLoaderModule, KngTableModule, KngUploadFileModule, ModalModule } from 'kinetic-angular';\nimport { ToastrModule } from 'ngx-toastr';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatSelectModule } from '@angular/material/select';\nimport { BusinessAccountRequestUtilService } from './business-account-request-util.service';\n\n\n@NgModule({\n\tdeclarations: [\n\t\tBusinessAccountRequestComponent\n\t],\n\timports: [ CommonModule, KngTableModule, KngDialogTooltipModule, KngLoaderModule, CommonErrorModule, ReactiveFormsModule, ModalModule, MatSelectModule, FormsModule, KngUploadFileModule,\n\t\tToastrModule.forRoot({\n\t\t\tpreventDuplicates: true,\n\t\t\tcloseButton: true\n\t\t}) ],\n\texports: [\n\t\tBusinessAccountRequestComponent\n\t],\n\tproviders: [\n\t\tBusinessAccountRequestService, BusinessAccountRequestUtilService\n\t]\n})\nexport class BusinessAccountRequestModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AccordionModule, KngButtonModule, KngCardListModule, KngDialogTooltipModule, KngFilterPanelModule, KngLoaderModule, KngTableLoaderModule, ModalModule } from 'kinetic-angular';\nimport { AnalyticsModule } from '../../services/analytics/analytics.module';\nimport { CustomerSupportComponent } from './customer-support.component';\nimport { CustomerSupportService } from './customer-support.service';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n\tdeclarations: [CustomerSupportComponent],\n\timports: [\n\t\tCommonModule,\n\t\tFormsModule,\n\t\tReactiveFormsModule,\n\t\tKngLoaderModule,\n\t\tKngButtonModule, \n\t\tAccordionModule, \n\t\tAnalyticsModule,\n\t\tKngFilterPanelModule,\n\t\tKngDialogTooltipModule, \n\t\tKngCardListModule,\n\t\tKngTableLoaderModule, \n\t\tModalModule\n\t],\n\texports: [CustomerSupportComponent],\n\tproviders: [CustomerSupportService]\n})\nexport class CustomerSupportModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CustomerPortalComponent } from './customer-portal.component';\nimport { BusinessAccountRequestModule } from './../business-account-request';\nimport { InviteUserModule } from './../invite-users';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { CustomerSupportModule } from '../customer-support/customer-support.module';\n\n@NgModule({\n\tdeclarations: [\n\t\tCustomerPortalComponent\n\t],\n\timports: [ CommonModule, BusinessAccountRequestModule, InviteUserModule, MatTabsModule, CustomerSupportModule ],\n\texports: [\n\t\tCustomerPortalComponent\n\t],\n\tproviders: [\n\n\t]\n})\nexport class CustomerPortalModule {}\n","import { KngButtonPosition, KngButtonSize, KngButtonState, KngButtonStyle } from 'kinetic-angular';\n\nexport interface ContactUs {\n state: ContactUsState;\n}\nexport interface ContactUsState {\n loading: boolean;\n pageHeading: string;\n sectionTopHeading: string;\n pageSubHeading: string;\n sectionTopData: Array;\n sectionBottomHeading: string;\n sectionBottom: SectionBottom;\n buttons: Buttons;\n response: Response;\n comments: SectionTopInput;\n\ttoasterSuccess: ToastrMsg;\n\ttoasterFailure: ToastrMsg;\n subreasonLabelData: SubReasonLabelData;\n}\n\nexport interface AemContactUsLabelData {\n pageHeading: string;\n pageSubHeading: string;\n sectionTopHeading: string;\n sectionTopData: Array;\n sectionBottomHeading: string;\n sectionBottom: SectionBottom;\n buttons: AemButtons;\n comments: AemSectionTopInput;\n\ttoasterSuccess: ToastrMsg;\n\ttoasterFailure: ToastrMsg;\n subreasonLabelData: SubReasonLabelData;\n}\n\ninterface ToastrMsg {\n label: string;\n}\n\ninterface AemButtons {\n submit: string;\n cancel: string;\n}\ninterface Response {\n data: object;\n isInvalid: boolean;\n emailErrorMessage: string;\n}\n\nexport interface ContactUsPayload {\n subject: string;\n description: string;\n requestorFirstName: string;\n requestorLastName: string;\n country: string;\n addressLine1: string;\n zipCode: string;\n city: string;\n state: string;\n companyName: string;\n email: string;\n accountType?:string;\n roleOfUser?:string;\n primaryLocationGRID?:string;\n adminLocationGRID?:string;\n crmRecordExists?:string;\n customerType?:string;\n urlOfOrigin ?:string;\n}\n\n\ninterface SectionBottom {\n dropdownLabel: string;\n isRequired: boolean;\n errorMsg?: string;\n dropDownData: Array;\n}\ninterface Buttons {\n submit: KngButtonState;\n cancel: KngButtonState;\n}\n\nexport interface ButtonType {\n size?: KngButtonSize;\n style?: KngButtonStyle;\n disabled?: boolean;\n label: string;\n position?: KngButtonPosition;\n}\n\nexport interface SectionTopInput {\n label: string;\n placeholder: string;\n errorMsg: string ;\n isRequired: boolean ;\n id: string;\n type: string ;\n}\nexport interface AemSectionTopInput {\n label: string;\n placeholder: string;\n errorMsg: string ;\n isRequired: boolean ;\n}\n\n\nexport interface SubMenu {\n label: string;\n}\n\nexport interface SectionBottomSelect {\n label: string;\n subMenu: Array;\n isOpen?: boolean;\n}\n\nexport enum FieldType {\n text = 'text',\n email = 'email',\n phone = 'phone',\n textarea = 'textarea',\n select = 'select',\n}\n\nexport enum SubReasonLables {\n label= 'Specific Input (Optional)',\n placeholder= 'Please Enter Details Here'\n};\n\nexport enum FormState {\n firstName= 'firstName',\n lastName= 'lastName',\n email= 'email',\n phone= 'phone',\n companyName= 'companyName',\n address= 'address',\n city= 'city',\n state= 'state',\n zipCode= 'zipCode',\n country= 'country',\n reason= 'reason',\n reasonInput= 'reasonInput',\n comments= 'comments',\n phoneNumber = 'phoneNumber',\n}\n\nexport enum SubReasonLabel {\n partsOrder = 'Parts Order',\n equipmentOrder = 'Equipment Order',\n checkoutIssue = 'Checkout Issue',\n manualInformation = 'Manuals',\n partInformation = 'Part Information',\n otherInformation = 'Other',\n invoiceNumber = 'Invoice',\n myToyotaStoreEquipmentOrder = 'MyToyota Store Equipment Order',\n toyotaDealerEquipmentOrder = 'Toyota Dealer Equipment Order',\n}\n\nexport interface SubReasonLabelData {\n partInformation: [SubReasonIndividualLabelData];\n invoiceNumber: [SubReasonIndividualLabelData];\n partsOrder: [SubReasonIndividualLabelData];\n equipmentOrder: [SubReasonIndividualLabelData];\n manualInformation: [SubReasonIndividualLabelData];\n myToyotaStoreEquipmentOrder: [SubReasonIndividualLabelData];\n toyotaDealerEquipmentOrder: [SubReasonIndividualLabelData];\n}\nexport interface SubReasonIndividualLabelData {\n label: string;\n placeholder: string;\n}\n\nexport interface UserData {\n firstName:string;\n lastName:string;\n email:string;\n phoneNumber:string;\n companyName:string;\n addressLine1?:string;\n city?:string;\n state?:string;\n zipCode?:string;\n country?:string;\n accountType?:string;\n role?:string;\n primaryLocationGRID?:string;\n adminLocationID?:string;\n crmRecordExists?:boolean;\n customerType?:string;\n urlOfOrigin ?:string;\n}\n","import { ContactUsState, UserData } from './definitions';\nexport class ContactUsFactory\n{\n\tpublic static build(): ContactUsState\n\t{\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tpageHeading: 'Contact Us',\n\t\t\tsectionTopHeading: 'Tell us about yourself',\n\t\t\tsectionTopData: [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'First Name',\n\t\t\t\t\tplaceholder: 'First Name',\n\t\t\t\t\terrorMsg: 'First Name is required',\n\t\t\t\t\tisRequired: true,\n\t\t\t\t\tid: 'firstName',\n\t\t\t\t\ttype: 'text'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Last Name',\n\t\t\t\t\tplaceholder: 'Last Name',\n\t\t\t\t\terrorMsg: 'Last Name is required',\n\t\t\t\t\tisRequired: true,\n\t\t\t\t\tid: 'lastName',\n\t\t\t\t\ttype: 'text'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Email',\n\t\t\t\t\tplaceholder: 'abcd@email.com',\n\t\t\t\t\terrorMsg: 'Email is required',\n\t\t\t\t\tisRequired: true,\n\t\t\t\t\tid: 'email',\n\t\t\t\t\ttype: 'email'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Phone',\n\t\t\t\t\tplaceholder: '(888) 888-8888',\n\t\t\t\t\terrorMsg: 'Phone is required',\n\t\t\t\t\tisRequired: true,\n\t\t\t\t\tid: 'phone',\n\t\t\t\t\ttype: 'text'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Company Name',\n\t\t\t\t\tplaceholder: 'Company Name',\n\t\t\t\t\terrorMsg: 'Company Name is required',\n\t\t\t\t\tisRequired: true,\n\t\t\t\t\tid: 'companyName',\n\t\t\t\t\ttype: 'text'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Address',\n\t\t\t\t\tplaceholder: 'Address',\n\t\t\t\t\terrorMsg: 'Address is required',\n\t\t\t\t\tisRequired: false,\n\t\t\t\t\tid: 'address',\n\t\t\t\t\ttype: 'text'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Country',\n\t\t\t\t\tplaceholder: 'abcd@email.com',\n\t\t\t\t\terrorMsg: 'Country is required',\n\t\t\t\t\tisRequired: true,\n\t\t\t\t\tid: 'country',\n\t\t\t\t\ttype: 'select'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'State',\n\t\t\t\t\tplaceholder: 'State',\n\t\t\t\t\terrorMsg: 'State is required',\n\t\t\t\t\tisRequired: false,\n\t\t\t\t\tid: 'state',\n\t\t\t\t\ttype: 'select'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'City',\n\t\t\t\t\tplaceholder: 'City',\n\t\t\t\t\terrorMsg: 'City is required',\n\t\t\t\t\tisRequired: false,\n\t\t\t\t\tid: 'city',\n\t\t\t\t\ttype: 'text'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'ZipCode',\n\t\t\t\t\tplaceholder: 'ZipCode',\n\t\t\t\t\terrorMsg: 'ZipCode is required',\n\t\t\t\t\tisRequired: false,\n\t\t\t\t\tid: 'zipCode',\n\t\t\t\t\ttype: 'text'\n\t\t\t\t}\n\t\t\t],\n\t\t\tpageSubHeading: 'Please fill out the form below with your details and message. Our team will review your inquiry and get back to you within 3-4 business days.',\n\t\t\tsectionBottomHeading: 'What can we help you with?',\n\t\t\tsectionBottom: {\n\t\t\t\tdropdownLabel: 'Reason',\n\t\t\t\tisRequired: true,\n\t\t\t\terrorMsg: 'Reason is required',\n\t\t\t\tdropDownData: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Log In/ Registration',\n\t\t\t\t\t\tsubMenu: [],\n\t\t\t\t\t\tisOpen: false\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'My Toyota Account',\n\t\t\t\t\t\tsubMenu: [],\n\t\t\t\t\t\tisOpen: false\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'MyToyota Store',\n\t\t\t\t\t\tsubMenu: [\n\t\t\t\t\t\t\t{ label: 'Parts Order' },\n\t\t\t\t\t\t\t{ label: 'Equipment Order' },\n\t\t\t\t\t\t\t{ label: 'Checkout Issue' }\n\t\t\t\t\t\t],\n\t\t\t\t\t\tisOpen: false\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Product/Equipment Information',\n\t\t\t\t\t\tsubMenu: [\n\t\t\t\t\t\t\t{ label: 'Manuals' },\n\t\t\t\t\t\t\t{ label: 'Part Information' },\n\t\t\t\t\t\t\t{ label: 'Other' }\n\t\t\t\t\t\t],\n\t\t\t\t\t\tisOpen: false\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Billing Question',\n\t\t\t\t\t\tsubMenu: [{ label: 'Invoice' }],\n\t\t\t\t\t\tisOpen: false\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'New Equipment Order',\n\t\t\t\t\t\tsubMenu: [\n\t\t\t\t\t\t\t{ label: 'MyToyota Store Equipment Order' },\n\t\t\t\t\t\t\t{ label: 'Toyota Dealer Equipment Order' }\n\t\t\t\t\t\t],\n\t\t\t\t\t\tisOpen: false\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'MyInsights',\n\t\t\t\t\t\tsubMenu: [],\n\t\t\t\t\t\tisOpen: false\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Feedback',\n\t\t\t\t\t\tsubMenu: [],\n\t\t\t\t\t\tisOpen: false\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Other',\n\t\t\t\t\t\tsubMenu: [],\n\t\t\t\t\t\tisOpen: false\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\tbuttons: {\n\t\t\t\tsubmit: {\n\t\t\t\t\tsize: 'small',\n\t\t\t\t\tstyle: 'primary',\n\t\t\t\t\tdisabled: true,\n\t\t\t\t\tlabel: 'Submit',\n\t\t\t\t\ticon: {\n\t\t\t\t\t\taltText: '',\n\t\t\t\t\t\ticonPath: ''\n\t\t\t\t\t},\n\t\t\t\t\tposition: 'left'\n\t\t\t\t},\n\t\t\t\tcancel: {\n\t\t\t\t\tsize: 'small',\n\t\t\t\t\tstyle: 'secondary',\n\t\t\t\t\tdisabled: false,\n\t\t\t\t\tlabel: 'Cancel',\n\t\t\t\t\ticon: {\n\t\t\t\t\t\taltText: '',\n\t\t\t\t\t\ticonPath: ''\n\t\t\t\t\t},\n\t\t\t\t\tposition: 'left'\n\t\t\t\t}\n\t\t\t},\n\t\t\tresponse: { data: {}, isInvalid: false, emailErrorMessage: '' },\n\t\t\tcomments: {\n\t\t\t\tlabel: 'Comments',\n\t\t\t\tplaceholder:\n 'Please describe your issue and any details that can help us assist you better',\n\t\t\t\terrorMsg: 'Comments is required',\n\t\t\t\ttype: 'textarea',\n\t\t\t\tid: 'comments',\n\t\t\t\tisRequired: true\n\t\t\t},\n\t\t\ttoasterSuccess: { label: 'Form Submitted Successfully' },\n\t\t\ttoasterFailure: { label: 'Form Submission Failed' },\n\t\t\tsubreasonLabelData: {\n\t\t\t\tpartInformation: [{\n\t\t\t\t\tlabel: 'Model-Serial (Optional)',\n\t\t\t\t\tplaceholder: 'Enter Model-Serial'\n\t\t\t\t}],\n\t\t\t\tinvoiceNumber: [{\n\t\t\t\t\tlabel: 'Invoice Number (Optional)',\n\t\t\t\t\tplaceholder: 'Enter Invoice Number'\n\t\t\t\t}],\n\t\t\t\tpartsOrder: [{\n\t\t\t\t\tlabel: 'Order Number (Optional)',\n\t\t\t\t\tplaceholder: 'Enter Order Number'\n\t\t\t\t}],\n\t\t\t\tequipmentOrder: [{\n\t\t\t\t\tlabel: 'Order Number (Optional)',\n\t\t\t\t\tplaceholder: 'Enter Order Number'\n\t\t\t\t}],\n\t\t\t\tmanualInformation: [{\n\t\t\t\t\tlabel: 'Model-Serial (Optional)',\n\t\t\t\t\tplaceholder: 'Enter Model-Serial'\n\t\t\t\t}],\n\t\t\t\tmyToyotaStoreEquipmentOrder: [{\n\t\t\t\t\tlabel: 'Order Number (Optional)',\n\t\t\t\t\tplaceholder: 'Enter Order Number'\n\t\t\t\t}],\n\t\t\t\ttoyotaDealerEquipmentOrder: [{\n\t\t\t\t\tlabel: 'Order Number (Optional)',\n\t\t\t\t\tplaceholder: 'Enter Order Number'\n\t\t\t\t}]\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static buildContactData(): UserData\n\t{\n\t\treturn {\n\t\t\tfirstName: '',\n\t\t\tlastName: '',\n\t\t\temail: '',\n\t\t\tphoneNumber: '',\n\t\t\tcompanyName: '',\n\t\t\taddressLine1: '',\n\t\t\tcity: '',\n\t\t\tstate: '',\n\t\t\tzipCode: '',\n\t\t\tcountry: '',\n\t\t\taccountType: '',\n\t\t\trole: '',\n\t\t\tprimaryLocationGRID: '',\n\t\t\tadminLocationID: '',\n\t\t\tcrmRecordExists: false,\n\t\t\tcustomerType: ''\n\t\t };\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { AemContactUsLabelData, ContactUsPayload, ContactUsState, FormState, UserData } from './definitions';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ContactUsFactory } from './contact-us.factory';\nimport { ApiResponse } from '../../definitions/api-response.interface';\nimport { ApiService } from '../../services/api/api.service';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ToastrService } from 'ngx-toastr';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class ContactUsService\n{\n\tprivate readonly state$: BehaviorSubject = new BehaviorSubject(ContactUsFactory.build());\n\tconstructor(private readonly apiService: ApiService, private readonly toaster: ToastrService) { }\n\tcontactFormData$: BehaviorSubject = new BehaviorSubject(ContactUsFactory.buildContactData());\n\tget state(): ContactUsState\n\t{\n\t\treturn this.state$.value;\n\t}\n\tget stateChanged(): Observable\n\t{\n\t\treturn this.state$.asObservable();\n\t}\n\tpublic updateState(value: ContactUsState): void\n\t{\n\t\tthis.state$.next(value);\n\t}\n\tset updateContactForm(value: UserData)\n\t{\n\t\tthis.contactFormData$.next(value);\n\t} \n\tget contactFormData(): UserData\n\t{\n\t\treturn this.contactFormData$.value;\n\t}\n\tcontactUsTicket(payload : ContactUsPayload): void\n\t{\n\t\tthis.state.loading = true;\n\t\tthis.apiService.contactUsTicket(payload).subscribe({\n\t\t\tnext: (res: ApiResponse) =>\n\t\t\t{\n\t\t\t\tconst responseObj = res.data;\n\t\t\t\tthis.state.response.data = responseObj;\n\t\t\t\tthis.state.response.isInvalid = false;\n\t\t\t\tthis.toaster.success(this.state.toasterSuccess.label);\n\t\t\t\tthis.state.loading = false;\n\n\t\t\t},\n\t\t\terror: (error: HttpErrorResponse) =>\n\t\t\t{\n\t\t\t\tthis.state.response.isInvalid = true;\n\t\t\t\tthis.state.response.emailErrorMessage = error.message;\n\t\t\t\tthis.toaster.error(error.error.message);\n\t\t\t\tthis.state.loading = false;\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic getContactUsState(): void\n\t{\n\t\tthis.state.loading = true;\n\t\tthis.apiService.getContactUsLabels().subscribe({\n\t\t\tnext: (response: ApiResponse) =>\n\t\t\t{\n\t\t\t\tif (response)\n\t\t\t\t{\n\t\t\t\t\tconst responseObj = response.data;\n\t\t\t\t\tthis.mapContactUsState(responseObj);\n\t\t\t\t\tthis.state.loading = false;\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: () =>\n\t\t\t{\n\t\t\t\tthis.state.loading = false;\n\t\t\t}\n\t\t});\n\n\t}\n\n\tpublic mapContactUsState(res: AemContactUsLabelData): void\n\t{\n\t\tthis.state.pageHeading= res.pageHeading;\n\t\tthis.state.sectionTopHeading = res.sectionTopHeading;\n\n\t\tfor (let i = 0; i < this.state.sectionTopData.length; i++)\n\t\t{\n\t\t\tthis.state.sectionTopData[i].label= res.sectionTopData[i].label;\n\t\t\tthis.state.sectionTopData[i].placeholder= res.sectionTopData[i].placeholder;\n\t\t\tthis.state.sectionTopData[i].errorMsg= res.sectionTopData[i].errorMsg;\n\t\t\tthis.state.sectionTopData[i].isRequired= res.sectionTopData[i].isRequired;\n\t\t}\n\n\t\tthis.state.sectionBottomHeading= res.sectionBottomHeading;\n\n\t\tthis.state.sectionBottom= res.sectionBottom;\n\t\tfor (const indx in this.state.sectionBottom.dropDownData)\n\t\t{\n\t\t\tthis.state.sectionBottom.dropDownData[indx].isOpen = false;\n\t\t}\n\t\tthis.state.buttons.submit.label= res.buttons.submit;\n\t\tthis.state.buttons.cancel.label= res.buttons.cancel;\n\t\tthis.state.comments.label= res.comments.label;\n\t\tthis.state.comments.placeholder= res.comments.placeholder;\n\t\tthis.state.comments.errorMsg= res.comments.errorMsg;\n\t\tthis.state.comments.isRequired= res.comments.isRequired;\n\t\tthis.state.toasterSuccess= res.toasterSuccess;\n\t\tthis.state.toasterFailure = res.toasterFailure;\n\t\tthis.state.subreasonLabelData = res.subreasonLabelData;\n\t\tthis.state.pageSubHeading = res.pageSubHeading;\n\t}\n\tgetContactFormData(userEmail:string)\n\t{\n\t\tconst payload = {\n\t\t\temail: userEmail\n\t\t};\n\t\tthis.apiService.getContactForm(payload).subscribe({\n\t\t\tnext: (res: ApiResponse) =>\n\t\t\t{\n\t\t\t\tconst responseObj = res.data;\n\t\t\t\tthis.updateContactForm = responseObj;\n\t\t\t\tthis.state.loading = false;\n\t\t\t},\n\t\t\terror: (error: HttpErrorResponse) =>\n\t\t\t{\n\t\t\t\tthis.toaster.error(error.error.message);\n\t\t\t\tthis.state.loading = false;\n\t\t\t},\n\t\t\tcomplete: () => \n\t\t\t{\n\t\t\t\tthis.handleValidation();\n\t\t\t}\n\t\t});\n\t}\n\n\thandleValidation(): void\n\t{\n\t\tconst requiredFields = [\n\t\t\tFormState.firstName, FormState.lastName, FormState.email, FormState.phoneNumber, FormState.companyName, FormState.country, FormState.city, FormState.state \n\t\t];\n\n\t\tfor (const field of requiredFields) \n\t\t{\n\t\t\tif (!this.contactFormData[field as keyof UserData]) \n\t\t\t{\n\t\t\t\tthis.toaster.error( 'Unable to fetch your details, please enter manually?' );\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n}\n","
\n
\n \"My\n
\n
\n\n
\n
\n

{{state?.pageHeading}}

\n
\n

\n {{state?.pageSubHeading}}\n

\n
\n
\n
\n

{{state?.sectionTopHeading}}

\n
\n
\n
\n \n \n \n \n \n \n \n
\n \n \n {{ country.label }}\n \n \n \n \n {{ state.label }}\n \n \n \n
\n
\n \n
\n {{ field.errorMsg }}\n
\n
\n \n \n {{field.errorMsg}}\n \n \n Enter a valid email address\n \n \n\n
\n
\n\n
\n
\n

{{state?.sectionBottomHeading}}

\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n 0 && isMobileView && item.isOpen\" class=\"arrow\">\n {{ item.label }}\n 0 && !item.isOpen\" class=\"arrow\">\n 0 && !isMobileView && item.isOpen\" class=\"arrow\">\n
\n
\n {{ sub.label }}\n
\n
\n
\n
\n
\n
\n
\n
\n {{state.sectionBottom.errorMsg}}
\n
\n\n
\n \n \n
\n
\n\n
\n \n \n
\n
\n {{ state.comments.errorMsg }}\n
\n
\n
\n
\n
\n
\n
\n \n \n
\n
\n\n
\n\n
\n \n
\n\n\n","\nimport { Component, Input, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ContactUsService } from './contact-us.service';\nimport { Location } from '@angular/common';\nimport { ContactUsState, FormState, SectionBottomSelect, SubMenu, SubReasonIndividualLabelData, SubReasonLabel, SubReasonLables, UserData } from './definitions';\nimport { ToastrService } from 'ngx-toastr';\nimport { countries, Icons, provinces, states } from '../../services/shared/shared-enums';\nimport { MainEntryService, MainEntryState } from '../main-entry';\nimport { Subscription } from 'rxjs';\nimport { KngLoaderState } from 'kinetic-angular';\nimport { SharedUtilService } from '../../services/shared/shared-util.service';\nimport { ContactUsFactory } from './contact-us.factory';\nimport { SharedService } from '../../services/shared/shared.service';\n\n@Component({\n\tselector: 'tmhna-portal-contact-us',\n\ttemplateUrl: './template/contact-us.component.html',\n\tstyleUrls: ['./template/contact-us.component.scss']\n})\nexport class ContactUsComponent implements OnInit\n{\n\tisOpen: boolean = false;\n\tuserForm: FormGroup;\n\tcountries= countries;\n\tarrowRight: string | undefined = Icons.arrowRight;\n\tarrowDownOrange: string | undefined = Icons.arrowDown;\n\tarrowLeft: string | undefined = Icons.leftArrow;\n\tstates: { [key: string]: {label: string; value: string}[] } = {\n\t\tUSA: states,\n\t\tCAN: provinces\n\t};\n\tselectedMainReason: string = '';\n\tselectedSubReason: string = '';\n\tselectedReason: string = '';\n\tsubReasonLables: SubReasonIndividualLabelData = SubReasonLables;\n\tloaderState: KngLoaderState = {\n \timagePath: Icons.loaderWhite\n\t};\n\tisMobileView = false;\n\tisScrollHappend: boolean = false;\n\tget state(): ContactUsState\n\t{\n\t\treturn this.service.state;\n\t}\n\tdeviceBasedDropDownData: SectionBottomSelect []=[];\n\tdisplayReasonInput: boolean = false;\n\tmetaData: UserData = ContactUsFactory.buildContactData();\n\tprivate readonly subscriptions: Subscription = new Subscription();\n\t@Input() set mainState(value: MainEntryState)\n\t{\n\t\tthis.mainEntryservice.updateState(value);\n\t}\n\tget mainState(): MainEntryState\n\t{\n\t\treturn this.mainEntryservice.state;\n\t}\n\tfilteredStates: {label: string; value: string}[] = [];\n\n\tconstructor(private readonly mainEntryservice: MainEntryService, private readonly fb: FormBuilder, public service: ContactUsService, private readonly sharedUtilService: SharedUtilService, public location: Location, public toaster: ToastrService, public sharedService: SharedService)\n\t{\n \tthis.userForm = this.fb.group({\n \t\tfirstName: [ '', [Validators.required] ],\n \t\tlastName: [ '', [Validators.required] ],\n \t\temail: [ '', [ Validators.required, Validators.email, Validators.pattern(/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/) ] ],\n \t\tphone: [ '', [ Validators.required, this.sharedService.validateStringUnique, this.sharedService.validatePhoneSequence, this.sharedService.minLength ] ],\n \t\tcompanyName: [ '', [Validators.required] ],\n \t\taddress: [''],\n \t\tcity: [''],\n \t\tstate: [''],\n \t\tzipCode: [''],\n \t\tcountry: [ '', [Validators.required] ],\n \t\treason: [ '', [Validators.required] ],\n \t\treasonInput: [''],\n \t\tcomments: [ '', [Validators.required] ]\n \t});\n\t}\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tpublic numbersOnlyValidator(event: any)\n\t{\n\t\tthis.userForm.patchValue({\n\t\t\tphone: this.sharedService.formatPhoneNumber(event.target.value)\n\t\t});\n\t}\n\n\tngOnInit(): void\n\t{\n\t\tthis.service.getContactUsState();\n\t\tthis.userForm.get(FormState.country)?.valueChanges.subscribe(value =>\n\t\t{\n\t\t\tthis.updateStateOptions(value);\n\t\t});\n\n\t\tthis.userForm.valueChanges.subscribe(() =>\n\t\t{\n\t\t\tif (this.userForm.valid)\n\t\t\t{\n\t\t\t\tthis.state.buttons.submit.disabled = false;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.state.buttons.submit.disabled = true;\n\t\t\t}\n\t\t});\n\t\tthis.mainEntryservice.getLandingPageAemLabels();\n\t\tthis.subscriptions.add(this.service.stateChanged.subscribe(() =>\n\t\t{\n\t\t\tthis.deviceBasedDropDownData = this.state.sectionBottom.dropDownData;\n\t\t}));\n\t\tconst queryParams = localStorage.getItem('queryData');\n\t\tif( queryParams !== null && queryParams !== 'undefined' )\n\t\t{\n\t\t\tthis.state.loading = true;\n\t\t\tthis.metaData = JSON.parse(atob(queryParams));\n\t\t\tif(this.metaData.email)\n\t\t\t{\n\t\t\t\tthis.service.getContactFormData(this.metaData.email);\n\t\t\t\tthis.service.contactFormData$.subscribe((responseObj)=>\n\t\t\t\t{\n\t\t\t\t\tthis.userForm.patchValue({\n\t\t\t\t\t\tfirstName: this.checkNavValue(this.metaData.firstName, responseObj.firstName),\n\t\t\t\t\t\tlastName: this.checkNavValue(this.metaData.lastName, responseObj.lastName),\n\t\t\t\t\t\tcountry: this.checkNavValue(this.metaData.country, responseObj.country),\n\t\t\t\t\t\taddress: this.checkNavValue(this.metaData.addressLine1, responseObj.addressLine1),\n\t\t\t\t\t\tzipCode: this.checkNavValue(this.metaData.zipCode, responseObj.zipCode),\n\t\t\t\t\t\tcity: this.checkNavValue(this.metaData.city, responseObj.city),\n\t\t\t\t\t\tstate: this.checkNavValue(this.metaData.state, responseObj.state),\n\t\t\t\t\t\tcompanyName: this.checkNavValue(this.metaData.companyName, responseObj.companyName),\n\t\t\t\t\t\temail: this.metaData.email,\n\t\t\t\t\t\tphone: this.sharedService.formatPhoneNumber(this.checkNavValue(this.metaData.phoneNumber, responseObj.phoneNumber))\n\t\t\t\t\t });\n\t\t\t\t\t this.disableFormValue();\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t};\n\t\tthis.isMobileView = this.sharedUtilService.updateIsMobileView();\n\t}\n\tcheckNavValue(navValue: string = '', respValue: string = '')\n\t{\n\t\treturn navValue || respValue;\n\t}\n\tdisableFormValue()\n\t{\n\t const formFields = [ FormState.firstName, FormState.lastName, FormState.email ];\n\t formFields.forEach((field)=>\n\t\t{\n\t\t\tthis.userForm.get(field)?.value ? this.userForm.controls[field].disable() : this.userForm.controls[field].enable();\n\t\t});\n\t}\n\n\tupdateStateOptions(country: string): void\n\t{\n \tthis.filteredStates = this.states[country] || [];\n \tthis.userForm.get(FormState.state)?.enable();\n \tthis.userForm.get(FormState.state)?.setValue('');\n \tif (!country)\n \t{\n \t\tthis.userForm.get(FormState.state)?.disable();\n \t}\n\t}\n\ttoggleMenu()\n\t{\n \tthis.isOpen = !this.isOpen;\n \tthis.state.sectionBottom.dropDownData.forEach(dropDown =>\n \t{\n \t\tdropDown.isOpen = false;\n \t});\n \tthis.deviceBasedDropDownData = this.state.sectionBottom.dropDownData;\n\t}\n\n\ttoggleSubMenu(dropDownitem : SectionBottomSelect, clickFlag: boolean): void\n\t{\n \tthis.state.sectionBottom.dropDownData.forEach(dropDown =>\n \t{\n \t\tif (dropDown.label !== dropDownitem.label)\n \t\t{\n \t\t\tdropDown.isOpen = false;\n \t\t}\n \t});\n \tthis.selectedMainReason = dropDownitem.label;\n\n \tthis.selectedSubReason = '';\n \tthis.userForm.get(FormState.reason)?.setValue(this.selectedMainReason);\n \tif(dropDownitem.subMenu.length !== 0)\n \t{\n \t\tthis.setDeviceBasedFuntionality(dropDownitem);\n \t\tdropDownitem.isOpen = !dropDownitem.isOpen;\n \t}\n \telse\n \t{\n \t\tthis.displayReasonInput = false;\n \t\tthis.selectedReason = this.selectedMainReason;\n \t\tthis.subReasonLables = this.specificInputFunction('');\n \t\tthis.setDeviceBasedFuntionality(dropDownitem);\n \t\tif(clickFlag)\n \t\t{\n \t\t\tthis.isOpen = false;\n \t\t}\n \t}\n\t}\n\n\tsetDeviceBasedFuntionality(dropDownitem : SectionBottomSelect)\n\t{\n \tif(this.isMobileView && !dropDownitem.isOpen)\n \t{\n \t\tthis.deviceBasedDropDownData = this.state.sectionBottom.dropDownData.filter(dropDown => dropDown.label === dropDownitem.label);\n \t}\n \telse\n \t{\n \t\tthis.deviceBasedDropDownData = this.state.sectionBottom.dropDownData;\n \t}\n\t}\n\n\n\tselectSubmenu(sub : SubMenu)\n\t{\n \tthis.selectedSubReason = sub.label;\n\t this.selectedReason = this.selectedMainReason + ', ' + this.selectedSubReason ;\n \tthis.userForm.get(FormState.reason)?.setValue(this.selectedReason);\n \tthis.subReasonLables = this.specificInputFunction(sub.label);\n \tthis.isOpen = false;\n \tthis.deviceBasedDropDownData = this.state.sectionBottom.dropDownData;\n \tif (this.subReasonLables.label === '')\n \t{\n \t\tthis.displayReasonInput = false;\n \t}\n \telse\n \t{\n \t\tthis.displayReasonInput = true;\n \t}\n\t}\n\n\n\tonSubmit(): void\n\t{\n \tif (this.userForm.valid)\n \t{\n \t\tconst formData = {\n\t\t\t\tsubject: this.userForm.get(FormState.reason)?.value,\n\t\t\t\tdescription: this.userForm.get(FormState.comments)?.value,\n\t\t\t\trequestorFirstName: this.userForm.get(FormState.firstName)?.value,\n\t\t\t\trequestorLastName: this.userForm.get(FormState.lastName)?.value,\n\t\t\t\tcountry: this.userForm.get(FormState.country)?.value,\n\t\t\t\taddressLine1: this.userForm.get(FormState.address)?.value,\n\t\t\t\tzipCode: (this.userForm.get(FormState.zipCode)?.value),\n\t\t\t\tcity: this.userForm.get(FormState.city)?.value,\n\t\t\t\tstate: this.userForm.get(FormState.state)?.value,\n\t\t\t\tcompanyName: this.userForm.get(FormState.companyName)?.value,\n\t\t\t\temail: this.userForm.get(FormState.email)?.value,\n\t\t\t\tphone: Number(this.userForm.get(FormState.phone)?.value.replace(/[^\\d]/g, '')),\n\t\t\t\troleOfUser: this.checkNavValue(this.metaData.role, this.service.contactFormData.role),\n\t\t\t\tprimaryLocationGRID: this.checkNavValue(this.metaData.primaryLocationGRID, this.service.contactFormData.primaryLocationGRID),\n\t\t\t\tadminLocationGRID: this.checkNavValue(this.metaData.adminLocationID, this.service.contactFormData.adminLocationID),\n\t\t\t\tcrmRecordExists: (this.metaData.crmRecordExists || this.service.contactFormData.crmRecordExists || false).toString(),\t\n\t\t\t\tcustomerType: this.metaData.customerType ?? this.service.contactFormData.customerType,\n\t\t\t\turlOfOrigin: this.checkNavValue(this.metaData.urlOfOrigin, ''),\n\t\t\t\taccountType: this.checkNavValue(this.metaData.accountType, this.service.contactFormData.accountType)\n \t\t};\n\n\t\t\tthis.service.contactUsTicket(formData);\n\t\t\tif(this.metaData.urlOfOrigin)\n\t\t\t{\n\t\t\t\tthis.userForm.controls['comments'].reset();\n\t\t\t\tthis.userForm.controls['reason'].reset();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.userForm.reset();\n\t\t\t}\n \t\tthis.selectedReason = '';\n \t\tthis.displayReasonInput = false;\n \t}\n \telse\n \t{\n \t\tthis.toaster.error(this.state.toasterFailure.label);\n \t}\n\t}\n\n\tonScroll(): void\n\t{\n\n \tconst scrollPosition = document.getElementsByClassName('dropdown-options-container');\n \tif (scrollPosition[0].scrollTop > 0)\n \t{\n \t\tthis.isScrollHappend = true;\n \t}\n \telse\n \t{\n \t\tthis.isScrollHappend = false;\n \t}\n\t}\n\n\tonCancel(): void\n\t{\n \tthis.location.back();\n\t}\n\n\tspecificInputFunction(subReason : string): SubReasonIndividualLabelData\n\t{\n \t\tswitch (subReason)\n \t\t{\n \t\tcase SubReasonLabel.partsOrder:\n \t\t\treturn this.state.subreasonLabelData.partsOrder[0];\n \t\tcase SubReasonLabel.equipmentOrder:\n \t\t\treturn this.state.subreasonLabelData.equipmentOrder[0];\n \t\tcase SubReasonLabel.manualInformation:\n \t\t\treturn this.state.subreasonLabelData.manualInformation[0];\n \t\tcase SubReasonLabel.partInformation:\n \t\t\treturn this.state.subreasonLabelData.partInformation[0];\n \t\t}\n \t\treturn this.extraInputCheck(subReason);\n\t}\n\textraInputCheck(subReason: string): SubReasonIndividualLabelData\n\t{\n \tswitch (subReason)\n \t{\n \tcase SubReasonLabel.invoiceNumber:\n \t\treturn this.state.subreasonLabelData.invoiceNumber[0];\n \tcase SubReasonLabel.myToyotaStoreEquipmentOrder:\n \t\treturn this.state.subreasonLabelData.myToyotaStoreEquipmentOrder[0];\n \tcase SubReasonLabel.toyotaDealerEquipmentOrder:\n \t\treturn this.state.subreasonLabelData.toyotaDealerEquipmentOrder[0];\n \t}\n \treturn { label: '', placeholder: '' };\n\t}\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { KngButtonModule, KngFooterModule, KngLoaderModule } from 'kinetic-angular';\nimport { AnalyticsModule } from '../../services/analytics/analytics.module';\nimport { ContactUsComponent } from './contact-us.component';\nimport { ContactUsService } from './contact-us.service';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { MatSelectModule } from '@angular/material/select';\n\n@NgModule({\n\tdeclarations: [ContactUsComponent],\n\timports: [\n\t\tCommonModule,\n\t\tFormsModule,\n\t\tReactiveFormsModule,\n\t\tKngLoaderModule,\n\t\tAnalyticsModule,\n\t\tBrowserModule,\n\t\tReactiveFormsModule,\n\t\tKngButtonModule,\n\t\tKngFooterModule,\n\t\tMatSelectModule\n\t],\n\texports: [ContactUsComponent],\n\tproviders: [ContactUsService]\n})\nexport class ContactUsModule {}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport {\n\tRolesPermissionsComponent,\n\tRolesPermissionsModule\n} from '../roles-permissions';\nimport { AuthComponent } from '../auth';\nimport { AuthModule } from '../auth/auth.module';\nimport { CommonErrorComponent, CommonErrorModule } from '../common-error';\nimport { RegistrationComponent, RegistrationModule } from '../registration';\nimport { ShellComponent } from '../shell/shell.component';\nimport { ShellModule } from '../shell/shell.module';\nimport { MsalGuard } from '@azure/msal-angular';\nimport { ConfirmRegistrationComponent } from '../registration/sub-modules/confirm-registration';\nimport { AccessGuard } from '../../guards/access.guard.service';\nimport { PendingChangesGuard } from '../../guards/pending-changes.guard.service';\nimport { PermissionGuard } from '../../guards/permission/permission.guard.service';\nimport { PermissionCategory, PermissionDefault } from '../../services/shared/shared-enums';\nimport { LocationAccessGuard } from '../../guards/location-access.guard.service';\nimport { AuthGuard } from '../../guards/auth/auth.guard';\nimport { MainEntryComponent } from '../main-entry';\nimport { LoginGuard } from '../../guards/login.guard.service';\nimport { LandingPageGuard } from '../../guards/landing-page.guard.service';\nimport { CustomerPortalComponent, CustomerPortalModule } from '../customer-portal';\nimport { CustomerSupportComponent } from '../customer-support/customer-support.component';\nimport { CustomerSupportModule } from '../customer-support/customer-support.module';\nimport { ContactUsComponent } from '../contact-us/contact-us.component';\nimport { ContactUsModule } from '../contact-us/contact-us.module';\n\nconst routes: Routes = [\n\t{\n\t\tpath: 'error',\n\t\tcomponent: CommonErrorComponent\n\t},\n\t{\n\t\tpath: 'auth',\n\t\tcomponent: AuthComponent,\n\t\tcanActivate: [MsalGuard]\n\t},\n\t{\n\t\tpath: 'registration',\n\t\tcanActivate: [AuthGuard],\n\t\tcomponent: RegistrationComponent,\n\t\tdata: {\n\t\t\ttitle: 'Registration'\n\t\t}\n\t},\n\t{\n\t\tpath: 'confirmation',\n\t\tcanActivate: [AuthGuard],\n\t\tcomponent: ConfirmRegistrationComponent\n\t},\n\t{\n\t\tpath: 'pending-approval',\n\t\tcanActivate: [AuthGuard],\n\t\tcomponent: ConfirmRegistrationComponent\n\t},\n\t{\n\t\tpath: '',\n\t\tcomponent: MainEntryComponent,\n\t\tcanActivate: [LoginGuard],\n\t\tdata: {\n\t\t\ttitle: 'MyToyota Customer Portal | Toyota Material Handling'\n\t\t}\n\t},\n\t{\n\t\tpath: 'contact-us',\n\t\tcomponent: ContactUsComponent,\n\t\tdata: {\n\t\t\ttitle: 'contact us'\n\t\t}\n\t},\n\t{\n\t\tpath: 'app',\n\t\tcomponent: ShellComponent,\n\t\tcanActivate: [LandingPageGuard],\n\t\tchildren: [\n\t\t\t{\n\t\t\t\tpath: '',\n\t\t\t\tredirectTo: 'dashboard',\n\t\t\t\tpathMatch: 'full'\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'customer-support',\n\t\t\t\tcomponent: CustomerSupportComponent,\n\t\t\t\tcanActivate: [AccessGuard],\n\t\t\t\tdata: {\n\t\t\t\t\ttitle: 'Customer Support'\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'customerportal',\n\t\t\t\tcanActivate: [AccessGuard],\n\t\t\t\tcomponent: CustomerPortalComponent,\n\t\t\t\tdata: {\n\t\t\t\t\ttitle: 'CustomerPortal'\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'dashboard',\n\t\t\t canActivate: [ AccessGuard, PermissionGuard, LocationAccessGuard ],\n\t\t\t\tdata: {\n\t\t\t\t\ttitle: 'MyDashboard',\n\t\t\t\t\tpermissions: { category: PermissionCategory.dashBoard, action: PermissionDefault.viewDashboard }\n\t\t\t\t},\n\t\t\t loadChildren: () =>\n\t\t\t\t\timport('../dashboard/dashboard.module').then((m) => m.DashboardModule)\n\t\t },\n\t\t\t{ path: 'error', component: CommonErrorComponent },\n\t\t\t{\n\t\t\t\tpath: 'roles-permissions',\n\t\t\t\tcanActivate: [ AccessGuard, PermissionGuard ],\n\t\t\t\tcanDeactivate: [PendingChangesGuard],\n\t\t\t\tcomponent: RolesPermissionsComponent,\n\t\t\t\tdata: {\n\t\t\t\t\ttitle: 'Roles & Permissions',\n\t\t\t\t\tpermissions: { category: PermissionCategory.rolesPermissions, action: PermissionDefault.viewDetails }\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'myfleet',\n\t\t\t\tcanActivate: [ AccessGuard, PermissionGuard, LocationAccessGuard ],\n\t\t\t\tdata: {\n\t\t\t\t\ttitle: 'MyFleet',\n\t\t\t\t\tpermissions: { category: PermissionCategory.myFleet, action: PermissionDefault.viewMyFleetDetails },\n\t\t\t\t\tbreadcrumb: 'MyFleet'\n\t\t\t\t},\n\t\t\t\tloadChildren: () =>\n\t\t\t\t\timport('../myfleet/myfleet.module').then((module) => module.MyfleetModule)\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'myquotes',\n\t\t\t\tcanActivate: [ AccessGuard, PermissionGuard ],\n\t\t\t\tdata: {\n\t\t\t\t\ttitle: 'MyQuotes',\n\t\t\t\t\tpermissions: { category: PermissionCategory.myQuote, action: PermissionDefault.viewMyQuote }\n\t\t\t\t},\n\t\t\t\tloadChildren: () =>\n\t\t\t\t\timport('../my-quotes/my-quotes.module').then((module) => module.MyQuotesModule)\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'my-insights',\n\t\t\t\tcanActivate: [ AccessGuard, PermissionGuard ],\n\t\t\t\tdata: {\n\t\t\t\t\ttitle: 'MyInsights',\n\t\t\t\t\tpermissions: { category: PermissionCategory.myInsights, action: PermissionDefault.viewMyInsights }\n\t\t\t\t},\n\t\t\t\tloadChildren: () =>\n\t\t\t\t\timport('../my-insights/my-insights.module').then((module) => module.MyInsightsModule)\n\t\t\t},\n\t\t\t{ path: 'service-management',\n\t\t\t\tcanActivate: [ AccessGuard, PermissionGuard, LocationAccessGuard ],\n\t\t\t\tdata: {\n\t\t\t\t\ttitle: 'MyService',\n\t\t\t\t\tbreadcrumb: 'Service and Repairs',\n\t\t\t\t\tpermissions: { category: PermissionCategory.serviceManagement, action: PermissionDefault.viewServiceManagement }\n\t\t\t\t},\n\t\t\t\tloadChildren: () =>\n\t\t\t\t\timport('../service-management/components/service-management-page/service-management.module').then((module) => module.ServiceManagementModule) },\n\t\t\t{\n\t\t\t\tpath: 'user-management',\n\t\t\t\tcanActivate: [ AccessGuard, PermissionGuard, LocationAccessGuard ],\n\t\t\t\tdata: { title: 'User Management',\n\t\t\t\t\tbreadcrumb: 'User Management',\n\t\t\t\t\tpermissions: { category: PermissionCategory.userManagement, action: PermissionDefault.viewUserManagement }\n\t\t\t\t},\n\t\t\t\tloadChildren: () =>\n\t\t\t\t\timport('../user-management/user-management.module').then((module) => module.UserManagementModule) },\n\t\t\t{\n\t\t\t\tpath: 'notification',\n\t\t\t\tcanActivate: [ AccessGuard, LocationAccessGuard, PermissionGuard ],\n\t\t\t\tdata: { title: 'Notifications',\n\t\t\t\t\tpermissions: { category: PermissionCategory.notification, action: PermissionDefault.viewNotification }\n\t\t\t\t},\n\t\t\t\tloadChildren: () =>\n\t\t\t\t\timport('../notifications/notification.module').then((module) => module.NotificationModule)\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'order-management',\n\t\t\t\tcanActivate: [AccessGuard],\n\t\t\t\tdata: {\n\t\t\t\t\ttitle: 'MyOrders',\n\t\t\t\t breadcrumb: 'Orders'\n\t\t\t\t},\n\t\t\t\tloadChildren: () =>\n\t\t\t\t\timport('../order-management/order-management.module').then((m) => m.OrderManagementModule)\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'account-settings',\n\t\t\t\tcanActivate: [AccessGuard],\n\t\t\t\tdata: { title: 'Account Settings', breadcrumb: 'Account Settings' },\n\t\t\t\tloadChildren: () =>\n\t\t\t\t\timport('../account-settings/account-settings.module').then((m) => m.AccountSettingsModule)\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'location-management',\n\t\t\t\tcanActivate: [AccessGuard],\n\t\t\t\tdata: {\n\t\t\t\t\tpermissions: { category: PermissionCategory.locationManagement, action: PermissionDefault.viewLocationManagement },\n\t\t\t\t\ttitle: 'Location Management',\n\t\t\t\t\tbreadcrumb: 'Location Management'\n\t\t\t\t},\n\t\t\t\tloadChildren: () =>\n\t\t\t\t\timport('../location-management/location-management.module').then((m) => m.LocationManagementModule)\n\t\t\t},\n\t\t\t{ path: '**', redirectTo: 'error' }\n\t\t]\n\t},\n\t{ path: '**', redirectTo: 'error', pathMatch: 'full' }\n];\n@NgModule({\n\timports: [\n\t\tRouterModule.forRoot(routes, {\n\t\t\tanchorScrolling: 'enabled'\n\t\t}),\n\t\tRolesPermissionsModule,\n\t\tCommonErrorModule,\n\t\tRegistrationModule,\n\t\tCustomerPortalModule,\n\t\tAuthModule,\n\t\tCustomerSupportModule,\n\t\tContactUsModule,\n\t\tShellModule.forRoot()\n\t],\n\tproviders: [MsalGuard],\n\texports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","import { Injectable } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { LocalStorageService } from '../services/local-storage/local-storage.service';\n\n@Injectable()\nexport class TimeZoneInterceptor implements HttpInterceptor \n{\n\n\tconstructor(private readonly localStorageService: LocalStorageService) {}\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, complexity\n\tintercept(request: HttpRequest, next: HttpHandler): Observable> \n\t{\n\t\tconst timeZone: string = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\t\tif (timeZone !== '' && timeZone !== null) \n\t\t{\n\t\t\trequest = request.clone({\n\t\t\t\tsetHeaders: { ClientTimeZone: timeZone }\n\t\t\t});\n\t\t}\n\t\tconst lang: string | null = this.localStorageService.getLanguage();\n\t\tif(lang !== '' && lang !== null)\n\t\t{\n\t\t\trequest = request.clone({\n\t\t\t\tsetHeaders: { language: lang }\n\t\t\t});\n\t\t}\n\t\tconst isImpersonatedUser: string | null = this.localStorageService.getImpersonateUser();\n\t\tif(isImpersonatedUser !== '' && isImpersonatedUser !== null)\n\t\t{\n\t\t\tconst parsedData = JSON.parse(isImpersonatedUser);\n\t\t\trequest = request.clone({\n\t\t\t\tsetHeaders: { impersonateuser: parsedData.email }\n\t\t\t});\n\t\t}\n\n\t\treturn next.handle(request);\n\t}\n}\n","import { APP_INITIALIZER, NgModule } from '@angular/core';\nimport { BrowserModule, Title } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MsalRedirectComponent } from '@azure/msal-angular';\nimport { AppComponent } from './app.component';\nimport { LoggerServiceModule } from './services/logger/logger.module';\nimport { DateConverteServiceModule } from './services/date-converter/date-converter.module';\nimport { RolesPermissionsModule } from './components/roles-permissions';\nimport { AuthModule } from './components/auth/auth.module';\nimport { MainEntryModule } from './components/main-entry';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { ToastrModule } from 'ngx-toastr';\nimport { SharedModule } from './services/shared/shared.module';\nimport { AppRoutingModule } from './components/routing/app-routing.module';\nimport { NotificationModule } from './components/notifications';\nimport { AnalyticsService } from './services/analytics/analytics.service';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { TimeZoneInterceptor } from './interceptors/date-timezone.interceptor';\nimport { NgCircleProgressModule } from 'ng-circle-progress';\nimport { KngLoaderModule } from 'kinetic-angular';\n\nexport function analyticsInitializerFactory(analyticsService: AnalyticsService): () => Promise\n{\n\tconst serviceInjectionPromise: Promise = analyticsService.injectAdobeLaunchScript();\n\tserviceInjectionPromise\n\t\t.then(() => analyticsService.initDataLayer());\n\treturn () => serviceInjectionPromise;\n}\n\n@NgModule({\n\tdeclarations: [AppComponent],\n\timports: [\n\t\tBrowserModule,\n\t\tAppRoutingModule,\n\t\tAuthModule,\n\t\tHttpClientModule,\n\t\tRolesPermissionsModule,\n\t\tLoggerServiceModule,\n\t\tDateConverteServiceModule,\n\t\tKngLoaderModule,\n\t\tSharedModule,\n\t\tMainEntryModule,\n\t\tOverlayModule,\n\t\tMatMenuModule,\n\t\tMatTooltipModule,\n\t\tBrowserAnimationsModule,\n\t\tFormsModule,\n\t\tReactiveFormsModule,\n\t\tMatDialogModule,\n\t\tNotificationModule,\n\t\tMatInputModule,\n\t\tMatDatepickerModule,\n\t\tMatNativeDateModule,\n\t\tToastrModule.forRoot({\n\t\t\ttimeOut: 10000,\n\t\t\tpositionClass: 'toast-top-right',\n\t\t\ttoastClass: 'kng-toast toast-container ngx-toastr',\n\t\t\tenableHtml: true,\n\t\t\tcloseButton: true,\n\t\t\tpreventDuplicates: true\n\t\t}),\n\t\tNgCircleProgressModule.forRoot({\n\t\t\tlazy: false\n\t\t})\n\t],\n\tproviders: [\n\t\tTitle,\n\t\t{ provide: APP_INITIALIZER, useFactory: analyticsInitializerFactory, deps: [AnalyticsService], multi: true },\n\t\t{ provide: HTTP_INTERCEPTORS, useClass: TimeZoneInterceptor, multi: true }\n\t],\n\tbootstrap: [ AppComponent, MsalRedirectComponent ],\n\texports: []\n})\nexport class AppModule {}\n","/* eslint-disable no-console */\n\nimport { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) \n{\n\tenableProdMode();\n}\n\nplatformBrowserDynamic()\n\t.bootstrapModule(AppModule)\n\t.catch((err) => console.error(err));\n","
\n \n \n \n {{ column }}\n \n \n \n {{ element[column] }}\n \n \n
\n
\n
\n \n\n \n \n \n \n
\n","\n \n \n
{{ state.label }}
\n \n
\n\n","
\n
\n
\n {{ customerState.readOnly }} \n {{ customerState.warningNote }} \n {{customerState.username | titlecase}} sees it.\n
\n
\n {{customerState.endSession}} \n
\n
\n
\n\n
\n
\n
\n
\n \n \n \"{{\n \n
\n
\n
\n
0\">\n
\n
\n \n
\n
\n {{ subOption.label }}\n
\n
\n
0)}\" class=\"skip-nav\" *ngIf=\"option.label === cssClass.skipNav\">\n \n
\n
\n
\n
\n\n
0 && !headerBottom.minimumAccess\">\n
\n \n
\n
\n
\n {{ option?.label }}\n
\n
\n
\n {{ subOption?.label }}\n
\n
\n
\n
\n
\n \n
\n
\n
\n\n \n
\n Menu\n \n
\n \n
\n
0\">\n
\n
\n \n
\n
{{ location.accountName }}
\n
\n
\n
\n
\n
\n
\n
\n \n {{ option.label }}\n \n \"{{\n
\n
\n
\n
\n
\n
\n
","\n Open Modal\n\n\n\n \n
\n
\n
\n {{ state.label }}\n
\n Tooltip-indicator\n

{{state.tooltip?.content}}

\n
\n
\n Tooltip-indicator\n
\n
\n\n \n
\n\n
\n \n
\n
\n
\n \n \n
\n
\n {{checkBoxText}}\n
\n
\n {{state.checkboxText}}\n
\n
\n \n \n {{ cta.label }}\n \n
\n
\n
\n \n\n","\n
\n © {{ footercontent?.copyright?.label }}|\n \n {{ label.label }}|\n \n
\n \n \n\n","\n
\n
\n {{\n state.filterData.heading.label\n }}\n \n \"Close\n \n
\n
\n
\n \n \n \n \n \n {{ sectioncontrol.label }}\n \n  ({{ sectioncontrol.selectedValue.length }})\n \n \n \n \n \n \n \n \n \n \n \n \n {{ options.label }}\n \n
\n
\n \n \n \n \n \n \n
\n From date must be before the To date\n
\n
\n
\n
\n \n \n \n \n \n \n
\n To date must be after the From date\n
\n
\n
\n
\n
\n
\n\n \n \n \n \n
\n \n\n \n \n

{{ control.label }}

\n

{{ formatAddress(control.address) }}

\n \n \n \n \n\n \n {{ sectioncontrol.noResultsFoundText }}\n \n \n {{ sectioncontrol.errorMessage }}\n \n \n {{ sectioncontrol.noAssociatedResultsFoundText }}\n \n \n \n \n \n \n \n \n \n \n
\n \n {{ button.label }}\n \n
\n \n
\n\n","
\n \n \n \n \n \n {{ state.footer[\"footercontent\"].hidden }}\n \n \n
\n","
\n \n \n

\n {{state?.error}}\n

\n

\n \"loader\"\n

\n \n
\n
\n
\n {{ state.chart.title }}\n \n \"info\n \"info\n \n
\n \n \n
\n \n \n

\n \"Coming\n

\n

\n {{comingSoon.imageText}}\n

\n
\n
\n\n
\n
\n
{{ unit.label ? unit.label: '-'}}
\n
\n {{ unit.description }}\n
\n
\n
\n\n
\n \n \n
\n {{ state.chart.noDataText}}\n
\n
\n\n
\n
{{state.chart.customLegend.yAxis.label}}\n {{state.chart.customLegend.yAxis.value}}
\n
{{state.chart.customLegend.xAxis.label}}\n {{state.chart.customLegend.xAxis.value}}
\n
\n
","
\n\n
\n

\n {{state?.error}}\n

\n

\n \"loader\"\n

\n \n

{{comingSoon.title}}

\n

\n \"comingSoon\"\n

\n

\n {{comingSoon.imageText}}\n

\n
\n \n \n {{ state?.title?.label }}\n
\n
\n
\n
\n
\n \n \"{{\n
\n \n \n {{ u.label }}\n
\n
\n {{ u?.description?.label }}\n \n \"info\n \"info\n \n
\n
\n \n \n
{{ u?.amount | currency: u?.currency :\"symbol\":\"1.2-2\" }}
\n \n \n \n
\n
\n
\n
\n
\n {{ u.description.label }}\n
\n
\n
\n
\n
\n {{ u.label | number }}\n
\n
\n {{ (u.amount !== '—') ? ( u.amount | currency: u?.currency :\"symbol\":\"1.2-2\") : '—' }}\n
\n
\n
\n
\n \n
\n \n
\n {{ state?.title?.label }}\n
\n
\n
\n \"{{\n
\n
\n
\n
{{ data.label }}
\n
{{ data.description.label }}
\n
\n
\n
\"{{
\n
{{ data.connectedCount?.value }}
\n
{{ data.connectedCount?.label }}
\n
\n
\n
\n
\n {{state?.error}}\n
\n\n","
\n
\n\n
\n
\n \n \n
\n
\n\n
\n
\n
\n {{ header?.label }}\n
\n
\n  \n
\n
\n
\n
\n \"info\n
\n
\n
\n
\n
\n
\n \"noresults\"\n
{{ state.error?.message }}
\n
{{ state.error?.messageSubText }}
\n
\n
0\">\n
\n
\n\n \n \n
\n
\n \n \n
\n
\n\n
\n
\n
\n
\n\n\n
\n \n {{ (value?.labelValue !== \"\" && value?.labelValue !== null) ? value?.labelValue : \"—\" }}\n
\n
\n {{\n (value?.labelValue === \"0.00\") ? \"$0\" :\n value?.labelValue !== \"—\" && value?.labelValue !== \"\"\n ? (convertStringToNumber(value?.labelValue)\n | currency: value?.currency:\"symbol\":\"1.2-2\") : \"—\"\n }}\n
\n
\n {{\n value?.labelValue !== \"—\" && value?.labelValue !== \"\" && value?.labelValue !== null\n ? (convertStringToNumber(value?.labelValue)\n | date: \"MM/dd/YYYY\") : \"—\"\n }}\n\n
\n
\n
\n
\n
{{ value?.labelValue !== \"\" ? value?.labelValue : \"—\" }}\n
\n
\n
\n {{\n value?.labelValue !== \"—\" && value?.labelValue !== \"\" && value?.labelValue !== null\n ? (convertStringToDate(value?.labelValue)\n | date: \"MM/dd/yyyy\") : \"—\"\n }}\n\n
\n
\n \n \"Download\n
\n
\n
\n \n
\n
\n \n
\"Download\n
\n
\n
\n
\n
\n
\n
{{ value?.labelValue !== \"\" ? value?.labelValue : \"—\" }}\n
\n
\n\n
\n
\n \"{{\n
\n
\n
\n
\n
\n \"{{\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \"{{\n
\n
\n
\n
\n
\n
\n \n
\n
{{ value?.label }}\n \n \"info\n \n
\n
\n
\n
\n
\n {{ value?.labelValue? value?.labelValue : \"—\" }}\n
\n
\n
\n
\n \n {{ value?.labelValue }}\n \"\"\n
\n
\n
{{ value?.labelValue ? value?.labelValue : \"—\" }}\n
\n
\n
\n
\n \n \n \n
\n
\n
\n {{ statusItems.label }}\n
\n
\n
\n
\n
\n \n
\n
{{ value.statusUpdatePendingMessage }}
\n
\n
\n \n \n \n
\n
\n
\n
{{ value?.labelValue ? value?.labelValue : \"—\" }}\n
\n \n
\n
\n
\n
{{ value?.labelValue !== \"\" ? value?.labelValue : \"—\" }}\n
\n
\n
\n {{ value?.labelValue? value?.labelValue : \"—\" }}\n \"Download\n
\n\n
\n {{\n (value?.labelValue === \"0.00\") ? \"$0\" :\n value?.labelValue !== \"—\" && value?.labelValue !== \"\"\n ? (convertStringToNumber(value?.labelValue)\n | currency: value?.currency:\"symbol\":\"1.2-2\")\n : \"—\"\n }}\n
\n
\n {{\n value?.labelValue !== \"—\" && value?.labelValue !== \"\" && value.labelValue !== null\n ? (convertStringToNumber(value?.labelValue)\n | date: \"MM/dd/YYYY\") : \"—\"\n }}\n
\n
\n \"connected\"\n \"Unable\n
\n
\n {{value?.labelValue !== \"—\" && value?.labelValue !== \"\" && value?.labelValue !== null ?\n (convertStringToDate(value?.labelValue) | date: \"MM/dd/yyyy\") : \"—\"}}\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \"noresults\"\n
{{ state.error?.message }}
\n
{{ state.error?.messageSubText }}
\n
\n
0\" aria-label=\"Card list content items\">\n
\n\n
\n \n \n
\n\n
\n
\n\n
\n
\n \n {{ value?.labelValue }}\n \"\"\n
\n\n
\n
\n
\n
\n \"Connected\"\n \"Unable\n
\n
\n
\n
\n
\n \n
Service Campaign
\n
\n
\n\n
\n
\n
\n {{ value?.labelValue !== \"—\" && value?.labelValue !== \"\" && value.labelValue !== null\n ? (convertStringToNumber(value?.labelValue) | date: \"MM/dd/YYYY\") : \"—\"\n }}\n
\n
\n
\n
\n
\n
\n
\n \n \n \n
\n
\n {{ statusItems.label }}\n
\n
\n
\n
\n
\n\n \n
\n
{{ value.statusUpdatePendingMessage }}
\n
\n
\n \n \n \n
\n
\n
\n\n
\n
\n
\n \n \n \n \n
\n
\n
\n
\n
\n
{{ value?.labelValue !== \"\" ? value?.labelValue : \"—\" }}\n
\n
\n
\n
\n
\n \"{{\n
\n
\n
\n
\n
\n \"{{\n
\n
\n\n
\n
\n
\n {{value?.labelValue !== \"—\" && value?.labelValue !== \"\" && value?.labelValue !== null ?\n (convertStringToDate(value?.labelValue) | date: \"MM/dd/yyyy\") : \"—\"}}\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
1) }\" tabindex=\"0\">\n Showing {{ pager.startIndex + 1 | number }}-{{ pager.pageSize *\n (pager.currentPage - 1) + dataList.length | number }} of\n {{ state?.pageInfo?.totalCount | number }}\n\n
\n 1\" role=\"currentpage\" (pageChange)=\"setPage($event);pageClick()\"\n previousLabel=\"\" aria-controls=\"setPage($event)\" nextLabel=\"\" class=\"pagination-bar\" [maxSize]=\"7\"\n nextLabel=\"next\" [autoHide]=\"true\" screenReaderPaginationLabel=\"Pagination Navigation\" previousLabel=\"previous\"\n screenReaderCurrentLabel=\"You are on the current Page\">\n
\n
","
\n \n \n \n \n \n {{ state.title }}\n \n \"info\n \"info\n \n \n \n \n \n\n
\n
\n \n \n
\n {{state.searchFieldLabels?.invalidSearchText}}\n
\n \n
\n
\n \n \n
\n
\n
\n","
\n
\n
\n {{state.header}}\n
\n \n
\n
\n \n
\n
\n","
\n
\n
\n \n
\n {{\n countOfSelectedRequests()\n }}\n {{state.approveUserLimitIndicatorText}}\n
\n
\n
\n \n \n
\n
\n
\n
\n\n \n \n \n \n \n \n\n \n 0\">\n \n \n \n\n \n\n \n
0\"\n class=\"kng-table--checkbox-desktop-header\">\n  \n \n \n \n {{ header.label }}\n \n \"info\n \n
\n  \n \n \n \n \n
\n \n \n
{{ col.firstLineValue }}
\n
\n {{ col.secondLineValue }}\n
\n
\n {{ col.thirdLineValue }}\n
\n
\n\n \n
\n {{ col.value }}\n
\n \n \n
\n\n \n
\n \n \n {{ role.name }}\n \n \n
\n
\n\n \n
\n \n \n
\n
\n \n
\n {{\n col.value !== \"—\" && col.value !== \"\" && col.value !== null\n ? (convertStringToDate(col.value)\n | date: \"MM/dd/yyyy\") : \"—\"\n }}\n
\n
\n \n
\n {{ col.value }}\n
\n
\n \n
\n
{{ col.firstLineValue }}\n
\n \n \n \n
\n
\n {{ col.secondLineValue }}\n
\n
\n {{ col.thirdLineValue }}\n
\n
\n \n
\n \n
\n
\n \n
\n
\n
\n
\n\n
\n \"{{\n
{{ state.noResult.text }}
\n
\n
\n
\n\n
\n
0\">\n
\n 0\" [checked]=\"allSelected\"\n [indeterminate]=\"partiallySelected()\" (change)=\"setAll($event.checked)\" [disabled]=\"state.permissionCheckBoxDisabled === true\">\n \n\n {{state.selectAll}}\n
\n
\n
\n
\n
\n \n\n
\n \n \n
\n
\n {{ col.label }}\n \n \"info\n \n
\n
\n \n
{{ col.firstLineValue }}
\n
\n {{ col.secondLineValue }}\n
\n
\n {{ col.thirdLineValue }}\n
\n
\n\n \n
\n {{ col.value }}\n
\n \n \n
\n\n \n
\n \n
\n
\n\n \n
\n \n \n
\n
\n \n
\n {{\n col.value !== \"—\" && col.value !== \"\" && col.value !== null\n ? (convertStringToDate(col.value)\n | date: \"MM/dd/yyyy\") : \"—\"\n }}\n
\n
\n \n
\n {{ col.value }}\n
\n
\n \n
{{ col.firstLineValue }}\n \n
\n
\n {{ col.secondLineValue }}\n
\n
\n {{ col.thirdLineValue }}\n
\n
\n \n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n\n
\n \"{{\n
{{ state.noResult.text }}
\n
\n
\n
","
\n \n
\n
\n
\n {{ state.myDealer.firstName }} {{ state.myDealer.lastName }}\n
\n
\n
\n
\n \"{{\n {{ state.myDealer.phone.label }}\n
\n
\n \"{{\n {{ state.myDealer.phone.label }}\n
\n \n
\n {{ state.myDealer.phone.value }}\n
\n
\n \n
\n {{ state.myDealer.phone.value }}\n
\n
\n
\n \n
\n
\n \"{{\n
\n
{{ state.myDealer.address.label }}
\n
\n
{{ state.myDealer.address.value.addressLine1}},
\n
{{ state.myDealer.address.value.addressLine2}},
\n
{{ formatAddress(state.myDealer.address)}}
\n
\n
\n {{ state.myDealer.address.value.addressLine1}}\n
\n
\n
\n
\n
\n
\n \n \n
\n
\n \"{{state?.noResult?.altText}}\"\n
{{state.noResult?.label}}
\n
{{state.noResult?.text}}
\n
\n
\n
\n\n
\n \n \n
\n
\n\n
\n

\n \"loader\"\n

\n
","
\n \n \n \n \n \n \n \n \n \n \n \n
\n 0\">{{state.headerArray[i]}}\n
\n
\n
\n
\n","export interface GridDefinition {\n [key: string]: string;\n}\nexport interface KngGrid {\n state: KngGridState;\n}\nexport interface KngGridState {\n grid: GridDefinition[];\n displayedColumns: string[];\n totalArrayLength: number;\n isSortable?: boolean;\n}\n\nexport interface KngGridPagerCard{\n totalItems: number;\n currentPage: number;\n pageSize: number;\n totalPages: number;\n startPage: number;\n endPage: number;\n startIndex: number;\n endIndex: number;\n}\nexport const actionButtons = {\n\tactionButton: {\n\t\tremove: 'remove',\n\t\tmove: 'move'\n\t}\n};\nexport const expActionButtons = {\n\tactionButton: {\n\t\tremove: 'remove',\n\t\tmove: 'move'\n\t}\n};\nexport interface TableActionButton {\n name: string;\n value?: string;\n}\n","/* eslint-disable @angular-eslint/component-selector */\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport {\n\texpActionButtons,\n\tTableActionButton\n} from './definitions/kng-grid.interface';\n\n@Component({\n\tselector: '[action-buttons]',\n\ttemplateUrl: './template/action-buttons.component.html'\n})\nexport class ActionButtonsComponent \n{\n @Input() value: string | undefined;\n @Output() buttonAction: EventEmitter =\n \tnew EventEmitter();\n\n onEditClick() \n {\n \tthis.buttonAction.emit({\n \t\tname: expActionButtons.actionButton.move,\n \t\tvalue: this.value\n \t});\n }\n onDeleteClick() \n {\n \tthis.buttonAction.emit({ name: expActionButtons.actionButton.remove });\n }\n onViewClick() \n {\n \tthis.buttonAction.emit({ name: expActionButtons.actionButton.move });\n }\n}\n","\n \"\"\n\n\n \n \n\n","import {\n\tComponent,\n\tInput,\n\tViewChild,\n\tViewEncapsulation,\n\tOutput,\n\tEventEmitter\n} from '@angular/core';\nimport {\n\tKngGrid,\n\tKngGridState,\n\tGridDefinition,\n\tKngGridPagerCard\n} from './definitions/kng-grid.interface';\nimport { MatSort, Sort, SortDirection } from '@angular/material/sort';\n\n@Component({\n\tselector: 'kng-grid',\n\ttemplateUrl: './template/kng-grid.component.html',\n\tstyleUrls: ['./template/kng-grid.component.scss'],\n\tencapsulation: ViewEncapsulation.None\n})\nexport class KngGridComponent implements KngGrid \n{\n\ttotalArrayLength: number = 0;\n\tdisplayedColumns: string[] = [];\n\tvalue: string = '';\n @Output() action: EventEmitter = new EventEmitter();\n @Output() pageIndex: EventEmitter = new EventEmitter();\n @Output() sortColumn: EventEmitter =\n \tnew EventEmitter();\n dataSource: GridDefinition[] = [];\n\n columnsToDisplay: string[] = this.displayedColumns.slice();\n @Input() arrowIconGray: string = '/arrowLeft.svg';\n @Input() arrowIconOrange: string = '/arrowRightOrange.svg';\n @Input() isAccordion?: boolean;\n\n @Input() set state(value: KngGridState) \n {\n \tthis.dataSource = value.grid;\n \tthis.displayedColumns = value.displayedColumns;\n \tthis.columnsToDisplay = this.displayedColumns.slice();\n \tthis.totalArrayLength = value.totalArrayLength;\n \tthis.pagedItems = value.grid;\n \tthis.isSortable = value.isSortable? value.isSortable : false;\n }\n \n isSortable = false;\n\n @ViewChild(MatSort)\n \tsort!: MatSort;\n\n pager: KngGridPagerCard = {\n \ttotalPages: 1,\n \tcurrentPage: 0,\n \tendIndex: 0,\n \tendPage: 0,\n \tpageSize: 0,\n \tstartIndex: 0,\n \tstartPage: 0,\n \ttotalItems: 0\n };\n pageNumber: number = 1;\n pagedItems: GridDefinition[] = [];\n\n\n matsortColumn(value: Sort) \n {\n \tthis.sortColumn.emit(value.direction);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onTableAction(e: any): void \n {\n \tthis.action.emit(e);\n }\n}\n","import { Injectable } from '@angular/core';\n@Injectable({\n\tprovidedIn: 'root'\n})\n\nexport class GridPagerService \n{\n\tgetPager(totalItems: number, currentPage: number, pageSize: number = 10) \n\t{\n \n\t\tconst totalPages = Math.ceil(totalItems / pageSize);\n\n\t\tlet startPage: number, endPage: number;\n\t\tif (totalPages <= 5) \n\t\t{\n\t\t\tstartPage = 1;\n\t\t\tendPage = totalPages;\n\t\t}\n\t\telse \n\t\t{\n\t\t\tconst startEndObj=this.getCurrentPage( currentPage, totalPages);\n\t\t\tstartPage=startEndObj.startPage;\n\t\t\tendPage=startEndObj.endPage;\n\t\t\t\n\t\t}\n\n\t\tconst startIndex = (currentPage - 1) * pageSize;\n\t\tconst endIndex = Math.min(startIndex + pageSize - 1, totalItems - 1);\n\n\n\t\treturn {\n\t\t\ttotalItems: totalItems,\n\t\t\tcurrentPage: currentPage,\n\t\t\tpageSize: pageSize,\n\t\t\ttotalPages: totalPages,\n\t\t\tstartPage: startPage,\n\t\t\tendPage: endPage,\n\t\t\tstartIndex: startIndex,\n\t\t\tendIndex: endIndex\n \n\t\t};\n\t}\n\tgetCurrentPage(currentPage:number, totalPages:number )\n\t{\n\t\tlet startPage: number, endPage: number;\n\t\tif (currentPage <= 3) \n\t\t{\n\t\t\tstartPage = 1;\n\t\t\tendPage = 5;\n\t\t}\n\t\telse if (currentPage + 1 >= totalPages) \n\t\t{\n\t\t\tstartPage = totalPages - 4;\n\t\t\tendPage = totalPages;\n\t\t}\n\t\telse \n\t\t{\n\t\t\tstartPage = currentPage - 2;\n\t\t\tendPage = currentPage + 2;\n\t\t}\n\t\treturn { startPage: startPage, endPage: endPage };\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { KngGridComponent } from './kng-grid.component';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatSortModule } from '@angular/material/sort';\nimport { GridPagerService } from './kng-grid.service';\nimport { ActionButtonsComponent } from './action-buttons.component';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { NgxPaginationModule } from 'ngx-pagination';\n@NgModule({\n\tdeclarations: [\n\t\tKngGridComponent, ActionButtonsComponent\n\t],\n\timports: [ CommonModule, MatTableModule, MatPaginatorModule, MatSortModule, MatMenuModule, MatIconModule, MatButtonModule, NgxPaginationModule ],\n\texports: [\n\t\tKngGridComponent\n\t],\n\tproviders: [GridPagerService]\n})\nexport class KngGridModule {}\n","import {\n\tComponent,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tOnDestroy\n} from '@angular/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { KngButton, KngButtonState } from './definitions';\nimport { KngButtonFactory } from './kng-button.factory';\n\nconst svgIconName: string = 'icon-input';\n\n@Component({\n\tselector: 'kng-button',\n\ttemplateUrl: './template/kng-button.component.html',\n\tstyleUrls: ['./template/kng-button.component.scss']\n})\nexport class KngButtonComponent implements KngButton, OnDestroy \n{\n\tprivate subscription$: Subscription = new Subscription();\n\n\tprivate readonly pSvgIconName: string = svgIconName;\n\tget svgIconName(): string \n\t{\n\t\treturn this.pSvgIconName;\n\t}\n\n\tprivate state$: BehaviorSubject =\n\t\tnew BehaviorSubject(KngButtonFactory.build());\n\tget state(): KngButtonState \n\t{\n\t\treturn this.state$.value;\n\t}\n @Input() set state(value: KngButtonState) \n\t{\n\t\tthis.state$.next(value);\n\t}\n @Output() clicked: EventEmitter =\n \tnew EventEmitter();\n\n ngOnDestroy(): void \n {\n \tthis.subscription$.unsubscribe();\n }\n public handleClick() \n {\n \tthis.clicked.emit(this.state);\n }\n}\n","import { KngButtonState } from './definitions';\n\nexport class KngButtonFactory \n{\n\tpublic static build(): KngButtonState \n\t{\n\t\treturn {\n\t\t\tsize: 'small',\n\t\t\tstyle: 'primary',\n\t\t\tdisabled: false,\n\t\t\tlabel: 'Button',\n\t\t\ticon: {\n\t\t\t\taltText: '',\n\t\t\t\ticonPath: ''\n\t\t\t},\n\t\t\tposition: 'left'\n\t\t};\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { KngButtonComponent } from './kng-button.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { HttpClientModule } from '@angular/common/http';\n\n@NgModule({\n\tdeclarations: [KngButtonComponent],\n\timports: [ CommonModule, MatIconModule, HttpClientModule ],\n\texports: [KngButtonComponent],\n\tproviders: []\n})\nexport class KngButtonModule {}\n","import { Image } from 'projects/kinetic-angular/src/lib/shared/shared.interface';\n\nexport interface KngHeader {\n state: KngHeaderNav;\n}\nexport interface KngHeaderNav {\n state: Array;\n}\nexport interface KngHeaderNavStateItem {\n mobilePanelIsOpen: boolean;\n cssClass: string;\n menu: Array;\n minimumAccess?: boolean;\n}\nexport interface KngHeaderNavMenuOption {\n id: string;\n isSelected: boolean;\n url: string;\n label: string;\n iconPath: string;\n hideMenu : boolean;\n altText: string;\n cssClass: string;\n notClickable?: boolean;\n submenu: Array;\n dropdownArrow?: Image;\n locations?: Location[];\n}\nexport interface KngHeaderNavMenuOptionIcon {\n label: string;\n id: string;\n}\nexport interface Location {\n accountName: string;\n locationGRID: string;\n adminId?: boolean;\n}\n\nexport interface KngHeaderNavOptionSelectOn {\n event: Event;\n selection: KngHeaderNavMenuOption;\n}\n\nexport interface KngHeaderLogosClicked {\n event: Event;\n selection: Array;\n}\n\nexport enum CssClass {\n user = 'ui__nav__global__user',\n mobile = 'ui__nav__mobile',\n logos = 'ui__nav__global__icon',\n portal = 'ui__nav__portal',\n global = 'ui__nav__global',\n notification = 'ui__nav__global__notification',\n shop = 'ui__nav__global__shop',\n shopMobile = 'shopMenu',\n skipNav = 'Skip Navigation',\n locationListDropdown = 'ui__nav__location__list__dropdown'\n}\nexport interface KnHeaderCustomerState {\n hidden: boolean;\n warningNote: string;\n readOnly: string;\n endSession: string;\n username: string;\n}\n","import { KngHeaderNavStateItem, KnHeaderCustomerState } from './definitions/kng-header-nav.interface';\n\nexport class KngHeaderNavFactory \n{\n\tpublic static buildState(): KngHeaderNavStateItem[] \n\t{\n\t\treturn [\n\t\t\t{\n\t\t\t\tmobilePanelIsOpen: false,\n\t\t\t\tcssClass: 'ui__nav__global',\n\t\t\t\tmenu: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: '',\n\t\t\t\t\t\tisSelected: false,\n\t\t\t\t\t\turl: '',\n\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\thideMenu: true,\n\t\t\t\t\t\ticonPath: '',\n\t\t\t\t\t\taltText: '',\n\t\t\t\t\t\tcssClass: '',\n\t\t\t\t\t\tsubmenu: []\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: '',\n\t\t\t\t\t\tisSelected: false,\n\t\t\t\t\t\turl: '',\n\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\ticonPath: '',\n\t\t\t\t\t\thideMenu: true,\n\t\t\t\t\t\taltText: '',\n\t\t\t\t\t\tcssClass: '',\n\t\t\t\t\t\tsubmenu: []\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: '',\n\t\t\t\t\t\tisSelected: false,\n\t\t\t\t\t\turl: '',\n\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\ticonPath: '',\n\t\t\t\t\t\thideMenu: true,\n\t\t\t\t\t\taltText: '',\n\t\t\t\t\t\tcssClass: '',\n\t\t\t\t\t\tsubmenu: []\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: '',\n\t\t\t\t\t\tisSelected: false,\n\t\t\t\t\t\turl: '',\n\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\ticonPath: '',\n\t\t\t\t\t\thideMenu: true,\n\t\t\t\t\t\taltText: '',\n\t\t\t\t\t\tcssClass: 'ui__nav__global__user',\n\t\t\t\t\t\tsubmenu: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: '',\n\t\t\t\t\t\t\t\tisSelected: false,\n\t\t\t\t\t\t\t\turl: 'app/roles-permissions',\n\t\t\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\t\t\ticonPath: '',\n\t\t\t\t\t\t\t\thideMenu: false,\n\t\t\t\t\t\t\t\taltText: '',\n\t\t\t\t\t\t\t\tcssClass: 'ui__nav__global__user',\n\t\t\t\t\t\t\t\tsubmenu: []\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\tmobilePanelIsOpen: false,\n\t\t\t\tcssClass: 'ui__nav__portal',\n\t\t\t\tmenu: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: '',\n\t\t\t\t\t\tisSelected: true,\n\t\t\t\t\t\turl: '',\n\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\ticonPath: '',\n\t\t\t\t\t\thideMenu: true,\n\t\t\t\t\t\taltText: '',\n\t\t\t\t\t\tcssClass: '',\n\t\t\t\t\t\tsubmenu: []\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\tmobilePanelIsOpen: false,\n\t\t\t\tcssClass: 'ui__nav__mobile',\n\t\t\t\tmenu: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: '',\n\t\t\t\t\t\tisSelected: false,\n\t\t\t\t\t\turl: '',\n\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\ticonPath: '',\n\t\t\t\t\t\thideMenu: true,\n\t\t\t\t\t\taltText: '',\n\t\t\t\t\t\tcssClass: '',\n\t\t\t\t\t\tsubmenu: []\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t];\n\t}\n\tpublic static buildheaderCustomerState(): KnHeaderCustomerState \n\t{\n\t\treturn {\n\t\t\thidden: false,\n\t\t\twarningNote: '',\n\t\t\treadOnly: '',\n\t\t\tendSession: '',\n\t\t\tusername: ''\n\t\t};\n\t}\n}\n","export interface Image {\n iconPath: string;\n altText: string;\n}\nexport interface Location {\n locationName: string;\n\taddressLine1: string;\n\taddressLine2: string;\n\taddressLine2Optional: string;\n\tcity: string;\n\tstate: string;\n\tzipCode: string;\n}\n\nexport interface IdLabel{\n\tid: string;\n\tlabel: string;\n}\n\nexport interface LabelValue{\n\tlabel: string; \n\tvalue: string;\n\ticon?: Image;\n}\nexport enum SortOrder {\n\tdesc = 'desc',\n\tasc = 'asc',\n}\n\nexport interface Address{\n\taddressLine1:string;\n\taddressLine2?:string;\n\tcity:string;\n\tstate:string;\n\tcountry?: string;\n\tzipCode:string;\n }\nexport interface RedirectRoute {\n\tlabel: string;\n\tvalue: string | boolean | number;\n\tuserId?:string;\n\tcustomerId ? : string;\n\tlocationObj ? : Address |undefined;\n\torderId?: string;\n\tlocationId?: string;\n\tdocumentURL?: string | undefined;\n }\nexport interface Address{\n\taddressLine1: string;\n\taddressLine2?: string;\n\tcity: string;\n\tstate: string;\n\tcountry?:string;\n\tzipCode: string;\n }\nexport interface WidgetsComingSoon{\nimagePath:string;\nimageText:string;\ntitle?:string;\n }\n\nexport enum DealerPage \n{\n dashboard = 'Dashboard',\n serviceManagement = 'Service Management',\n orderMangement= 'Order Management'\n}\n\nexport enum HeaderNav{\n\tdashboard = 'Home',\n\tmyfleet='MyFleet',\n\tmyQuotes= 'Quotes',\n\tmyInsights= 'Connected Solutions',\n\tfinancing='Financing',\n\torderMangement= 'Orders',\n\tserviceManagement = 'Service and Repairs'\n}\n\nexport enum HeaderUrl {\n\tdashboard = '/dashboard',\n\tmyfleet='/myfleet',\n\tfinancing='/financing',\n\torderMangement= 'order-management',\n\tserviceManagement = '/service-management',\n\taccountSetting = '/account-settings',\n\tlocationManagment = '/location-management',\n\trolesPermissions = '/roles-permissions',\n\tuserManagement = '/user-management',\n\tmyQuotes='/myquotes',\n\tmyInsights='/my-insights',\n\tnotification = '/notification'\n}\n\nexport interface TooltipContent{\n\tcontent:string;\n\tcloseIcon: Image;\n}\nexport interface TokenDataList {\n\tname: string;\n\ttext: string;\n\turl: string;\n\tisLink: string;\n }\n\nexport type AllDataType = string | number | boolean | undefined;\n\nexport type FieldValueType = string | boolean | number;\n","/* eslint-disable max-lines */\nimport { AfterContentChecked, Component, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, Renderer2, ViewChild } from '@angular/core';\nimport { MatSidenav } from '@angular/material/sidenav';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { ViewportScroller } from '@angular/common';\nimport { BehaviorSubject } from 'rxjs';\nimport { CssClass, KngHeaderNav, KngHeaderNavMenuOption, KngHeaderNavOptionSelectOn, KngHeaderNavStateItem, Location, KnHeaderCustomerState } from './definitions/kng-header-nav.interface';\nimport { KngHeaderNavFactory } from './kng-header-nav.factory';\nimport { HeaderNav, HeaderUrl } from '../../../shared/shared.interface';\n@Component({\n\tselector: 'kng-header-nav',\n\ttemplateUrl: './template/kng-header-nav.component.html',\n\tstyleUrls: ['./template/kng-header-nav.component.scss']\n})\nexport class KngHeaderNavComponent implements KngHeaderNav, OnDestroy, OnInit, AfterContentChecked \n{\n\theaderTop!: KngHeaderNavStateItem;\n\tmobileHeaderMenu!: KngHeaderNavStateItem;\n\theaderBottom!: KngHeaderNavStateItem;\n\tshowSettingsMenu: boolean = false;\n\tsubMenuSelected: boolean = false;\n\tsubLocationMenuSelected: boolean = false;\n\tshowLocationDropdown: boolean = false;\n\tsettingsMenu!: KngHeaderNavMenuOption;\n\tsubOptionArray!: Array;\n\theaderlogos!: Array;\n\tusername: string = ' ';\n\tshowellipsis: boolean = false;\n\tcssClass = CssClass;\n\tunSelectNav: boolean = false;\n\tunSelectHeader: boolean = false;\n\tunSelectMobileHeader: boolean = false;\n\tcurrentRoute: string = '';\n\tuserSelected = false;\n\tnavTabIndex: number = 0;\n\tskipNavText: string = 'Skip Navigation';\n\tprivate state$: BehaviorSubject = new BehaviorSubject(KngHeaderNavFactory.buildState());\n\tprivate unlistener: () => void;\n\tlocationListArray: Location[] | undefined = [];\n\tselectedLocation!: Location | undefined;\n\taccountNameEllipsis: boolean = false;\n\tget state(): KngHeaderNavStateItem[] { return this.state$.value; }\n\t@Input() set state(value: KngHeaderNavStateItem[]) \n\t{\n\t\tthis.state$.next(value);\n\t\tthis.getHeaderData();\n\t}\n\t@Input() customerState: KnHeaderCustomerState = KngHeaderNavFactory.buildheaderCustomerState();\n\t@ViewChild('sidenav') sidenav!: MatSidenav;\n\t@Output() clickEventTop: EventEmitter = new EventEmitter();\n\t@Output() customerSessionEvent: EventEmitter = new EventEmitter();\n\t@Output() clickEventLocationTop: EventEmitter = new EventEmitter();\n\t@Output() clickEventBottom: EventEmitter = new EventEmitter();\n\t@Output() clickHeaderLogo: EventEmitter = new EventEmitter();\n\tconstructor(private renderer: Renderer2, public router: Router, private scroller: ViewportScroller)\n\t{\n\t\tthis.unlistener = this.renderer.listen('window', 'mousedown', () => \n\t\t{\n\t\t\tif (!this.subMenuSelected) this.showSettingsMenu = false;\n\t\t\tif (!this.subLocationMenuSelected) this.showLocationDropdown = false;\n\t\t});\n\t\tthis.renderer.listen('window', 'keydown', (e) => \n\t\t{\n\t\t\tif (e.key === 'Escape') \n\t\t\t{\n\t\t\t\tif (!this.subMenuSelected) this.showSettingsMenu = false;\n\t\t\t\tif (!this.subLocationMenuSelected) this.showLocationDropdown = false;\n\t\t\t}\n\t\t});\n\t}\n\t@HostListener('document:keydown', ['$event'])\n\tonKeyPress(event: KeyboardEvent): void \n\t{\n\t\tconst clickedElement = event.target as HTMLElement;\n\t\tif (event.key === 'Enter' && clickedElement.classList.contains(CssClass.locationListDropdown)) \n\t\t{\n\t\t\tthis.clickDropdownArrow();\n\t\t}\n\t}\n\tngOnInit() \n\t{\n\n\t\tthis.router.events.subscribe(event => \n\t\t{\n\t\t\tif ((event instanceof NavigationEnd)) \n\t\t\t{\n\t\t\t\tthis.currentRoute = event.url;\n\t\t\t}\n\t\t\tthis.checkCurrentRoute();\n\t\t});\n\t}\n\tngAfterContentChecked(): void \n\t{\n\t\tthis.state$.subscribe(value => \n\t\t{\n\t\t\tif(value)\n\t\t\t{\n\t\t\t\tthis.locationListArray = this.state?.filter((elem) => elem.cssClass === CssClass.global)[0].menu?.filter((item) => item.cssClass === CssClass.locationListDropdown)[0]?.locations;\n\t\t\t\tthis.selectedLocation = this.locationListArray? this.locationListArray.filter(item => item.adminId === true)[0] : undefined;\n\t\t\t\tthis.getUserName();\n\t\t\t\tthis.shouldShowAccountNameEllipsis();\n\t\t\t}\n\t\t});\n\n\t}\n\tshouldShowAccountNameEllipsis()\n \t{\n\t\tif(this.selectedLocation && this.selectedLocation?.accountName?.length>10)\n\t\t\tthis.accountNameEllipsis = true;\n\t\telse\n\t\t\tthis.accountNameEllipsis = false;\n \t}\n\tgetInitials(userName: string) : string\n \t{\n\t\tconst words = userName.split(' ');\n\t\tconst initials = words.map(word => word.charAt(0).toUpperCase()).join('');\n\t\treturn initials;\n \t}\n \tgetUserName()\n \t{\n\t\tif (this.locationListArray && this.locationListArray.length > 0) \n\t\t{\n\t\t\tthis.username = this.getInitials(this.headerTop?.menu?.filter((item) => item.cssClass === CssClass.user)[0]?.label);\n\t\t}\n\t\telse { this.username = this.headerTop?.menu?.filter((item) => item.cssClass === CssClass.user)[0]?.label; }\n\t}\n\tselectedAccordion: HTMLElement | null = null;\n\ttoggleHelper(event: Event, accordion: HTMLElement, panel: HTMLElement): void \n\t{\n\t\tevent.preventDefault();\n\t\tthis.selectedAccordion = accordion;\n\t\tthis.selectedAccordion.classList.toggle('active');\n\t\tpanel.style.display = panel.style.display === 'block' ? 'none' : 'block';\n\t}\n\tcheckCurrentRoute()\n\t{\n\t\tif (this.currentRoute.includes(HeaderUrl.userManagement) || this.router.url.includes(HeaderUrl.rolesPermissions) || this.currentRoute.includes(HeaderUrl.accountSetting) || this.currentRoute.includes(HeaderUrl.locationManagment)) \n\t\t{\n\t\t\tthis.userSelected = true;\n\t\t\tthis.unSelectNav = true;\n\t\t\tthis.subOptionArray?.forEach((item) => \n\t\t\t{\n\t\t\t\titem.isSelected = false;\n\t\t\t\titem.isSelected = this.currentRoute.includes(item.url) && (item.url !== '');\n\t\t\t});\n\t\t\tthis.updateSelectionState(false);\n\t\t}\n\t\telse if(this.isMainNavSelected())\n\t\t{\n\t\t\tthis.unSelectNav = false;\n\t\t\tthis.headerBottom?.menu?.forEach((item) => \n\t\t\t{\n\t\t\t\titem.isSelected = false;\n\t\t\t\titem.isSelected = this.currentRoute.includes(item.url);\n\t\t\t});\n\t\t\tthis.userSelected = false;\n\t\t\tthis.updateSubSelectionState(false);\n\t\t}\n\t\telse \n\t\t{\n\t\t\tthis.userSelected = false;\n\t\t}\n\t}\n\tisMainNavSelected()\n\t{\n\t\treturn this.currentRoute.includes(HeaderUrl.dashboard) || this.currentRoute.includes(HeaderUrl.orderMangement) || this.currentRoute.includes(HeaderUrl.myfleet) || this.currentRoute.includes(HeaderUrl.serviceManagement) || this.currentRoute.includes(HeaderUrl.myQuotes) || this.currentRoute.includes(HeaderUrl.myInsights);\n\t}\n\tupdateSelectionState(state: boolean)\n\t{\n\t\tthis.headerBottom.menu?.forEach((item) => { item.isSelected = state; });\n\t}\n\tupdateSubSelectionState(state: boolean)\n\t{\n\t\tthis.subOptionArray?.forEach((item) => { item.isSelected = state; });\n\t}\n\tgetHeaderData() \n\t{\n\t\tthis.headerTop = this.state?.filter((elem) => elem.cssClass === CssClass.global)[0];\n\t\tthis.headerBottom = this.state?.filter((elem) => elem.cssClass === CssClass.portal)[0];\n\t\tthis.mobileHeaderMenu = this.state?.filter((elem) => elem.cssClass === CssClass.mobile)[0];\n\t\tthis.getSubOptionAndHeaderArray();\n\t\tthis.locationListArray = this.headerTop?.menu?.filter((item) => item.cssClass === CssClass.locationListDropdown)[0]?.locations;\n\t\tthis.selectedLocation = this.locationListArray? this.locationListArray.filter(item => item.adminId === true)[0] : undefined;\n\t\tthis.getUserName();\n\t\tthis.shouldShowAccountNameEllipsis();\n\t\tif (this.username?.length > 21) \n\t\t\tthis.showellipsis = true;\n\t\tthis.setIsSelectedHeaderBottom();\n\t}\n\tsetIsSelectedHeaderBottom() \n\t{\n\t\tconst routUrl = this.router.url.split('/');\n\t\tif (routUrl) \n\t\t{\n\t\t\tthis.headerBottom?.menu?.forEach((item) => \n\t\t\t{\n\t\t\t\titem.isSelected = false;\n\t\t\t\tif (item.label === HeaderNav.orderMangement || item.label === HeaderNav.myfleet || item.label === HeaderNav.serviceManagement || this.isMyQuotesOrMyInsights(item.label)) \n\t\t\t\t{\n\t\t\t\t\tthis.userSelected = false;\n\t\t\t\t\titem.isSelected = this.router.url.includes(item.url);\n\t\t\t\t}\n\t\t\t\telse if (item.label !== HeaderNav.dashboard)\n\t\t\t\t\tthis.setIsSelectedSubOptionCategories(routUrl, item);\n\t\t\t\telse \n\t\t\t\t\tthis.setIsSelectedForDashboard(routUrl, item);\n\t\t\t});\n\t\t\tthis.unSelectMobileHeader = (!this.router.url.includes('notify'));\n\t\t\tthis.setIsSelectedHeader();\n\t\t\tthis.setIsSelectedSubOption();\n\t\t}\n\t}\n\tisMyQuotesOrMyInsights(title: string)\n\t{\n\t\treturn (title === HeaderNav.myQuotes || title === HeaderNav.myInsights);\n\t}\n\tsetIsSelectedForDashboard(routUrl: string[], item: KngHeaderNavMenuOption)\n\t{\n\t\tthis.userSelected = false;\n\t\tconst url = routUrl.pop();\n\t\tif (url)\n\t\t\titem.isSelected = (item.url.includes(url.toLowerCase()) || url === ('app'));\n\t}\n\tpublic selectHeaderMenu(option: KngHeaderNavMenuOption, event: Event): void \n\t{\n\t\tthis.resetNavIndex();\n\t\tif (option.cssClass === CssClass.user) \n\t\t\tthis.showSettingsMenu = true;\n\t\tthis.clickEventTop.emit({ event, selection: option });\n\t\tthis.router.events.subscribe(event => \n\t\t{\n\t\t\tif ((event instanceof NavigationEnd)) \n\t\t\t{\n\t\t\t\tif (!(/toyota/i.exec(option.altText)))\n\t\t\t\t\tthis.unSelectNav = true;\n\t\t\t\tthis.unSelectHeader = false;\n\t\t\t\tthis.checkCurrentRoute();\n\t\t\t}\n\t\t});\n\t}\n\tcloseMenu() { this.subMenuSelected = false; }\n\tdisplayMenu() { this.subMenuSelected = true; }\n\tcloseLocationMenu() { this.subLocationMenuSelected = false; }\n\tdisplayLocationMenu() { this.subLocationMenuSelected = true; }\n\tclickDropdownArrow() { this.showLocationDropdown = !this.showLocationDropdown; }\n\tpublic selectNavMenu(option: KngHeaderNavMenuOption, tag: string, event: Event): void \n\t{\n\t\tthis.resetNavIndex();\n\t\tif (tag === 'nav') \n\t\t{\n\t\t\tthis.clickEventBottom.emit({ event, selection: option });\n\t\t\tthis.router.events.subscribe(event => \n\t\t\t{\n\t\t\t\tif ((event instanceof NavigationEnd)) \n\t\t\t\t{\n\t\t\t\t\tthis.unSelectNav = false;\n\t\t\t\t\tthis.unSelectHeader = true;\n\t\t\t\t\tthis.headerBottom?.menu?.forEach((item) => \n\t\t\t\t\t{\n\t\t\t\t\t\titem.isSelected = false;\n\t\t\t\t\t\tif (item.label === HeaderNav.orderMangement || item.label === HeaderNav.myfleet || item.label === HeaderNav.serviceManagement || this.isMyQuotesOrMyInsights(item.label)) \n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.userSelected = false;\n\t\t\t\t\t\t\titem.isSelected = this.currentRoute.includes(item.url);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\titem.isSelected = (item.url === this.currentRoute);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\tpublic selectSubLocationOption(location: Location, tag: string): void \n\t{\n\t\tif (tag === 'header') \n\t\t{\n\t\t\tthis.subLocationMenuSelected = true;\n\t\t\tif(location !== this.selectedLocation) this.clickEventLocationTop.emit(location);\n\t\t\tthis.showLocationDropdown = false;\n\t\t}\n\t}\n\tpublic selectSubLocationOptionMobile(location: Location): void \n\t{\n\t\tif(location !== this.selectedLocation) this.clickEventLocationTop.emit(location);\n\t}\n\tpublic selectSubOption(subOption: KngHeaderNavMenuOption, tag: string, event: Event): void \n\t{\n\t\tif (tag === 'header') \n\t\t{\n\t\t\tsubOption.isSelected = true;\n\t\t\tthis.subMenuSelected = true;\n\t\t\tthis.clickEventTop.emit({ event, selection: subOption });\n\t\t\tthis.router.events.subscribe(event => \n\t\t\t{\n\t\t\t\tif ((event instanceof NavigationEnd)) \n\t\t\t\t{\n\t\t\t\t\tthis.unSelectNav = true;\n\t\t\t\t\tthis.unSelectHeader = true;\n\t\t\t\t\tthis.subOptionArray?.forEach((item) => \n\t\t\t\t\t{\n\t\t\t\t\t\titem.isSelected = false;\n\t\t\t\t\t\titem.isSelected = this.currentRoute.includes(item.url) && (item.url !== '');\n\t\t\t\t\t\tthis.userSelected = true;\n\t\t\t\t\t});\n\t\t\t\t\tthis.checkCurrentRoute();\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.showSettingsMenu = false;\n\t\t}\n\t}\n\tselectMobileMenu(option: KngHeaderNavMenuOption, event: Event) \n\t{\n\t\tthis.clickEventTop.emit({ event, selection: option });\n\t\tthis.router.events.subscribe(event => \n\t\t{\n\t\t\tif ((event instanceof NavigationEnd)) \n\t\t\t{\n\t\t\t\tthis.mobileHeaderMenu?.menu?.forEach((item) => \n\t\t\t\t{\n\t\t\t\t\tif (item.label === HeaderNav.orderMangement || item.label === HeaderNav.myfleet || item.label === HeaderNav.serviceManagement || this.isMyQuotesOrMyInsights(item.label))\n\t\t\t\t\t\titem.isSelected = this.currentRoute.includes(item.url);\n\t\t\t\t\telse\n\t\t\t\t\t\titem.isSelected = this.currentRoute.includes(item.url) && (item.url !== '');\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tthis.unSelectMobileHeader = true;\n\t\tthis.sidenav.close()?.catch(error => \n\t\t{\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.log(error, 'error');\n\t\t});\n\t}\n\tlogoClicked(event: Event, option: KngHeaderNavMenuOption) \n\t{\n\t\tthis.clickEventTop.emit({ event, selection: option });\n\t\tthis.unSelectNav = true;\n\t\tthis.unSelectMobileHeader = false;\n\t}\n\tngOnDestroy(): void { this.unlistener(); }\n\tresetNavIndex() { this.navTabIndex = 0; }\n\tskipNavigation(): void \n\t{\n\t\tif (this.navTabIndex === 0) \n\t\t{\n\t\t\tthis.navTabIndex = -1;\n\t\t\tthis.skipNavText = 'Go Through Navigation';\n\t\t\tthis.scroller.scrollToAnchor('mainContent');\n\t\t\tconst input: HTMLDivElement | null = document.querySelector('#mainContent') as HTMLDivElement;\n\t\t\tif (input !== null)\n\t\t\t\tinput.focus();\n\t\t}\n\t\telse if (this.navTabIndex === -1) \n\t\t{\n\t\t\tthis.resetNavIndex();\n\t\t\tthis.skipNavText = 'Skip Navigation';\n\t\t}\n\t}\n\tsetIsSelectedHeader() \n\t{\n\t\tconst routUrl = this.router.url.split('/');\n\t\tif (routUrl)\n\t\t\tthis.mobileHeaderMenu?.menu?.forEach((item) => \n\t\t\t{\n\t\t\t\titem.isSelected = false;\n\t\t\t\tif (item.label === HeaderNav.dashboard || item.label === HeaderNav.orderMangement || item.label === HeaderNav.myfleet || item.label === HeaderNav.serviceManagement || this.isMyQuotesOrMyInsights(item.label))\n\t\t\t\t\titem.isSelected = this.router.url.includes(item.url);\n\t\t\t\telse\n\t\t\t\t\tthis.setIsSelectedSubOptionCategories(routUrl, item);\n\t\t\t});\n\t}\n\tsetIsSelectedSubOption() \n\t{\n\t\tconst routUrl = this.router.url.split('/');\n\t\tif (routUrl) \n\t\t{\n\t\t\tthis.subOptionArray?.forEach((item) => { this.setIsSelectedSubOptionCategories(routUrl, item); });\n\t\t}\n\t}\n\tgetSubOptionAndHeaderArray() \n\t{\n\t\tthis.subOptionArray = this.headerTop?.menu?.filter((item) => item.cssClass === CssClass.user)[0]?.submenu;\n\t\tthis.headerlogos = this.headerTop?.menu?.filter((item) => item.cssClass === CssClass.logos || item.cssClass === CssClass.notification);\n\t}\n\tshowEllipsis(userName: string) \n\t{\n\t\treturn userName.length > 21;\n\t}\n\tsetIsSelectedSubOptionCategories(routUrl: string[], item: KngHeaderNavMenuOption) \n\t{\n\t\titem.isSelected = false;\n\t\tlet flag: number = 0;\n\t\troutUrl.forEach((url) => \n\t\t{\n\t\t\tif (item.url.includes(url.toLowerCase()) && url !== ('app') && url !== ('') && url !== ('dashboard'))\n\t\t\t\tflag++;\n\t\t});\n\t\tif (flag > 0) \n\t\t{\n\t\t\titem.isSelected = true;\n\t\t\tthis.userSelected = true;\n\t\t}\n\t\telse { item.isSelected = false; }\n\t}\n\tendCustomerSession()\n\t{\n\t\tthis.customerSessionEvent.emit('end');\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { KngHeaderNavComponent } from './kng-header-nav.component';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { RouterModule } from '@angular/router';\n\n@NgModule({\n\tdeclarations: [KngHeaderNavComponent],\n\timports: [\n\t\tCommonModule,\n\t\tMatSidenavModule,\n\t\tMatIconModule,\n\t\tMatButtonModule,\n\t\tBrowserAnimationsModule,\n\t\tRouterModule\n\t],\n\texports: [KngHeaderNavComponent],\n\tproviders: []\n})\nexport class KngHeaderNavModule {}\n","import { KngFooterCopyRightLabel, KngFooterMenu, KngFooterState } from './definitions/footer.interface';\n\nexport class KngFooterFactory \n{\n\tpublic static buildState(): KngFooterState \n\t{\n\t\treturn {\n\t\t\tribbonImage: '',\n\t\t\taltText: '',\n\t\t\tcssClass: '',\n\t\t\tfootercontent: {\n\t\t\t\tfixed: false,\n\t\t\t\thidden: false,\n\t\t\t\tlogoImagePath: '',\n\t\t\t\taltText: '',\n\t\t\t\tfootermenu: this.getFooterMenu(),\n\t\t\t\tcopyright: {\n\t\t\t\t\tlabel: '',\n\t\t\t\t\tlabelUrl: this.getLabelUrl()\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\tpublic static getLabelUrl(): KngFooterCopyRightLabel[]\n\t{\n\t\tconst obj: KngFooterCopyRightLabel[] = [];\n\t\tfor(let i = 0; i<4 ; i++) \n\t\t{\n\t\t\tobj.push({ label: '', url: '' });\n\t\t}\n\t\treturn obj;\n\t}\n\tpublic static getFooterMenu(): KngFooterMenu[] \n\t{\n\t\tconst footerObj: KngFooterMenu[] = [];\n\t\tfor(let i = 0; i<4 ; i++) \n\t\t{\n\t\t\tfooterObj.push({ id: '',\tlabel: '', iconPath: '', altText: '', labelValue: [], url: '' });\n\t\t}\n\t\treturn footerObj;\n\t}\n}\n","import { KngFooterFactory } from '../footer/kng-footer.factory';\nimport { KngContentState } from './definitions';\n\nexport class KngContentFactory \n{\n\tpublic static buildState(): KngContentState \n\t{\n\t\treturn {\n\t\t\twindowed: false,\n\t\t\tfooter: KngFooterFactory.buildState()\n\t\t};\n\t}\n}\n","import { Component, Input } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport {\n\tKngContent,\n\tKngContentState\n} from './definitions/kng-content.interface';\nimport { KngContentFactory } from './kng-content.factory';\n\n@Component({\n\tselector: 'kng-content',\n\ttemplateUrl: './template/kng-content.component.html',\n\tstyleUrls: ['./template/kng-content.component.scss']\n})\nexport class KngContentComponent implements KngContent \n{\n\tprivate state$: BehaviorSubject =\n\t\tnew BehaviorSubject(KngContentFactory.buildState());\n @Input() set state(value: KngContentState) \n\t{\n\t\tthis.state$.next(value);\n\t}\n\n get state(): KngContentState \n {\n \treturn this.state$.value;\n }\n\n public hasFixedFooter(): boolean \n {\n \treturn (\n \t\tthis.state.footer['footercontent'].fixed &&\n !this.state.footer['footercontent'].hidden\n \t);\n }\n}\n","
\n \n
\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { KngBreadcrumbFactory } from './kng-breadcrumb.factory';\nimport { KngBreadcrumbState, KngBreadcrumbArr } from './definitions';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class KngBreadcrumbService \n{\n\tprivate state$: BehaviorSubject =\n\t\tnew BehaviorSubject(KngBreadcrumbFactory.build());\n\tget state(): KngBreadcrumbState \n\t{\n\t\treturn this.state$.value;\n\t}\n\tget stateChanged(): Observable \n\t{\n\t\treturn this.state$.asObservable();\n\t}\n\n\tpublic updateState(value: KngBreadcrumbState): void \n\t{\n\t\tthis.state$.next(value);\n\t}\n\n\tpublic removeBreadcrumbs(index: number) \n\t{\n\t\tthis.state.breadcrumbData.length = index + 1;\n\t\tthis.updateState(this.state);\n\t}\n\n\tpublic addBreadcrumbs(breadcrumb: KngBreadcrumbArr) \n\t{\n\t\tthis.state.breadcrumbData.push(breadcrumb);\n\t}\n}\n","import { KngBreadcrumbState } from './definitions';\n\nexport class KngBreadcrumbFactory \n{\n\tpublic static build(): KngBreadcrumbState \n\t{\n\t\treturn {\n\t\t\tbreadcrumbData: [\n\t\t\t\t{\n\t\t\t\t\tid: '',\n\t\t\t\t\turl: '',\n\t\t\t\t\tlabel: ''\n\t\t\t\t}\n\t\t\t],\n\t\t\tbreadcrumbIcon: {\n\t\t\t\turl: '',\n\t\t\t\talt: ''\n\t\t\t}\n\t\t};\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { KngBreadcrumbComponent } from './kng-breadcrumb.component';\nimport { KngBreadcrumbService } from './kng-breadcrumb.service';\n\n@NgModule({\n\tdeclarations: [KngBreadcrumbComponent],\n\timports: [CommonModule],\n\texports: [KngBreadcrumbComponent],\n\tproviders: [KngBreadcrumbService]\n})\nexport class KngBreadcrumbModule {}\n","import { Image } from '../../../shared/shared.interface';\n\nexport interface Modal {\n state: ModalState;\n}\nexport interface ModalState {\n hidden: boolean;\n label: string;\n isCheckBox?: boolean;\n buttons: ButtonState[];\n cssClass: string;\n checkboxText?: string;\n closeHidden?: boolean;\n tooltip?: {\n\t\tcloseIcon: Image;\n\t\tcontent: string;\n\t};\n}\n\nexport interface ButtonState {\n label: string;\n id?: string;\n iconPath?: string;\n cssClass: string;\n disabled: boolean;\n hidden?: boolean;\n}\n\nexport interface ModalEvent {\n state: ModalState;\n cta: ButtonState;\n}\n\nexport enum Icon {\n arrowLeft = 'assets/arrowleftOrange.svg'\n}\n\nexport enum ButtonLabel {\n editNewLocation = 'Edit New Location'\n}\n\nexport interface NavButtonState {\n btnRequired: boolean;\n btnLabel: string;\n}\n","import {\n\tComponent,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tOnInit,\n\tOnDestroy,\n\tViewChild,\n\tElementRef\n} from '@angular/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { ButtonLabel, ButtonState, Icon, Modal, ModalEvent, ModalState, NavButtonState } from './definitions';\nimport { ModalFactory } from './modal.factory';\n@Component({\n\tselector: 'kng-modal-component',\n\ttemplateUrl: './template/modal.component.html',\n\tstyleUrls: ['./template/modal.component.scss']\n})\nexport class ModalComponent implements Modal, OnInit, OnDestroy\n{\n\tprivate subscriptions$: Subscription = new Subscription();\n\tshowTooltip:boolean = false;\n\tarrowLeft: string | undefined = Icon.arrowLeft;\n\teditBtnLabel = ButtonLabel.editNewLocation;\n\tprivate state$: BehaviorSubject = new BehaviorSubject(\n\t\tModalFactory.build()\n\t);\n\tget state(): ModalState\n\t{\n\t\treturn this.state$.value;\n\t}\n\t@ViewChild('toolTipRef') toolTipRef!: HTMLDivElement;\n @ViewChild('modalContainer', { static: true })\n \tmodalContainer!: ElementRef;\n\n @Input() set state(value: ModalState)\n {\n \tthis.state$.next(value);\n \tif (!value.hidden)\n \t{\n \t\tthis.openModal();\n \t}\n \telse\n \t{\n \t\tthis.closePopup();\n \t}\n }\n\n @Output() stateChanged: EventEmitter =\n \tnew EventEmitter();\n @Output() closed: EventEmitter = new EventEmitter();\n @Output() opened: EventEmitter = new EventEmitter();\n @Output() ctaClickedOn: EventEmitter =\n \tnew EventEmitter();\n @Output() tooltipClicked: EventEmitter =\n \tnew EventEmitter();\n @Output() checkBoxClicked : EventEmitter = new EventEmitter();\n @Output() navBtnClicked : EventEmitter = new EventEmitter();\n\n @Input() checkBoxText?: string;\n @Input() checkBoxTickedFlag: boolean = false;\n @Input() checBoxDisabledFlag: boolean = true;\n @Input() navBtnRequired: boolean = false;\n @Input() navBtnState: NavButtonState = {\n \t\tbtnRequired: false,\n \t\tbtnLabel: ''\n \t};\n private stateChangeHandler(modalState: ModalState)\n {\n \tthis.stateChanged.emit(modalState);\n }\n\n ngOnInit(): void\n {\n \tconst stateChangedSubscription: Subscription = this.state$.subscribe(\n \t\t(next: ModalState) => this.stateChangeHandler(next)\n \t);\n \tthis.subscriptions$.add(stateChangedSubscription);\n }\n\n ngOnDestroy(): void\n {\n \tthis.subscriptions$.unsubscribe();\n }\n closePopup()\n {\n \tdocument.getElementById('kng-modal-close')?.click();\n \tthis.state.hidden = true;\n \tthis.closed.emit();\n \tthis.hideModalBackdrop();\n }\n openModal()\n {\n \tdocument.getElementById('kng-open-modal')?.click();\n \tthis.state.hidden = false;\n \tthis.opened.emit();\n }\n\n emitCtaClickEvent(cta: ButtonState)\n {\n \tconst eventEmitted: ModalEvent = { state: this.state, cta: cta };\n \tthis.checBoxDisabledFlag = true;\n \tthis.ctaClickedOn.emit(eventEmitted);\n }\n openTooltip(eleRef: HTMLDivElement): void\n {\n \tif(this.state.tooltip?.content && eleRef)\n \t{\n \t\tthis.showTooltip = true;\n \t\tsetTimeout(() => eleRef.focus(), 100);\n \t}\n }\n\n closeTooTip(eleRef: HTMLDivElement): void\n {\n \tif(this.state.tooltip?.content && eleRef)\n \t{\n \t\tthis.showTooltip = false;\n \t\tsetTimeout(() => eleRef.focus(), 100);\n \t}\n }\n hideModalBackdrop()\n {\n \tdocument.body.classList.remove('modal-open');\n \tdocument.body.removeAttribute('style');\n \tconst backdrop = document.querySelector('.modal-backdrop');\n \tbackdrop?.remove();\n }\n showMobileTooltip()\n {\n\t this.tooltipClicked.emit();\n }\n\n checkBoxClickEvent()\n {\n \tif(this.checkBoxTickedFlag)\n \t{\n \t\tthis.checkBoxClicked.emit(true);\n \t}\n \telse\n \t{\n \t\tthis.checkBoxClicked.emit(false);\n \t}\n }\n\n navBtnclick() \n {\n \tthis.navBtnClicked.emit();\n }\n}\n","import { ModalState } from './definitions';\n\nexport class ModalFactory \n{\n\tpublic static build(): ModalState \n\t{\n\t\treturn {\n\t\t\thidden: true,\n\t\t\tlabel: '',\n\t\t\tbuttons: [],\n\t\t\tcssClass: '',\n\t\t\tcloseHidden: false,\n\t\t\ttooltip: {\n\t\t\t\tcloseIcon: {\n\t\t\t\t\ticonPath: '',\n\t\t\t\t\taltText: ''\n\t\t\t\t},\n\t\t\t\tcontent: ''\n\t\t\t}\n\t\t};\n\t}\n}\n","import { Injectable } from '@angular/core';\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class ModalService {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ModalComponent } from './modal.component';\nimport { ModalService } from './modal.service';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { FormsModule } from '@angular/forms';\nimport { ReactiveFormsModule } from '@angular/forms';\n@NgModule({\n\tdeclarations: [ModalComponent],\n\timports: [ CommonModule, MatTooltipModule, MatCheckboxModule, FormsModule, ReactiveFormsModule ],\n\texports: [ModalComponent],\n\tproviders: [ModalService]\n})\nexport class ModalModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { KngContentComponent } from './kng-content.component';\nimport { KngBreadcrumbModule } from '../breadcrumb';\nimport { ModalModule } from '../modal';\n\n@NgModule({\n\tdeclarations: [KngContentComponent],\n\timports: [ CommonModule, KngBreadcrumbModule, ModalModule ],\n\texports: [KngContentComponent],\n\tproviders: []\n})\nexport class KngContentModule {}\n","export interface KngFooter {\n state: KngFooterState;\n}\n\nexport interface KngFooterState {\n ribbonImage: string;\n altText: string;\n footercontent: KngFooterData;\n cssClass: string;\n}\nexport interface KngFooterData {\n fixed: boolean;\n hidden: boolean;\n logoImagePath: string;\n altText: string;\n footermenu: KngFooterMenu[];\n copyright: KngFooterCopyRight;\n}\nexport interface KngFooterMenu {\n id: string;\n label: string;\n iconPath: string;\n altText: string;\n labelValue: string[];\n url?: string;\n}\nexport interface KngFooterCopyRight {\n label: string;\n labelUrl: KngFooterCopyRightLabel[];\n}\nexport interface KngFooterCopyRightLabel {\n label: string;\n url: string;\n}\nexport interface KngFooterLogoUrl {\n label: string;\n url: string;\n}\nexport enum FooterLabel {\n phone = 'Phone',\n email = 'Email',\n support = 'Support',\n usa = '',\n country = 'Select a Country/Language',\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class KngFooterService \n{\n\tprivate isActionFooterPresent$: BehaviorSubject =\n\t\tnew BehaviorSubject(false);\n\n\tget isActionFooterPresent(): boolean \n\t{\n\t\treturn this.isActionFooterPresent$.value;\n\t}\n\n\tpublic updateActionFooterPresent(value: boolean): void \n\t{\n\t\tthis.isActionFooterPresent$.next(value);\n\t}\n}\n","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, Renderer2, ViewChild } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport {\n\tKngFooter,\n\tKngFooterCopyRightLabel,\n\tKngFooterData,\n\tKngFooterState,\n\tFooterLabel\n} from './definitions/footer.interface';\nimport { KngFooterFactory } from './kng-footer.factory';\nimport { KngFooterService } from './kng-footer.service';\nimport { get as lodashGet } from 'lodash';\n@Component({\n\tselector: 'kng-footer',\n\ttemplateUrl: './template/kng-footer.component.html',\n\tstyleUrls: ['./template/kng-footer.component.scss']\n})\nexport class KngFooterComponent implements KngFooter, OnInit\n{\n\tprivate state$: BehaviorSubject =\n\t\tnew BehaviorSubject(KngFooterFactory.buildState());\n @Input() set state(value: KngFooterState)\n\t{\n\t\tthis.state$.next(value);\n\t\tthis.footerdata = value;\n\t\tthis.footercontent = value.footercontent;\n\t}\n footerdata: KngFooterState = KngFooterFactory.buildState();\n footerLabel = FooterLabel;\n footercontent!: KngFooterData;\n @Output() ctaLinkClicked: EventEmitter =\n \tnew EventEmitter();\n @Output() languageSelectionChanged: EventEmitter = new EventEmitter();\n @ViewChild('dropdown', { read: ElementRef }) dropdown!: ElementRef;\n get state(): KngFooterState\n {\n \treturn this.state$.value;\n }\n\n get isActionFooterPresent(): boolean\n {\n \treturn this.footerService.isActionFooterPresent;\n }\n\n constructor(private footerService: KngFooterService, private renderer2: Renderer2) {}\n\n ngOnInit(): void\n {\n\t const ele: HTMLElement = this.renderer2.selectRootElement('html', true);\n\t let value = ele.getAttribute('lang');\n\t if(value)\n\t {\n\t\t setTimeout(() => \n\t\t {\n\t\t\t if(this.dropdown)\n\t\t\t {\n\t\t\t\t value = this.languageCheck(value);\n\t\t\t\t this.dropdown.nativeElement.value = value;\n\t\t\t }\n\t\t }, 1000);\n\t }\n }\n\n languageCheck(value: string | null): string\n {\n\t if(value && value === 'fr')\n\t {\n\t\t return 'French';\n\t }\n\t else\n\t {\n\t\t return 'United States- English';\n\t }\n }\n\n\n public ctaLinkClick(element: KngFooterCopyRightLabel): void\n {\n \tif (element.url)\n \t{\n \t\twindow.open(element.url, '_blank');\n \t}\n }\n public updateLanguageSelection(event: Event): void\n {\n \tthis.languageSelectionChanged.emit(lodashGet(event, 'target.value'));\n }\n public navigateTologo() \n {\n \twindow.open('https://www.toyotaforklift.com/', '_blank', 'noopener');\n }\n navigateto(url: string | undefined)\n {\n \tconst currentData = {\n \t\turlOfOrigin: window.location.href,\n \t\temail: ''\n \t};\n \tconst userProfile = localStorage.getItem('userDetails');\n \tif(userProfile)\n \t{\n \t\tconst user = JSON.parse(userProfile);\n \t\tcurrentData.email = user.email;\n \t}\n \tconst currentPath = btoa(JSON.stringify(currentData));\n \twindow.open(`${url}?metadata=${currentPath}`, '_blank', 'noopener');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { KngFooterComponent } from './kng-footer.component';\nimport { KngFooterService } from './kng-footer.service';\n\n@NgModule({\n\tdeclarations: [KngFooterComponent],\n\timports: [CommonModule],\n\texports: [KngFooterComponent],\n\tproviders: [KngFooterService]\n})\nexport class KngFooterModule {}\n","import { FormControl } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\nimport { Image } from '../../../shared/shared.interface';\n\nexport interface KngFilter {\n state: KngFilterState;\n}\n\nexport interface FilterJSON {\n heading: Heading;\n sections: Section[];\n ctaList: Cta[];\n}\n\nexport interface KngFilterState {\n filterData: FilterJSON;\n hidden: boolean;\n}\n\nexport interface KngFilterOutputState {\n id: string;\n state: string;\n}\n\ninterface Heading {\n label: string;\n}\n\nexport interface Section {\n label: string;\n collapsed: boolean;\n controls: Control[];\n selectionStateControls?: Control[];\n isShowMorePresent?: boolean;\n showMoreShowLess?: {\n\tisShowMoreClicked: boolean;\n\tisDisabled: boolean;\n\tshowMoreText: string;\n\tshowLessText: string;\n };\n noResultsFoundText?: string;\n noAssociatedResultsFoundText?: string;\n accordionExpandedIcon: Image;\n accordionCollapsedIcon: Image;\n selectedValue?: string[];\n searchIcon: Image;\n crossIcon: Image;\n hidden?: boolean;\n errorMessage?: string;\n isAPIError?: boolean;\n}\n\nexport interface Option {\n label: string;\n description?: string;\n id?: string;\n value: string;\n checked?: boolean;\n}\n\nexport interface Cta {\n id: string;\n label: string;\n className: string;\n disabled: boolean;\n}\n\nexport interface CtaClickEvent {\n event: Event;\n buttonClicked: Cta;\n state: KngFilterState;\n}\n\nexport enum ControlType {\n radio = 'radio',\n input = 'input',\n checkbox = 'checkbox',\n none = 'none',\n notDate = 'Not Date'\n}\n\nexport enum DateRange {\n lastDay = 'Last Day',\n lastSevenDays = 'Last 7 Days',\n lastThirtyDays = 'Last 30 Days',\n lastSixtyDays = 'Last 60 Days (default)',\n lastQuarter = 'Last Quarter',\n lastYear = 'Last Year',\n lastYearDefault = 'Last Year (default)',\n last2YearsDefault = 'Last 2 Years (default)',\n custom = 'Custom Date Range',\n lastSixtyDaysWithoutDefault = 'Last 60 Days',\n}\n\nexport enum DateRangeId {\n\tlastDay = '846d0c4b-3882-4ab2-a508-e2401d1ee040',\n\tlastSevenDays = 'f0fc4edf-e966-4f7b-9f8b-8d30bb51d115',\n\tlastThirtyDays = '07e102cf-a4d9-4697-9fa4-81756fc08b61',\n\tlastSixtyDaysDefault = '481d774c-ddd7-404d-8011-3c3f6145bb96',\n\tlastQuarter = '44d4a1aa-d18d-4584-809e-065d9cab66c0',\n\tlastYear = 'db878879-283b-4066-9461-51e6c38d703c',\n\tcustom = '9efa7309-517a-4513-b9a2-01123e91c271',\n\tlastYearDefault = 'd2f53022-98ca-4944-91e7-8c4f11eae1c4',\n lastSixtyDaysWithoutDefault = '8488fbea-e030-4049-b2ed-20fe167634e5'\n}\n\nexport interface ControlOptions {\n id: string;\n label: string;\n type: ControlType;\n value: unknown;\n inputPlaceholderText: string;\n inputIcon: string;\n isLocation?:boolean;\n address?:Address;\n options: Option[];\n quoteKeys?: string[];\n isHidden?: boolean;\n}\nexport class Control extends FormControl \n{\n\tprivate controlOptions$: BehaviorSubject =\n\t\tnew BehaviorSubject({\n\t\t\tid: '',\n\t\t\tlabel: '',\n\t\t\ttype: ControlType.none,\n\t\t\tinputPlaceholderText: '',\n\t\t\tinputIcon: '',\n\t\t\toptions: [],\n\t\t\tvalue: '',\n\t\t\tisLocation: false,\n\t\t\tisHidden: false\n\t\t});\n\tget id(): string \n\t{\n\t\treturn this.controlOptions$.value.id;\n\t}\n\tget label(): string \n\t{\n\t\treturn this.controlOptions$.value.label;\n\t}\n\tget type(): ControlType \n\t{\n\t\treturn this.controlOptions$.value.type;\n\t}\n\tget inputPlaceholderText(): string \n\t{\n\t\treturn this.controlOptions$.value.inputPlaceholderText;\n\t}\n\tget inputIcon(): string \n\t{\n\t\treturn this.controlOptions$.value.inputIcon;\n\t}\n\tget options(): Option[] \n\t{\n\t\treturn this.controlOptions$.value.options;\n\t}\n\tget isLocation(): boolean|undefined \n\t{\n\t\treturn this.controlOptions$.value.isLocation;\n\t}\n\tget address(): Address|undefined \n\t{\n\t\treturn this.controlOptions$.value.address;\n\t}\n\tget quoteKeys(): string[]|undefined \n\t{\n\t\treturn this.controlOptions$.value.quoteKeys;\n\t}\n\tget isHidden(): boolean|undefined \n\t{\n\t\treturn this.controlOptions$.value.isHidden;\n\t}\n\tset type(value: ControlType) \n\t{\n\t\tthis.controlOptions$.value.type = value;\n\t}\n\tset options(value: Option[]) \n\t{\n\t\tthis.controlOptions$.value.options = value;\n\t}\n\tset inputPlaceholderText(value: string) \n\t{\n\t\tthis.controlOptions$.value.inputPlaceholderText = value;\n\t}\n\tset inputIcon(value: string) \n\t{\n\t\tthis.controlOptions$.value.inputIcon = value;\n\t}\n\tset isHidden(value: boolean | undefined) \n\t{\n\t\tthis.controlOptions$.value.isHidden = value;\n\t}\n\tconstructor(options: ControlOptions) \n\t{\n\t\tsuper();\n\t\tthis.setValue(options.value);\n\t\tthis.controlOptions$.next(options);\n\t}\n}\nexport interface Address{\n addressLine1: string;\n addressLine2?: string;\n city: string;\n state: string;\n country?:string;\n zipCode: string;\n zip?: string;\n}\n","\nimport { Control, ControlType, KngFilterState } from './definitions/kng-filter-panel.interface';\nexport class KngFilterPanelFactory \n{\n\tpublic static buildState(): KngFilterState \n\t{\n\t\treturn {\n\t\t\tfilterData: {\n\t\t\t\theading: {\n\t\t\t\t\tlabel: 'Filters'\n\t\t\t\t},\n\t\t\t\tsections: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Date Range',\n\t\t\t\t\t\tcollapsed: true,\n\t\t\t\t\t\tcontrols: [\n\t\t\t\t\t\t\tnew Control({\n\t\t\t\t\t\t\t\tid: 'acf50332-d71e-4c8f-9c61-4d2349b042e9',\n\t\t\t\t\t\t\t\tlabel: 'uii',\n\t\t\t\t\t\t\t\ttype: ControlType.radio,\n\t\t\t\t\t\t\t\tvalue: '2022-06-14T00:00:00.000Z 2022-06-14T23:59:59.999Z',\n\t\t\t\t\t\t\t\tinputPlaceholderText: '',\n\t\t\t\t\t\t\t\tinputIcon: '',\n\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tlabel: 'Last Day',\n\t\t\t\t\t\t\t\t\t\tvalue: '2022-06-14T00:00:00.000Z 2022-06-14T23:59:59.999Z',\n\t\t\t\t\t\t\t\t\t\tchecked: true\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tlabel: 'Last 7 Days',\n\t\t\t\t\t\t\t\t\t\tvalue: '2022-06-07T00:00:00.000Z 2022-06-14T23:59:59.999Z',\n\t\t\t\t\t\t\t\t\t\tchecked: false\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t],\n\t\t\t\t\t\taccordionCollapsedIcon: { iconPath: '', altText: '' },\n\t\t\t\t\t\taccordionExpandedIcon: { iconPath: '', altText: '' },\n\t\t\t\t\t\tsearchIcon: { iconPath: '', altText: '' },\n\t\t\t\t\t\tcrossIcon: { iconPath: '', altText: '' }\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Location',\n\t\t\t\t\t\tcollapsed: false,\n\t\t\t\t\t\tcontrols: [\n\t\t\t\t\t\t\tnew Control({\n\t\t\t\t\t\t\t\tid: 'a2690769-0405-481d-a630-0ea92f1f73e1',\n\t\t\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\t\t\ttype: ControlType.input,\n\t\t\t\t\t\t\t\tvalue: '',\n\t\t\t\t\t\t\t\tinputPlaceholderText: 'Search by Location',\n\t\t\t\t\t\t\t\tinputIcon:\n 'https://cdn-icons-png.flaticon.com/512/751/751463.png',\n\t\t\t\t\t\t\t\toptions: []\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tnew Control({\n\t\t\t\t\t\t\t\tid: 'a333504b-301a-404d-a75c-3b77bb74b975',\n\t\t\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\t\t\ttype: ControlType.checkbox,\n\t\t\t\t\t\t\t\tvalue: 'dcf246e3-f059-43c3-a91b-d9739ee695b4',\n\t\t\t\t\t\t\t\tinputPlaceholderText: '',\n\t\t\t\t\t\t\t\tinputIcon: '',\n\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tlabel: 'Location A',\n\t\t\t\t\t\t\t\t\t\tdescription:\n 'Address Line1, Address Line 2, City, State, Postal Code',\n\t\t\t\t\t\t\t\t\t\tvalue: 'dcf246e3-f059-43c3-a91b-d9739ee695b4'\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tlabel: 'Location B',\n\t\t\t\t\t\t\t\t\t\tdescription:\n 'Address Line1, Address Line 2, City, State, Postal Code',\n\t\t\t\t\t\t\t\t\t\tvalue: '98a488d5-dd0f-4bc4-87b8-d4f3ef82beac'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t],\n\t\t\t\t\t\taccordionCollapsedIcon: { iconPath: '', altText: '' },\n\t\t\t\t\t\taccordionExpandedIcon: { iconPath: '', altText: '' },\n\t\t\t\t\t\tsearchIcon: { iconPath: '', altText: '' },\n\t\t\t\t\t\tcrossIcon: { iconPath: '', altText: '' }\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\tctaList: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: '327147f4-c044-4799-8a5a-d075c619e41c',\n\t\t\t\t\t\tlabel: 'Cancel',\n\t\t\t\t\t\tclassName: 'light',\n\t\t\t\t\t\tdisabled: false\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: '7eeaa3f0-b4f6-4142-8086-361298d75686',\n\t\t\t\t\t\tlabel: 'Apply',\n\t\t\t\t\t\tclassName: 'dark',\n\t\t\t\t\t\tdisabled: false\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\thidden: true\n\t\t};\n\t}\n}\n","import { Component, Input, Output, EventEmitter, DoCheck } from '@angular/core';\nimport { MatDatepickerInputEvent } from '@angular/material/datepicker';\n\nimport { BehaviorSubject } from 'rxjs';\nimport { KngFilterPanelFactory } from './kng-filter-panel.factory';\nimport { Control, ControlType, Cta, CtaClickEvent, DateRange, KngFilter, KngFilterState, Section } from './definitions/kng-filter-panel.interface';\nimport { Address } from '../../shared/shared.interface';\nimport { MatCheckbox } from '@angular/material/checkbox';\n\n@Component({\n\tselector: 'kng-filter-panel',\n\ttemplateUrl: './template/kng-filter-panel.component.html',\n\tstyleUrls: ['./template/kng-filter-panel.component.scss']\n})\nexport class KngFilterPanelComponent implements KngFilter, DoCheck \n{\n\tprivate state$: BehaviorSubject =\n\t\tnew BehaviorSubject(KngFilterPanelFactory.buildState());\n\tshowToFromInput: boolean = false;\n\tcurrentDate: Date = new Date();\n\tfromDate!: Date;\n\ttoDate!: Date;\n\ttoDateError: boolean = false;\n\tfromDateError: boolean = false;\n\tselectedOptions: string = '';\n\tisFilterLoad: boolean = false;\n\n@Input() set state(value: KngFilterState) \n\t{\n\t\tthis.state$.next(value);\n\t}\n\nget state(): KngFilterState \n{\n\treturn this.state$.value;\n}\n\n@Output() filterApplied: EventEmitter =\n\tnew EventEmitter();\n@Output() stateChanged: EventEmitter = new EventEmitter();\n@Output() getCountOfFilterPanel: EventEmitter
=\n\tnew EventEmitter
();\n@Output() checkboxClickEvent: EventEmitter
=\n\tnew EventEmitter
();\n\t\n@Output() closeFilterEvent: EventEmitter = new EventEmitter();\n\nconstructor() \n{\n\tthis.setDefaultToFromDate();\n}\n\nsetDefaultToFromDate(): void\n{\n\tthis.toDate = this.currentDate;\n\tthis.fromDate = new Date(\n\t\tnew Date().setDate(this.currentDate.getDate() - 60)\n\t);\n\tthis.toDateError = false;\n\tthis.fromDateError = false;\n}\n\nngDoCheck(): void \n{\n\tthis.stateChanged.emit();\n}\n\nbuttonClicked(event: CtaClickEvent) \n{\n\tconst btnIndex = event.state.filterData.ctaList.findIndex(\n\t\t(cta: Cta) => cta.label === event.buttonClicked.label\n\t);\n\tif (btnIndex === 0) \n\t{\n\t\tthis.showToFromInput = false;\n\t}\n\telse \n\t{\n\t\tthis.setToFromDate();\n\t}\n\tthis.filterApplied.emit(event);\n}\n\ncheckboxClicked(section: Section) \n{\n\tthis.getCountOfFilterPanel.emit(section);\n\tthis.checkboxClickEvent.emit(section);\n}\n\n\nsetToFromDate() \n{\n\tconst section = this.state.filterData.sections;\n\tsection.forEach((sec) =>\n\t{\n\t\tif(sec.controls[0]?.type === ControlType.radio)\n\t\t{\n\t\t\tconst options = sec.controls[0].options;\n\t\t\tconst index = options.findIndex((opt) => opt.label === DateRange.custom);\n\t\t\tif (index >= 0) \n\t\t\t{\n\t\t\t\toptions[index].value =\n this.fromDate.toString() + '@' + this.toDate.toString();\n\t\t\t}\n\t\t}\n\t});\n \n}\n\npublic updateState(value: KngFilterState) \n{\n\tthis.state$.next(value);\n}\n\npublic initializeFilterCount() \n{\n\tthis.isFilterLoad = true;\n}\n\ncloseFilter() \n{\n\tthis.state.hidden = true;\n\tthis.closeFilterEvent.emit();\n}\n\nclearSearch(control: Control) \n{\n\tcontrol.setValue('');\n}\n\ncheckSelectedValue(indexctrl: number, indexsec: number) \n{\n\tthis.selectedOptions = '';\n\tconst selectedFilterData =\n this.state.filterData.sections[indexsec].controls[0].options;\n\tselectedFilterData.forEach((opt) => (opt.checked = false));\n\tif (indexctrl >= 0) \n\t{\n\t\tselectedFilterData[indexctrl].checked = true;\n\t\tthis.state.filterData.sections[indexsec].selectedValue = [(selectedFilterData[indexctrl].label)];\n\t\tconst optionLabel = selectedFilterData[indexctrl].label;\n\t\tif (optionLabel === DateRange.custom) \n\t\t{\n\t\t\tthis.selectedOptions = DateRange.custom;\n\t\t\tthis.showToFromInput = true;\n\t\t\tif (this.fromDateError || this.toDateError) \n\t\t\t{\n\t\t\t\tthis.state.filterData.ctaList[1].disabled = true;\n\t\t\t}\n\t\t\telse \n\t\t\t{\n\t\t\t\tthis.state.filterData.ctaList[1].disabled = false;\n\t\t\t}\n\t\t}\n\t\telse \n\t\t{\n\t\t\tthis.showToFromInput = false;\n\t\t\tthis.state.filterData.ctaList[1].disabled = false;\n\t\t\tthis.state.filterData.ctaList[0].disabled = false;\n\t\t}\n\t\tthis.updateState(this.state);\n\t}\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\t\nonKeyUp(event: any) \n{\n\tthis.setDefaultToFromDate();\n\tif(event.target.id === 'fromDateInput' ) \n\t{\n\t\t(document.getElementById('fromDateInput')).readOnly = true;\n\t}\n\telse if(event.target.id === 'toDateInput') \n\t{\n\t\tthis.toDate = new Date();\n\t\t(document.getElementById('toDateInput')).readOnly = true;\n\t}\n}\n\ncheckDateValidator(event: MatDatepickerInputEvent) \n{\n\tlet toDateUnix = this.toDate.getTime();\n\tlet fromDateUnix = this.fromDate.getTime();\n\tif (event.targetElement.id === 'fromDateInput' && event.value) \n\t{\n\t\tthis.fromDate = event.value;\n\t\tfromDateUnix = this.fromDate.getTime();\n\t}\n\telse if (event.targetElement.id === 'toDateInput' && event.value) \n\t{\n\t\tthis.toDate = event.value;\n\t\ttoDateUnix = this.toDate.getTime();\n\t}\n\tthis.showError(event.targetElement.id, fromDateUnix, toDateUnix);\n}\n\nshowError(id: string, fromDateUnix: number, toDateUnix: number) \n{\n\tif (toDateUnix < fromDateUnix) \n\t{\n\t\tif (id === 'toDateInput') \n\t\t{\n\t\t\tthis.toDateError = true;\n\t\t\tthis.fromDateError = false;\n\t\t\tthis.state.filterData.ctaList[1].disabled = true;\n\t\t}\n\t\telse if (id === 'fromDateInput') \n\t\t{\n\t\t\tthis.fromDateError = true;\n\t\t\tthis.toDateError = false;\n\t\t\tthis.state.filterData.ctaList[1].disabled = true;\n\t\t}\n\t}\n\telse \n\t{\n\t\tthis.toDateError = false;\n\t\tthis.fromDateError = false;\n\t\tthis.state.filterData.ctaList[1].disabled = false;\n\t}\n}\n\nformatAddress(address: Address) \n{\n\treturn [ address.addressLine1, address.addressLine2, address.city, address.state, address.zipCode ].filter(Boolean).join(', ');\n}\n\ndisplayRecordsHandler(section: Section, index:number)\n{\n\tif(section.isShowMorePresent)\n\t{\n\t\tif(section.showMoreShowLess?.isShowMoreClicked)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t\telse if(!section.showMoreShowLess?.isShowMoreClicked && index > 4)\n\t\t{\n\t\t\treturn this.handleViewOnLoad(section, index);\n\t\t}\n\t\treturn true;\n\t}\n\treturn true;\n}\nisSearchFieldPresent(section: Section, index:number)\n{\n\treturn section.controls[0].type === ControlType.input && index < 6;\n}\nhandleViewOnLoad(section: Section, index:number)\n{\n\tif(this.isSearchFieldPresent(section, index))\n\t{\n\t\treturn true;\n\t}\n\treturn false;\n}\nhandleDynamicDisplayOfShowMoreShowLess(btnClicked: string, section: Section)\n{\n\tif(btnClicked === section.showMoreShowLess?.showMoreText)\n\t{\n\t\tsection.showMoreShowLess.isShowMoreClicked = true;\n\t}\n\telse if( btnClicked === section.showMoreShowLess?.showLessText)\n\t{\n\t\tsection.showMoreShowLess.isShowMoreClicked = false;\n\t}\n}\nisShowMorePresent(section: Section)\n{\n \treturn ((section.controls.length > 6 && section.controls[0].type === ControlType.input) || (section.controls.length > 5 && section.controls[0].type !== ControlType.input)) && section.isShowMorePresent;\n}\nnoResultsFound(sectioncontrol: Section)\n{\n\treturn sectioncontrol.controls.length > 0 && sectioncontrol.controls[0].type === ControlType.input && (typeof sectioncontrol.controls[0].value === 'string' && sectioncontrol.controls[0].value.trimLeft().length > 2) && sectioncontrol.controls.length === 1 && !this.isError(sectioncontrol);\n}\nisErrorMessage(sectioncontrol: Section)\n{\n\treturn sectioncontrol.controls.length > 0 && sectioncontrol.controls[0].type === ControlType.input && (typeof sectioncontrol.controls[0].value === 'string' && sectioncontrol.controls[0].value.trimLeft().length > 2) && sectioncontrol.controls.length === 1 && this.isError(sectioncontrol);\n}\nisError(sectioncontrol: Section)\n{\n\treturn sectioncontrol.noResultsFoundText && sectioncontrol.errorMessage && sectioncontrol.isAPIError;\n}\nisShowMoreDisabled(section: Section)\n{\n\treturn section.controls.every(control=>control.type === ControlType.checkbox && control.value === false && control.disabled);\n}\nisSectionWithSearchInput(expanded: boolean, section: Section)\n{\n\treturn (section.controls.some(control=>control.type === ControlType.input && control.isHidden !== true) && expanded)? 'sectionWithSearchControl' : '';\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nupdateCheckedStateForAccessibility($event: any, checkbox: MatCheckbox) \n{\n\tif($event) \n\t{ \n\t\tcheckbox.checked = true;\n\t}\n}\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { KngFilterPanelFactory } from './kng-filter-panel.factory';\nimport { KngFilterState } from './definitions/kng-filter-panel.interface';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class KngFilterPanelService \n{\n\tprivate state$: BehaviorSubject = new BehaviorSubject(\n\t\tKngFilterPanelFactory.buildState()\n\t);\n\tget state(): KngFilterState \n\t{\n\t\treturn this.state$.value;\n\t}\n\tget stateChanged(): Observable \n\t{\n\t\treturn this.state$.asObservable();\n\t}\n\n\tpublic updateState(value: KngFilterState): void \n\t{\n\t\tthis.state$.next(value);\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { KngFilterPanelComponent } from './kng-filter-panel.component';\nimport { KngFilterPanelService } from './kng-filter-panel.service';\n\n@NgModule({\n\tdeclarations: [\n\t\tKngFilterPanelComponent\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tMatExpansionModule,\n\t\tMatFormFieldModule,\n\t\tMatIconModule,\n\t\tMatInputModule,\n\t\tMatSidenavModule,\n\t\tMatRadioModule,\n\t\tMatCheckboxModule,\n\t\tReactiveFormsModule,\n\t\tMatDatepickerModule,\n\t\tMatNativeDateModule,\n\t\tFormsModule\n\t],\n\texports: [\n\t\tKngFilterPanelComponent\n\t],\n\tproviders: [\n\t\tKngFilterPanelService\n\t]\n})\nexport class KngFilterPanelModule {}\n","import { KngBannerFactory } from '../banner';\nimport { KngContentFactory } from '../content/kng-content.factory';\nimport { KngFooterFactory } from '../footer/kng-footer.factory';\nimport { KngHeaderNavFactory } from '../nav/header-nav/kng-header-nav.factory';\nimport { KngCustomerState, KngShellState } from './definitions';\n\nexport class KngShellFactory \n{\n\tpublic static buildState(): KngShellState \n\t{\n\t\treturn {\n\t\t\theader: KngHeaderNavFactory.buildState(),\n\t\t\tbanner: KngBannerFactory.buildState(),\n\t\t\tcontent: KngContentFactory.buildState(),\n\t\t\tfooter: KngFooterFactory.buildState()\n\t\t};\n\t}\n\tpublic static buildCustomerState(): KngCustomerState \n\t{\n\t\treturn {\n\t\t\thidden: false,\n\t\t\twarningNote: '',\n\t\t\treadOnly: '',\n\t\t\tendSession: '',\n\t\t\tusername: ''\n\t\t};\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { KngShellState } from './definitions';\nimport { KngShellFactory } from './kng-shell.factory';\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class KngShellService\n{\n\tprivate state$: BehaviorSubject =\n\t\tnew BehaviorSubject(KngShellFactory.buildState());\n\tget state(): KngShellState\n\t{\n\t\treturn this.state$.value;\n\t}\n\tpublic updateState(state: KngShellState): void\n\t{\n\t\tthis.state$.next(state);\n\t}\n}\n","import {\n\tComponent,\n\tEventEmitter,\n\tInput,\n\tOutput,\n\tViewChild\n} from '@angular/core';\nimport { KngContentComponent } from '../content';\nimport { KngFooterComponent } from '../footer';\nimport { KngHeaderNavComponent, KngHeaderNavOptionSelectOn } from '../nav';\nimport { KngCustomerState, KngShell, KngShellState } from './definitions/kng-shell.interface';\nimport { KngBannerComponent } from '../banner';\nimport { KngShellService } from './kng-shell.service';\nimport { Location } from '../../components/nav/header-nav/definitions/kng-header-nav.interface';\nimport { KngShellFactory } from './kng-shell.factory';\n@Component({\n\tselector: 'kng-shell',\n\ttemplateUrl: './template/kng-shell.component.html',\n\tstyleUrls: ['./template/kng-shell.component.scss']\n})\nexport class KngShellComponent implements KngShell\n{\n @Input() set state(value: KngShellState)\n\t{\n\t\tthis.service.updateState(value);\n\t}\n @Input() customerState: KngCustomerState = KngShellFactory.buildCustomerState();\n @Output() labelRedirection: EventEmitter =\n \tnew EventEmitter();\n @Output() bannerClickEvent: EventEmitter =\n \tnew EventEmitter();\n @Output() languageSelectionChanged: EventEmitter = new EventEmitter();\n @Output() customerSessionEvent: EventEmitter = new EventEmitter();\n \n @Output() locationSelected: EventEmitter = new EventEmitter();\n get state(): KngShellState\n {\n \treturn this.service.state;\n }\n @ViewChild('header', { static: true })\n \theaderComponent!: KngHeaderNavComponent;\n @ViewChild('banner', { static: true }) bannerComponent!: KngBannerComponent;\n @ViewChild('content', { static: true })\n \tcontentComponent!: KngContentComponent;\n @ViewChild('footer', { static: true }) footerComponent!: KngFooterComponent;\n constructor(private service: KngShellService){}\n public emitPath(event: KngHeaderNavOptionSelectOn): void\n {\n \tthis.labelRedirection.emit({\n \t\tevent: event.event,\n \t\tselection: event.selection\n \t});\n }\n public emitLocation(location: Location): void\n {\n \tthis.locationSelected.emit(location);\n }\n public notifyAboutLanguageSelection(selection: string)\n {\n \tthis.languageSelectionChanged.emit(selection);\n }\n bannerClickHandler(event: MouseEvent | TouchEvent)\n {\n \tthis.bannerClickEvent.emit(event);\n }\n endCustomerSession()\n {\n \tthis.customerSessionEvent.emit('end'); \n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { KngShellComponent } from './kng-shell.component';\nimport { KngContentModule } from '../content';\nimport { KngFooterModule } from '../footer';\nimport { KngHeaderNavModule } from '../nav';\nimport { KngBreadcrumbService } from '../breadcrumb';\nimport { KngBannerModule } from '../banner';\n\n@NgModule({\n\tdeclarations: [KngShellComponent],\n\timports: [\n\t\tCommonModule,\n\t\tKngContentModule,\n\t\tKngFooterModule,\n\t\tKngHeaderNavModule,\n\t\tKngBannerModule\n\t],\n\texports: [KngShellComponent],\n\tproviders: [KngBreadcrumbService]\n})\nexport class KngShellModule {}\n","import { KngChartsState } from './definitions';\nexport class KngChartsFactory \n{\n\tpublic static buildState(): KngChartsState \n\t{\n\t\treturn {\n\t\t\tchart: {\n\t\t\t\tid: '',\n\t\t\t\twidgetType: '',\n\t\t\t\tcta: { label: '' },\n\t\t\t\ttitle: '',\n\t\t\t\tsummaryUnits: [],\n\t\t\t\tchart: {\n\t\t\t\t\ttype: 'pie',\n\t\t\t\t\tdata: { labels: [], datasets: [] },\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tresponsive: true,\n\t\t\t\t\t\tmaintainAspectRatio: false,\n\t\t\t\t\t\tplugins: {\n\t\t\t\t\t\t\ttooltip: {\n\t\t\t\t\t\t\t\tbackgroundColor: '#FFFFFF',\n\t\t\t\t\t\t\t\tborderColor: '#C4C4C4',\n\t\t\t\t\t\t\t\ttitleColor: '#000000',\n\t\t\t\t\t\t\t\tbodyColor: '#000000',\n\t\t\t\t\t\t\t\tcornerRadius: 0,\n\t\t\t\t\t\t\t\tpadding: 10,\n\t\t\t\t\t\t\t\tborderWidth: 1,\n\t\t\t\t\t\t\t\tdisplayColors: false\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tlegend: { display: true }\n\t\t\t\t\t\t},\n\t\t\t\t\t\telements: { line: { tension: 1 } },\n\t\t\t\t\t\tscales: {\n\t\t\t\t\t\t\tx: {\n\t\t\t\t\t\t\t\toffset: false,\n\t\t\t\t\t\t\t\tsuggestedMin: 0,\n\t\t\t\t\t\t\t\tsuggestedMax: 500,\n\t\t\t\t\t\t\t\tgrid: {\n\t\t\t\t\t\t\t\t\tcolor: '#F7F7F8',\n\t\t\t\t\t\t\t\t\tdisplay: true,\n\t\t\t\t\t\t\t\t\tdrawBorder: true\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tticks: {\n\t\t\t\t\t\t\t\t\tstepSize: 100,\n\t\t\t\t\t\t\t\t\tdisplay: true\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ty: {\n\t\t\t\t\t\t\t\toffset: false,\n\t\t\t\t\t\t\t\tsuggestedMin: 0,\n\t\t\t\t\t\t\t\tsuggestedMax: 500,\n\t\t\t\t\t\t\t\tgrid: {\n\t\t\t\t\t\t\t\t\tcolor: '#F7F7F8',\n\t\t\t\t\t\t\t\t\tdisplay: true,\n\t\t\t\t\t\t\t\t\tdrawBorder: true\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tticks: {\n\t\t\t\t\t\t\t\t\tstepSize: 100,\n\t\t\t\t\t\t\t\t\tdisplay: true\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static buildBarState(): KngChartsState \n\t{\n\t\treturn {\n\t\t\tchart: {\n\t\t\t\tid: '83e94091-9894-4a74-b995-6e76cbdd3ba4',\n\t\t\t\twidgetType: 'chart-card',\n\t\t\t\tcta: {\n\t\t\t\t\tlabel: 'View More'\n\t\t\t\t},\n\t\t\t\tsummaryUnits: [],\n\t\t\t\ttitle: 'Number of Units',\n\t\t\t\tchart: {\n\t\t\t\t\ttype: 'bar',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tdatasets: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbackgroundColor: '#1887F2',\n\t\t\t\t\t\t\t\tbarThickness: 8,\n\t\t\t\t\t\t\t\tborderColor: '#1887F2',\n\t\t\t\t\t\t\t\tdata: [ 510, 530, 1134, 1400 ],\n\t\t\t\t\t\t\t\thoverBackgroundColor: '#1887F2',\n\t\t\t\t\t\t\t\tlabel: 'Units per Location',\n\t\t\t\t\t\t\t\tpointBackgroundColor: '#1887F2',\n\t\t\t\t\t\t\t\tpointHoverBorderColor: '#1887F2'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\tlabels: [ 'Location A', 'Location B', 'Location C', 'Location D' ]\n\t\t\t\t\t},\n\t\t\t\t\toptions: {\n\t\t\t\t\t\telements: { line: { tension: 1 } },\n\t\t\t\t\t\tmaintainAspectRatio: false,\n\t\t\t\t\t\tplugins: this.getPlugin(),\n\t\t\t\t\t\tresponsive: true,\n\t\t\t\t\t\tscales: {\n\t\t\t\t\t\t\tx: {\n\t\t\t\t\t\t\t\tgrid: {\n\t\t\t\t\t\t\t\t\tcolor: '#F7F7F8',\n\t\t\t\t\t\t\t\t\tdisplay: false,\n\t\t\t\t\t\t\t\t\tdrawBorder: false\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\toffset: true\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ty: {\n\t\t\t\t\t\t\t\tgrid: {\n\t\t\t\t\t\t\t\t\tcolor: '#F7F7F8',\n\t\t\t\t\t\t\t\t\tdrawBorder: false\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tsuggestedMax: 2000,\n\t\t\t\t\t\t\t\tsuggestedMin: 0,\n\t\t\t\t\t\t\t\tticks: { stepSize: 500 }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static buildBarSummaryState(): KngChartsState \n\t{\n\t\treturn {\n\t\t\tchart: {\n\n\t\t\t\tid: '83e94091-9894-4a74-b995-6e76cbdd3ba4',\n\t\t\t\twidgetType: 'chart-card',\n\t\t\t\tcta: { label: 'View More' },\n\t\t\t\ttitle: 'Average Age of Equipment',\n\t\t\t\tsummaryUnits: [\n\t\t\t\t\t{ label: '3', description: 'years (Average age)' }\n\t\t\t\t],\n\t\t\t\tchart: {\n\t\t\t\t\ttype: 'bar',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tdatasets: [{\n\t\t\t\t\t\t\tbackgroundColor: '#1887F2',\n\t\t\t\t\t\t\tbarThickness: 8,\n\t\t\t\t\t\t\tborderColor: '#1887F2',\n\t\t\t\t\t\t\tdata: [ 470, 1200, 700, 1400 ],\n\t\t\t\t\t\t\tlabel: 'Units',\n\t\t\t\t\t\t\thoverBackgroundColor: '#1887F2',\n\t\t\t\t\t\t\tpointBackgroundColor: '#1887F2',\n\t\t\t\t\t\t\tpointHoverBorderColor: '#1887F2'\n\t\t\t\t\t\t}],\n\t\t\t\t\t\tlabels: [ '<2 years', '3-5 years', '6-10 years', '>10 years' ]\n\t\t\t\t\t},\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tmaintainAspectRatio: false,\n\t\t\t\t\t\tplugins: this.getPlugin(),\n\t\t\t\t\t\tresponsive: true,\n\t\t\t\t\t\tscales: {\n\t\t\t\t\t\t\tx: {\n\t\t\t\t\t\t\t\tgrid: {\n\t\t\t\t\t\t\t\t\tcolor: '#F7F7F8',\n\t\t\t\t\t\t\t\t\tdisplay: false,\n\t\t\t\t\t\t\t\t\tdrawBorder: false\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\toffset: true\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ty: {\n\t\t\t\t\t\t\t\tgrid: {\n\t\t\t\t\t\t\t\t\tcolor: '#F7F7F8',\n\t\t\t\t\t\t\t\t\tdrawBorder: false\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tsuggestedMax: 2000,\n\t\t\t\t\t\t\t\tsuggestedMin: 0,\n\t\t\t\t\t\t\t\tticks: { stepSize: 500 }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static buildPieState(): KngChartsState \n\t{\n\t\treturn {\n\t\t\tchart: {\n\n\t\t\t\tid: '83e94091-9894-4a74-b995-6e76cbdd3ba4',\n\t\t\t\twidgetType: 'chart-card',\n\t\t\t\tcta: { label: 'View More' },\n\t\t\t\tsummaryUnits: [\n\t\t\t\t\t{ label: '0', description: '' }\n\t\t\t\t],\n\t\t\t\ttitle: 'Leased Equipment',\n\t\t\t\tchart: {\n\t\t\t\t\ttype: 'pie',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tdatasets: [{\n\t\t\t\t\t\t\tbackgroundColor: [ '#CEE7FF', '#FFAB7A' ],\n\t\t\t\t\t\t\tborderColor: [ '#CEE7FF', '#FFAB7A' ],\n\t\t\t\t\t\t\thoverBackgroundColor: [ '#CEE7FF', '#FFAB7A' ],\n\t\t\t\t\t\t\thoverBorderColor: [ '#FFFFFF', '#FFFFFF' ],\n\t\t\t\t\t\t\tdata: [ 1567, 700 ],\n\t\t\t\t\t\t\tlabel: 'Units'\n\t\t\t\t\t\t}],\n\t\t\t\t\t\tlabels: [ 'TICF Leased', 'Other' ]\n\t\t\t\t\t},\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tmaintainAspectRatio: false,\n\t\t\t\t\t\tplugins: {\n\t\t\t\t\t\t\tlegend: {\n\t\t\t\t\t\t\t\tposition: 'right',\n\t\t\t\t\t\t\t\talign: 'center',\n\t\t\t\t\t\t\t\tmaxWidth: 200,\n\t\t\t\t\t\t\t\tlabels: {\n\t\t\t\t\t\t\t\t\tboxHeight: 8,\n\t\t\t\t\t\t\t\t\tboxWidth: 38,\n\t\t\t\t\t\t\t\t\tfont: { size: 12 }\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttooltip: this.getTooltip()\n\t\t\t\t\t\t},\n\t\t\t\t\t\tresponsive: true,\n\t\t\t\t\t\tscales: this.getScales()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static buildPieSummaryState(): KngChartsState \n\t{\n\t\treturn {\n\t\t\tchart: {\n\n\t\t\t\tid: '83e94091-9894-4a74-b995-6e76cbdd3ba4',\n\t\t\t\twidgetType: 'chart-card',\n\t\t\t\tcta: { label: 'View More' },\n\t\t\t\ttitle: 'New Equipment Orders',\n\t\t\t\tsummaryUnits: [\n\t\t\t\t\t{ label: '3', description: 'open orders' }\n\t\t\t\t],\n\t\t\t\tchart: {\n\t\t\t\t\ttype: 'pie',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tdatasets: [{\n\t\t\t\t\t\t\tdata: [ 1134, 554 ],\n\t\t\t\t\t\t\tlabel: 'Units',\n\t\t\t\t\t\t\tbackgroundColor: [ '#CEE7FF', '#FFAB7A' ],\n\t\t\t\t\t\t\tborderColor: [ '#CEE7FF', '#FFAB7A' ],\n\t\t\t\t\t\t\thoverBackgroundColor: [ '#CEE7FF', '#FFAB7A' ],\n\t\t\t\t\t\t\thoverBorderColor: [ '#FFFFFF', '#FFFFFF' ]\n\t\t\t\t\t\t}],\n\t\t\t\t\t\tlabels: []\n\t\t\t\t\t},\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tmaintainAspectRatio: false,\n\t\t\t\t\t\tplugins: {\n\t\t\t\t\t\t\tlegend: {\n\t\t\t\t\t\t\t\tposition: 'right',\n\t\t\t\t\t\t\t\talign: 'center',\n\t\t\t\t\t\t\t\tmaxWidth: 200,\n\t\t\t\t\t\t\t\tlabels: {\n\t\t\t\t\t\t\t\t\tboxHeight: 8,\n\t\t\t\t\t\t\t\t\tboxWidth: 38,\n\t\t\t\t\t\t\t\t\tfont: { size: 12 }\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttooltip: this.getTooltip()\n\t\t\t\t\t\t},\n\t\t\t\t\t\tresponsive: true,\n\t\t\t\t\t\tscales: this.getScales()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\tpublic static getPlugin() \n\t{\n\t\treturn {\n\t\t\tlegend: { display: false },\n\t\t\ttooltip: this.getTooltip()\n\t\t};\n\t}\n\tpublic static getTooltip()\n\t{\n\t\treturn {\n\t\t\tbackgroundColor: '#FFFFFF',\n\t\t\tborderColor: '#F26A21',\n\t\t\ttitleColor: '#616365',\n\t\t\tbodyColor: '#616365',\n\t\t\tcornerRadius: 0,\n\t\t\tpadding: 10,\n\t\t\tborderWidth: 1,\n\t\t\tcaretSize: 0,\n\t\t\tdisplayColors: false\n\t\t};\n\t}\n\tpublic static getScales() \n\t{\n\t\treturn {\n\t\t\tx: {\n\t\t\t\tgrid: {\n\t\t\t\t\tcolor: '#F7F7F8',\n\t\t\t\t\tdisplay: false,\n\t\t\t\t\tdrawBorder: false\n\t\t\t\t},\n\t\t\t\toffset: true,\n\t\t\t\tticks: { display: false }\n\t\t\t},\n\t\t\ty: {\n\t\t\t\tgrid: {\n\t\t\t\t\tcolor: '#F7F7F8',\n\t\t\t\t\tdrawBorder: false\n\t\t\t\t},\n\t\t\t\tsuggestedMax: 2000,\n\t\t\t\tsuggestedMin: 0,\n\t\t\t\tticks: {\n\t\t\t\t\tdisplay: false,\n\t\t\t\t\tstepSize: 500\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n}\n\n","import {\n\tComponent,\n\tInput,\n\tOnDestroy,\n\tOutput,\n\tEventEmitter,\n\tViewChild\n} from '@angular/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { ChartsEvent, KngCharts, KngChartsState } from './definitions';\nimport { BaseChartDirective } from 'ng2-charts';\nimport { KngChartsFactory } from './kng-charts.factory';\nimport { LibIcons } from '../../constants/global.constant';\nimport { KngLoaderState } from '../loader';\nimport { WidgetsComingSoon } from '../../shared/shared.interface';\n\n@Component({\n\tselector: 'kng-charts',\n\ttemplateUrl: './template/kng-charts.component.html',\n\tstyleUrls: ['./template/kng-charts.component.scss']\n})\nexport class KngChartsComponent implements KngCharts, OnDestroy \n{\n\tprivate subscriptions: Subscription = new Subscription();\n\tprivate state$: BehaviorSubject =\n\t\tnew BehaviorSubject(KngChartsFactory.buildState());\n\n\t@Input() set state(value: KngChartsState) \n\t{\n\t\tthis.state$.next(value);\n\t}\n\tloaderState: KngLoaderState = {\n\t\timagePath: LibIcons.widgetLoader\n\t};\n\tcomingSoon:WidgetsComingSoon = {\n\t\timagePath: '/assets/widgetsComingSoon.png',\n\t\timageText: 'Coming Soon'\n\t\t\n\t};\n \n\tget state(): KngChartsState \n\t{\n\t\treturn this.state$.value;\n\t}\n\t@Output() stateChanged: EventEmitter =\n\t\tnew EventEmitter();\n\n\t@Output() ctaLinkClicked: EventEmitter =\n\t\tnew EventEmitter();\n\n\t@Output() tooltipClicked: EventEmitter =\n\t\tnew EventEmitter();\n\t@ViewChild(BaseChartDirective) chart!: BaseChartDirective;\n\n\tngOnDestroy(): void \n\t{\n\t\tthis.destroySubscriptions();\n\t}\n\n\tprivate destroySubscriptions(): void \n\t{\n\t\tthis.subscriptions.unsubscribe();\n\t}\n\n\tctaLinkClick(event: Event) \n\t{\n\t\tconst eventEmitted: ChartsEvent = {\n\t\t\tevent: event,\n\t\t\tstate: this.state\n\t\t};\n\t\tthis.ctaLinkClicked.emit(eventEmitted);\n\t}\n\tshowTooltip()\n\t{\n\t\tthis.tooltipClicked.emit();\n\t}\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class KngChartsService \n{\n\t\n}\n","import {\n\tComponent,\n\tInput,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tEventEmitter\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { KngLoader, KngLoaderState } from './definitions';\nimport { KngLoaderService } from './kng-loader.service';\n\n@Component({\n\tselector: 'kng-loader',\n\ttemplateUrl: './template/kng-loader.component.html',\n\tstyleUrls: ['./template/kng-loader.component.scss']\n})\nexport class KngLoaderComponent implements KngLoader, OnInit, OnDestroy \n{\n\tprivate subscriptions: Subscription = new Subscription();\n\n @Input() set state(value: KngLoaderState) \n\t{\n\t\tthis.service.updateState(value);\n\t}\n get state(): KngLoaderState \n {\n \treturn this.service.state;\n }\n\n @Output() stateChanged: EventEmitter =\n \tnew EventEmitter();\n\n constructor(private service: KngLoaderService) {}\n\n ngOnInit(): void \n {\n \tthis.initSubscriptions();\n }\n ngOnDestroy(): void \n {\n \tthis.destroySubscriptions();\n }\n\n private initSubscriptions(): void \n {\n \tconst stateChangeSubs: Subscription = this.service.stateChanged.subscribe(\n \t\t(next: KngLoaderState) => this.stateChanged.emit(next)\n \t);\n \tthis.subscriptions.add(stateChangeSubs);\n }\n private destroySubscriptions(): void \n {\n \tthis.subscriptions.unsubscribe();\n }\n}\n","
\n \"loader\"\n
\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { KngChartsComponent } from './kng-charts.component';\nimport { KngChartsService } from './kng-charts.service';\nimport { NgChartsModule } from 'ng2-charts';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { KngLoaderModule } from '../loader';\n\n@NgModule({\n\tdeclarations: [KngChartsComponent],\n\timports: [ CommonModule, NgChartsModule, MatTooltipModule, KngLoaderModule ],\n\texports: [KngChartsComponent],\n\tproviders: [KngChartsService]\n})\nexport class KngChartsModule {}\n","export interface KngCountOfItemCardData {\n state: KngCountOfItemCardDataState | undefined;\n}\nexport interface KngCountOfItemCardDataState {\n cssClass: string;\n cardType: CardTypes;\n title: {\n label: string;\n };\n image: {\n label: string;\n url: string;\n alt: string;\n };\n unit: Array;\n error?:string;\n loading?:boolean;\n comingSoon?:boolean;\n}\nexport interface UnitObj {\n label: string;\n description: {\n label: string;\n };\n amount: string;\n currency?: string;\n connectedCount?: ConnectedCount;\n tooltip?: string;\n}\nexport interface ConnectedCount {\n label: string;\n icon: {\n url: string;\n alt: string;\n };\n value: string;\n}\n\nexport type CardTypes = 'unitCard' | 'stackedCard' | 'amountCard' | 'connectedCountCard';\n\nexport enum CountOfItemsCardTypes {\n unitCard = 'unitCard',\n stackedCard = 'stackedCard',\n amountCard = 'amountCard',\n connectedCountCard = 'connectedCountCard'\n}\n","import { KngCountOfItemCardDataState } from './definitions';\n\nexport class KngCountOfItemCardFactory \n{\n\tpublic static buildState(): KngCountOfItemCardDataState \n\t{\n\t\treturn {\n\t\t\tcssClass: '',\n\t\t\tcardType: 'unitCard',\n\t\t\ttitle: {\n\t\t\t\tlabel: ''\n\t\t\t},\n\t\t\timage: {\n\t\t\t\tlabel: '',\n\t\t\t\turl: '',\n\t\t\t\talt: ''\n\t\t\t},\n\t\t\tunit: [\n\t\t\t\t{\n\t\t\t\t\tlabel: '',\n\t\t\t\t\tdescription: {\n\t\t\t\t\t\tlabel: ''\n\t\t\t\t\t},\n\t\t\t\t\tamount: ''\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\t}\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n\nimport { BehaviorSubject } from 'rxjs';\nimport { LibIcons } from '../../constants/global.constant';\nimport { WidgetsComingSoon } from '../../shared/shared.interface';\nimport { KngLoaderState } from '../loader';\nimport {\n\tKngCountOfItemCardData,\n\tKngCountOfItemCardDataState\n} from './definitions';\nimport { KngCountOfItemCardFactory } from './kng-count-of-item-card.factory';\n\n@Component({\n\tselector: 'kng-count-of-item-card',\n\ttemplateUrl: './template/kng-count-of-item-card.component.html',\n\tstyleUrls: ['./template/kng-count-of-item-card.component.scss']\n})\nexport class KngCountOfItemCardComponent implements KngCountOfItemCardData\n{\n\tprivate state$: BehaviorSubject =\n\t\tnew BehaviorSubject(\n\t\t\tKngCountOfItemCardFactory.buildState()\n\t\t);\n @Output() tooltipClicked: EventEmitter =\n \tnew EventEmitter();\n @Input() set state(value: KngCountOfItemCardDataState | undefined) \n {\n \tthis.state$.next(value);\n }\n get state(): KngCountOfItemCardDataState | undefined\n {\n \treturn this.state$.value;\n }\n loaderState: KngLoaderState = {\n \timagePath: LibIcons.widgetLoader\n };\n\n comingSoon:WidgetsComingSoon = {\n \timagePath: '/assets/widgetsComingSoon.png',\n \timageText: 'Coming Soon',\n \ttitle: 'Financed Equipment'\n };\n\n showTooltip()\n {\n\t this.tooltipClicked.emit();\n }\n \n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { KngCountOfItemCardComponent } from './kng-count-of-item-card.component';\nimport { KngLoaderModule } from '../loader';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n\tdeclarations: [KngCountOfItemCardComponent],\n\timports: [ CommonModule, KngLoaderModule, MatTooltipModule ],\n\texports: [KngCountOfItemCardComponent],\n\tproviders: []\n})\nexport class KngCountOfItemCardModule {}\n","import { ScreenView } from '../../constants/global.constant';\nimport { KngCardListState, SortOrder } from './definitions';\n\nexport class KngCardListFactory \n{\n\tpublic static build(): KngCardListState \n\t{\n\t\treturn {\n\t\t\tview: ScreenView.tableDesktop,\n\t\t\theader: [\n\t\t\t\t{\n\t\t\t\t\tlabel: ' ',\n\t\t\t\t\tisSort: true,\n\t\t\t\t\tsortOrder: SortOrder.asc\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: ' ',\n\t\t\t\t\tisSort: true,\n\t\t\t\t\tsortOrder: SortOrder.asc\n\t\t\t\t}\n\t\t\t],\n\t\t\tcardListAccordionIcon: {\n\t\t\t\turl: '',\n\t\t\t\talt: ''\n\t\t\t},\n\t\t\tcardListGrayIcon: {\n\t\t\t\turl: '',\n\t\t\t\talt: ''\n\t\t\t},\n\t\t\tcardListOrangeIcon: {\n\t\t\t\turl: '',\n\t\t\t\talt: ''\n\t\t\t},\n\t\t\tpageInfo: {\n\t\t\t\tpageSize: 0,\n\t\t\t\ttotalCount: 0\n\t\t\t},\n\t\t\ttooltipMessage: '',\n\t\t\tserviceCampaignAltText: '',\n\t\t\tmoreIconAltText: '',\n\t\t\tlist: [\n\t\t\t\t{\n\t\t\t\t\tcollapsed: false,\n\t\t\t\t\tvalues: [],\n\t\t\t\t\tid: '',\n\t\t\t\t\tchangeRequest: {\n\t\t\t\t\t\tdisplay: '',\n\t\t\t\t\t\ttooltip: '',\n\t\t\t\t\t\ttoastMessage: '',\n\t\t\t\t\t\tbannerMessage: ''\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t],\n\t\t\tloading: true,\n\t\t\tactiveFlag: ''\n\t\t};\n\t}\n}\n","\n/* eslint-disable max-lines */\nimport { Component, Input, OnDestroy, OnInit, Output, EventEmitter, HostListener, SimpleChanges, OnChanges, ViewChild, ElementRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { TooltipPosition } from '@angular/material/tooltip';\nimport { Subscription } from 'rxjs';\nimport { ScreenView, UserStatus, KeyEvent, NullCheck } from '../../constants/global.constant';\nimport { AllDataType, FieldValueType, RedirectRoute, TooltipContent } from '../../shared/shared.interface';\nimport { KngCardList, KngCardListState, KngValueListState, KngHeaderObjState, KngGridPager, KngValueObjState, TableButtonAction, ActionOpsList, FieldType, InvoiceCheck, InvoiceStatus, StatusChangeOptionList, SortOrder, EquipmentOrderStatus, ChangeRequestIndicator, TelematicsResponse, TelematicsStatus, MyQuoteStatus, CheckboxChangeEvent } from './definitions';\nimport { KngCardListService, PagerService } from './kng-card-list.service';\n\n@Component({\n\tselector: 'kng-card-list',\n\ttemplateUrl: './template/kng-card-list.component.html',\n\tstyleUrls: ['./template/kng-card-list.component.scss']\n})\nexport class KngCardListComponent implements KngCardList, OnInit, OnDestroy, OnChanges\n{\n\tprivate subscriptions: Subscription = new Subscription();\n\topenCard: number[] = [];\n\tpageNumber: number = 1;\n\theaderList: KngHeaderObjState[] = [];\n\tdataList: KngValueObjState[] = [];\n\tpublic screenWidth: number;\n\tshowAccordionView: boolean = true;\n\taccordionIcon: string | undefined = '/arrowDown.svg';\n\tarrowIconGray: string | undefined = '/arrowLeft.svg';\n\tarrowIconOrange: string | undefined = '/arrowRightOrange.svg';\n\tindicatorFlag: boolean = false;\n\tisTelematicsResponse: TelematicsResponse = {\n\t\tconnected: false,\n\t\tnotConnected: false,\n\t\terror: false\n\t};\n\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\tView = ScreenView;\n\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\tFieldType = FieldType;\n\tinvoiceCheck = InvoiceCheck;\n\tpositionOptions: TooltipPosition[] = [ 'after', 'before', 'above', 'below', 'left', 'right' ];\n\tposition = new FormControl(this.positionOptions[0]);\n\ttotalCount: number = 0;\n\tcurrentPage: number = 1;\n\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\tInvoiceStatus = InvoiceStatus;\n\tuserStatusIcon = UserStatus;\n\torderStatus = EquipmentOrderStatus;\n\tcrStatus = ChangeRequestIndicator;\n\n\tmyQuoteStatus = MyQuoteStatus;\n\tpager: KngGridPager = {\n\t\ttotalPages: 1,\n\t\tcurrentPage: this.currentPage,\n\t\tendIndex: 0,\n\t\tendPage: 1,\n\t\tpageSize: 50,\n\t\tstartIndex: 0,\n\t\tstartPage: 1,\n\t\ttotalItems: this.state?.pageInfo?.totalCount\n\t};\n\theaderValues: KngValueListState[] = [];\n\tnonheaderValues: KngValueListState[] = [];\n\tsortingtext: string = '';\n\t@Input() checkboxState: boolean = false;\n\t@Output() tooltipClicked: EventEmitter<{ id: string; tooltipContent: TooltipContent; columnIndex: number; rowIndex: number }> = new EventEmitter<{ id: string; tooltipContent: TooltipContent; columnIndex: number; rowIndex: number }>();\n\t@Input() set state(value: KngCardListState)\n\t{\n\t\tthis.service.updateState(value);\n\t\tthis.onResize();\n\t\tthis.pager = this.pagerService.getPager(\n\t\t\tthis.state?.pageInfo?.totalCount,\n\t\t\tthis.currentPage,\n\t\t\tthis.state?.pageInfo?.pageSize\n\t\t);\n\t}\n\n\tget state(): KngCardListState\n\t{\n\t\treturn this.service.state;\n\t}\n\n\t@Input() resetPage: number = 1;\n\t@Input() isCheckBoxRequired: boolean = false;\n \t@ViewChild('cardListTable', { read: ElementRef }) tableInput!: ElementRef;\n\t@Output() linkToRedirection: EventEmitter = new EventEmitter();\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t@Output() downloadInvoice: EventEmitter = new EventEmitter();\n\t@Output() linkToQuotesPDF: EventEmitter = new EventEmitter();\n\t@Output() pageIndex: EventEmitter = new EventEmitter();\n\t@Output() stateChanged: EventEmitter = new EventEmitter();\n\t@Output() buttonAction: EventEmitter = new EventEmitter();\n\t@Output() sortColumnEvent: EventEmitter = new EventEmitter();\n\t@Output() userListStatus: EventEmitter = new EventEmitter();\n\t@Output() checkboxClickedEvent: EventEmitter = new EventEmitter();\n\t@Output() headerCheckboxClickedEvent: EventEmitter = new EventEmitter();\n\tconstructor(private service: KngCardListService, private pagerService: PagerService)\n\t{\n\t\tthis.screenWidth = window.innerWidth;\n\t}\n\n\tngOnInit(): void\n\t{\n\t\tthis.initSubscriptions();\n\t\tthis.accordionIcon = this.state.cardListAccordionIcon?.url;\n\t\tthis.arrowIconGray = this.state.cardListGrayIcon?.url;\n\t\tthis.arrowIconOrange = this.state.cardListOrangeIcon?.url;\n\t\tthis.totalCount = this.state?.pageInfo.totalCount;\n\t\tif (!this.state.activeIndex)\n\t\t\tthis.state.activeIndex = -1;\n\t\tif (this.state.header.length > 0 && this.state.header[0].label === 'Service Date')\n\t\t\tthis.state.activeIndex = 0;\n\t}\n\tngOnChanges(changes: SimpleChanges): void\n\t{\n\t\tif (changes['resetPage'] && changes['resetPage'].currentValue !== changes['resetPage'].previousValue)\n\t\t\tthis.setPage(1);\n\t}\n\tngOnDestroy(): void\n\t{\n\t\tthis.destroySubscriptions();\n\t}\n\tpublic capitalize(value: string): string\n\t{\n\t\tconst capitalizeWord = value.split(/(?=[A-Z])/).map((p) =>\n\t\t{\n\n\t\t\treturn p[0]?.toUpperCase() + p.slice(1);\n\t\t}).filter(el => el.length > 1).join(' ');\n\t\treturn capitalizeWord || value;\n\t}\n\tprivate initSubscriptions(): void\n\t{\n\t\tconst stateChangeSubs: Subscription = this.service.stateChanged.subscribe((next: KngCardListState) => this.stateChanged.emit(next));\n\t\tthis.subscriptions.add(stateChangeSubs);\n\t}\n\tprivate destroySubscriptions(): void\n\t{\n\t\tthis.subscriptions.unsubscribe();\n\t}\n\tpublic openCollapseAccordion(listIndex: number)\n\t{\n\t\tthis.dataList[listIndex].collapsed = !this.dataList[listIndex].collapsed;\n\t}\n\tprivate sortNonHeaderValue(nonheaderValues: KngValueListState[]): KngValueListState[]\n\t{\n\t\tnonheaderValues.sort((x, y) =>\n\t\t{\n\t\t\tif (x.icon !== '')\n\t\t\t\treturn -1;\n\t\t\treturn y.icon !== '' ? 1 : 0;\n\t\t});\n\t\treturn nonheaderValues;\n\t}\n\thandleItemCheckBoxChange(item: KngValueObjState, isChecked: boolean, index: number)\n\t{\n\t\tthis.checkboxClickedEvent.emit({ item, isChecked, index });\n\t}\n\thandleHeaderCheckboxChange(isChecked: boolean)\n\t{\n\t\tthis.checkboxState = isChecked;\n\t\tthis.headerCheckboxClickedEvent.emit(isChecked);\n\t}\n\tprivate capitalizeNonHeaderValue(value: KngValueListState): void\n\t{\n\t\tconst labelMappings: Record = {\n\t\t\tequipmentVin: 'Equipment VIN',\n\t\t\tequipmentType: 'Equipment Classification',\n\t\t\ttelematicsStatus: 'telematicsStatus',\n\t\t\ttotalImpact: 'Total Impact Detection',\n\t\t\tbatteryStateOfCharge: 'Battery %'\n\t\t};\n\n\t\tif (this.state.view === ScreenView.tableDesktop || this.state.view === ScreenView.tableMobile)\n\t\t{\n\t\t\tvalue.label = labelMappings[value.label] || this.capitalize(value.label);\n\t\t}\n\t\tthis.nonheaderValues.push(value);\n\t}\n\tprivate diffHeaderNonHeaderLabel(value: KngValueListState): void\n\t{\n\t\tlet headerFlag = false;\n\t\tthis.headerList.forEach((header) =>\n\t\t{\n\t\t\tif (header && header.label === value.label)\n\t\t\t{\n\t\t\t\tthis.headerValues.push(value);\n\t\t\t\theaderFlag = true;\n\t\t\t}\n\t\t});\n\n\t\tif (!headerFlag)\n\t\t\tthis.capitalizeNonHeaderValue(value);\n\t}\n\n\tpublic createHeaderLabelMap(): void\n\t{\n\t\tif (this.headerList.length > 0 && this.dataList.length > 0)\n\t\t{\n\t\t\tfor (const dataValue of this.dataList)\n\t\t\t{\n\t\t\t\tconst listEntry = dataValue;\n\t\t\t\tthis.headerValues = [];\n\t\t\t\tthis.nonheaderValues = [];\n\t\t\t\tlistEntry.values.forEach((value) =>\n\t\t\t\t{\n\t\t\t\t\tthis.diffHeaderNonHeaderLabel(value);\n\t\t\t\t});\n\t\t\t\tif (this.state.view === ScreenView.tableMobile || this.state.view === ScreenView.accordionMobile)\n\t\t\t\t{\n\t\t\t\t\tthis.nonheaderValues = this.sortNonHeaderValue(this.nonheaderValues);\n\t\t\t\t}\n\t\t\t\tconst rearrangedValArr = this.headerValues.concat(this.nonheaderValues);\n\t\t\t\tdataValue.values = rearrangedValArr;\n\t\t\t}\n\t\t}\n\t}\n\tpublic removeActionBtn()\n\t{\n\t\tif (this.state.view === ScreenView.tableDesktop || this.state.view === ScreenView.tableMobile)\n\t\t{\n\t\t\tthis.dataList.forEach((data) =>\n\t\t\t{\n\t\t\t\tdata.values = data.values.filter((item) => item.category !== FieldType.action);\n\t\t\t});\n\t\t}\n\t}\n\tpublic getMobileHeaderCount(): number\n\t{\n\t\tlet headerCount = 2;\n\t\tif (this.state.view === ScreenView.tableDesktop || this.state.view === ScreenView.tableMobile)\n\t\t{\n\t\t\tthis.state.header?.forEach((data) =>\n\t\t\t{\n\t\t\t\tif (data.category?.includes(FieldType.indicator))\n\t\t\t\t\tthis.indicatorFlag = true;\n\t\t\t});\n\t\t\tif (this.indicatorFlag)\n\t\t\t\theaderCount = 3;\n\t\t}\n\t\treturn headerCount;\n\t}\n\tpublic updateHeaderStructure(deviceSupport: string): void\n\t{\n\t\tthis.headerList = [];\n\t\tthis.dataList = [];\n\t\tlet headerCount = 0;\n\t\tthis.dataList = JSON.parse(JSON.stringify(this.state.list));\n\t\tif (deviceSupport === ScreenView.desktop)\n\t\t{\n\t\t\tthis.headerList = this.state?.header;\n\t\t\tif (this.state.view === ScreenView.accordionDeskTop)\n\t\t\t\tthis.createHeaderLabelMap();\n\t\t}\n\t\telse if (deviceSupport === ScreenView.mobile)\n\t\t{\n\t\t\theaderCount = this.getMobileHeaderCount();\n\t\t\tfor (let index = 0; index < headerCount; index++)\n\t\t\t{\n\t\t\t\tconst element = this.state?.header[index];\n\t\t\t\tthis.headerList.push(element);\n\t\t\t}\n\t\t\tthis.createHeaderLabelMap();\n\t\t\tthis.removeActionBtn();\n\t\t}\n\t}\n\t@HostListener('window:resize', ['$event'])\n\tonResize()\n\t{\n\t\tthis.screenWidth = window.innerWidth;\n\t\tif (this.screenWidth >= 768)\n\t\t{\n\t\t\tif (this.state.view === ScreenView.tableMobile)\n\t\t\t\tthis.state.view = ScreenView.tableDesktop;\n\t\t\tthis.updateHeaderStructure(ScreenView.desktop);\n\t\t}\n\t\telse if (this.screenWidth < 768)\n\t\t{\n\t\t\tif (this.state.view === ScreenView.tableDesktop)\n\t\t\t\tthis.state.view = ScreenView.tableMobile;\n\t\t\tthis.updateHeaderStructure(ScreenView.mobile);\n\t\t}\n\t}\n\tsortColumn(value: KngHeaderObjState, index: number)\n\t{\n\t\tthis.state.activeIndex = index;\n\t\tif (this.state.list.length > 0)\n\t\t{\n\t\t\tthis.checkSortOrder(value);\n\t\t\tthis.sortColumnEvent.emit(value);\n\t\t}\n\t}\n\tsortColumnByKey(event: KeyboardEvent, value: KngHeaderObjState, index: number)\n\t{\n\t\tif (event.key === KeyEvent.tab)\n\t\t{\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t\tthis.checkSortOrder(value);\n\t\tif (event.key === KeyEvent.enter)\n\t\t\tthis.sortColumn(value, index);\n\t}\n\tcheckSortOrder(value: KngHeaderObjState)\n\t{\n\t\tif (value.sortOrder === SortOrder.asc)\n\t\t{\n\t\t\tvalue.sortOrder = SortOrder.desc;\n\t\t\tthis.sortingtext = 'descending';\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvalue.sortOrder = SortOrder.asc;\n\t\t\tthis.sortingtext = 'ascending';\n\t\t}\n\t}\n\tsetPage(e: number)\n\t{\n\t\tthis.pageNumber = e;\n\t\tif (e < 1 || e > this.pager.totalPages)\n\t\t\treturn;\n\t\telse\n\t\t\tthis.pager.currentPage = e;\n\t\tthis.pageIndex.emit(e - 1);\n\t\tthis.currentPage = e;\n\t\tthis.pager = this.pagerService.getPager(this.state?.pageInfo?.totalCount, e, this.state?.pageInfo?.pageSize);\n\t}\n\tpageClick()\n\t{\n\t\tsetTimeout(() => this.tableInput.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'nearest' }));\n\t}\n\tonActionClick(category: KngValueObjState, action: ActionOpsList): void\n\t{\n\t\tconst actionEve = { category: category, action: action };\n\t\tthis.buttonAction.emit(actionEve);\n\t}\n\tpublic convertStringToNumber(data: AllDataType): number | string\n\t{\n\t\treturn data !== '' ? Number(data) : '';\n\t}\n\tpublic convertStringToDate(data: AllDataType): Date | string\n\t{\n\t\treturn data && typeof (data) !== 'boolean' ? new Date(data) : '';\n\t}\n\tpublic useDisplayType(data: KngValueListState): string | number | boolean\n\t{\n\t\tlet displayValue = data.labelValue;\n\t\tif (data.displayType)\n\t\t{\n\t\t\tconst values = data.labelValue.toString().split(data.displayType.separator);\n\t\t\tif (data.displayType.styleChange && data.displayType.styleChange === 'beforeSeparatorBold')\n\t\t\t{\n\t\t\t\tdisplayValue = `${values[0]}
${values[1]}`;\n\t\t\t}\n\t\t}\n\t\treturn displayValue;\n\t}\n \tupdateStatus(statusItems: StatusChangeOptionList)\n\t{\n\t\tthis.userListStatus.emit(statusItems);\n\t}\n\tpublic linkToRedirectionEquipment(fieldValue: FieldValueType, fieldLabel: string, userId?: string, customerId?: string, orderId?: string, locationId?: string)\n\t{\n\t\tif (this.fieldValueCheck(fieldValue))\n\t\t{\n\t\t\tif (userId)\n\t\t\t\tthis.linkToRedirection.emit({ label: fieldLabel, value: fieldValue, userId: userId });\n\t\t\telse if (customerId)\n\t\t\t\tthis.linkToRedirection.emit({ label: fieldLabel, value: fieldValue, customerId: customerId });\n\t\t\telse if (orderId)\n\t\t\t\tthis.linkToRedirection.emit({ label: fieldLabel, value: fieldValue, orderId: orderId });\n\t\t\telse if (locationId)\n\t\t\t\tthis.linkToRedirection.emit({ label: fieldLabel, value: fieldValue, locationId: locationId });\n\t\t\telse\n\t\t\t\tthis.linkToRedirection.emit({ label: fieldLabel, value: fieldValue });\n\t\t}\n\t}\n\n\tfieldValueCheck(value: FieldValueType): FieldValueType\n\t{\n\t\treturn value && value !== NullCheck.nullValue;\n\t}\n\n\tpublic linktoDownloadPDF(fieldValue: FieldValueType, fieldLabel: string, documentURL?: string)\n\t{\n\t\tif (fieldValue && fieldValue !== NullCheck.nullValue)\n\t\t{\n\t\t\tif (documentURL)\n\t\t\t\tthis.linkToQuotesPDF.emit({ label: fieldLabel, value: fieldValue, documentURL: documentURL });\n\t\t}\n\t}\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tpublic downloadInvoicePDF(fieldValue:any)\n\t{\n\t\tif (fieldValue && fieldValue !== NullCheck.nullValue)\n\t\t{\n\t\t\tthis.downloadInvoice.emit(fieldValue);\n\t\t}\n\t}\n\tpublic isTelematicsStatus(value: AllDataType): boolean\n\t{\n\t\tif (value && value === TelematicsStatus.connected)\n\t\t{\n\t\t\tthis.isTelematicsResponse.connected = true;\n\t\t\tthis.isTelematicsResponse.notConnected = false;\n\t\t\tthis.isTelematicsResponse.error = false;\n\t\t\treturn this.isTelematicsResponse.connected;\n\t\t}\n\t\telse if (value && value === TelematicsStatus.notConnected)\n\t\t{\n\t\t\tthis.isTelematicsResponse.notConnected = true;\n\t\t\tthis.isTelematicsResponse.connected = false;\n\t\t\tthis.isTelematicsResponse.error = false;\n\t\t\treturn !this.isTelematicsResponse.notConnected;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.isTelematicsResponse.error = true;\n\t\t\tthis.isTelematicsResponse.connected = false;\n\t\t\tthis.isTelematicsResponse.notConnected = false;\n\t\t\treturn this.isTelematicsResponse.error;\n\t\t}\n\t}\n\tpublic getTelematicsTooltipValue(value : AllDataType): string\n\t{\n\t\tswitch (value)\n\t\t{\n\t\tcase TelematicsStatus.connected:\n\t\t\treturn 'Connected';\n\t\tcase TelematicsStatus.notConnected:\n\t\t\treturn 'No Device';\n\t\tdefault:\n\t\t\treturn '';\n\t\t}\n\t}\n\tshowTooltip(id: string | undefined, tooltipContent: TooltipContent | undefined, columnIndex: number, rowIndex: number)\n\t{\n\t\tthis.tooltipClicked.emit({ id: id ?? '', tooltipContent: tooltipContent ?? { closeIcon: { iconPath: '', altText: '' }, content: '' }, columnIndex: columnIndex, rowIndex: rowIndex });\n\t}\n\tupdatePendingOrErrorState(rowIndex: number, columnIndex: number, record: KngValueListState)\n\t{\n\t\tthis.dataList[rowIndex].values[columnIndex].isError = record.isError;\n\t\tthis.dataList[rowIndex].values[columnIndex].errorIcon = record.errorIcon;\n\t\tthis.dataList[rowIndex].values[columnIndex].tooltip = record.tooltip;\n\t\tthis.dataList[rowIndex].values[columnIndex].isStatusUpdatePending = record.isStatusUpdatePending;\n\t\tthis.dataList[rowIndex].values[columnIndex].statusUpdatePendingMessage = record.statusUpdatePendingMessage;\n\t\tthis.dataList[rowIndex].values[columnIndex].labelValue = record.labelValue;\n\t}\n\n\tremoveTooltipSeparator(value: string | number | boolean) \n\t{\n\t\treturn value.toString().replace('~', '');\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { KngCardListComponent } from './kng-card-list.component';\nimport { KngCardListService } from './kng-card-list.service';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { NgxPaginationModule } from 'ngx-pagination';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n@NgModule({\n\tdeclarations: [KngCardListComponent],\n\timports: [\n\t\tCommonModule,\n\t\tMatMenuModule,\n\t\tMatIconModule,\n\t\tMatButtonModule,\n\t\tMatTooltipModule,\n\t\tNgxPaginationModule,\n\t\tFormsModule,\n\t\tReactiveFormsModule,\n\t\tMatSelectModule,\n\t\tMatCheckboxModule\n\t],\n\texports: [KngCardListComponent],\n\tproviders: [KngCardListService]\n})\nexport class KngCardListModule {}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { AccordionFactory } from './accordion.factory';\nimport { AccordionState } from './definitions';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class AccordionService \n{\n\tprivate state$: BehaviorSubject =\n\t\tnew BehaviorSubject(AccordionFactory.build());\n\tget state(): AccordionState \n\t{\n\t\treturn this.state$.value;\n\t}\n\tget stateChanged(): Observable \n\t{\n\t\treturn this.state$.asObservable();\n\t}\n\n\tpublic updateState(value: AccordionState): void \n\t{\n\t\tthis.state$.next(value);\n\t}\n}\n","import { AccordionState } from './definitions';\n\nexport class AccordionFactory \n{\n\tpublic static build(): AccordionState \n\t{\n\t\treturn {\n\t\t\ttitle: '',\n\t\t\tisCollapsed: false,\n\t\t\taccordion: true,\n\t\t\ticon: {\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t}\n\t\t};\n\t}\n}\n","import {\n\tComponent,\n\tInput,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tEventEmitter\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { Accordion, AccordionState } from './definitions';\nimport { AccordionService } from './accordion.service';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\n@Component({\n\tselector: 'kng-accordion-component',\n\ttemplateUrl: './template/accordion.component.html',\n\tstyleUrls: ['./template/accordion.component.scss'],\n\tproviders: [AccordionService]\n})\nexport class AccordionComponent implements Accordion, OnInit, OnDestroy \n{\n\tprivate readonly subscriptions: Subscription = new Subscription();\n\t@Output() isAccordionClicked: EventEmitter = new EventEmitter();\n\t@Output() stateChanged: EventEmitter = new EventEmitter();\n\t@Output() tooltipClicked: EventEmitter = new EventEmitter();\n\t@Output() searchDataChange: EventEmitter = new EventEmitter();\n\n\t@Input() set state(value: AccordionState)\n\t{\n\t\tthis.service.updateState(value);\n\t}\n\tisValidZipCode: boolean = true;\n\n\tget state(): AccordionState\n\t{\n\t\treturn this.service.state;\n\t}\n\tconstructor(private readonly service: AccordionService, private readonly formBuilder: FormBuilder) { }\n\n\tngOnInit(): void\n\t{\n\t\tthis.initSubscriptions();\n\t}\n\tngOnDestroy(): void\n\t{\n\t\tthis.destroySubscriptions();\n\t}\n\t\n\tprivate initSubscriptions(): void\n\t{\n\t\tconst stateChangeSubs: Subscription = this.service.stateChanged.subscribe(\n\t\t\t(next: AccordionState) => this.stateChanged.emit(next)\n\t\t);\n\t\tthis.subscriptions.add(stateChangeSubs);\n\t}\n\n\tprivate destroySubscriptions(): void\n\t{\n\t\tthis.subscriptions.unsubscribe();\n\t}\n\t\n\thandleHeaderClick(event: Event)\n\t{\n\t\tif (window.innerWidth < 768)\n\t\t{\n\t\t\tevent.stopPropagation();\n\t\t}\n\t}\n\tshowTooltip()\n\t{\n\t\tthis.tooltipClicked.emit();\n\t}\n\taccordionClicked(collapsed: boolean)\n\t{\n\t\tthis.isAccordionClicked.emit(collapsed);\n\t}\n\tclearSearchInput()\n\t{\n\t\tthis.isValidZipCode = true;\n\t\tthis.searchForm.patchValue({\n\t\t\tzipCode: ''\n\t\t});\n\t\tthis.searchDataChange.emit('');\n\t}\n\tapplysearch(event: KeyboardEvent): void\n\t{\n\t\tconst inputElement = event.target as HTMLInputElement;\n\t\tif (event.key === ' ' && inputElement.value.length < 7)\n\t\t{\n\t\t\tevent.preventDefault();\n\t\t\tconst cursorPosition = inputElement.selectionStart ?? 0;\n\t\t\tconst inputValue = inputElement.value;\n\t\t\tconst updatedValue = inputValue.slice(0, cursorPosition) + ' ' + inputValue.slice(cursorPosition);\n\t\t\tinputElement.value = updatedValue;\n\t\t\tthis.searchForm.patchValue({\n\t\t\t\tzipCode: updatedValue\n\t\t\t});\n\n\t\t\tconst newPosition = cursorPosition + 1;\n\t\t\tinputElement.setSelectionRange(newPosition, newPosition);\n\t\t}\n\n\t\tif(!inputElement.value.trim().length)\n\t\t{\n\t\t\tthis.isValidZipCode = true;\n\t\t}\n\n\t\tif (event.key === 'Enter')\n\t\t{\n\t\t\tthis.zipCodeValidator(inputElement.value);\n\t\t}\n\t}\n\tpublic searchForm: FormGroup = this.formBuilder.group({\n\t\tzipCode: [ '', [ Validators.required, Validators.maxLength(7) ] ]\n\t});\n\t\n\tzipCodeValidator(searchValue: string): void \n\t{\n\t\tconst pattern = /^[A-Za-z0-9\\s-]*$/;\n\t\tif(!pattern.test(searchValue))\n\t\t{\n\t\t\tthis.isValidZipCode = false;\n\t\t}\n\t\tthis.isValidZipCode = this.isValidUSPostalCode(searchValue) || this.isValidCanadianPostalCode(searchValue);\n\n\t\tif (searchValue.length >= 5 && this.isValidZipCode)\n\t\t{\n\t\t\tconst searchData = searchValue.trim();\t\t\n\t\t\tthis.searchDataChange.emit(searchData);\n\t\t}\n\t}\n\n\tisValidLength(searchValue: string, isUSCode: boolean = false): boolean\n\t{\n\t\tconst strippedValue = searchValue.replace(/\\s/g, '');\n\t\tconst length = strippedValue.length;\n\t\t\n\t\tif(isUSCode)\n\t\t{\n\t\t\treturn length === 5;\n\t\t} \n\t\telse\n\t\t{\n\t\t\treturn length === 6 || length === 7;\n\t\t}\n\t}\n\n\tisValidUSPostalCode(searchValue: string): boolean\n\t{\n\t\treturn this.isValidLength(searchValue, true) && /^\\d+$/.test(searchValue.trim());\n\t}\n\n\tisValidCanadianPostalCode(searchValue: string): boolean\n\t{\n\t\tconst strippedValue = searchValue.replace(/\\s/g, '');\n\t\tif(strippedValue.trim().length === 7 && searchValue.trim().length < 8)\n\t\t{\n\t\t\tif(/^[A-Za-z0-9\\s-]*$/.test(searchValue))\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.isValidLength(searchValue, false) && /^[A-Za-z0-9]{3}[-\\s][A-Za-z0-9]{3}$/.test(searchValue.trim());\n\t\t}\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AccordionComponent } from './accordion.component';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n\tdeclarations: [AccordionComponent],\n\timports: [ CommonModule, MatExpansionModule, MatIconModule, MatTooltipModule, FormsModule, ReactiveFormsModule ],\n\texports: [AccordionComponent]\n})\nexport class AccordionModule {}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { KngToasterFactory } from './kng-toaster.factory';\nimport { KngToasterState } from './definitions';\nimport { ToastrService } from 'ngx-toastr';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class KngToasterService \n{\n\tprivate state$: BehaviorSubject =\n\t\tnew BehaviorSubject(KngToasterFactory.build());\n\n\tget state(): KngToasterState \n\t{\n\t\treturn this.state$.value;\n\t}\n\tget stateChanged(): Observable \n\t{\n\t\treturn this.state$.asObservable();\n\t}\n\n\tconstructor(private toastr: ToastrService) {}\n\n\tpublic updateState(value: KngToasterState): void \n\t{\n\t\tthis.state$.next(value);\n\t}\n\n\tpublic showToaster(state: KngToasterState) \n\t{\n\t\tif (state.category === 'success') \n\t\t{\n\t\t\tthis.toastr.success(state.message);\n\t\t}\n\t\tif (state.category === 'error') \n\t\t{\n\t\t\tthis.toastr.error(state.message);\n\t\t}\n\t}\n}\n","import { KngToasterState } from './definitions';\n\nexport class KngToasterFactory \n{\n\tpublic static build(): KngToasterState \n\t{\n\t\treturn {\n\t\t\tcategory: '',\n\t\t\tmessage: ''\n\t\t};\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { KngToasterComponent } from './kng-toaster.component';\nimport { KngToasterService } from './kng-toaster.service';\nimport { ToastrModule } from 'ngx-toastr';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n\n@NgModule({\n\tdeclarations: [KngToasterComponent],\n\timports: [\n\t\tCommonModule,\n\t\tBrowserAnimationsModule,\n\t\tToastrModule.forRoot({\n\t\t\ttimeOut: 900000,\n\t\t\tpositionClass: 'toast-top-right',\n\t\t\ttoastClass: 'kng-toast toast-container ngx-toastr',\n\t\t\tenableHtml: true,\n\t\t\tcloseButton: true,\n\t\t\tpreventDuplicates: true,\n\t\t\ttapToDismiss: false\n\t\t})\n\t],\n\texports: [KngToasterComponent],\n\tproviders: [KngToasterService]\n})\nexport class KngToasterModule {}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { KngStatusSelectorFactory } from './kng-status-selector.factory';\nimport { KngStatusSelectorState } from './definitions';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class KngStatusSelectorService \n{\n\tprivate state$: BehaviorSubject = new BehaviorSubject(\n\t\tKngStatusSelectorFactory.build()\n\t);\n\tget state(): KngStatusSelectorState \n\t{\n\t\treturn this.state$.value;\n\t}\n\tget stateChanged(): Observable \n\t{\n\t\treturn this.state$.asObservable();\n\t}\n\n\tpublic updateState(value: KngStatusSelectorState): void \n\t{\n\t\tthis.state$.next(value);\n\t}\n}\n","\nimport { KngStatusSelectorState } from './definitions';\n\nexport class KngStatusSelectorFactory \n{\n\tpublic static build(): KngStatusSelectorState \n\t{\n\t\treturn {\n\t\t\theader: '',\n\t\t\tselectedStatus: 'all',\n\t\t\tcount: [\n\t\t\t\t{\n\t\t\t\t\theader: '',\n\t\t\t\t\tlabel: '',\n\t\t\t\t\tamount: 0\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\t}\n}\n","import { Component, Input, OnDestroy, OnInit, Output, EventEmitter } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ScreenView } from '../../constants/global.constant';\nimport { KngSelectionData, KngStatusSelector, KngStatusSelectorState } from './definitions';\nimport { KngStatusSelectorService } from './kng-status-selector.service';\n\n\n@Component({\n\tselector: 'kng-status-selector',\n\ttemplateUrl: './template/kng-status-selector.component.html',\n\tstyleUrls: ['./template/kng-status-selector.component.scss']\n})\nexport class KngStatusSelectorComponent implements KngStatusSelector, OnInit, OnDestroy \n{\n \n\tselectedStatusValue: string = 'all';\n\tscreenView = ScreenView;\n\tprivate subscriptions: Subscription = new Subscription();\n\n @Input() set state(value: KngStatusSelectorState) \n\t{\n\t\tthis.service.updateState(value);\n\t}\n get state(): KngStatusSelectorState \n {\n \treturn this.service.state;\n }\n\n @Output() stateChanged: EventEmitter = new EventEmitter();\n @Output() selectionChanged: EventEmitter = new EventEmitter();\n\n constructor(\n private service: KngStatusSelectorService\n ) { }\n\n ngOnInit(): void \n {\n \tthis.initSubscriptions();\n }\n ngOnDestroy(): void \n {\n \tthis.destroySubscriptions();\n }\n\n private initSubscriptions(): void \n {\n \tconst stateChangeSubs: Subscription = this.service.stateChanged.subscribe(\n \t\t(next: KngStatusSelectorState) => this.stateChanged.emit(next)\n \t);\n \tthis.subscriptions.add(stateChangeSubs);\n }\n private destroySubscriptions(): void \n {\n \tthis.subscriptions.unsubscribe();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onSelectionChange(view: string, event: any): void \n {\n \tconst selectedData: KngSelectionData = {\n \t\tselectedStatus: ''\n \t};\n \tif(view === ScreenView.mobile) \n \t{\n \t selectedData.selectedStatus = event?.target?.value;\n \t}\n \telse \n \t{\n \t\tthis.selectedStatusValue = event;\n \t\tthis.state.selectedStatus = event;\n \t\tselectedData.selectedStatus = event;\n \t}\n \tthis.selectionChanged.emit(selectedData);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { KngStatusSelectorComponent } from './kng-status-selector.component';\nimport { KngStatusSelectorService } from './kng-status-selector.service';\nimport { FormsModule } from '@angular/forms';\n\n@NgModule({\n\tdeclarations: [\n\t\tKngStatusSelectorComponent\n\t],\n\timports: [ CommonModule, FormsModule ],\n\texports: [\n\t\tKngStatusSelectorComponent\n\t],\n\tproviders: [\n\t\tKngStatusSelectorService\n\t]\n})\nexport class KngStatusSelectorModule {}\n","\nimport { Image, TooltipContent } from '../../../shared/shared.interface';\nimport { KngButtonState } from '../../button';\n\nexport interface KngTable {\n state: KngTableState;\n}\nexport interface KngTableState {\n gridHeaders: HeaderObj[];\n gridData: GridValue[];\n ribbon: { ctaList: CtaList[]; cancelButton: KngButtonState };\n itemsSelected: string;\n isCheckbox: boolean;\n isRibbon: boolean;\n selectAll?:string;\n loading?: boolean;\n noResult: {\n image:Image;\n text:string;\n };\n approveUserLimitIndicatorText?: string;\n cssClass?:string;\n isTooltipPresent?: boolean;\n tooltip?: TooltipContent;\n tooltipClass?: string;\n id?:string;\n permissionCheckBoxDisabled?: boolean;\n}\n\nexport interface GridValue {\n values: GridValueData[];\n id:string;\n checked?:boolean;\n email?: string;\n state?: string;\n portalUserId?: string;\n company: string;\n roles: string[];\n portalApprovedCustomerID: string[];\n tempIsPrefilled?: boolean;\n phoneNumber: string;\n roleName: string;\n disabled?:boolean | undefined;\n adminLocationID?: string | undefined;\n}\nexport interface BusinessAccountGridValue {\n values: GridValueData[];\n id:string;\n email?: string;\n phoneNumber: string;\n}\n\nexport interface CtaList {\n id: string;\n className: string | AprRejBtnType;\n state: KngButtonState;\n}\n\nexport interface HeaderObj {\n id?:string;\n label: string;\n category?: string;\n isTooltip?:boolean;\n}\n\nexport interface GridValueData {\n label: string;\n value: string | boolean | number;\n href?: string;\n category?: KngTableCategory;\n firstLineValue?: string;\n secondLineValue?: string;\n thirdLineValue?:string;\n icon?:Image;\n cssClass?:string;\n isTooltip?:boolean;\n count?: string | number;\n options?: {\n id: string;\n name: string;\n description: string;\n }[];\n ctaList: CtaList[];\n redirectionDisabled?: boolean;\n hideLink?: boolean;\n roleDisabled?: boolean;\n disabled?: boolean;\n}\n\nexport interface AprRejActionData {\n action: string | AprRejBtnType;\n selectedUserData: AprRejUserData[];\n selectedUserDataForApprove: ApproveUserData[];\n}\nexport interface AprRejUserData {\n id: string;\n email: string;\n state: string;\n}\nexport interface ApproveUserData {\n id: string;\n email: string;\n state: string;\n portalUserId: string;\n company: string;\n roles: string[];\n portalApprovedCustomerID?: string[];\n adminLocationID?: string;\n tempIsPrefilled: boolean;\n phoneNumber: string;\n roleName: string;\n}\n\nexport type KngTableCategory =\n | 'checkbox'\n | 'link'\n | 'multiline'\n | 'button'\n | 'primary'\n | 'select'\n | 'date'\n | 'editData'\n | 'uploadFile';\n\nexport enum TableCategory {\n link = 'link',\n multiline = 'multiline',\n button = 'button',\n select = 'select',\n checkbox = 'checkbox',\n date='date',\n primary='primary',\n editData='editData',\n uploadFile='uploadFile'\n}\n\nexport enum AprRejBtnType {\n singleApprove = 'singleApprove',\n singleReject = 'singleReject',\n bulkApprove = 'bulkApprove',\n bulkReject = 'bulkReject'\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { KngTableFactory } from './kng-table.factory';\nimport { KngTableState } from './definitions';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class KngTableService \n{\n\tprivate state$: BehaviorSubject = new BehaviorSubject(\n\t\tKngTableFactory.build()\n\t);\n\tget state(): KngTableState \n\t{\n\t\treturn this.state$.value;\n\t}\n\tget stateChanged(): Observable \n\t{\n\t\treturn this.state$.asObservable();\n\t}\n\n\tpublic updateState(value: KngTableState): void \n\t{\n\t\tthis.state$.next(value);\n\t}\n}\n","\nimport { KngTableState } from './definitions';\n\nexport class KngTableFactory \n{\n\tpublic static build(): KngTableState \n\t{\n\t\treturn {\n\t\t\tgridData: [],\n\t\t\tgridHeaders: [],\n\t\t\tisCheckbox: false,\n\t\t\tisRibbon: false,\n\t\t\titemsSelected: '0',\n\t\t\tribbon: {\n\t\t\t\tcancelButton: {\n\t\t\t\t\tsize: 'medium',\n\t\t\t\t\tstyle: 'link',\n\t\t\t\t\tdisabled: false,\n\t\t\t\t\tlabel: 'Cancel',\n\t\t\t\t\ticon: {\n\t\t\t\t\t\taltText: '',\n\t\t\t\t\t\ticonPath: ''\n\t\t\t\t\t},\n\t\t\t\t\tposition: 'none'\n\t\t\t\t},\n\t\t\t\tctaList: []\n\t\t\t},\n\t\t\tloading: true,\n\t\t\tnoResult: {\n\t\t\t\timage: {\n\t\t\t\t\taltText: '',\n\t\t\t\t\ticonPath: ''\n\t\t\t\t},\n\t\t\t\ttext: ''\n\t\t\t},\n\t\t\tapproveUserLimitIndicatorText: ''\n\t\t};\n\t}\n}\n","import { Component, Input, OnDestroy, OnInit, Output, EventEmitter } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { KngTable, KngTableState, TableCategory, AprRejBtnType, AprRejUserData, AprRejActionData, GridValue, ApproveUserData } from './definitions';\nimport { KngTableService } from './kng-table.service';\nimport { AllDataType } from '../../shared/shared.interface';\n\n@Component({\n\tselector: 'kng-table',\n\ttemplateUrl: './template/kng-table.component.html',\n\tstyleUrls: ['./template/kng-table.component.scss']\n})\nexport class KngTableComponent implements KngTable, OnInit, OnDestroy \n{\n\tprivate subscriptions: Subscription = new Subscription();\n\ttableCategory = TableCategory;\n\taprRejBtnType = AprRejBtnType;\n\tisLinkEnabled: boolean = false;\n\tallSelected: boolean = false;\n\n\t@Input() set state(value: KngTableState) \n\t{\n\t\tthis.service.updateState(value);\n\t}\n\tget state(): KngTableState \n\t{\n\t\treturn this.service.state;\n\t}\n\n\t@Output() stateChanged: EventEmitter = new EventEmitter();\n\t@Output() btnClickEvent: EventEmitter = new EventEmitter();\n\t@Output() navigateToApproveNewUser: EventEmitter = new EventEmitter();\n\t@Output() tooltipClicked: EventEmitter = new EventEmitter();\n\t@Output() editButtonClicked: EventEmitter = new EventEmitter();\n\t@Output() locationListButton: EventEmitter = new EventEmitter();\n\t@Output() uploadFileLinkClicked: EventEmitter = new EventEmitter();\n\n\tconstructor(private service: KngTableService) { }\n\n\tngOnInit(): void \n\t{\n\t\tthis.initSubscriptions();\n\t\tthis.setAll(false);\n\t}\n\tngOnDestroy(): void \n\t{\n\t\tthis.destroySubscriptions();\n\t}\n\tprivate initSubscriptions(): void \n\t{\n\t\tconst stateChangeSubs: Subscription = this.service.stateChanged.subscribe((next: KngTableState) => this.stateChanged.emit(next));\n\t\tthis.subscriptions.add(stateChangeSubs);\n\t}\n\tprivate destroySubscriptions(): void \n\t{\n\t\tthis.subscriptions.unsubscribe();\n\t}\n\tupdateAllSelected() \n\t{\n\t\tthis.allSelected = this.state.gridData.every(row => row.checked);\n\t\tif (this.state.gridData.length >= 10) \n\t\t{\n\t\t\tthis.allSelected = this.state.gridData.filter(row => row.checked)?.length >= 10;\n\t\t}\n\t}\n\tpartiallySelected(): boolean \n\t{\n\t\tif (this.state.gridData.every(row => !row.checked)) \n\t\t{\n\t\t\tthis.allSelected = false;\n\t\t}\n\t\tif (this.state.gridData.filter(t => t.checked).length >= 10 && this.state.ribbon.ctaList.length > 0) \n\t\t{\n\t\t\tthis.state.gridData.filter(t => !t.checked).forEach(checkbox => checkbox.disabled = true);\n\t\t}\n\t\telse \n\t\t{\n\t\t\tthis.state.gridData.forEach(checkbox => checkbox.disabled = false);\n\t\t}\n\t\treturn this.state.gridData.filter(t => t.checked).length > 0 && !this.allSelected;\n\t}\n\tselectedCount(): boolean \n\t{\n\t\treturn this.state.gridData.filter(t => t.checked).length > 0;\n\t}\n\tsetAll(completed: boolean) \n\t{\n\t\tthis.allSelected = completed;\n\t\tthis.state.gridData.slice(0, 10).forEach(t => t.checked = completed);\n\t\tthis.state.gridData.slice(10, this.state.gridData.length).forEach(t => { t.disabled = completed; t.checked = false; });\n\t}\n\tcountOfSelectedRequests() \n\t{\n\t\tconst countOfSelectedRequests = this.state.gridData.filter(t => t.checked).length;\n\t\treturn countOfSelectedRequests + ' ' + this.state.itemsSelected;\n\t}\n\tcancelSelection() \n\t{\n\t\tthis.state.gridData.forEach((row) => { row.checked = false; });\n\t\tthis.allSelected = false;\n\t}\n\tpublic convertStringToDate(data: AllDataType): Date | string \n\t{\n\t\treturn data && typeof (data) !== 'boolean' ? new Date(data) : '';\n\t}\n\trejectSingleUser(data: GridValue | undefined) \n\t{\n\t\tconst selectedRowDataArr: AprRejUserData[] = [];\n\t\tif (data) \n\t\t{\n\t\t\tconst selectedRowEntry: AprRejUserData = {\n\t\t\t\tid: data.id ? data.id : '',\n\t\t\t\temail: data.email ? data.email : '',\n\t\t\t\tstate: data.state ? data.state : ''\n\t\t\t};\n\t\t\tselectedRowDataArr.push(selectedRowEntry);\n\t\t}\n\t\treturn selectedRowDataArr;\n\t}\n\trejectMultipleUser(): AprRejUserData[] \n\t{\n\t\tconst selectedRowDataArr: AprRejUserData[] = [];\n\t\tthis.state.gridData.filter(t => t.checked).forEach((row) => \n\t\t{\n\t\t\tconst selectedRowEntry: AprRejUserData = {\n\t\t\t\tid: row.id ? row.id : '',\n\t\t\t\temail: row.email ? row.email : '',\n\t\t\t\tstate: row.state ? row.state : ''\n\t\t\t};\n\t\t\tselectedRowDataArr.push(selectedRowEntry);\n\t\t});\n\t\treturn selectedRowDataArr;\n\t}\n\tapproveSingleUser(data: GridValue | undefined) \n\t{\n\t\tconst selectedRowDataArr: ApproveUserData[] = [];\n\t\tif (data) \n\t\t{\n\t\t\tconst selectedRowEntry: ApproveUserData = {\n\t\t\t\tid: data.id,\n\t\t\t\temail: data.email ? data.email : '',\n\t\t\t\tstate: data.state ? data.state : '',\n\t\t\t\tportalUserId: data.portalUserId ? data.portalUserId : '',\n\t\t\t\tcompany: data.company,\n\t\t\t\troles: data.roles,\n\t\t\t\tportalApprovedCustomerID: data.portalApprovedCustomerID,\n\t\t\t\ttempIsPrefilled: data.tempIsPrefilled ? data.tempIsPrefilled : false,\n\t\t\t\tphoneNumber: data.phoneNumber,\n\t\t\t\troleName: data.roleName,\n\t\t\t\tadminLocationID: data.adminLocationID\n\t\t\t};\n\t\t\tselectedRowDataArr.push(selectedRowEntry);\n\t\t}\n\t\treturn selectedRowDataArr;\n\t}\n\tapproveMultipleUser(): ApproveUserData[] \n\t{\n\t\tconst selectedRowDataArr: ApproveUserData[] = [];\n\t\tthis.state.gridData.filter(t => t.checked).forEach((row) => \n\t\t{\n\t\t\tconst selectedRowEntry: ApproveUserData = {\n\t\t\t\tid: row.id,\n\t\t\t\temail: row.email ? row.email : '',\n\t\t\t\tstate: row.state ? row.state : '',\n\t\t\t\tportalUserId: row.portalUserId ? row.portalUserId : '',\n\t\t\t\tcompany: row.company,\n\t\t\t\troles: row.roles,\n\t\t\t\tportalApprovedCustomerID: row.portalApprovedCustomerID,\n\t\t\t\ttempIsPrefilled: row.tempIsPrefilled ? row.tempIsPrefilled : false,\n\t\t\t\tphoneNumber: row.phoneNumber,\n\t\t\t\troleName: row.roleName,\n\t\t\t\tadminLocationID: row.adminLocationID ? row.adminLocationID : ''\n\t\t\t};\n\t\t\tselectedRowDataArr.push(selectedRowEntry);\n\t\t});\n\t\treturn selectedRowDataArr;\n\t}\n\temitClickEvent(btnType: AprRejBtnType | string, data?: GridValue) \n\t{\n\t\tconst selectedActionData: AprRejActionData = {\n\t\t\taction: btnType,\n\t\t\tselectedUserData: [],\n\t\t\tselectedUserDataForApprove: []\n\t\t};\n\t\tif (btnType === this.aprRejBtnType.singleReject) \n\t\t{\n\t\t\tselectedActionData.selectedUserData = this.rejectSingleUser(data);\n\t\t\tthis.cancelSelection();\n\t\t}\n\t\telse if (btnType === this.aprRejBtnType.bulkReject) \n\t\t{\n\t\t\tselectedActionData.selectedUserData = this.rejectMultipleUser();\n\t\t}\n\t\telse if (btnType === this.aprRejBtnType.singleApprove) \n\t\t{\n\t\t\tselectedActionData.selectedUserDataForApprove = this.approveSingleUser(data);\n\t\t\tthis.cancelSelection();\n\t\t}\n\t\telse if (btnType === this.aprRejBtnType.bulkApprove) \n\t\t{\n\t\t\tselectedActionData.selectedUserDataForApprove = this.approveMultipleUser();\n\t\t}\n\t\tthis.btnClickEvent.emit(selectedActionData);\n\t}\n\tredirectToApproveNewUserPage(userId: string): void \n\t{\n\t\tif (userId) \n\t\t{\n\t\t\tthis.navigateToApproveNewUser.emit(userId);\n\t\t}\n\t}\n\tshowTooltip(id: string) \n\t{\n\t\tthis.tooltipClicked.emit(id);\n\t}\n\topenEditCompanyDetailsModal(id: string) \n\t{\n\t\tthis.editButtonClicked.emit(id);\n\t}\n\tgetLocationList(id: string) \n\t{\n\t\tthis.locationListButton.emit(id);\n\t}\n\topenUploadFileModal(row: GridValue, i: number)\n\t{\n\t\tif(row.values[i].icon?.iconPath !== 'assets/uploadDisabled.svg')\n\t\t\tthis.uploadFileLinkClicked.emit(row);\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { KngTableComponent } from './kng-table.component';\nimport { KngTableService } from './kng-table.service';\nimport { KngButtonModule } from '../button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatSelectModule } from '@angular/material/select';\nimport { FormsModule } from '@angular/forms';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n\tdeclarations: [\n\t\tKngTableComponent\n\t],\n\timports: [ CommonModule, KngButtonModule, MatCheckboxModule, MatSelectModule, FormsModule, MatTooltipModule ],\n\texports: [\n\t\tKngTableComponent\n\t],\n\tproviders: [\n\t\tKngTableService\n\t]\n})\nexport class KngTableModule {}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { KngMydealerFactory } from './kng-mydealer.factory';\nimport { KngMydealerState } from './definitions';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class KngMydealerService \n{\n\tprivate state$: BehaviorSubject = new BehaviorSubject(\n\t\tKngMydealerFactory.build()\n\t);\n\tget state(): KngMydealerState \n\t{\n\t\treturn this.state$.value;\n\t}\n\tget stateChanged(): Observable \n\t{\n\t\treturn this.state$.asObservable();\n\t}\t\n\n\tpublic updateState(value: KngMydealerState): void \n\t{\n\t\tthis.state$.next(value);\n\t}\n}\n","\nimport { LabelValue } from '../../shared/shared.interface';\nimport { KngMydealerState } from './definitions';\n\nexport class KngMydealerFactory \n{\n\tpublic static build(): KngMydealerState \n\t{\n\t\treturn {\n\t\t\tmyDealer: {\n\t\t\t\tfirstName: '',\n\t\t\t\tlastName: '',\n\t\t\t\tphone: this.getPhoneEmail('phone'),\n\t\t\t\temail: this.getPhoneEmail('email'),\n\t\t\t\taddress: {\n\t\t\t\t\tlabel: '',\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\taddressLine1: '',\n\t\t\t\t\t\taddressLine2: '',\n\t\t\t\t\t\tcity: '',\n\t\t\t\t\t\tstate: '',\n\t\t\t\t\t\tzipCode: ''\n\t\t\t\t\t},\n\t\t\t\t\ticon: {\n\t\t\t\t\t\ticonPath: '/assets/location.svg',\n\t\t\t\t\t\taltText: ''\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tisButton: false,\n\t\t\tbutton: {\n\t\t\t\tsize: 'medium',\n\t\t\t\tstyle: 'secondary',\n\t\t\t\tdisabled: false,\n\t\t\t\tlabel: 'Open Contact Form',\n\t\t\t\tposition: 'right',\n\t\t\t\ticon: {\n\t\t\t\t\taltText: '',\n\t\t\t\t\ticonPath: 'assets/external_link.svg'\n\t\t\t\t}\n\t\t\t},\n\t\t\turl: '',\n\t\t\tisError: false,\n\t\t\tloading: false,\n\t\t\tnoResult: {\n\t\t\t\tlabel: '',\n\t\t\t\ttext: '',\n\t\t\t\ticonPath: '',\n\t\t\t\taltText: ''\n\t\t\t}\n\t\t};\n\t}\n\tpublic static getPhoneEmail(type: string): LabelValue \n\t{\n\t\tlet iconValue = '';\n\t\tswitch (type) \n\t\t{\n\t\tcase 'email':\n\t\t\ticonValue = '/assets/email.svg';\n\t\t\tbreak;\n\n\t\tcase 'phone':\n\t\t\ticonValue = '/assets/phone.svg';\n\t\t\tbreak;\n\t\t}\n\n\t\tconst obj: LabelValue = { label: '', value: '', icon: { iconPath: iconValue, altText: '' } };\n\t\treturn obj;\n\t}\n}\n","import { Component, Input, OnDestroy, OnInit, Output, EventEmitter, AfterContentChecked } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { DealerPage } from '../../shared/shared.interface';\nimport { SharedService } from '../../shared/shared.service';\nimport { AddressState, KngMydealer, KngMydealerState } from './definitions';\nimport { KngMydealerService } from './kng-mydealer.service';\nimport { LibIcons, NullCheck } from '../../constants/global.constant';\nimport { KngLoaderState } from '../loader';\n\n\n@Component({\n\tselector: 'kng-mydealer',\n\ttemplateUrl: './template/kng-mydealer.component.html',\n\tstyleUrls: ['./template/kng-mydealer.component.scss']\n})\nexport class KngMydealerComponent implements KngMydealer, OnInit, OnDestroy, AfterContentChecked\n{\n\n\tprivate subscriptions: Subscription = new Subscription();\n\tparentPage!: typeof DealerPage;\n\taddressView: boolean = false;\n\tloaderState: KngLoaderState = { imagePath: LibIcons.widgetLoader };\n \n @Input() set state(value: KngMydealerState)\n\t{\n\t\tthis.service.updateState(value);\n\t}\n get state(): KngMydealerState\n {\n \treturn this.service.state;\n }\n\n @Output() stateChanged: EventEmitter = new EventEmitter();\n @Output() clicked: EventEmitter =\n \tnew EventEmitter();\n @Output() contactClickOn: EventEmitter<'email' | 'phone-number'> = new EventEmitter<'email' | 'phone-number'>();\n\n constructor(\n private service: KngMydealerService, private sharedservice: SharedService\n )\n { }\n\n ngOnInit(): void\n {\n \tthis.initSubscriptions();\n \tthis.parentPage = DealerPage;\n }\n ngOnDestroy(): void\n {\n \tthis.destroySubscriptions();\n }\n\n ngAfterContentChecked(): void\n {\n \tconst addressState = this.state.myDealer.address.value;\n \tif(addressState.addressLine1 === NullCheck.nullValue && addressState.city === NullCheck.nullValue && addressState.state === NullCheck.nullValue && addressState.zipCode === NullCheck.nullValue)\n \t{\n \t\tthis.addressView = false;\n \t}\n\t else\n \t{\n \t\tthis.addressView = true;\n \t}\n }\n\n private initSubscriptions(): void\n {\n \tconst stateChangeSubs: Subscription = this.service.stateChanged.subscribe(\n \t\t(next: KngMydealerState) => this.stateChanged.emit(next)\n \t);\n \tthis.subscriptions.add(stateChangeSubs);\n }\n private destroySubscriptions(): void\n {\n \tthis.subscriptions.unsubscribe();\n }\n\n public formatAddress(address:AddressState)\n {\n \treturn this.sharedservice.formatAddress(address.value, false);\n\n }\n public handleClick()\n {\n \tthis.clicked.emit(this.state);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { KngMydealerComponent } from './kng-mydealer.component';\nimport { KngMydealerService } from './kng-mydealer.service';\nimport { KngButtonModule } from '../button';\n\n@NgModule({\n\tdeclarations: [\n\t\tKngMydealerComponent\n\t],\n\timports: [ CommonModule, KngButtonModule ],\n\texports: [\n\t\tKngMydealerComponent\n\t],\n\tproviders: [\n\t\tKngMydealerService\n\t]\n})\nexport class KngMydealerModule {}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { KngTableLoader, KngTableLoaderState } from './definitions';\nimport { KngTableLoaderFactory } from './kng-table-loader.factory';\n\n\n@Component({\n\tselector: 'kng-table-loader',\n\ttemplateUrl: './template/kng-table-loader.component.html',\n\tstyleUrls: ['./template/kng-table-loader.component.scss']\n})\nexport class KngTableLoaderComponent implements KngTableLoader\n{\n\tprivate state$: BehaviorSubject =\n\t\tnew BehaviorSubject(KngTableLoaderFactory.build());\n\tget state(): KngTableLoaderState \n\t{\n\t\treturn this.state$.value;\n\t}\n @Input() set state(value: KngTableLoaderState) \n\t{\n\t\tthis.state$.next(value);\n\t}\n\n @Output() stateChanged: EventEmitter = new EventEmitter();\n \n numSequence(n: number): Array \n {\n \treturn Array(n);\n }\n}\n","\nimport { KngTableLoaderState } from './definitions';\n\nexport class KngTableLoaderFactory \n{\n\tpublic static build(): KngTableLoaderState \n\t{\n\t\treturn {\n\t\t\tnoOfColumns: 0,\n\t\t\tnoOfRows: 0\n\t\t};\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { KngTableLoaderComponent } from './kng-table-loader.component';\n\n@NgModule({\n\tdeclarations: [\n\t\tKngTableLoaderComponent\n\t],\n\timports: [CommonModule],\n\texports: [\n\t\tKngTableLoaderComponent\n\t]\n})\nexport class KngTableLoaderModule {}\n","import { Component, OnInit, Inject, HostListener } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\nimport { TooltipContent } from '../../shared/shared.interface';\n\n\n@Component({\n\tselector: 'kng-dialog-tooltip',\n\ttemplateUrl: './template/kng-dialog-tooltip.component.html',\n\tstyleUrls: ['./template/kng-dialog-tooltip.component.scss']\n})\nexport class KngDialogTooltipComponent implements OnInit \n{\n\tconstructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA)\n public data: {\n state: TooltipContent;\n positionRelativeToElement: HTMLElement;\n }\n\t) { }\n\n\tmatDialogConfig = new MatDialogConfig();\n\tngOnInit(): void \n\t{\n \tthis.updateTooltipPosition();\n\t}\n\n @HostListener('window:scroll') onScroll(): void \n\t{\n \tthis.updateTooltipPosition();\n\t}\n\n updateTooltipPosition() \n {\n \tconst rect: DOMRect =\n this.data?.positionRelativeToElement?.getBoundingClientRect();\n \tif (rect) \n \t{\n \t\tthis.matDialogConfig.position = { top: `${rect.bottom + 2}px` };\n \t\tthis.dialogRef.updatePosition(this.matDialogConfig.position);\n \t}\n }\n\n closeTooltip() \n {\n \tthis.dialogRef.close();\n }\n}\n","
\n
\n
{{data.state.content}}
\n
\n \n
\n
\n
","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { KngDialogTooltipComponent } from './kng-dialog-tooltip.component';\n\n@NgModule({\n\tdeclarations: [\n\t\tKngDialogTooltipComponent\n\t],\n\timports: [CommonModule],\n\texports: [\n\t\tKngDialogTooltipComponent\n\t]\n})\nexport class KngDialogTooltipModule {}\n"]}