{"version":3,"file":"main.65dd9d4d934bc1cb.js","mappings":"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Q,CACJC,cAAe,CACXC,eAAgB,WAAK,EACrBC,mBAAmB,MqB+BS3K,GAAiBqF,IACnDuF,cAAoBtH,GAAU,CAAEE,kBAChCgF,WAAyBtoB,+BACzBooB,GACAuC,aAAsB,CACpBpH,GACAQ,GACAI,KAEFja,aAAwB,CACtB7b,OAAQ,CACN5rB,QAASmoD,KACTjoD,YAAa88B,MAEforB,0BAA2B,CAACpoD,QAASqoD,KAA2Bv/B,SAAU64B,IAC1E2G,gBAAiB,OAEnBlvD,GAACmkC,aAA4D,GAAnCgrB,uBAwCjBrC,EAAb,GClHI3oB,kBACFirB,WAGFC,OAAyBC,gBAAgBxC,IACtCzI,MAAM,YAAG,OAAInxD,QAAQC,MAAMsN,8BCX9B,OACA,aACA,gBACA,WACA,eACA,kBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,cACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,YACA,eACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,gBACA,mBACA,eACA,kBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,cACA,iBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,WACA,cACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,sBACA,kBACA,qBACA,aACA,gBACA,aACA,gBACA,WACA,cACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,iBACA,oBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,kBACA,qBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,cACA,iBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,cACA,iBACA,aACA,gBACA,cACA,iBACA,cACA,kBACA,qBACA,iBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,aACA,kBACA,qBACA,gBACA,aACA,gBACA,mBACA,sBACA,aACA,gBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,oBAIA,cACA,WACA,YAEA,cACA,cACA,8CACA,gCACAmf,EAEA,YAEA7lB,kBACA,uBAEAA,YACAw1D,aACAx1D","names":["EnvService","i","this","factory","MaterialModule","MatButtonModule","MatTabsModule","MatSortModule","MatTableModule","MatDatepickerModule","MatMomentDateModule","MatInputModule","MatSelectModule","MatFormFieldModule","MatIconModule","MatBadgeModule","MatMenuModule","MatDialogModule","A11yModule","MatExpansionModule","MatDividerModule","MatSlideToggleModule","MatCheckboxModule","MatRadioModule","MatAutocompleteModule","MatSnackBarModule","MatChipsModule","SETTINGS_GROUPS","loadPaymentTypes","createAction","lazyLoadPaymentTypes","loadPaymentTypesSuccess","props","loadPaymentTypesFailure","loadFSPaymentTypes","lazyLoadFSPaymentTypes","loadFSPaymentTypesSuccess","loadFSPaymentTypesFailure","loadDielines","lazyLoadDielines","loadDielinesSuccess","loadDielinesFailure","loadDataPinFileTypes","lazyLoadDataPinFileTypes","loadDataPinFileTypesSuccess","loadDataPinFileTypesFailure","loadSubstrates","lazyLoadSubstrates","loadSubstratesSuccess","loadSubstratesFailure","loadRedemptionTypes","lazyLoadRedemptionTypes","loadRedemptionTypesSuccess","loadRedemptionTypesFailure","loadRequestItemTypes","lazyLoadRequestItemTypes","loadRequestItemTypesSuccess","loadRequestItemTypesFailure","loadRegions","lazyLoadRegions","loadRegionsSuccess","loadRegionsFailure","loadWarehouses","lazyLoadWarehouses","loadWarehousesSuccess","loadWarehousesFailure","loadCompanies","lazyLoadCompanies","loadCompaniesSuccess","loadCompaniesFailure","loadPartnerGroups","lazyLoadPartnerGroups","loadPartnerGroupsSuccess","loadPartnerGroupsFailure","loadDesignLineOfBusiness","loadDesignLineOfBusinessSuccess","loadDesignLineOfBusinessFailure","lazyLoadDesignLineOfBusiness","loadArtLocationsTypes","lazyLoadArtLocationsTypes","loadArtLocationsTypesSuccess","loadArtLocationsTypesFailure","loadDesignSourceTypes","lazyLoadDesignSourceTypes","loadDesignSourceTypesSuccess","loadDesignSourceTypesFailure","loadChannelTypes","lazyLoadChannelTypes","loadChannelTypesSuccess","loadChannelTypesFailure","loadPopChannelTypes","lazyLoadPopChannelTypes","loadPopChannelTypesSuccess","loadPopChannelTypesFailure","loadInventoryTypes","lazyLoadInventoryTypes","loadInventoryTypesSuccess","loadInventoryTypesFailure","loadRequestTypeInventoryTypes","lazyLoadRequestTypeInventoryTypes","loadRequestTypeInventoryTypesSuccess","loadRequestTypeInventoryTypesFailure","loadComponentTypes","lazyLoadComponentTypes","loadComponentTypesSuccess","loadComponentTypesFailure","loadPopItemTypes","lazyLoadPopItemTypes","loadPopItemTypesSuccess","loadPopItemTypesFailure","loadColorTypes","lazyLoadColorTypes","loadColorTypesSuccess","loadColorTypesFailure","loadDimensionTypes","lazyLoadDimensionTypes","loadDimensionTypesSuccess","loadDimensionTypesFailure","loadFinancialTypes","lazyLoadFinancialTypes","loadFinancialTypesSuccess","loadFinancialTypesFailure","loadPopProdEventTypes","lazyLoadPopProdEventTypes","loadPopProdEventTypesSuccess","loadPopProdEventTypesFailure","loadPopProdFundingTypes","lazyLoadPopProdFundingTypes","loadPopProdFundingTypesSuccess","loadPopProdFundingTypesFailure","loadPopProdUsageDurationTypes","lazyLoadPopProdUsageDurationTypes","loadPopProdUsageDurationTypesSuccess","loadPopProdUsageDurationTypesFailure","loadPopProdItemTypes","lazyLoadPopProdItemTypes","loadPopProdItemTypesSuccess","loadPopProdItemTypesFailure","lazyLoadPopProdCuttingTypes","loadPopProdCuttingTypes","loadPopProdCuttingTypesSuccess","loadPopProdCuttingTypesFailure","lazyLoadPopProdMaterialTypes","loadPopProdMaterialTypes","loadPopProdMaterialTypesSuccess","loadPopProdMaterialTypesFailure","lazyLoadPopProdTapeTypes","loadPopProdTapeTypes","loadPopProdTapeTypesSuccess","loadPopProdTapeTypesFailure","loadPopProdInventoryTypes","lazyLoadPopProdInventoryTypes","loadPopProdInventoryTypesSuccess","loadPopProdInventoryTypesFailure","loadPrinters","lazyLoadPrinters","loadPrintersSuccess","loadPrintersFailure","loadBifComponentTypes","lazyLoadBifComponentTypes","loadBifComponentTypesSuccess","loadBifComponentTypesFailure","loadBifFulfillmentTypes","lazyLoadBifFulfillmentTypes","loadBifFulfillmentTypesSuccess","loadBifFulfillmentTypesFailure","loadThirdPartyDataPinFileTypes","lazyLoadThirdPartyDataPinFileTypes","loadThirdPartyDataPinFileTypesSuccess","loadThirdPartyDataPinFileTypesFailure","loadThirdPartyOrderTypes","lazyLoadThirdPartyOrderTypes","loadThirdPartyOrderTypesSuccess","loadThirdPartyOrderTypesFailure","loadThirdPartyPrintOwnerTypes","lazyLoadThirdPartyPrintOwnerTypes","loadThirdPartyPrintOwnerTypesSuccess","loadThirdPartyPrintOwnerTypesFailure","loadThirdPartyCompanies","lazyLoadThirdPartyCompanies","loadThirdPartyCompaniesSuccess","loadThirdPartyCompaniesFailure","loadIhComponents","lazyLoadIhComponents","loadIhComponentsSuccess","loadIhComponentsFailure","loadIhHealthPlans","lazyLoadIhHealthPlans","loadIhHealthPlansSuccess","loadIhHealthPlansFailure","loadIhHealthPrograms","lazyLoadIhHealthPrograms","loadIhHealthProgramsSuccess","loadIhHealthProgramsFailure","clearIhHealthPrograms","loadIhPriorities","lazyLoadIhPriorities","loadIhPrioritiesSuccess","loadIhPrioritiesFailure","loadReturnFileTypes","lazyLoadReturnFileTypes","loadReturnFileTypesSuccess","loadReturnFileTypesFailure","loadImageFormatTypes","lazyLoadImageFormatTypes","loadImageFormatTypesSuccess","loadImageFormatTypesFailure","requestRefDataFeatureKey","refDataInitialState","paymentTypes","fsPaymentTypes","dielines","dataPinFileTypes","substrates","redemptionTypes","requestItemTypes","regions","warehouses","companies","partnerGroups","designLineOfBusiness","artLocationTypes","designSourceTypes","channelTypes","popChannelTypes","inventoryTypes","requestTypeInventoryTypes","componentTypes","popItemTypes","colorTypes","dimensionTypes","financialTypes","popProdEventTypes","popProdFundingTypes","popUsageDurationTypes","popProdItemTypes","popProdCuttingTypes","popProdMaterialTypes","popProdTapeTypes","popProdInventoryTypes","printers","bifComponentTypes","bifFulfillmentTypes","thirdPartyDataPinFileTypes","thirdPartyOrderTypes","thirdPartyPrintOwnerTypes","thirdPartyCompanies","ihComponents","ihHealthPlans","ihHealthPrograms","ihPriorities","returnFileTypes","imageFormatTypes","refDataReducer","createReducer","on","Object","state","action","popProdInvenprinterstoryTypes","r","ImageFormatTypes","selectRefData","createFeatureSelector","selectPaymentTypes","createSelector","selectDielines","selectRequestItemTypes","selectDataPinFileTypes","selectRedemptionTypes","selectSubstrates","selectRegions","selectWarehouses","selectCompanies","selectPopProdInventoryTypes","selectPrinters","selectPartnerGroups","selectDesignLineOfBusiness","selectArtLocationTypes","selectDesignSourceTypes","selectChannelTypes","selectPopChannelTypes","selectInventoryTypes","selectRequestTypeInventoryTypes","selectComponentTypes","selectPopItemTypes","selectColorTypes","selectDimensionTypes","selectFinancialTypes","selectPopProdEventTypes","selectPopProdFundingTypes","selectPopProdUsageDurationTypes","selectPopProdItemTypes","selectPopProdCuttingTypes","selectPopProdMaterialTypes","selectPopProdTapeTypes","selectFSPaymentTypes","selectBifComponentTypes","selectBifFulfillmentTypes","selectThirdPartyDataPinFileTypes","selectThirdPartyOrderTypes","selectThirdPartyPrintOwnerTypes","selectThirdPartyCompanies","selectIhComponents","selectIhHealthPlans","selectIhHealthPrograms","selectIhPriorities","selectIhPrioritiesPrioterized","UtilsService","priotiries","codeName","value","code","reverse","selectReturnFileTypes","selectImageFormatTypes","setUser","setUserSubstitutees","setUserTheme","setUserSettings","resetUser","userFeatureKey","userInitialState","initialized","user","substitutees","theme","settings","userReducer","selectUserState","selectUserWithSubstitutees","userState","selectUserTheme","AbstractRoleProvider","AbstractRoleUpdateAwareProvider","rolesUpdateDataSubject","Subject","S","asObservable","pipe","map","source","data","share","t","i0","_r6","ctx_r9","ctx_r21","REQUEST_ACTION_REASON_OPTIONS","InjectionToken","REQUEST_ACTION_REASON_CONTEXT","RequestActionReasonComponent","actionsReasonService","cd","fb","requestService","fileUploadService","messageService","loaderService","options","context","et","BehaviorSubject","FILE_SIZE_RESTRICTIONS","getFileTypes","FILE_TYPES","takeUntil","ngUnsubscribe$","memoize","outer","document","createElement","style","visibility","overflow","msOverflowStyle","body","appendChild","inner","scrollbarWidth","offsetWidth","parentNode","removeChild","_attachmentFileJobs","set","attachmentFileJobs","next","_excludedFileJobs","excludedFileJobs","Array","from","attachmentInput","nativeElement","files","filter","f","size","Ie","fileSize","forEach","showSystemMessage","sizeNumber","sizeType","file","progress","cancelled","link","uploadedFile","setTimeout","markForCheck","attachmentIndex","we","actionName","getAction","_a","ie","_b","showLabel","ge","_c","fieldLabel","Re","_d","position","getPosition","Fe","_e","mainButtonTitle","getMainButtonTitle","isRequired","getIsRequired","ze","_f","form","group","comment","get","setValidators","Validators","makeTimer","job","ReplaySubject","requestAttachmentUploadLink","requestId","onSubscribe","defer","doOnSubscribe","switchMap","uploadFileWithProgress","uploadLink","showLoader","event","type","HttpEventType","Math","floor","loaded","total","of","delay","scanUploadFile","uploadId","name","res","FILESCANCODE","uploadUrl","fileName","indexesToRemove","element","index","push","removeAttachment","console","error","EMPTY","finalize","hideLoader","shareReplay","bufferSize","refCount","combineLatest","attachmentJobs","Je","excludedJobs","activeJobs","includes","aj","resolutionJobs","merge","subscribe","valid","controls","confirmAction","Promise","all","fileJob","toPromise","keys","control","key","pristine","markAsTouched","updateValueAndValidity","onlySelf","emitEvent","cancelAction","invalid","hasError","Ue","WithDestroy","selectors","ElementRef","ctx","ARTWORK_STATUSES","unreviewed","approved","rejected","ARTWORK_SUMMARY_STATUSES","MAX_ITEMS_PER_REQUEST","MAX_ITEMS_PER_IMAGE_REQUEST","NOTE_MAX_LENGTH","QUANTITY_MAX_LENGTH","PKID_MAX_LENGTH","PRICE_PATTERN","REQUEST_NAME_PATTERN","INTEGER_PATTERN","INTEGER_PATTERN_EXCEPT_ZERO_VALUE","IMAGE_DENOM_PATTERN","MAX_PO_TOTAL","MAX_PO_SUB_TOTAL","MAX_POP_PROD_COST_TOTAL","MAX_BIF_COST_TOTAL","MAX_REBILL_TOTAL","MAX_BIF_REBILL_TOTAL","IH_MAX_PACKAGES","IH_MAX_COMPONENTS_PER_ITEM","IH_LABELS_QUANTITY_MULTIPLIER","THIRD_MAX_RANGES_PER_ITEM","POP_PRODUCTION_REQUEST","POP_DESIGN_REQUEST","CARD_DESIGN_REQUEST","PRODUCTION_REQUEST","FINANCIAL_SERVICES_REQUEST","BIF_PRODUCTION_REQUEST","PRODUCTION_REQUEST_3RD_PARTY","IH_PRODUCTION_REQUEST","IMAGE_REQUEST","SUPPORTED_REQUEST_TYPES","DUPLICATE_SUPPORTED_REQUEST_TYPES","CHANGE_OWNER_REQUEST_TYPES","REQUEST_TYPE","ActionsReasonService","currentAction","currentPosition","title","actionReason","buttonClicked","setAction","attachments","arguments","AssigneeService","errorHandlingHttpClient","values","httpParams","HttpParams","append","v","API","params","query","l","FileDownloadService","errorHandlingHttp","url","payload","resolve","reject","observe","responseType","post","catchError","e","resp","headers","se","getFileNameFromHeader","getFileNameFromUrl","saveAs","has","components","decodeURIComponent","split","length","disposition","utf8FilenameRegex","test","exec","filenameStart","toLowerCase","indexOf","partialDisposition","slice","matches","x","FileUploadService","translateService","fileType","sizeLimit","throwError","Error","put","pendingUploads","reportProgress","uploadIndex","Z","uploadCanceled","splice","repeat","fileValidationResponse","PENDING","tap","UNSAFE","instant","first","requestType","attachmentFileType","requestItemId","createUploadItemArtworkUrl","shouldRequestHasFileTypeParameter","uploadAndCreateAttachment","createAttachmentUrl","Ce","SAFE","createAttachmentRequest","attachmentId","apiUrl","delete","O","RequestsService","http","userService","eventService","warehousesObservable","replayAndClone","companiesObservable","lineOfBusinessObservable","channelTypesObservable","inventoryTypesObservable","requestTypeInventoryTypesObservable","europeanCountriesObservable","fileTypesWhiteList","designerList","nameBeginning","groupKeys","UserGroups","requestTypes$","details","draft","requestName","requestObj","resetRequestDetails","downloadFile","poId","F","item","getFileUrl","id","createProofOfPayments","reqItemId","reqType","J","createExternalPin","username","getCurrentUserName","status","rejectionReason","isPrinterProofs","itemId","ue","createSowAttachment","queryParams","WPN","wpnDetailsByWpnId","limit","merchantName","request","observable","err","poDetails","V","emit","eventName","Events","actionType","stageCode","attachmentUploadIds","reqObj","assign","callPO","response","objectObservable","cloneDeep","requestDetails","getVersions","versionsUri","printerId","milestoneId","Ae","createCardProductionWorkItemMilestoneAsn","printerItem","milestone","printerDetails","createArtworkAttachment","ctx_r11","ctx_r13","ctx_r14","ctx_r15","ChipsComponent","ctrl","elements","array","valueAccessor","chipsGroup","formControl","isArray","clear","FormControl","valueValidator","fn","onChangeFn","onTouchFn","isDisabled","c","removeAt","findIndex","update","keyboardEvent","inputElement","removeElement","pop","pastedText","clipboardData","getData","preventDefault","addElement","input","target","chipInput","newChipInput","trim","k","WithCheckControlUpdates","self","MatChipInput","ChipsModule","CommonModule","ReactiveFormsModule","FormsModule","CommonDirectivesModule","CustomFieldErrorMatcher","customControl","touched","AppCurrencyInputComponent","d","digitGroupSeparator","decimalCharacter","decimalCharacterAlternative","minimumValue","maximumValue","decimalPlaces","decimalPlacesShownOnBlur","watchExternalChanges","defaultOptions","_required","_readonly","_maxLength","errors","getControlErrorMessage","changes","instance","decimals","maxValue","currencyControlOptions","onChange","onTouched","AutonumericDirective","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","AppDatePickerComponent","renderer","EventEmitter","moment","toDate","DatePickerHeaderComponent","hasFocusInitial","getAttribute","removeAttribute","oldTouched","oldValid","disabled","oldDisabled","datePickerToggle","datePickerInput","setDisabledState","$","_changeDetectorRef","testId","valueChanges","ngUnsubscribe","newDate","dateSelected","statusChanges","toggleElement","querySelector","addClass","removeClass","de","MatDatepickerToggle","MatDatepickerInput","_calendar","_dateAdapter","_dateFormats","cdr","stateChanges","_destroyed","complete","format","activeDate","display","monthYearA11yLabel","mode","addCalendarMonths","addCalendarYears","MAT_DATE_FORMATS","ctx_r3","ctx_r5","DAYS_OF_WEEK_SHORT","BUTTON_LOCATIONS","INSIDE","OUTSIDE","AppDateRangeComponent","separator","daysOfWeek","R","ranges","showRanges","subtract","add","Event","dateString","locale","start","end","isValid","setErrors","incorrectDate","le","G","setValue","startDate","endDate","rangeSelected","pickerDirective","open","reset","DaterangepickerDirective","AppInputFormComponent","formControlAccessor","base","fm","elRef","He","currencySymbol","currencySymbolPlacement","roundingMethod","undefined","monitor","focused","origin","autoFocus","focusVia","matInput","stopMonitoring","numeric","oldValue","checkControlChanges","JSON","stringify","oldErrors","bind","MatInput","AppInputComponent","_isDisabled","emptyInputBehavior","AppPercentInputComponent","AppTextareaFormComponent","b","textarea","oldControl","U","BackLinkComponent","CheckboxComponent","ae","change","_value","val","isChecked","K","decls","FileUploadProgressComponent","ctx_r10","ctx_r28","ctx_r34","ctx_r41","FileUploaderComponent","utilsService","translate","filesLoadingSubject","z","fileTypesToAccept","restrictionOptions","ve","me","initialFiles","currentValue","proof","fileTypeAccepted","fileExtensionAccepted","filtered","transform","$event","filterFileTypes","isRestrictionSizeWarningExist","prepareFilesList","downloadAttachment","fileUrl","getBlob","blob","Blob","URL","createObjectURL","window","uploadFailed","usePageMaskLoader","removeFunction","triggerActionHistoryUpdate","onUpdateFiles","beforeUploadFunction","filesToUploadNumber","isValidByRestrictionsOptions","uploaded","uploadFunction","round","progressObject","itemToLinkId","linkFileToReqItem","proceededFilesNumber","fileDropEl","fileValidBySize","downloadItem","downloadItemFile","Te","_r2","InputChipsComponent","itemsControl","itemsArr","items","h","setItems","Set","ctx_r7","InputSearchDropdownComponent","q","ItemsFormCtrl","disable","inputCtrl","enable","filteredItemsList","itemsList","ItemsFormFilterCtrl","_onDestroy","debounceTime","search","searching","onSearch","switchMapTo","isLoading","loading","C","N","resultControl","getOptionLabel","opened","isEmpty","itemLabelFn","itemLabel","onClear","dataset","clearInputValue","ItemsSelect","toggle","content","regex","RegExp","replace","originalContent","prefilteredExtras","extras","join","Oe","MAT_INPUT_VALUE_ACCESSOR","ItemListProvider","ctx_r8","MultiSelectSearchDropdownComponent","ngControl","Map","loadingSubject","j","matSelect","_propagateChanges","localControl","obj","selectedItemList$","filterControl","startWith","cachedValues","itemListProvider","loadValues","addToCached","fetched","assignLabels","label","searchedItemList$","debounce","timer","searchValues","list","visibleList","showNotFound","selectionListCombined$","isOverlayOpened","valueChange","stopPropagation","take","fil","ce","MatSelect","MAT_SELECT_CONFIG","useValue","disableOptionCentering","RadioGroupFormComponent","defaultSelectedIndex","buttonValues","selectItem","errorMessage","Link","Quill","PROTOCOL_WHITELIST","CustomLinkSanitizer","sanitizedUrl","some","protocol","startsWith","_MatQuillMixinBase","mixinErrorState","mixinDisabled","MatQuillBase","_defaultErrorStateMatcher","_parentForm","_parentFormGroup","injector","elementRef","domSanitizer","platformId","zone","service","Et","QuillEditorBase","_MatQuillBase","defaultErrorStateMatcher","parentForm","parentFormGroup","doc","vt","contentChangedSubscription","onContentChanged","distinctUntilChanged","updateErrorState","blurSubscription","onBlur","focusSubscription","onFocus","unsubscribe","coerceBooleanProperty","empty","valueGetter","quillEditor","editorElem","writeValue","childNodes","blur","focus","ids","_describedBy","closest","PLATFORM_ID","DOCUMENT","hostVars","nextUniqueId","QuillInputComponent","controlType","concat","_testId","setAttribute","MatFormFieldControl","RichTextComponent","_extras","matEditor","ke","CustomHintDirective","RichTextModule","userNameComparator","a","userName","optionValueComparatorFactory","optionName","DEFAULT_COMPARATORS","mdmId","isEqual","SelectSearchDropdownComponent","normalizedItemList","il","itemListValues","itemsFormCtrl","boundedValue","onActionSave","filteredItemsList$","te","_itemsFormCtrl","ItemsAssignSelect","registerOnChange","registerOnTouched","filterItemsMulti","setInitialValue","select","trackDisabledStateForItemsCtrl","Me","matFormField","registerOnDisabledChange","Ne","compareWith","comparators","comparator","filteredItemsNoSearch","level","prefilteredItems","filteredItem","prefilteredByExtrasItems","filteredItems","pfi","parent","found","be","foundExtras","fe","close","isDropdownOpened","option","MatFormField","args","partNumber","merchantId","reqId","fileId","requestAlternateId","orderAlternateId","productUpc","artworkFileId","versionId","tpsId","substituteUsername","requestNumber","purchaseOrderNumber","s","getPrinterWorkItems","updateMilestoneDetails","doBulkWorkItemMilestoneUpdate","UpdateTriggerContainer","ngUnsubscribeField","ChangeDetectorRef","updateTriggerListenerChangeDetector","updateFormTrigger","updateTriggerContainer","updateTriggerSubscription","W","WithUpdateTriggerListener","mixinHasUpdateTriggerListener","controlAccessor","checkControlUpdatesCd","getCheckControlUpdatesTarget","PAGES_CONFIG","DASHBOARD","REQUESTS","REPORTS","HELP","VERSIONS","ERROR","ERROR_AUTH","SUBSTITUTES","APPROVALS","ERRORS","CARD_PRODUCTION","ARTWORK","ASN","PROOF_OF_PAYMENT","EXTERNAL_PIN","PO_SOW","CARD_DESIGN","ART","POP_DESIGN","FS_FILE","POP_PRODUCTION","OTHER","PARTNER_ART","PRINTER_PROOF","PRINTER_QUOTE","FINANCIAL_SERVICES","FINANCE","BIF_PRODUCTION","THIRD_PARTY_PRODUCTION","OPS","IMAGE","ART_FILE","IH_PRODUCTION","DEFAULT","DEFAULT_DESIGN","GROUP_FN_PRODUCEIT_3RD_PARTY_CARD_PRODUCTION_MANAGER","GROUP_FN_PRODUCEIT_CARD_DESIGN_TRAFFIC_MANAGER","GROUP_FN_PRODUCEIT_POP_DESIGN_TRAFFIC_MANAGER","GROUP_FN_PRODUCEIT_DESIGNER","GROUP_FN_PRODUCEIT_CREATIVE_DIRECTOR","PermissionGroups","REQUEST_DETAILS_REQUESTER","CARD_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER","POP_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER","ASSIGNED_TM","ASSIGNED_DESIGNER","SpecificRoles","TrafficManagers","POP_DESIGN_REQUEST_STAGE_DESIGN_PROCESS","POP_DESIGN_REQUEST_STAGE_TM_REVIEW_2","POP_DESIGN_REQUEST_STAGE_CREATIVE_DIRECTOR_REVIEW","CARD_DESIGN_REQUEST_STAGE_DESIGN_PROCESS","CARD_DESIGN_REQUEST_STAGE_TM_REVIEW_2","CARD_DESIGN_REQUEST_STAGE_CREATIVE_DIRECTOR_REVIEW","UserRoles","CREATE_REQUEST","REQUEST_DETAILS","REQUEST_REVIEW","FINANCE_APPROVAL","UPLOAD_ARTWORK","ART_APPROVAL","COMMITTEE_APPROVAL","PO_APPROVAL","ENABLED","PPM","PRINT","PRODUCTION_MANAGER","TRAFFIC_MANAGER","PRODUCTION_TRAFFIC_MANAGER","p","VIEW","PRODUCTION_REVIEW","PRINTER_QUOTE_REQUEST","INTERNAL_REQUESTOR_REVIEW","PRINTER_PROOF_REQUEST","INTERNAL_PRINTER_PROOF_REVIEW","POP_PRODUCTION_TRAFFIC_MANAGER","PO","ART_REQUEST_APPROVAL","ARTWORK_UPLOAD_AND_COST_QUOTE_CONFIRMATION","PO_SOW_TPS","CONFIRM_PRINTER","INTERNAL_EXTERNAL_OPERATIONS","IN_PRODUCTION","IH_QUOTE_PROCESS","TM_REVIEW","DESIGN_PROCESS","TM_REVIEW_2","TRAFFIC_MANAGERS","CAN_ASSIGN_TM","TM_AUTO_ASSIGN","CAN_ASSIGN_DESIGNER","DESIGNER_AUTO_ASSIGN","PO_REPORT_ROLE","SIGNED_PO_REPORT_ROLE","TRAFFIC_TRACKER_ROLE","APP","MIMIC_USER","ADMIN","SUPER_USER","APPROVER","STAGE_ONE_APPROVER","STAGE_TWO_APPROVER","ALLOWED_PRINT_FINANCE_PO","SETTINGS","EMAIL","AUTONUMERIC_CONTROL_VALUE_ACCESSOR","elm","defaults","AutoNumeric","getOptions","normalized","unsubscribeFormat","listen","formatted","unsubscribeRawValueModified","autonumericUpdateTriggerEventType","detail","newRawValue","rawValueModified","getFormatted","predefined","normalize","strategy","remove","initialValue","onTouchedFn","setProperty","domElement","m","ClickNoSelectionDirective","subscription","selection","getSelection","toString","clickNoSelection","o","ClickStopPropagationDirective","propagationStopped","templateRef","DndDirective","evt","fileOver","dataTransfer","fileDropped","EasyAriaDirective","tagName","setStyle","RendererStyleFlags2","removeListener","dispatchEvent","TooltipDirective","el","viewContainerRef","hide","tooltip","show","create","setPosition","tooltipContent","tooltipText","createText","template","ref","createEmbeddedView","rootNodes","detectChanges","customClass","longTextTooltip","top","left","hostPos","getBoundingClientRect","tooltipPos","scrollPos","isFixed","pageYOffset","documentElement","scrollTop","height","offset","width","bottom","right","UserPermissionsV2Directive","viewContainer","userPermissionsService","roleProvider","roleUpdates$","userPermissionsSubject","roles","isAllowed$","exhaustMap","permission","isActionAvailable","arrayPermission","flat","updateContainerRef","isAllowed","allowedChanged","currentEmbeddedView","UserPermissionsDirective","D","checkUserPermissions","AuthGuard","router","pitMsalService","stateProviderService","userPermissionService","isLoggedInProduceit","login","userGroupRoles","setLoggedInProduceit","setUserRoles","updateUserDetails","HttpErrorResponse","putParam","navigate","logout","TranslationLoadedGuard","pitTranslateLoader","translationLoaded$","createUrlTree","UsernameHeaderInterceptor","clone","setHeaders","encodeURIComponent","handle","DEFAULT_FILE_SIZE_RESTRICTION","GLOBAL","UserTheme","DatePipeTz","timezone","DatePipe","LOCALE_ID","pure","useClass","ToSelectSearchDropdownOptions","JoinPipe","labelField","Function","valueField","extrasField","flatMap","flatternOptions","children","labelFieldInput","createLabelFromValue","flatternedItems","getValue","getLabel","getExtras","optionIndex","find","errorCodes","ErrorHandlingHttpClient","errorOptions","handleError","method","errorPromise","Response","text","then","parse","errorDetailsJson","statusText","message","displayError","errorDetails","duration","CardDesignEvents","PopDesignEvents","PopProductionEvents","FsrEvents","BifEvents","ThirdPartyEvents","IhEvents","ImageEvents","EventService","subject$","takeUntilBy","LoaderService","loader","promise","ctx_r6","SystemMessageComponent","toastrService","toastPackage","ngZone","easeTime","config","easing","originalTimeout","timeOut","toastRef","afterActivate","activateToast","manualClosed","timeoutReset","resetTimeout","countDuplicate","duplicatesCount","count","clearTimeout","timeout","hideTime","clearInterval","intervalId","disableTimeOut","extendedTimeOut","outsideTimeout","Date","getTime","progressBar","outsideInterval","updateProgress","func","runOutsideAngular","runInsideAngular","setInterval","run","now","progressAnimation","mainElement","toastId","trigger","opacity","transition","animate","changeDetection","MessageService","toastr","sanitizer","toastrConfig","toastComponent","autoDismiss","positionClass","required","notEmpty","minlength","requiredLength","maxlength","max","min","unique","maxCalculation","fieldName","pattern","requiredPattern","String","wpnError","upcError","email","notFound","userValidator","printerInfoValidator","packageIdTBDValidator","productionQtyValidator","cardProductionQtyValidator","header","extendedTimeoutDuration","enableHtml","bypassSecurityTrustHtml","sanitize","SecurityContext","messageClass","closeButton","tapToDismiss","NewRequestComponent","dialogRef","env","requestTypes","roundDuration","expectedDurationWeeks","expectedDurationDays","ye","MAT_DIALOG_DATA","RequestNameFormComponent","dataItem","E","buildForm","maxNameLength","minNameLength","redirect","ConfirmCloseModalComponent","confirmBtn","closeBtn","isCloseModal","TruncateMiddleComponent","parentCd","Ge","contentSubject","containerContent","Le","projectedContentContainer","innerHTML","content$","flexBasis","$e","minStartingChars","minLastingChars","substring","debug","ctx_r45","ctx_r58","ctx_r60","ctx_r62","ctx_r64","ctx_r72","ctx_r74","ctx_r80","ctx_r82","ctx_r83","ctx_r84","ctx_r85","ctx_r86","ctx_r93","ctx_r101","ctx_r109","ctx_r111","ctx_r121","ctx_r123","ApprovalManagerComponent","overlay","pdfViewerService","approvalManagerService","selectedRequestItemId","selectedArtworkFileId","selectedVersionId","onRequestNameChange","onRequestItemsChange","requestItems","selectedRequestItem","artworkFiles","getArtworkFiles","selectedArtworkFile","setSelectedRequestItem","setSelectedArtworkFile","showViewer","getRequestItemLabel","propagateArtworkFile","latestRejectedVersions","artwork","versions","resolutions","stageType","selectedArtwork","selectedArtworkFileIndex","targetVersion","getActiveVersion","setSelectedVersion","canUpload","canUploadSelectedArtwork","canReview","selectedVersion","canReviewSelectedArtwork","version","oldId","compareVersion","setCompareVersion","artworkFile","active","reviewFinalized","canApprove","getLatestResolution","rejectedArtworks","hideViewer","openReasonModal","__awaiter","addVersionResolution","Ye","uploadVersion","comparisonOn","enableCompareMode","selectedVersionIndex","downloadVersion","attachment","triggerDownloadWithAnnotations","triggerDownloadAllWithAnnotations","isReject","setMainButtonTitle","setIsRequired","positionStrategy","flexibleConnectedTo","withPositions","originX","originY","overlayX","overlayY","offsetX","offsetY","overlayRef","hasBackdrop","scrollStrategy","scrollStrategies","block","reasonPortal","ComponentPortal","attach","isRedConfirmButton","getReason","detach","xt","getActiveVersionForFile","activeVersion","filledRI","ri","every","rejectedOrApproved","inProgress","latestResolution","reviewer","ModalService","dialog","openDialogs","openModal","afterClosed","openRequestNameModal","shouldHideConfirmBtn","approvalManagerConfig","MatDialogConfig","disableClose","panelClass","backdropClass","maxWidth","dialogClass","autofocus","extra","PdfViewerService","rendererFactory","createRenderer","compareModeSubject$","turnOn","approvalManagerService$","am","selectedVersionSubject$","compareVersionSubject$","initializedSubject$","viewer","getElementById","downloadSubject$","downloadAllSubject$","PitMsalService","msalService","getAllAccounts","getAccount","accountSubject","addEventCallback","eventType","EventType","account","logoutRequest","silentRequest","acquireTokenSilent","acquireTokenRedirect","loginRedirect","hash","handleRedirectObservable","PitTranslateLoader","prefix","suffix","translationLoadedSubject","lang","forkJoin","resources","environment","reduce","StateProviderService","path","stateParamMap","param","UserPermissionsService","setUserNameSubscription","userRoles","userRolesSubject","permissionChecks","takeWhile","permissionAllowed","scan","acc","getRoles","specificRoles","usernameChange","currentUserName","SettingsModalComponent","dialogData","settings$","selectedIndex","section","initForm","loadSettingsIntent","patchValue","displayMode","emailSignature","EMAIL_SIGNATURE","field","markAllAsTouched","UserSettingsService","store","modalService","dispatch","getLocalUserTheme","newTheme","setLocalUserTheme","localStorage","getItem","setItem","UserService","newUserName","nameSubject","getAccount$","authAccount$","removeItem","fullyLoaded","loggedInProduceit","userDetails","userDetailsSubject","substitutedUsers","authUserEmail","realUserName","mimicUserName","toLocaleLowerCase","systemUser","targetUser","targetUserLogin","fullName","firstName","lastName","bytes","dm","sizes","log","parseFloat","pow","toFixed","sort","codeA","toUpperCase","codeB","parentCode","child","merchant","fcmsId","M","nameA","nameB","date1","createdAt","date2","Number","codeNames","logInvalidControls","touchFormControls","types","table","printer","INTERNAL","isIncludesType","EXTERNAL","CERTIFIED_WRAP","CERTIFIED_MULTIPACK","reqItems","itemsControlsArray","idx","itemForm","at","merchantsArray","merchants","country","accountManagers","formArr","sum","getRawValue","curr","quantity","hasNotZeroSum","formGroup","versionQuantities","compareSum","multiplier","multiplicity","getArtworkFileStatuses","notAllApproved","isAnyRejected","af","validationObject","ac","noChanges","arr","allInFalse","evaluator","actual","endControl","startControl","bigStart","BigJs","bigEnd","gt","markAsUntouched","startRange","endRange","checkboxTrueValidator","masterCaseSizeControl","caseSizeControl","sortFields","sortBy","restrictionSizeTypeIndex","fileSizeTypeIndex","maxBytesLength","maxBytesLabel","TextEncoder","encode","warehouse","siblingName","target$","uniqueSymbol","Symbol","withLatestFrom","skip","withLatestValue","appendedValue","SharedModule","CurrencyPipe","imports","ObserversModule","AutonumericModule","NgxMatSelectSearchModule","TranslateModule","NgxDaterangepickerMd","OverlayModule","OverlayscrollbarsModule","ToastrModule","RouterModule","QuillModule","customOptions","import","whitelist","appVersion","require","newVersionPolingInterval","production","locales","defaultLocale","commitId","DashboardComponent","titleService","setTitle","HelpComponent","ctx_r4","ERROR_PAGE_REFRESH_INTERVAL","ErrorPageComponent","errorPageRefreshInterval","re","errorType","getParam","serviceUnavailable","interval","w","g","location","reload","u","HasParamGuard","requiredParams","hasAllRequiredParams","skipRedirect","navigateFallback","y","VersionComponent","envService","api","ui","updateVersions","getAPIversion","getFnVersion","fnVersion","ctx_r1","ErrorAuthComponent","authService","realUserEmail","isMimicMode","currentUser","userName1","setCurrentUserName","RootRedirectGuard","ugr","parseUrl","redirectRoute","getUserRoles","ListDataSource","users","makeLabel","routes","loadChildren","RequestsModule","canActivate","MsalGuard","component","ReportsModule","pathMatch","ApprovalsModule","FeaturesComponent","requestsService","assigneeService","Q","checkbox","currency","deliveryDate","dateRange","to","textInput","numberInput","chips","httpSearchDropdown","httpSearchDropdownMultiple","dropdown","dropdownMultiple","percent","richText","radioGroup","isLoading$","getMerchants","merchantSearch","isUserLoading","userListProvider","searchUsers","userSearch","AppRoutingModule","relativeLinkResolution","ApplicationInsightsService","appInsights","ApplicationInsights","instrumentationKey","appInsightsKey","loadAppInsights","loadCustomTelemetryProperties","createRouterSubscription","setUserId","clearAuthenticatedUserContext","setAuthenticatedUserContext","uri","trackPageView","trackException","exception","addTelemetryInitializer","envelope","baseData","properties","ApplicationPlatform","ApplicationName","events","NavigationEnd","logPageView","urlAfterRedirects","VERSION_CHECK_POLLING_INTERVAL","NewVersionService","httpClient","polingInterval","as","versionCheckTimer","checkVersion","oldVersion","unsubscribeSubject","NAV_MENU","route","permissions","un","ProfilePictureProvider","reader","FileReader","onloadend","result","readAsDataURL","base64","fetch","ProfilePictureCacheWrapper","profilePictureProvider","accountName","accountCacheKey","cachedItem","itemValue","base64ToBlob","getProfilePicture","profilePicture","blobToBase64","base64ProfilePicture","TTL","xn","NavProfilePictureComponent","getLoggedInProduceit","cachedWrapper","userImage","bypassSecurityTrustUrl","ctx_r26","ctx_r27","ctx_r30","ctx_r32","ctx_r36","ctx_r40","ctx_r42","NavHeaderPanelComponent","userSettingsService","translateSerivce","FormGroup","enableDarkMode","settingsVisible$","substituteEnabled","initialUserName","isPoApprovals","apiVersion","subscriptions","loggedIn","userTheme$","darkModeForm","updateUserTheme","darkModeEnabled","buttonLoader","createRequest","openNewRequestModal","postCreateNewRequest","sub","loginClicked","logoutClicked","authLogout","resetMimicUser","substitutes","mimicUser","authUserName","displayName","yt","PdfViewerComponent","Qe","pdftronLicenseKey","fullAPI","licenseKey","enableAzureWorkaround","disabledElements","WebViewer","annotManager","exportAnnotations","saveComments","ot","currentVersionObs","selectedVersionChanged","compareVersionObs","compareVersionChanged","downloadWithAnnotObs","downloadClicked","downloadAllWithAnnotObs","getDownloadAllSubject","compareModeChanged","compareMode","initializedChanged","initializeViewers","initMainViewer","initCompareViewer","vwInstances","wvInstance","compareWvInstance","viewers","Core","documentViewer","docContainers","contentDocument","compareViewer","syncZoom","syncRotation","addScrollListener","disableTools","initClips","initToolListeners","currentVersion","loadDoc","filename","downloadWithAnnotations","downloadAllWithAnnotations","WebViewerFunc","webViewerConfig","userTheme","UI","setTheme","annotationManager","addEventListener","annotations","I","imported","verifyAnnotationCanBeAdded","updateAnnotations","initAnnotationUser","loadAnnot","isDownloadAllInProgress","fileAnnotations","annotation","getFileData","lobs","lob","deleteAnnotations","downloadPdf","loadedSubject","removeEventListener","onDocumentLoaderCallback","It","getComments","comments","importAnnotations","Ft","Se","closeDocument","getDownloadRequest","downloadRequest","extension","getVersionFileExtension","loadDocument","customHeaders","PDFNet","runWithoutCleanup","PDFDoc","newDoc","initSecurityHandler","lock","Filter","createURLFilter","tiffFile","Convert","fromTiff","unlock","getUserDetails","setCurrentUser","getLocalStorageOpenNotesKey","openElements","iframeWindow","frameElement","getZoomLevel","zoom","setZoomLevel","docViewer","getRotation","rotation","setRotation","documentContainer","onscroll","originalScroller","syncScrolls","scrollLeft","scrollTimeout","timeoutForIE","dateAndTime","DateModified","toUTCString","selectAnnotation","focusNote","Id","dangerouslySetNoteTransformFunction","wrapper","div","href","onclick","fileMetadata","getMetadata","formatDate","getReplies","annotationReply","replyDateContainer","getFileMetadata","disableElements","initFileClip","isElementOpen","disposeViewer","dispose","Ze","AppComponent","appInsightsService","broadcastService","errorHandler","newVersionService","msalGuardConfig","getUserDetails$","FontFaceObserver","load","catch","checkAccount","loginSubscription","msalSubject$","logoutErrorsCount","logoutSubscription","warn","InteractionRequiredAuthError","authRequest","authError","allowLogout","spinnerStatus","isLoader","checkMimic","trackNewVersionChanges","setAuthUserName","initiate","rel","media","head","getElementsByTagName","primaryStyles","insertBefore","nextSibling","observe$","hasNewVersion","REFRESH_MESSAGE","mapTo","MSAL_GUARD_CONFIG","DashboardModule","EnvServiceProvider","useFactory","envKey","browserWindowEnv","hasOwnProperty","deps","ErrorPageModule","TranslatePipe","HelpModule","NavHeaderModule","MatListModule","loadSubstitutes","reloadSubstitutes","loadSubstitutesSuccess","loadSubstitutesFailure","deleteSubstitute","substituteFeatureKey","substituteInitialState","scope","substituteReducer","reducers","hr","metaReducers","RequestRefDataEffects","actions$","createEffect","ofType","refdataInitialState","sortAZNames","consoleListPrinters","healthPlanCode","SubstituteEffects","dataProvider","forwardData","substituteUserName","UserEffects","MissingTranslationService","Fr","isIe","BrowserService","navigator","userAgent","msalApplicationScope","Mr","adClientId","msalProtectedResourceMap","interactionType","InteractionType","scopes","prompt","loginFailedRoute","msalInterceptorConfig","protectedResourceMap","XWwwUrlEncodedParamEncoder","EncodeHttpParamsInterceptor","req","encoder","fromString","ApplicationInsightsErrorHandler","logException","SubstituteDepsModule","selectSubstituteState","selectSubstitutes","selectSubstitutesLoaded","selectSubstitutesLoading","selectSubstitutesScope","SubstituteService","substitute","ctx_r2","UserListDataSource","EditSubstituteFormComponent","controlContainer","o1","o2","AddSubstituteComponent","substituteService","is_permanent","substituteUser","errorSubject","canEditUser","isPermanent","add$","responses","hasSuccessResponse","EditSubstituteComponent","Nt","Mt","edit$","ctx_r23","SubstituteListComponent","translatePipe","handleAfterClosed","dialogResponse","openConfirmationModal","confirm","SubstitesComponent","scopeSubject","load$","loading$","SubstituteRoutingModule","SubstituteModule","VersionModule","NewVersionModule","ngModule","providers","HttpClientModule","disableAnimations","AppModule","MomentSettingsInitializer","bootstrap","ErrorHandler","HTTP_INTERCEPTORS","MsalInterceptor","APP_INITIALIZER","MAT_MOMENT_DATE_ADAPTER_OPTIONS","useUtc","MAT_FORM_FIELD_DEFAULT_OPTIONS","hideRequiredMarker","BrowserModule","BrowserAnimationsModule","MsalModule","PublicClientApplication","auth","clientId","authority","_","tenantId","redirectUri","postLogoutRedirectUri","navigateToLoginRequestUrl","cache","cacheLocation","BrowserCacheLocation","storeAuthStateInCookie","system","loggerOptions","loggerCallback","piiLoggingEnabled","StoreModule","EffectsModule","TranslateLoader","missingTranslationHandler","MissingTranslationHandler","defaultLanguage","StoreDevtoolsModule","enableProdMode","__NgCli_bootstrap_1","bootstrapModule","je"],"sourceRoot":"webpack:///","sources":["./src/app/env.service.ts","./src/app/material.module.ts","./src/app/nav-header/components/settings-modal/settings-modal.model.ts","./src/app/reducers/ref-data/refdata.actions.ts","./src/app/reducers/ref-data/refdata.reducer.ts","./src/app/reducers/ref-data/refdata.selectors.ts","./src/app/reducers/user/user.actions.ts","./src/app/reducers/user/user.reducer.ts","./src/app/reducers/user/user.selector.ts","./src/app/requests/classes/role-provider.ts","./src/app/requests/classes/role-update-aware-provider.ts","./src/app/requests/components/request-action-reason/request-action-reason.component.html","./src/app/requests/components/request-action-reason/request-action-reason.component.ts","./src/app/requests/constants/artwork-file-statuses.constants.ts","./src/app/requests/constants/request-details.constants.ts","./src/app/requests/constants/request-types.constant.ts","./src/app/requests/services/actions-reason.service.ts","./src/app/requests/services/assignee.service.ts","./src/app/requests/services/file-download.service.ts","./src/app/requests/services/file-upload.service.ts","./src/app/requests/services/requests.service.ts","./src/app/shared/components/app-chips/chips.component.html","./src/app/shared/components/app-chips/chips.component.ts","./src/app/shared/components/app-chips/chips.module.ts","./src/app/shared/components/app-currency-input/app-currency-input.component.html","./src/app/shared/components/app-currency-input/app-currency-input.component.ts","./src/app/shared/components/app-date-picker/app-date-picker.component.html","./src/app/shared/components/app-date-picker/app-date-picker.component.ts","./src/app/shared/components/app-date-picker/date-picker-header/date-picker-header.component.ts","./src/app/shared/components/app-date-picker/date-picker-header/date-picker-header.component.html","./src/app/shared/components/app-date-range/app-date-range.component.html","./src/app/shared/components/app-date-range/app-date-range.component.ts","./src/app/shared/components/app-input-form/app-input-form.component.html","./src/app/shared/components/app-input-form/app-input-form.component.ts","./src/app/shared/components/with-control-check/with-control-check.mixin.ts","./src/app/shared/components/app-input/app-input.component.html","./src/app/shared/components/app-input/app-input.component.ts","./src/app/shared/components/app-percent-input/app-percent-input.component.html","./src/app/shared/components/app-percent-input/app-percent-input.component.ts","./src/app/shared/components/app-textarea-form/app-textarea-form.component.html","./src/app/shared/components/app-textarea-form/app-textarea-form.component.ts","./src/app/shared/components/back-link/back-link.component.ts","./src/app/shared/components/back-link/back-link.component.html","./src/app/shared/components/checkbox/checkbox.component.html","./src/app/shared/components/checkbox/checkbox.component.ts","./src/app/shared/components/file-upload-progress/file-upload-progress.component.html","./src/app/shared/components/file-upload-progress/file-upload-progress.component.ts","./src/app/shared/components/file-uploader/file-uploader.component.html","./src/app/shared/components/file-uploader/file-uploader.component.ts","./src/app/shared/components/input-chips/input-chips.component.html","./src/app/shared/components/input-chips/input-chips.component.ts","./src/app/shared/components/input-search-dropdown/input-search-dropdown.component.html","./src/app/shared/components/input-search-dropdown/input-search-dropdown.component.ts","./src/app/shared/components/multiselect-search-dropdown/item-list.provider.ts","./src/app/shared/components/multiselect-search-dropdown/multiselect-search-dropdown.component.html","./src/app/shared/components/multiselect-search-dropdown/multiselect-search-dropdown.component.ts","./src/app/shared/components/radio-group-form/radio-group-form.component.html","./src/app/shared/components/radio-group-form/radio-group-form.component.ts","./src/app/shared/components/quill/quill.component.ts","./src/app/shared/components/rich-text/rich-text.component.html","./src/app/shared/components/rich-text/rich-text.component.ts","./src/app/shared/components/rich-text/rich-text.module.ts","./src/app/shared/components/select-search-dropdown/select-search-dropdown.component.html","./src/app/shared/components/select-search-dropdown/select-search-dropdown.component.ts","./src/app/shared/components/with-destroy/with-destroy.mixin.ts","./src/app/shared/constants/api.constants.ts","./src/app/shared/constants/form-field.constant.ts","./src/app/shared/constants/pages.constants.ts","./src/app/shared/constants/upload-restrictions.constants.ts","./src/app/shared/constants/user-groups.enum.ts","./src/app/shared/constants/user-roles.constant.ts","./src/app/shared/directives/autonumeric.directive.ts","./src/app/shared/directives/click-no-selection.directive.ts","./src/app/shared/directives/click-stop-propagation.directive.ts","./src/app/shared/directives/custom-hint.directive.ts","./src/app/shared/directives/dnd.directive.ts","./src/app/shared/directives/easy-aria.directive.ts","./src/app/shared/directives/tooltip.directive.ts","./src/app/shared/directives/user-permissions-v2.directive.ts","./src/app/shared/directives/user-permissions.directive.ts","./src/app/shared/guards/auth.guard.ts","./src/app/shared/guards/translation-loaded.guard.ts","./src/app/shared/interceptors/username-header.interceptor.ts","./src/app/shared/models/upload-file-restrictions.model.ts","./src/app/shared/models/user.model.ts","./src/app/shared/pipes/date-pipe-tz.pipe.ts","./src/app/shared/pipes/directives.module.ts","./src/app/shared/pipes/join.pipe.ts","./src/app/shared/pipes/to-select-search-dropdown-options.pipe.ts","./src/app/shared/constants/error-code.constants.ts","./src/app/shared/services/error-handling-http-client.service.ts","./src/app/shared/services/event-service.service.ts","./src/app/shared/services/loader.service.ts","./src/app/shared/components/system-message/system-message.component.html","./src/app/shared/components/system-message/system-message.component.ts","./src/app/shared/services/message-service.service.ts","./src/app/requests/components/new-request/new-request.component.html","./src/app/requests/components/new-request/new-request.component.ts","./src/app/requests/components/request-name-form/request-name-form.component.html","./src/app/requests/components/request-name-form/request-name-form.component.ts","./src/app/requests/components/request-types/card-production/po-sow/confirm-close-modal/confirm-close-modal.component.html","./src/app/requests/components/request-types/card-production/po-sow/confirm-close-modal/confirm-close-modal.component.ts","./src/app/shared/components/shared/components/truncate-middle/truncate-middle.component.html","./src/app/shared/components/shared/components/truncate-middle/truncate-middle.component.ts","./src/app/shared/components/approval-manager/approval-manager/approval-manager.component.ts","./src/app/shared/components/approval-manager/approval-manager/approval-manager.component.html","./src/app/shared/services/modal-service.service.ts","./src/app/shared/services/pdf-viewer.service.ts","./src/app/shared/services/pit-msal.service.ts","./src/app/shared/services/pit-translate-loader.service.ts","./src/app/shared/services/state-provider.service.ts","./src/app/shared/services/user-permissions.service.ts","./src/app/nav-header/components/settings-modal/settings-modal.component.ts","./src/app/nav-header/components/settings-modal/settings-modal.component.html","./src/app/shared/services/user-settings.service.ts","./src/app/shared/services/user.service.ts","./src/app/shared/services/utils.service.ts","./src/app/shared/shared.module.ts","./src/environments/environment.prod.ts","./src/app/dashboard/components/dashboard/dashboard.component.ts","./src/app/dashboard/components/dashboard/dashboard.component.html","./src/app/help/components/help/help.component.ts","./src/app/help/components/help/help.component.html","./src/app/error-page/components/error-page/error-page.component.html","./src/app/error-page/components/error-page/error-page.component.ts","./src/app/shared/guards/has-param.guard.ts","./src/app/version/components/version/version.component.html","./src/app/version/components/version/version.component.ts","./src/app/error-page/components/not-authorized/error-auth.component.html","./src/app/error-page/components/not-authorized/error-auth.component.ts","./src/app/shared/guards/root-redirect.guard.ts","./src/app/help/components/features/features.component.ts","./src/app/app-routing.module.ts","./src/app/help/components/features/features.component.html","./src/app/shared/services/application-insights.service.ts","./src/app/version/new-version/service/new-version.constants.ts","./src/app/version/new-version/service/new-version.service.ts","./src/app/shared/constants/navigation.constants.ts","./src/app/nav-header/components/nav-profile-picture/profile-picture.provider.ts","./src/app/nav-header/components/nav-profile-picture/nav-profile-picture.component.ts","./src/app/nav-header/components/nav-profile-picture/nav-profile-picture.component.html","./src/app/nav-header/components/nav-header-panel/nav-header-panel.component.html","./src/app/nav-header/components/nav-header-panel/nav-header-panel.component.ts","./src/app/shared/components/approval-manager/pdf-viewer/pdf-viewer.component.ts","./src/app/shared/components/approval-manager/pdf-viewer/pdf-viewer.component.html","./src/app/app.component.ts","./src/app/app.component.html","./src/app/dashboard/dashboard.module.ts","./src/app/env.service.provider.ts","./src/app/error-page/error-page.module.ts","./src/app/help/help.module.ts","./src/app/nav-header/nav-header.module.ts","./src/app/reducers/substitute/substitute.actions.ts","./src/app/reducers/substitute/substitute.reducer.ts","./src/app/reducers/index.ts","./src/app/reducers/ref-data/refdata.effects.ts","./src/app/reducers/substitute/substitute.effects.ts","./src/app/reducers/user/user.effects.ts","./src/app/services/missing-translation.service.ts","./src/app/services/moment-settings.initializer.ts","./src/app/shared/constants/msal.constants.ts","./src/app/shared/services/browser.service.ts","./src/app/shared/interceptors/encode-http-params.interceptor.ts","./src/app/shared/services/application-insights-error-handler.ts","./src/app/substitute/substitute-deps.module.ts","./src/app/reducers/substitute/substitute.selectors.ts","./src/app/shared/services/substitute.service.ts","./src/app/substitute/common/edit-substitute-form/edit-substitute-form.component.html","./src/app/substitute/common/edit-substitute-form/edit-substitute-form.component.ts","./src/app/substitute/modals/add-substitute/add-substitute.component.html","./src/app/substitute/modals/add-substitute/add-substitute.component.ts","./src/app/substitute/modals/edit-substitute/edit-substitute.component.html","./src/app/substitute/modals/edit-substitute/edit-substitute.component.ts","./src/app/substitute/common/substitute-list/substitute-list.component.html","./src/app/substitute/common/substitute-list/substitute-list.component.ts","./src/app/substitute/pages/substites/substitutes.component.html","./src/app/substitute/substitute-routing.module.ts","./src/app/substitute/pages/substites/substitutes.component.ts","./src/app/substitute/substitute.module.ts","./src/app/version/version.module.ts","./src/app/version/new-version/new-version.module.ts","./src/app/app.module.ts","./src/main.ts","./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EnvService {\n public appVersion;\n public appInsightsKey;\n public enableDebug = true;\n public adClientId;\n\n public reportsEnabled: {\n po?: boolean;\n creativeServices?: boolean;\n ih?: boolean;\n popProduction?: boolean;\n thirdParty?: boolean;\n cardRanges?: boolean;\n production?: boolean;\n };\n\n public hideVersion: boolean;\n public hideSomeUIElements: boolean;\n public substituteEnabled: boolean;\n public emailTpsEnabled?: boolean;\n}\n","import { NgModule } from '@angular/core';\n\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatTabsModule} from '@angular/material/tabs';\nimport {MatSortModule} from '@angular/material/sort';\nimport {MatTableModule} from '@angular/material/table';\nimport {MatDatepickerModule} from '@angular/material/datepicker';\nimport {MatInputModule} from '@angular/material/input';\nimport {MatSelectModule} from '@angular/material/select';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatBadgeModule} from '@angular/material/badge';\nimport {MatMenuModule} from '@angular/material/menu';\nimport {MatDialogModule} from '@angular/material/dialog';\nimport {A11yModule} from '@angular/cdk/a11y';\nimport {MatExpansionModule} from '@angular/material/expansion';\nimport {MatDividerModule} from '@angular/material/divider';\nimport {MatSlideToggleModule} from '@angular/material/slide-toggle';\nimport {MatCheckboxModule} from '@angular/material/checkbox';\nimport {MatRadioModule} from '@angular/material/radio';\nimport {MatAutocompleteModule} from '@angular/material/autocomplete';\nimport {MatSnackBarModule} from '@angular/material/snack-bar';\nimport { MatMomentDateModule } from '@angular/material-moment-adapter';\nimport { MatChipsModule } from '@angular/material/chips';\n\n@NgModule({\n imports: [\n MatButtonModule,\n MatTabsModule,\n MatSortModule,\n MatTableModule,\n MatDatepickerModule,\n MatMomentDateModule,\n MatInputModule,\n MatSelectModule,\n MatFormFieldModule,\n MatIconModule,\n MatBadgeModule,\n MatMenuModule,\n MatDialogModule,\n A11yModule,\n MatExpansionModule,\n MatDividerModule,\n MatSlideToggleModule,\n MatCheckboxModule,\n MatRadioModule,\n MatAutocompleteModule,\n MatSnackBarModule,\n MatChipsModule,\n ],\n exports: [\n MatButtonModule,\n MatTabsModule,\n MatSortModule,\n MatTableModule,\n MatDatepickerModule,\n MatMomentDateModule,\n MatInputModule,\n MatSelectModule,\n MatFormFieldModule,\n MatIconModule,\n MatBadgeModule,\n MatMenuModule,\n MatDialogModule,\n A11yModule,\n MatExpansionModule,\n MatDividerModule,\n MatSlideToggleModule,\n MatCheckboxModule,\n MatRadioModule,\n MatAutocompleteModule,\n MatSnackBarModule,\n MatChipsModule,\n ],\n})\nexport class MaterialModule { }\n","export enum SETTINGS_GROUPS {\n EMAIL_SIGNATURE = 0\n}\n\nexport interface SettingsModalComponentData {\n section: SETTINGS_GROUPS;\n}\n","import { createAction, props } from '@ngrx/store';\nimport {PaymentType} from '../../requests/constants/request-details.constants';\nimport {CodeNameModel} from '../../shared/models/code-name.model';\nimport {Warehouse} from '../../requests/models/warehouse.model';\nimport { PopItemTypeModel } from '../../requests/models/pop-design-request.model';\n\n/**\n * Payment types\n */\nexport const loadPaymentTypes = createAction(\n '[RequestDetails RefData] Load Payment Types'\n);\nexport const lazyLoadPaymentTypes = createAction(\n '[RequestDetails RefData] Lazy Load Payment Types'\n);\nexport const loadPaymentTypesSuccess = createAction(\n '[RequestDetails RefData] Load Payment Types Success',\n props<{ paymentTypes: PaymentType[] }>()\n);\nexport const loadPaymentTypesFailure = createAction(\n '[RequestDetails RefData] Load Payment Types Failure',\n);\n\n/**\n * Financial Service Payment types\n */\nexport const loadFSPaymentTypes = createAction(\n '[RequestDetails RefData] Load Financial Service Payment Types'\n);\nexport const lazyLoadFSPaymentTypes = createAction(\n '[RequestDetails RefData] Lazy Load Financial Service Payment Types'\n);\nexport const loadFSPaymentTypesSuccess = createAction(\n '[RequestDetails RefData] Load Financial Service Payment Types Success',\n props<{ fsPaymentTypes: PaymentType[] }>()\n);\nexport const loadFSPaymentTypesFailure = createAction(\n '[RequestDetails RefData] Load Financial Service Payment Types Failure',\n);\n\n/**\n * Dielines\n */\nexport const loadDielines = createAction(\n '[RequestDetails RefData] Load Dielines'\n);\nexport const lazyLoadDielines = createAction(\n '[RequestDetails RefData] Lazy Load Dielines'\n);\nexport const loadDielinesSuccess = createAction(\n '[RequestDetails RefData] Load Dielines Success',\n props<{ dielines: CodeNameModel[] }>()\n);\nexport const loadDielinesFailure = createAction(\n '[RequestDetails RefData] Load Dielines Failure',\n);\n\n/**\n * Data pin file types\n */\nexport const loadDataPinFileTypes = createAction(\n '[RequestDetails RefData] Load DataPinFileTypes'\n);\nexport const lazyLoadDataPinFileTypes = createAction(\n '[RequestDetails RefData] Lazy Load DataPinFileTypes'\n);\nexport const loadDataPinFileTypesSuccess = createAction(\n '[RequestDetails RefData] Load DataPinFileTypes Success',\n props<{ dataPinFileTypes: CodeNameModel[] }>()\n);\nexport const loadDataPinFileTypesFailure = createAction(\n '[RequestDetails RefData] Load DataPinFileTypes Failure',\n);\n\n/**\n * Substrates\n */\nexport const loadSubstrates = createAction(\n '[RequestDetails RefData] Load Substrates'\n);\nexport const lazyLoadSubstrates = createAction(\n '[RequestDetails RefData] Lazy Load Substrates'\n);\nexport const loadSubstratesSuccess = createAction(\n '[RequestDetails RefData] Load Substrates Success',\n props<{ substrates: CodeNameModel[] }>()\n);\nexport const loadSubstratesFailure = createAction(\n '[RequestDetails RefData] Load Substrates Failure',\n);\n\n/**\n * RedemptionTypes\n */\nexport const loadRedemptionTypes = createAction(\n '[RequestDetails RefData] Load RedemptionTypes'\n);\nexport const lazyLoadRedemptionTypes = createAction(\n '[RequestDetails RefData] Lazy Load RedemptionTypes'\n);\nexport const loadRedemptionTypesSuccess = createAction(\n '[RequestDetails RefData] Load RedemptionTypes Success',\n props<{ redemptionTypes: CodeNameModel[] }>()\n);\nexport const loadRedemptionTypesFailure = createAction(\n '[RequestDetails RefData] Load RedemptionTypes Failure',\n);\n\n/**\n * RequestItemTypes\n */\nexport const loadRequestItemTypes = createAction(\n '[RequestDetails RefData] Load RequestItemTypes'\n);\nexport const lazyLoadRequestItemTypes = createAction(\n '[RequestDetails RefData] Lazy Load RequestItemTypes'\n);\nexport const loadRequestItemTypesSuccess = createAction(\n '[RequestDetails RefData] Load RequestItemTypes Success',\n props<{ requestItemTypes: CodeNameModel[] }>()\n);\nexport const loadRequestItemTypesFailure = createAction(\n '[RequestDetails RefData] Load RequestItemTypes Failure',\n);\n\n/**\n * Regions\n */\nexport const loadRegions = createAction(\n '[RequestDetails RefData] Load Regions'\n);\nexport const lazyLoadRegions = createAction(\n '[RequestDetails RefData] Lazy Load Regions'\n);\nexport const loadRegionsSuccess = createAction(\n '[RequestDetails RefData] Load Regions Success',\n props<{ regions: CodeNameModel[] }>()\n);\nexport const loadRegionsFailure = createAction(\n '[RequestDetails RefData] Load Regions Failure',\n);\n\n/**\n * Warehouses\n */\nexport const loadWarehouses = createAction(\n '[RequestDetails RefData] Load Warehouses'\n);\nexport const lazyLoadWarehouses = createAction(\n '[RequestDetails RefData] Lazy Load Warehouses'\n);\nexport const loadWarehousesSuccess = createAction(\n '[RequestDetails RefData] Load Warehouses Success',\n props<{ warehouses: Warehouse[] }>()\n);\nexport const loadWarehousesFailure = createAction(\n '[RequestDetails RefData] Load Warehouses Failure',\n);\n/**\n * Companies\n */\nexport const loadCompanies = createAction(\n '[RequestDetails RefData] Load Companies'\n);\nexport const lazyLoadCompanies = createAction(\n '[RequestDetails RefData] Lazy Load Companies'\n);\nexport const loadCompaniesSuccess = createAction(\n '[RequestDetails RefData] Load Companies Success',\n props<{ companies: CodeNameModel[] }>()\n);\nexport const loadCompaniesFailure = createAction(\n '[RequestDetails RefData] Load Companies Failure',\n);\n/**\n * PartnerGroups\n */\nexport const loadPartnerGroups = createAction(\n '[RequestDetails RefData] Load PartnerGroups'\n);\nexport const lazyLoadPartnerGroups = createAction(\n '[RequestDetails RefData] Lazy Load PartnerGroups'\n);\nexport const loadPartnerGroupsSuccess = createAction(\n '[RequestDetails RefData] Load PartnerGroups Success',\n props<{ partnerGroups: CodeNameModel[] }>()\n);\nexport const loadPartnerGroupsFailure = createAction(\n '[RequestDetails RefData] Load PartnerGroups Failure',\n);\n\n/**\n * Design line of business\n */\nexport const loadDesignLineOfBusiness = createAction(\n '[RequestDetails RefData] Load DesignLineOfBusiness'\n);\nexport const loadDesignLineOfBusinessSuccess = createAction(\n '[RequestDetails RefData] Load DesignLineOfBusiness Success',\n props<{ designLineOfBusiness: CodeNameModel[] }>()\n);\nexport const loadDesignLineOfBusinessFailure = createAction(\n '[RequestDetails RefData] Load DesignLineOfBusiness Failure',\n);\nexport const lazyLoadDesignLineOfBusiness = createAction(\n '[RequestDetails RefData] Lazy Load DesignLineOfBusiness'\n);\n\n/**\n * ArtLocationsTypes\n */\nexport const loadArtLocationsTypes = createAction(\n '[RequestDetails RefData] Load ArtLocationsTypes'\n);\nexport const lazyLoadArtLocationsTypes = createAction(\n '[RequestDetails RefData] Lazy Load ArtLocationsTypes'\n);\nexport const loadArtLocationsTypesSuccess = createAction(\n '[RequestDetails RefData] Load ArtLocationsTypes Success',\n props<{ artLocationTypes: CodeNameModel[] }>()\n);\nexport const loadArtLocationsTypesFailure = createAction(\n '[RequestDetails RefData] Load ArtLocationsTypes Failure',\n);\n\n/**\n * DesignSourceTypes\n */\nexport const loadDesignSourceTypes = createAction(\n '[RequestDetails RefData] Load DesignSourceTypes'\n);\nexport const lazyLoadDesignSourceTypes = createAction(\n '[RequestDetails RefData] Lazy Load DesignSourceTypes'\n);\nexport const loadDesignSourceTypesSuccess = createAction(\n '[RequestDetails RefData] Load DesignSourceTypes Success',\n props<{ designSourceTypes: CodeNameModel[] }>()\n);\nexport const loadDesignSourceTypesFailure = createAction(\n '[RequestDetails RefData] Load DesignSourceTypes Failure',\n);\n\n/**\n * ChannelTypes\n */\nexport const loadChannelTypes = createAction(\n '[RequestDetails RefData] Load ChannelTypes'\n);\nexport const lazyLoadChannelTypes = createAction(\n '[RequestDetails RefData] Lazy Load ChannelTypes'\n);\nexport const loadChannelTypesSuccess = createAction(\n '[RequestDetails RefData] Load ChannelTypes Success',\n props<{ channelTypes: CodeNameModel[] }>()\n);\nexport const loadChannelTypesFailure = createAction(\n '[RequestDetails RefData] Load ChannelTypes Failure',\n);\n/**\n * Pop ChannelTypes\n */\nexport const loadPopChannelTypes = createAction(\n '[RequestDetails RefData] Load PopChannelTypes'\n);\nexport const lazyLoadPopChannelTypes = createAction(\n '[RequestDetails RefData] Lazy Load PopChannelTypes'\n);\nexport const loadPopChannelTypesSuccess = createAction(\n '[RequestDetails RefData] Load PopChannelTypes Success',\n props<{ popChannelTypes: CodeNameModel[] }>()\n);\nexport const loadPopChannelTypesFailure = createAction(\n '[RequestDetails RefData] Load PopChannelTypes Failure',\n);\n\n/**\n * InventoryTypes\n */\nexport const loadInventoryTypes = createAction(\n '[RequestDetails RefData] Load InventoryTypes'\n);\nexport const lazyLoadInventoryTypes = createAction(\n '[RequestDetails RefData] Lazy Load InventoryTypes'\n);\nexport const loadInventoryTypesSuccess = createAction(\n '[RequestDetails RefData] Load InventoryTypes Success',\n props<{ inventoryTypes: CodeNameModel[] }>()\n);\nexport const loadInventoryTypesFailure = createAction(\n '[RequestDetails RefData] Load InventoryTypes Failure',\n);\n\n/**\n * RequestTypeInventoryTypes\n */\nexport const loadRequestTypeInventoryTypes = createAction(\n '[RequestDetails RefData] Load RequestTypeInventoryTypes',\n props<{ requestType: string }>()\n);\nexport const lazyLoadRequestTypeInventoryTypes = createAction(\n '[RequestDetails RefData] Lazy Load RequestTypeInventoryTypes',\n props<{ requestType: string }>()\n);\nexport const loadRequestTypeInventoryTypesSuccess = createAction(\n '[RequestDetails RefData] Load RequestTypeInventoryTypes Success',\n props<{ requestTypeInventoryTypes: CodeNameModel[] }>()\n);\nexport const loadRequestTypeInventoryTypesFailure = createAction(\n '[RequestDetails RefData] Load RequestTypeInventoryTypes Failure',\n);\n\n/**\n * ComponentTypes\n */\nexport const loadComponentTypes = createAction(\n '[RequestDetails RefData] Load ComponentTypes'\n);\nexport const lazyLoadComponentTypes = createAction(\n '[RequestDetails RefData] Lazy Load ComponentTypes'\n);\nexport const loadComponentTypesSuccess = createAction(\n '[RequestDetails RefData] Load ComponentTypes Success',\n props<{ componentTypes: CodeNameModel[] }>()\n);\nexport const loadComponentTypesFailure = createAction(\n '[RequestDetails RefData] Load ComponentTypes Failure',\n);\n\n/**\n * PopItemTypes\n */\nexport const loadPopItemTypes = createAction(\n '[RequestDetails RefData] Load PopItemTypes'\n);\nexport const lazyLoadPopItemTypes = createAction(\n '[RequestDetails RefData] Lazy Load PopItemTypes'\n);\nexport const loadPopItemTypesSuccess = createAction(\n '[RequestDetails RefData] Load PopItemTypes Success',\n props<{ popItemTypes: PopItemTypeModel[] }>()\n);\nexport const loadPopItemTypesFailure = createAction(\n '[RequestDetails RefData] Load PopItemTypes Failure',\n);\n\n/**\n * ColorTypes\n */\nexport const loadColorTypes = createAction(\n '[RequestDetails RefData] Load ColorTypes'\n);\nexport const lazyLoadColorTypes = createAction(\n '[RequestDetails RefData] Lazy Load ColorTypes'\n);\nexport const loadColorTypesSuccess = createAction(\n '[RequestDetails RefData] Load ColorTypes Success',\n props<{ colorTypes: CodeNameModel[] }>()\n);\nexport const loadColorTypesFailure = createAction(\n '[RequestDetails RefData] Load ColorTypes Failure',\n);\n\n/**\n * DimensionTypes\n */\nexport const loadDimensionTypes = createAction(\n '[RequestDetails RefData] Load DimensionTypes'\n);\nexport const lazyLoadDimensionTypes = createAction(\n '[RequestDetails RefData] Lazy Load DimensionTypes'\n);\nexport const loadDimensionTypesSuccess = createAction(\n '[RequestDetails RefData] Load DimensionTypes Success',\n props<{ dimensionTypes: CodeNameModel[] }>()\n);\nexport const loadDimensionTypesFailure = createAction(\n '[RequestDetails RefData] Load DimensionTypes Failure',\n);\n\n/**\n * FinancialTypes\n */\nexport const loadFinancialTypes = createAction(\n '[RequestDetails RefData] Load FinancialTypes'\n);\nexport const lazyLoadFinancialTypes = createAction(\n '[RequestDetails RefData] Lazy Load FinancialTypes'\n);\nexport const loadFinancialTypesSuccess = createAction(\n '[RequestDetails RefData] Load FinancialTypes Success',\n props<{ financialTypes: CodeNameModel[] }>()\n);\nexport const loadFinancialTypesFailure = createAction(\n '[RequestDetails RefData] Load FinancialTypes Failure',\n);\n/**\n * Pop EventTypes\n */\nexport const loadPopProdEventTypes = createAction(\n '[RequestDetails RefData] Load EventTypes'\n);\nexport const lazyLoadPopProdEventTypes = createAction(\n '[RequestDetails RefData] Lazy Load EventTypes'\n);\nexport const loadPopProdEventTypesSuccess = createAction(\n '[RequestDetails RefData] Load EventTypes Success',\n props<{ popProdEventTypes: CodeNameModel[] }>()\n);\nexport const loadPopProdEventTypesFailure = createAction(\n '[RequestDetails RefData] Load EventTypes Failure',\n);\n/**\n * Pop FundingTypes\n */\nexport const loadPopProdFundingTypes = createAction(\n '[RequestDetails RefData] Load FundingTypes'\n);\nexport const lazyLoadPopProdFundingTypes = createAction(\n '[RequestDetails RefData] Lazy Load FundingTypes'\n);\nexport const loadPopProdFundingTypesSuccess = createAction(\n '[RequestDetails RefData] Load FundingTypes Success',\n props<{ popProdFundingTypes: CodeNameModel[] }>()\n);\nexport const loadPopProdFundingTypesFailure = createAction(\n '[RequestDetails RefData] Load FundingTypes Failure',\n);\n/**\n * Pop UsageDurationTypes\n */\nexport const loadPopProdUsageDurationTypes = createAction(\n '[RequestDetails RefData] Load UsageDurationTypes'\n);\nexport const lazyLoadPopProdUsageDurationTypes = createAction(\n '[RequestDetails RefData] Lazy Load UsageDurationTypes'\n);\nexport const loadPopProdUsageDurationTypesSuccess = createAction(\n '[RequestDetails RefData] Load UsageDurationTypes Success',\n props<{ popUsageDurationTypes: CodeNameModel[] }>()\n);\nexport const loadPopProdUsageDurationTypesFailure = createAction(\n '[RequestDetails RefData] Load UsageDurationTypes Failure',\n);\n/**\n * Pop Prod ItemTypes\n */\nexport const loadPopProdItemTypes = createAction(\n '[RequestDetails RefData] Load Pop Prod ItemTypes'\n);\nexport const lazyLoadPopProdItemTypes = createAction(\n '[RequestDetails RefData] Lazy Load Pop Prod ItemTypes'\n);\nexport const loadPopProdItemTypesSuccess = createAction(\n '[RequestDetails RefData] Load Pop Prod ItemTypes Success',\n props<{ popProdItemTypes: PopItemTypeModel[] }>()\n);\nexport const loadPopProdItemTypesFailure = createAction(\n '[RequestDetails RefData] Load Pop Prod ItemTypes Failure',\n);\nexport const lazyLoadPopProdCuttingTypes = createAction(\n '[RequestDetails RefData] Lazy Load Pop Prod CuttingTypes',\n);\n/**\n * Pop Prod CuttingTypes\n */\nexport const loadPopProdCuttingTypes = createAction(\n '[RequestDetails RefData] Load Pop Prod CuttingTypes',\n);\nexport const loadPopProdCuttingTypesSuccess = createAction(\n '[RequestDetails RefData] Load Pop Prod CuttingTypes Success',\n props<{ popProdCuttingTypes: CodeNameModel[] }>(),\n);\nexport const loadPopProdCuttingTypesFailure = createAction(\n '[RequestDetails RefData] Load Pop Prod CuttingTypes Failure',\n);\nexport const lazyLoadPopProdMaterialTypes = createAction(\n '[RequestDetails RefData] Lazy Load Pop Prod MaterialTypes',\n);\n/**\n * Pop Prod MaterialTypes\n */\nexport const loadPopProdMaterialTypes = createAction(\n '[RequestDetails RefData] Load Pop Prod MaterialTypes',\n);\nexport const loadPopProdMaterialTypesSuccess = createAction(\n '[RequestDetails RefData] Load Pop Prod MaterialTypes Success',\n props<{ popProdMaterialTypes: CodeNameModel[] }>(),\n);\nexport const loadPopProdMaterialTypesFailure = createAction(\n '[RequestDetails RefData] Load Pop Prod MaterialTypes Failure',\n);\nexport const lazyLoadPopProdTapeTypes = createAction(\n '[RequestDetails RefData] Lazy Load Pop Prod TapeTypes',\n);\n/**\n * Pop Prod TapeTypes\n */\nexport const loadPopProdTapeTypes = createAction(\n '[RequestDetails RefData] Load Pop Prod TapeTypes',\n);\nexport const loadPopProdTapeTypesSuccess = createAction(\n '[RequestDetails RefData] Load Pop Prod TapeTypes Success',\n props<{ popProdTapeTypes: CodeNameModel[] }>(),\n);\nexport const loadPopProdTapeTypesFailure = createAction(\n '[RequestDetails RefData] Load Pop Prod TapeTypes Failure',\n);\n/**\n * Pop Prod InventoryTypes\n */\nexport const loadPopProdInventoryTypes = createAction(\n '[RequestDetails RefData] Load Pop Prod InventoryTypes'\n);\nexport const lazyLoadPopProdInventoryTypes = createAction(\n '[RequestDetails RefData] Lazy Load Pop Prod InventoryTypes'\n);\nexport const loadPopProdInventoryTypesSuccess = createAction(\n '[RequestDetails RefData] Load Pop Prod InventoryTypes Success',\n props<{ popProdInventoryTypes: CodeNameModel[] }>()\n);\nexport const loadPopProdInventoryTypesFailure = createAction(\n '[RequestDetails RefData] Load Pop Prod InventoryTypes Failure',\n);\n\n/**\n * Printers\n */\nexport const loadPrinters = createAction(\n '[RequestDetails RefData] Load Printers'\n);\nexport const lazyLoadPrinters = createAction(\n '[RequestDetails RefData] Lazy Load Printers'\n);\nexport const loadPrintersSuccess = createAction(\n '[RequestDetails RefData] Load Printers Success',\n props<{ printers: any[] }>()\n);\nexport const loadPrintersFailure = createAction(\n '[RequestDetails RefData] Load Printers Failure',\n);\n\n/**\n * BifComponentTypes\n */\nexport const loadBifComponentTypes = createAction(\n '[RequestDetails RefData] Load BifComponentTypes'\n);\nexport const lazyLoadBifComponentTypes = createAction(\n '[RequestDetails RefData] Lazy Load BifComponentTypes'\n);\nexport const loadBifComponentTypesSuccess = createAction(\n '[RequestDetails RefData] Load BifComponentTypes Success',\n props<{ bifComponentTypes: CodeNameModel[] }>()\n);\nexport const loadBifComponentTypesFailure = createAction(\n '[RequestDetails RefData] Load BifComponentTypes Failure',\n);\n\n/**\n * BifFulfillmentTypes\n */\nexport const loadBifFulfillmentTypes = createAction(\n '[RequestDetails RefData] Load BifFulfillmentTypes'\n);\nexport const lazyLoadBifFulfillmentTypes = createAction(\n '[RequestDetails RefData] Lazy Load BifFulfillmentTypes'\n);\nexport const loadBifFulfillmentTypesSuccess = createAction(\n '[RequestDetails RefData] Load BifFulfillmentTypes Success',\n props<{ bifFulfillmentTypes: CodeNameModel[] }>()\n);\nexport const loadBifFulfillmentTypesFailure = createAction(\n '[RequestDetails RefData] Load BifFulfillmentTypes Failure',\n);\n\n/**\n * ThirdPartyDataPinFileTypes\n */\nexport const loadThirdPartyDataPinFileTypes = createAction(\n '[RequestDetails RefData] Load ThirdPartyDataPinFileTypes'\n);\nexport const lazyLoadThirdPartyDataPinFileTypes = createAction(\n '[RequestDetails RefData] Lazy Load ThirdPartyDataPinFileTypes'\n);\nexport const loadThirdPartyDataPinFileTypesSuccess = createAction(\n '[RequestDetails RefData] Load ThirdPartyDataPinFileTypes Success',\n props<{ thirdPartyDataPinFileTypes: CodeNameModel[] }>()\n);\nexport const loadThirdPartyDataPinFileTypesFailure = createAction(\n '[RequestDetails RefData] Load ThirdPartyDataPinFileTypes Failure',\n);\n\n/**\n * ThirdPartyOrderTypes\n */\nexport const loadThirdPartyOrderTypes = createAction(\n '[RequestDetails RefData] Load ThirdPartyOrderTypes'\n);\nexport const lazyLoadThirdPartyOrderTypes = createAction(\n '[RequestDetails RefData] Lazy Load ThirdPartyOrderTypes'\n);\nexport const loadThirdPartyOrderTypesSuccess = createAction(\n '[RequestDetails RefData] Load ThirdPartyOrderTypes Success',\n props<{ thirdPartyOrderTypes: CodeNameModel[] }>()\n);\nexport const loadThirdPartyOrderTypesFailure = createAction(\n '[RequestDetails RefData] Load ThirdPartyOrderTypes Failure',\n);\n\n/**\n * ThirdPartyPrintOwnerTypes\n */\nexport const loadThirdPartyPrintOwnerTypes = createAction(\n '[RequestDetails RefData] Load ThirdPartyPrintOwnerTypes'\n);\nexport const lazyLoadThirdPartyPrintOwnerTypes = createAction(\n '[RequestDetails RefData] Lazy Load ThirdPartyPrintOwnerTypes'\n);\nexport const loadThirdPartyPrintOwnerTypesSuccess = createAction(\n '[RequestDetails RefData] Load ThirdPartyPrintOwnerTypes Success',\n props<{ thirdPartyPrintOwnerTypes: Array }>()\n);\nexport const loadThirdPartyPrintOwnerTypesFailure = createAction(\n '[RequestDetails RefData] Load ThirdPartyPrintOwnerTypes Failure',\n);\n\nexport const loadThirdPartyCompanies = createAction(\n '[RequestDetails RefData] Load ThirdPartyCompanies'\n);\nexport const lazyLoadThirdPartyCompanies = createAction(\n '[RequestDetails RefData] Lazy Load ThirdPartyCompanies'\n);\nexport const loadThirdPartyCompaniesSuccess = createAction(\n '[RequestDetails RefData] Load ThirdPartyCompanies Success',\n props<{ thirdPartyCompanies: CodeNameModel[] }>()\n);\nexport const loadThirdPartyCompaniesFailure = createAction(\n '[RequestDetails RefData] Load ThirdPartyCompanies Failure',\n);\n\n/**\n * IhComponents\n */\nexport const loadIhComponents = createAction(\n '[RequestDetails RefData] Load IhComponents',\n);\nexport const lazyLoadIhComponents = createAction(\n '[RequestDetails RefData] Lazy Load IhComponents',\n);\nexport const loadIhComponentsSuccess = createAction(\n '[RequestDetails RefData] Load IhComponents Success',\n props<{ ihComponents: CodeNameModel[] }>(),\n);\nexport const loadIhComponentsFailure = createAction(\n '[RequestDetails RefData] Load IhComponents Failure',\n);\n\n/**\n * IhHealthPlans\n */\nexport const loadIhHealthPlans = createAction(\n '[RequestDetails RefData] Load IhHealthPlans',\n);\nexport const lazyLoadIhHealthPlans = createAction(\n '[RequestDetails RefData] Lazy Load IhHealthPlans',\n);\nexport const loadIhHealthPlansSuccess = createAction(\n '[RequestDetails RefData] Load IhHealthPlans Success',\n props<{ ihHealthPlans: CodeNameModel[] }>(),\n);\nexport const loadIhHealthPlansFailure = createAction(\n '[RequestDetails RefData] Load IhHealthPlans Failure',\n);\n\n/**\n * IhHealthPrograms\n */\nexport const loadIhHealthPrograms = createAction(\n '[RequestDetails RefData] Load IhHealthPrograms',\n props<{ healthPlanCode: string }>(),\n);\nexport const lazyLoadIhHealthPrograms = createAction(\n '[RequestDetails RefData] Lazy Load IhHealthPrograms',\n props<{ healthPlanCode: string }>(),\n);\nexport const loadIhHealthProgramsSuccess = createAction(\n '[RequestDetails RefData] Load IhHealthPrograms Success',\n props<{ ihHealthPrograms: CodeNameModel[] }>(),\n);\nexport const loadIhHealthProgramsFailure = createAction(\n '[RequestDetails RefData] Load IhHealthPrograms Failure',\n);\nexport const clearIhHealthPrograms = createAction(\n '[RequestDetails RefData] clear IhHealthPrograms',\n);\n\n/**\n * IhPriorities\n */\nexport const loadIhPriorities = createAction(\n '[RequestDetails RefData] Load IhPriorities',\n);\nexport const lazyLoadIhPriorities = createAction(\n '[RequestDetails RefData] Lazy Load IhPriorities',\n);\nexport const loadIhPrioritiesSuccess = createAction(\n '[RequestDetails RefData] Load IhPriorities Success',\n props<{ ihPriorities: Array }>(),\n);\nexport const loadIhPrioritiesFailure = createAction(\n '[RequestDetails RefData] Load IhPriorities Failure',\n);\n\n/**\n * ReturnFileTypes\n */\nexport const loadReturnFileTypes = createAction(\n '[RequestDetails RefData] Load ReturnFileTypes',\n);\nexport const lazyLoadReturnFileTypes = createAction(\n '[RequestDetails RefData] Lazy Load ReturnFileTypes',\n);\nexport const loadReturnFileTypesSuccess = createAction(\n '[RequestDetails RefData] Load ReturnFileTypes Success',\n props<{ returnFileTypes: CodeNameModel[] }>(),\n);\nexport const loadReturnFileTypesFailure = createAction(\n '[RequestDetails RefData] Load ReturnFileTypes Failure',\n);\n\n/**\n * ImageFormatType\n */\nexport const loadImageFormatTypes = createAction(\n '[RequestDetails RefData] Load ImageFormatTypes',\n);\nexport const lazyLoadImageFormatTypes = createAction(\n '[RequestDetails RefData] Lazy Load ImageFormatTypes',\n);\nexport const loadImageFormatTypesSuccess = createAction(\n '[RequestDetails RefData] Load ImageFormatTypes Success',\n props<{ imageFormatTypes: CodeNameModel[] }>(),\n);\nexport const loadImageFormatTypesFailure = createAction(\n '[RequestDetails RefData] Load ImageFormatTypes Failure',\n);\n","import {createReducer, on} from '@ngrx/store';\n\nimport {PaymentType} from '../../requests/constants/request-details.constants';\nimport {PopItemTypeModel} from '../../requests/models/pop-design-request.model';\nimport {Warehouse} from '../../requests/models/warehouse.model';\nimport {CodeNameModel} from '../../shared/models/code-name.model';\nimport {\n clearIhHealthPrograms,\n loadArtLocationsTypes,\n loadArtLocationsTypesFailure,\n loadArtLocationsTypesSuccess,\n loadBifComponentTypes,\n loadBifComponentTypesFailure,\n loadBifComponentTypesSuccess,\n loadBifFulfillmentTypes,\n loadBifFulfillmentTypesFailure,\n loadBifFulfillmentTypesSuccess,\n loadChannelTypes,\n loadChannelTypesFailure,\n loadChannelTypesSuccess,\n loadColorTypes,\n loadColorTypesFailure,\n loadColorTypesSuccess,\n loadCompanies,\n loadCompaniesFailure,\n loadCompaniesSuccess,\n loadComponentTypes,\n loadComponentTypesFailure,\n loadComponentTypesSuccess,\n loadDataPinFileTypes,\n loadDataPinFileTypesFailure,\n loadDataPinFileTypesSuccess,\n loadDesignLineOfBusiness,\n loadDesignLineOfBusinessFailure,\n loadDesignLineOfBusinessSuccess,\n loadDesignSourceTypes,\n loadDesignSourceTypesFailure,\n loadDesignSourceTypesSuccess,\n loadDielines,\n loadDielinesFailure,\n loadDielinesSuccess,\n loadDimensionTypes,\n loadDimensionTypesFailure,\n loadDimensionTypesSuccess,\n loadFinancialTypes,\n loadFinancialTypesFailure,\n loadFinancialTypesSuccess,\n loadFSPaymentTypes,\n loadFSPaymentTypesFailure,\n loadFSPaymentTypesSuccess,\n loadIhComponents,\n loadIhComponentsFailure,\n loadIhComponentsSuccess,\n loadIhHealthPlans,\n loadIhHealthPlansFailure,\n loadIhHealthPlansSuccess,\n loadIhHealthPrograms,\n loadIhHealthProgramsFailure,\n loadIhHealthProgramsSuccess,\n loadIhPriorities,\n loadIhPrioritiesFailure,\n loadIhPrioritiesSuccess,\n loadImageFormatTypes,\n loadImageFormatTypesFailure,\n loadImageFormatTypesSuccess,\n loadInventoryTypes,\n loadInventoryTypesFailure,\n loadInventoryTypesSuccess,\n loadRequestTypeInventoryTypes,\n loadRequestTypeInventoryTypesFailure,\n loadRequestTypeInventoryTypesSuccess,\n loadPartnerGroups,\n loadPartnerGroupsFailure,\n loadPartnerGroupsSuccess,\n loadPaymentTypes,\n loadPaymentTypesFailure,\n loadPaymentTypesSuccess,\n loadPopChannelTypes,\n loadPopChannelTypesFailure,\n loadPopChannelTypesSuccess,\n loadPopItemTypes,\n loadPopItemTypesFailure,\n loadPopItemTypesSuccess,\n loadPopProdCuttingTypes,\n loadPopProdCuttingTypesFailure,\n loadPopProdCuttingTypesSuccess,\n loadPopProdEventTypes,\n loadPopProdEventTypesFailure,\n loadPopProdEventTypesSuccess,\n loadPopProdFundingTypes,\n loadPopProdFundingTypesFailure,\n loadPopProdFundingTypesSuccess,\n loadPopProdInventoryTypes,\n loadPopProdInventoryTypesFailure,\n loadPopProdInventoryTypesSuccess,\n loadPopProdItemTypes,\n loadPopProdItemTypesFailure,\n loadPopProdItemTypesSuccess,\n loadPopProdMaterialTypes,\n loadPopProdMaterialTypesFailure,\n loadPopProdMaterialTypesSuccess,\n loadPopProdTapeTypes,\n loadPopProdTapeTypesFailure,\n loadPopProdTapeTypesSuccess,\n loadPopProdUsageDurationTypes,\n loadPopProdUsageDurationTypesFailure,\n loadPopProdUsageDurationTypesSuccess,\n loadPrinters,\n loadPrintersFailure,\n loadPrintersSuccess,\n loadRedemptionTypes,\n loadRedemptionTypesFailure,\n loadRedemptionTypesSuccess,\n loadRegions,\n loadRegionsFailure,\n loadRegionsSuccess,\n loadRequestItemTypes,\n loadRequestItemTypesFailure,\n loadRequestItemTypesSuccess,\n loadReturnFileTypes,\n loadReturnFileTypesFailure,\n loadReturnFileTypesSuccess,\n loadSubstrates,\n loadSubstratesFailure,\n loadSubstratesSuccess,\n loadThirdPartyDataPinFileTypes,\n loadThirdPartyDataPinFileTypesFailure,\n loadThirdPartyDataPinFileTypesSuccess,\n loadThirdPartyOrderTypes,\n loadThirdPartyOrderTypesFailure,\n loadThirdPartyOrderTypesSuccess,\n loadThirdPartyPrintOwnerTypes,\n loadThirdPartyPrintOwnerTypesFailure,\n loadThirdPartyPrintOwnerTypesSuccess,\n loadThirdPartyCompanies,\n loadThirdPartyCompaniesFailure,\n loadThirdPartyCompaniesSuccess,\n loadWarehouses,\n loadWarehousesFailure,\n loadWarehousesSuccess\n} from './refdata.actions';\n\nexport const requestRefDataFeatureKey = 'refData';\n\nexport interface RequestRefDataState {\n paymentTypes: PaymentType[];\n fsPaymentTypes: PaymentType[];\n dielines: CodeNameModel[];\n dataPinFileTypes: CodeNameModel[];\n substrates: CodeNameModel[];\n redemptionTypes: CodeNameModel[];\n requestItemTypes: CodeNameModel[];\n regions: CodeNameModel[];\n warehouses: Warehouse[];\n companies: CodeNameModel[];\n partnerGroups: CodeNameModel[];\n designLineOfBusiness: CodeNameModel[];\n artLocationTypes: CodeNameModel[];\n designSourceTypes: CodeNameModel[];\n channelTypes: CodeNameModel[];\n popChannelTypes: CodeNameModel[];\n inventoryTypes: CodeNameModel[];\n requestTypeInventoryTypes: CodeNameModel[];\n componentTypes: CodeNameModel[];\n popItemTypes: PopItemTypeModel[];\n colorTypes: CodeNameModel[];\n dimensionTypes: CodeNameModel[];\n financialTypes: CodeNameModel[];\n popProdEventTypes: CodeNameModel[];\n popProdFundingTypes: Array<\n CodeNameModel & {\n mask?: string;\n tooltip?: string;\n }\n >;\n popUsageDurationTypes: CodeNameModel[];\n popProdItemTypes: PopItemTypeModel[];\n popProdCuttingTypes: CodeNameModel[];\n popProdMaterialTypes: CodeNameModel[];\n popProdTapeTypes: CodeNameModel[];\n popProdInventoryTypes: CodeNameModel[];\n printers: any[];\n bifComponentTypes: CodeNameModel[];\n bifFulfillmentTypes: CodeNameModel[];\n thirdPartyDataPinFileTypes: CodeNameModel[];\n thirdPartyOrderTypes: CodeNameModel[];\n thirdPartyPrintOwnerTypes: Array;\n thirdPartyCompanies: CodeNameModel[];\n ihComponents: CodeNameModel[];\n ihHealthPlans: CodeNameModel[];\n ihHealthPrograms: CodeNameModel[];\n ihPriorities: Array;\n returnFileTypes: CodeNameModel[];\n imageFormatTypes: CodeNameModel[];\n}\n\nexport const refDataInitialState: RequestRefDataState = {\n paymentTypes: [],\n fsPaymentTypes: [],\n dielines: [],\n dataPinFileTypes: [],\n substrates: [],\n redemptionTypes: [],\n requestItemTypes: [],\n regions: [],\n warehouses: [],\n companies: [],\n partnerGroups: [],\n designLineOfBusiness: [],\n artLocationTypes: [],\n designSourceTypes: [],\n channelTypes: [],\n popChannelTypes: [],\n inventoryTypes: [],\n requestTypeInventoryTypes: [],\n componentTypes: [],\n popItemTypes: [],\n colorTypes: [],\n dimensionTypes: [],\n financialTypes: [],\n popProdEventTypes: [],\n popProdFundingTypes: [],\n popUsageDurationTypes: [],\n popProdItemTypes: [],\n popProdCuttingTypes: [],\n popProdMaterialTypes: [],\n popProdTapeTypes: [],\n popProdInventoryTypes: [],\n printers: [],\n bifComponentTypes: [],\n bifFulfillmentTypes: [],\n thirdPartyDataPinFileTypes: [],\n thirdPartyOrderTypes: [],\n thirdPartyPrintOwnerTypes: [],\n thirdPartyCompanies: [],\n ihComponents: [],\n ihHealthPlans: [],\n ihHealthPrograms: [],\n ihPriorities: [],\n returnFileTypes: [],\n imageFormatTypes: []\n};\n\nexport const refDataReducer = createReducer(\n refDataInitialState,\n\n on(loadPaymentTypes, state => ({...state, paymentTypes: []})),\n on(loadPaymentTypesSuccess, (state, action) => ({...state, paymentTypes: action.paymentTypes})),\n on(loadPaymentTypesFailure, state => ({...state, paymentTypes: []})),\n\n on(loadFSPaymentTypes, state => ({...state, fsPaymentTypes: []})),\n on(loadFSPaymentTypesSuccess, (state, action) => ({...state, fsPaymentTypes: action.fsPaymentTypes})),\n on(loadFSPaymentTypesFailure, state => ({...state, fsPaymentTypes: []})),\n\n on(loadDielines, state => ({...state, dielines: []})),\n on(loadDielinesSuccess, (state, action) => ({...state, dielines: action.dielines})),\n on(loadDielinesFailure, state => ({...state, dielines: []})),\n\n on(loadDataPinFileTypes, state => ({...state, dataPinFileTypes: []})),\n on(loadDataPinFileTypesSuccess, (state, action) => ({...state, dataPinFileTypes: action.dataPinFileTypes})),\n on(loadDataPinFileTypesFailure, state => ({...state, dataPinFileTypes: []})),\n\n on(loadSubstrates, state => ({...state, substrates: []})),\n on(loadSubstratesSuccess, (state, action) => ({...state, substrates: action.substrates})),\n on(loadSubstratesFailure, state => ({...state, substrates: []})),\n\n on(loadRedemptionTypes, state => ({...state, redemptionTypes: []})),\n on(loadRedemptionTypesSuccess, (state, action) => ({...state, redemptionTypes: action.redemptionTypes})),\n on(loadRedemptionTypesFailure, state => ({...state, redemptionTypes: []})),\n\n on(loadRequestItemTypes, state => ({...state, requestItemTypes: []})),\n on(loadRequestItemTypesSuccess, (state, action) => ({...state, requestItemTypes: action.requestItemTypes})),\n on(loadRequestItemTypesFailure, state => ({...state, requestItemTypes: []})),\n\n on(loadRegions, state => ({...state, regions: []})),\n on(loadRegionsSuccess, (state, action) => ({...state, regions: action.regions})),\n on(loadRegionsFailure, state => ({...state, regions: []})),\n\n on(loadWarehouses, state => ({...state, warehouses: []})),\n on(loadWarehousesSuccess, (state, action) => ({...state, warehouses: action.warehouses})),\n on(loadWarehousesFailure, state => ({...state, warehouses: []})),\n\n on(loadCompanies, state => ({...state, companies: []})),\n on(loadCompaniesSuccess, (state, action) => ({...state, companies: action.companies})),\n on(loadCompaniesFailure, state => ({...state, companies: []})),\n\n on(loadPopProdInventoryTypes, state => ({...state, popProdInventoryTypes: []})),\n on(loadPopProdInventoryTypesSuccess, (state, action) => ({...state, popProdInventoryTypes: action.popProdInventoryTypes})),\n on(loadPopProdInventoryTypesFailure, state => ({...state, popProdInventoryTypes: []})),\n\n on(loadPrinters, state => ({...state, printers: []})),\n on(loadPrintersSuccess, (state, action) => ({...state, printers: action.printers})),\n on(loadPrintersFailure, state => ({...state, popProdInvenprinterstoryTypes: []})),\n\n on(loadPartnerGroups, state => ({...state, partnerGroups: []})),\n on(loadPartnerGroupsSuccess, (state, action) => ({...state, partnerGroups: action.partnerGroups})),\n on(loadPartnerGroupsFailure, state => ({...state, partnerGroups: []})),\n\n on(loadDesignLineOfBusiness, state => ({...state, designLineOfBusiness: []})),\n on(loadDesignLineOfBusinessSuccess, (state, action) => ({...state, designLineOfBusiness: action.designLineOfBusiness})),\n on(loadDesignLineOfBusinessFailure, state => ({...state, designLineOfBusiness: []})),\n\n on(loadArtLocationsTypes, state => ({...state, artLocationTypes: []})),\n on(loadArtLocationsTypesSuccess, (state, action) => ({...state, artLocationTypes: action.artLocationTypes})),\n on(loadArtLocationsTypesFailure, state => ({...state, artLocationTypes: []})),\n\n on(loadDesignSourceTypes, state => ({...state, designSourceTypes: []})),\n on(loadDesignSourceTypesSuccess, (state, action) => ({...state, designSourceTypes: action.designSourceTypes})),\n on(loadDesignSourceTypesFailure, state => ({...state, designSourceTypes: []})),\n\n on(loadChannelTypes, state => ({...state, channelTypes: []})),\n on(loadChannelTypesSuccess, (state, action) => ({...state, channelTypes: action.channelTypes})),\n on(loadChannelTypesFailure, state => ({...state, channelTypes: []})),\n\n on(loadPopChannelTypes, state => ({...state, popChannelTypes: []})),\n on(loadPopChannelTypesSuccess, (state, action) => ({...state, popChannelTypes: action.popChannelTypes})),\n on(loadPopChannelTypesFailure, state => ({...state, popChannelTypes: []})),\n\n on(loadInventoryTypes, state => ({...state, inventoryTypes: []})),\n on(loadInventoryTypesSuccess, (state, action) => ({...state, inventoryTypes: action.inventoryTypes})),\n on(loadInventoryTypesFailure, state => ({...state, inventoryTypes: []})),\n\n on(loadRequestTypeInventoryTypes, state => ({...state, requestTypeInventoryTypes: []})),\n on(loadRequestTypeInventoryTypesSuccess, (state, action) => ({...state, requestTypeInventoryTypes: action.requestTypeInventoryTypes})),\n on(loadRequestTypeInventoryTypesFailure, state => ({...state, requestTypeInventoryTypes: []})),\n\n on(loadComponentTypes, state => ({...state, componentTypes: []})),\n on(loadComponentTypesSuccess, (state, action) => ({...state, componentTypes: action.componentTypes})),\n on(loadComponentTypesFailure, state => ({...state, componentTypes: []})),\n\n on(loadPopItemTypes, state => ({...state, popItemTypes: []})),\n on(loadPopItemTypesSuccess, (state, action) => ({...state, popItemTypes: action.popItemTypes})),\n on(loadPopItemTypesFailure, state => ({...state, popItemTypes: []})),\n\n on(loadColorTypes, state => ({...state, colorTypes: []})),\n on(loadColorTypesSuccess, (state, action) => ({...state, colorTypes: action.colorTypes})),\n on(loadColorTypesFailure, state => ({...state, colorTypes: []})),\n\n on(loadDimensionTypes, state => ({...state, dimensionTypes: []})),\n on(loadDimensionTypesSuccess, (state, action) => ({...state, dimensionTypes: action.dimensionTypes})),\n on(loadDimensionTypesFailure, state => ({...state, dimensionTypes: []})),\n\n on(loadFinancialTypes, state => ({...state, financialTypes: []})),\n on(loadFinancialTypesSuccess, (state, action) => ({...state, financialTypes: action.financialTypes})),\n on(loadFinancialTypesFailure, state => ({...state, financialTypes: []})),\n\n on(loadPopProdEventTypes, state => ({...state, popProdEventTypes: []})),\n on(loadPopProdEventTypesSuccess, (state, action) => ({...state, popProdEventTypes: action.popProdEventTypes})),\n on(loadPopProdEventTypesFailure, state => ({...state, popProdEventTypes: []})),\n\n on(loadPopProdFundingTypes, state => ({...state, popProdFundingTypes: []})),\n on(loadPopProdFundingTypesSuccess, (state, action) => ({...state, popProdFundingTypes: action.popProdFundingTypes})),\n on(loadPopProdFundingTypesFailure, state => ({...state, popProdFundingTypes: []})),\n\n on(loadPopProdUsageDurationTypes, state => ({...state, popUsageDurationTypes: []})),\n on(loadPopProdUsageDurationTypesSuccess, (state, action) => ({\n ...state,\n popUsageDurationTypes: action.popUsageDurationTypes\n })),\n on(loadPopProdUsageDurationTypesFailure, state => ({...state, popUsageDurationTypes: []})),\n\n on(loadPopProdItemTypes, state => ({...state, popProdItemTypes: []})),\n on(loadPopProdItemTypesSuccess, (state, action) => ({...state, popProdItemTypes: action.popProdItemTypes})),\n on(loadPopProdItemTypesFailure, state => ({...state, popProdItemTypes: []})),\n\n on(loadPopProdCuttingTypes, loadPopProdCuttingTypesFailure, state => ({...state, popProdItemTypes: []})),\n on(loadPopProdCuttingTypesSuccess, (state, {popProdCuttingTypes}) => ({\n ...state,\n popProdCuttingTypes\n })),\n\n on(loadPopProdMaterialTypes, loadPopProdMaterialTypesFailure, state => ({\n ...state,\n popProdMaterialTypes: []\n })),\n on(loadPopProdMaterialTypesSuccess, (state, {popProdMaterialTypes}) => ({\n ...state,\n popProdMaterialTypes\n })),\n\n on(loadPopProdTapeTypes, loadPopProdTapeTypesFailure, state => ({...state, popProdTapeTypes: []})),\n on(loadPopProdTapeTypesSuccess, (state, {popProdTapeTypes}) => ({\n ...state,\n popProdTapeTypes\n })),\n\n on(loadBifComponentTypes, state => ({...state, bifComponentTypes: []})),\n on(loadBifComponentTypesSuccess, (state, action) => ({...state, bifComponentTypes: action.bifComponentTypes})),\n on(loadBifComponentTypesFailure, state => ({...state, bifComponentTypes: []})),\n\n on(loadBifFulfillmentTypes, state => ({...state, bifFulfillmentTypes: []})),\n on(loadBifFulfillmentTypesSuccess, (state, action) => ({...state, bifFulfillmentTypes: action.bifFulfillmentTypes})),\n on(loadBifFulfillmentTypesFailure, state => ({...state, bifFulfillmentTypes: []})),\n /**\n * ThirdPartyDataPinFileTypes\n */\n on(loadThirdPartyDataPinFileTypes, state => ({...state, thirdPartyDataPinFileTypes: []})),\n on(loadThirdPartyDataPinFileTypesSuccess, (state, action) => ({\n ...state,\n thirdPartyDataPinFileTypes: action.thirdPartyDataPinFileTypes\n })),\n on(loadThirdPartyDataPinFileTypesFailure, state => ({...state, thirdPartyDataPinFileTypes: []})),\n /**\n * ThirdPartyOrderTypes\n */\n on(loadThirdPartyOrderTypes, state => ({...state, thirdPartyOrderTypes: []})),\n on(loadThirdPartyOrderTypesSuccess, (state, action) => ({...state, thirdPartyOrderTypes: action.thirdPartyOrderTypes})),\n on(loadThirdPartyOrderTypesFailure, state => ({...state, thirdPartyOrderTypes: []})),\n /**\n * ThirdPartyPrintOwnerTypes\n */\n on(loadThirdPartyPrintOwnerTypes, state => ({...state, thirdPartyPrintOwnerTypes: []})),\n on(loadThirdPartyPrintOwnerTypesSuccess, (state, action) => ({\n ...state,\n thirdPartyPrintOwnerTypes: action.thirdPartyPrintOwnerTypes\n })),\n on(loadThirdPartyPrintOwnerTypesFailure, state => ({...state, thirdPartyPrintOwnerTypes: []})),\n\n on(loadThirdPartyCompanies, state => ({...state, thirdPartyCompanies: []})),\n on(loadThirdPartyCompaniesSuccess, (state, action) => ({...state, thirdPartyCompanies: action.thirdPartyCompanies})),\n on(loadThirdPartyCompaniesFailure, state => ({...state, thirdPartyCompanies: []})),\n /**\n * Ih refdata\n */\n on(loadIhComponents, state => ({...state, ihComponents: []})),\n on(loadIhComponentsSuccess, (state, action) => ({...state, ihComponents: action.ihComponents})),\n on(loadIhComponentsFailure, state => ({...state, ihComponents: []})),\n\n on(loadIhHealthPlans, state => ({...state, ihHealthPlans: []})),\n on(loadIhHealthPlansSuccess, (state, action) => ({...state, ihHealthPlans: action.ihHealthPlans})),\n on(loadIhHealthPlansFailure, state => ({...state, ihHealthPlans: []})),\n\n on(loadIhHealthPrograms, state => ({...state, ihHealthPrograms: []})),\n on(loadIhHealthProgramsSuccess, (state, action) => ({...state, ihHealthPrograms: action.ihHealthPrograms})),\n on(loadIhHealthProgramsFailure, state => ({...state, ihHealthPrograms: []})),\n on(clearIhHealthPrograms, state => ({...state, ihHealthPrograms: []})),\n\n on(loadIhPriorities, state => ({...state, ihPriorities: []})),\n on(loadIhPrioritiesSuccess, (state, action) => ({...state, ihPriorities: action.ihPriorities})),\n on(loadIhPrioritiesFailure, state => ({...state, ihPriorities: []})),\n\n on(loadReturnFileTypes, state => ({...state, returnFileTypes: []})),\n on(loadReturnFileTypesSuccess, (state, action) => ({...state, returnFileTypes: action.returnFileTypes})),\n on(loadReturnFileTypesFailure, state => ({...state, returnFileTypes: []})),\n\n on(loadImageFormatTypes, state => ({...state, ImageFormatTypes: []})),\n on(loadImageFormatTypesSuccess, (state, action) => ({...state, imageFormatTypes: action.imageFormatTypes})),\n on(loadImageFormatTypesFailure, state => ({...state, ImageFormatTypes: []}))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { UtilsService } from 'src/app/shared/services/utils.service';\nimport { requestRefDataFeatureKey, RequestRefDataState } from './refdata.reducer';\n\nexport const selectRequestRefDataState = createFeatureSelector(\n requestRefDataFeatureKey\n);\n\nexport const selectRefData = createFeatureSelector(\n requestRefDataFeatureKey\n);\n\nexport const selectPaymentTypes = createSelector(\n selectRefData,\n (state) => state.paymentTypes\n);\n\nexport const selectDielines = createSelector(\n selectRefData,\n (state) => state.dielines\n);\n\nexport const selectRequestItemTypes = createSelector(\n selectRefData,\n (state) => state.requestItemTypes\n);\n\nexport const selectDataPinFileTypes = createSelector(\n selectRefData,\n (state) => state.dataPinFileTypes\n);\n\nexport const selectRedemptionTypes = createSelector(\n selectRefData,\n (state) => state.redemptionTypes\n);\n\nexport const selectSubstrates = createSelector(\n selectRefData,\n (state) => state.substrates\n);\n\nexport const selectRegions = createSelector(\n selectRefData,\n (state) => state.regions\n);\n\nexport const selectWarehouses = createSelector(\n selectRefData,\n (state) => state.warehouses\n);\n\nexport const selectCompanies = createSelector(\n selectRefData,\n (state) => state.companies\n);\n\nexport const selectPopProdInventoryTypes = createSelector(\n selectRefData,\n (state) => state.popProdInventoryTypes\n);\n// 2\nexport const selectPrinters = createSelector(\n selectRefData,\n (state) => state.printers\n);\n\nexport const selectPartnerGroups = createSelector(\n selectRefData,\n (state) => state.partnerGroups\n);\n\nexport const selectDesignLineOfBusiness = createSelector(\n selectRefData,\n (state) => state.designLineOfBusiness\n);\n\nexport const selectArtLocationTypes = createSelector(\n selectRefData,\n (state) => state.artLocationTypes\n);\n\nexport const selectDesignSourceTypes = createSelector(\n selectRefData,\n (state) => state.designSourceTypes\n);\n\nexport const selectChannelTypes = createSelector(\n selectRefData,\n (state) => state.channelTypes\n);\n\nexport const selectPopChannelTypes = createSelector(\n selectRefData,\n (state) => state.popChannelTypes\n);\n\nexport const selectInventoryTypes = createSelector(\n selectRefData,\n (state) => state.inventoryTypes\n);\n\nexport const selectRequestTypeInventoryTypes = createSelector(\n selectRefData,\n (state) => state.requestTypeInventoryTypes\n);\n\nexport const selectComponentTypes = createSelector(\n selectRefData,\n (state) => state.componentTypes\n);\n\nexport const selectPopItemTypes = createSelector(\n selectRefData,\n (state) => state.popItemTypes\n);\n\nexport const selectColorTypes = createSelector(\n selectRefData,\n (state) => state.colorTypes\n);\n\nexport const selectDimensionTypes = createSelector(\n selectRefData,\n (state) => state.dimensionTypes\n);\n\nexport const selectFinancialTypes = createSelector(\n selectRefData,\n (state) => state.financialTypes\n);\n\nexport const selectPopProdEventTypes = createSelector(\n selectRefData,\n (state) => state.popProdEventTypes\n);\n\nexport const selectPopProdFundingTypes = createSelector(\n selectRefData,\n (state) => state.popProdFundingTypes\n);\n\nexport const selectPopProdUsageDurationTypes = createSelector(\n selectRefData,\n (state) => state.popUsageDurationTypes\n);\n\nexport const selectPopProdItemTypes = createSelector(\n selectRefData,\n (state) => state.popProdItemTypes\n);\n\nexport const selectPopProdCuttingTypes = createSelector(\n selectRefData,\n (state) => state.popProdCuttingTypes,\n);\n\nexport const selectPopProdMaterialTypes = createSelector(\n selectRefData,\n (state) => state.popProdMaterialTypes,\n);\n\nexport const selectPopProdTapeTypes = createSelector(\n selectRefData,\n (state) => state.popProdTapeTypes,\n);\n\nexport const selectFSPaymentTypes = createSelector(\n selectRefData,\n (state) => state.fsPaymentTypes\n);\n\nexport const selectBifComponentTypes = createSelector(\n selectRefData,\n (state) => state.bifComponentTypes,\n);\n\nexport const selectBifFulfillmentTypes = createSelector(\n selectRefData,\n (state) => state.bifFulfillmentTypes,\n);\n\n/**\n * ThirdPartyDataPinFileTypes\n */\nexport const selectThirdPartyDataPinFileTypes = createSelector(\n selectRefData,\n (state) => state.thirdPartyDataPinFileTypes,\n);\n/**\n * ThirdPartyOrderTypes\n */\nexport const selectThirdPartyOrderTypes = createSelector(\n selectRefData,\n (state) => state.thirdPartyOrderTypes,\n);\n/**\n * ThirdPartyPrintOwnerTypes\n */\nexport const selectThirdPartyPrintOwnerTypes = createSelector(\n selectRefData,\n (state) => state.thirdPartyPrintOwnerTypes,\n);\n\nexport const selectThirdPartyCompanies = createSelector(\n selectRefData,\n (state) => state.thirdPartyCompanies,\n);\n\nexport const selectIhComponents = createSelector(\n selectRefData,\n (state) => state.ihComponents,\n);\n\nexport const selectIhHealthPlans = createSelector(\n selectRefData,\n (state) => state.ihHealthPlans,\n);\n\nexport const selectIhHealthPrograms = createSelector(\n selectRefData,\n (state) => state.ihHealthPrograms,\n);\n\nexport const selectIhPriorities = createSelector(\n selectRefData,\n (state) => state.ihPriorities,\n);\n\nexport const selectIhPrioritiesPrioterized = createSelector(selectIhPriorities, priotiries =>\n UtilsService.sortByFields(priotiries, codeName => {\n if (codeName.value) {\n return codeName.value;\n }\n if (codeName.code === 'HIGH') {\n return 3 as number;\n }\n if (codeName.code === 'MEDIUM') {\n return 2 as number;\n }\n if (codeName.code === 'LOW') {\n return 1 as number;\n }\n\n return 0 as number;\n }).reverse()\n);\n\n\nexport const selectReturnFileTypes = createSelector(\n selectRefData,\n (state) => state.returnFileTypes,\n);\n\nexport const selectImageFormatTypes = createSelector(\n selectRefData,\n (state) => state.imageFormatTypes,\n);\n","import { createAction, props } from '@ngrx/store';\nimport { UserSettings } from 'src/app/shared/models/user-settings.model';\n\nexport const setUser = createAction(\n '[User] Set User',\n props<{ user: string }>()\n);\n\nexport const setUserSubstitutees = createAction(\n '[User] Set User Substitutees',\n props<{ substitutees: string[] }>()\n);\nexport const setUserTheme = createAction(\n '[User] Set User Theme',\n props<{ theme: string }>()\n);\nexport const setUserSettings = createAction(\n '[User] Set User Settings',\n props<{ settings: UserSettings }>()\n);\n\nexport const resetUser = createAction(\n '[User] Reset User',\n props<{ user: string }>()\n);\n","import { createReducer, on } from '@ngrx/store';\n\nimport { resetUser, setUser, setUserSettings, setUserSubstitutees, setUserTheme } from './user.actions';\nimport { UserSettings } from 'src/app/shared/models/user-settings.model';\n\nexport const userFeatureKey = 'user';\n\nexport interface UserState {\n initialized: boolean;\n user: string;\n substitutees: string[];\n theme: string;\n settings: UserSettings;\n}\n\nexport const userInitialState: UserState = {\n initialized: false,\n user: null,\n substitutees: null,\n theme: null,\n settings: null,\n};\n\nexport const userReducer = createReducer(\n userInitialState,\n\n on(setUser, (state, {user}) => ({...state, initialized: true, user})),\n on(setUserSubstitutees, (state, {substitutees}) => ({...state, initialized: true, substitutees})),\n on(setUserTheme, (state, {theme}) => ({...state, theme })),\n on(setUserSettings, (state, {settings}) => ({...state, settings })),\n on(resetUser, state => ({...state, initialized: true, user: null, substitutees: null}))\n);\n","import {State} from '../index';\nimport {userFeatureKey, UserState} from './user.reducer';\nimport {createSelector} from '@ngrx/store';\n\nexport const selectUserState = (state: State): UserState => state[userFeatureKey];\n\nexport const selectUserSubstitutees = createSelector(\n selectUserState,\n\n (userState: UserState) => userState.substitutees\n);\n\nexport const selectUserInitialized = createSelector(\n selectUserState,\n\n (userState: UserState) => userState.initialized\n);\n\nexport const selectUserWithSubstitutees = createSelector(\n selectUserState,\n\n (userState: UserState) => [...(userState.user ? [userState.user] : []), ...(userState.substitutees || [])]\n);\n\nexport const selectUserTheme = createSelector(\n selectUserState,\n\n (userState: UserState) => userState.theme\n);\nexport const selectUserSettings = createSelector(\n selectUserState,\n\n (userState: UserState) => userState.settings\n);\n","export abstract class AbstractRoleProvider {\n public abstract getRoles(): Promise>;\n}\n","import {Subject, Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\nimport {AbstractRoleProvider} from './role-provider';\nimport {Injectable} from '@angular/core';\n\nexport interface RoleUpdateEvent {\n source: AbstractRoleUpdateAwareProvider;\n data: any;\n}\n\n@Injectable()\nexport abstract class AbstractRoleUpdateAwareProvider extends AbstractRoleProvider {\n protected rolesUpdateDataSubject = new Subject();\n public roleUpdates$: Observable = this.rolesUpdateDataSubject.asObservable().pipe(\n map(data => ({source: this, data})),\n share()\n );\n}\n","
\n
\n \n {{ 'module.requests.text.add-reason' | translate }}\n {{ ('common.button.' + actionName | translate) + (fileName ? ' ' + fileName : '') }}:\n \n\n
\n \n \n \n \n
\n
\n
\n attachmentList.clientHeight ? getScrollbarWidth() + 14 : -14) + 'px'\n }\"\n #attachmentList\n >\n \n
\n \n \n {{ fileJob.file.name }}\n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n \n {{ 'common.button.' + mainButtonTitle | translate }}\n \n
\n \n
\n\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnInit,\n InjectionToken,\n Inject,\n Optional,\n ViewChild,\n ElementRef\n} from '@angular/core';\nimport {ActionsReasonService} from '../../services/actions-reason.service';\nimport {FormBuilder, FormGroup, Validators} from '@angular/forms';\nimport memoize from 'lodash/memoize';\nimport {BehaviorSubject, combineLatest, merge, Observable, Subject, of, EMPTY, ReplaySubject, defer} from 'rxjs';\nimport {FILESCANCODE, FileUploadService} from '../../services/file-upload.service';\nimport {WithDestroy} from '../../../shared/components/with-destroy/with-destroy.mixin';\nimport {switchMap, shareReplay, takeUntil, map, delay, finalize} from 'rxjs/operators';\nimport {UploadLinkModel} from '../../models/upload-link.model';\nimport {HttpEventType} from '@angular/common/http';\nimport {BlobStorageUploadJob} from '../../models/file.model';\nimport {FILE_SIZE_RESTRICTIONS} from '../../../shared/models/upload-file-restrictions.model';\nimport {FILE_TYPES} from '../../../shared/constants/upload-restrictions.constants';\nimport {RequestsService} from '../../services/requests.service';\nimport {FileSizeRestriction} from '../../../shared/models/upload-file-restrictions.model';\nimport {UtilsService} from '../../../shared/services/utils.service';\nimport {MessageService} from '../../../shared/services/message-service.service';\nimport { LoaderService } from '../../../shared/services/loader.service';\n\nexport type RequestActionPositions = 'bottom-right' | string;\nexport interface RequestActionReasonOptions {\n attachmentAvailable: boolean;\n isRequired: boolean;\n actionName?: string;\n showLabel?: boolean;\n fieldLabel?: string;\n label?: string;\n position?: RequestActionPositions;\n}\nexport interface RequestActionReasonContext {\n [k: string]: any;\n}\nexport const REQUEST_ACTION_REASON_OPTIONS = new InjectionToken('REQUEST_ACTION_REASON_OPTIONS');\nexport const REQUEST_ACTION_REASON_CONTEXT = new InjectionToken('REQUEST_ACTION_REASON_CONTEXT');\n\nexport function doOnSubscribe(onSubscribe: () => void): (source: Observable) => Observable {\n return function inner(source: Observable): Observable {\n return defer(() => {\n onSubscribe();\n return source;\n });\n };\n}\n\nexport interface FileUploadJob {\n file: File;\n progress: Subject;\n cancelled: Subject;\n link: Observable;\n uploadedFile: Observable;\n}\n\n@Component({\n selector: 'app-request-action-reason',\n templateUrl: './request-action-reason.component.html',\n styleUrls: ['./request-action-reason.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class RequestActionReasonComponent extends WithDestroy() implements OnInit {\n @ViewChild('attachmentInput', {\n read: ElementRef,\n static: false\n })\n attachmentInput: ElementRef;\n /**\n * @description Action Description\n */\n public actionName: string;\n public showLabel = true;\n public fieldLabel: string;\n public position: string;\n public form: FormGroup;\n public mainButtonTitle: string;\n public isRequired: boolean;\n public fileName: string;\n public isRedConfirmButton: boolean;\n private _attachmentFileJobs: BehaviorSubject> = new BehaviorSubject([]);\n get attachmentFileJobs(): Array {\n return this._attachmentFileJobs.value;\n }\n set attachmentFileJobs(attachmentFileJobs: Array) {\n this._attachmentFileJobs.next(attachmentFileJobs);\n }\n private _excludedFileJobs: BehaviorSubject> = new BehaviorSubject([]);\n get excludedFileJobs(): Array {\n return this._excludedFileJobs.value;\n }\n set excludedFileJobs(excludedFileJobs: Array) {\n this._excludedFileJobs.next(excludedFileJobs);\n }\n\n fileSize: FileSizeRestriction = FILE_SIZE_RESTRICTIONS.GLOBAL;\n\n fileType$ = this.requestService.getFileTypes().pipe(\n map(data => data[FILE_TYPES.DEFAULT]),\n takeUntil(this.ngUnsubscribe$)\n );\n\n private value = '';\n\n constructor(\n private actionsReasonService: ActionsReasonService,\n private cd: ChangeDetectorRef,\n private fb: FormBuilder,\n private requestService: RequestsService,\n private fileUploadService: FileUploadService,\n private messageService: MessageService,\n private loaderService: LoaderService,\n @Optional() @Inject(REQUEST_ACTION_REASON_OPTIONS) public options: RequestActionReasonOptions,\n @Optional() @Inject(REQUEST_ACTION_REASON_CONTEXT) private context: RequestActionReasonContext\n ) {\n super();\n }\n\n onAttachmentsChange() {\n const createJob = file => ({\n file,\n progress: null,\n cancelled: null,\n link: null,\n uploadedFile: null\n });\n Array.from(this.attachmentInput.nativeElement.files)\n .filter(f => !UtilsService.isFileFitsBySize(f.size, this.fileSize))\n .forEach(() => {\n this.messageService.showSystemMessage(\n 'warning',\n 'File upload error',\n `File size exceeds limitation of ${this.fileSize.sizeNumber} ${this.fileSize.sizeType}`\n );\n });\n this.attachmentFileJobs = [\n ...this.attachmentFileJobs,\n ...Array.from(this.attachmentInput.nativeElement.files)\n .filter(f => UtilsService.isFileFitsBySize(f.size, this.fileSize))\n .map(createJob)\n ];\n\n this.attachmentInput.nativeElement.value = '';\n setTimeout(() => {\n this.cd.markForCheck();\n }, 0);\n }\n removeAttachment(attachmentIndex: number) {\n this.excludedFileJobs = [...this.excludedFileJobs, this.attachmentFileJobs[attachmentIndex]];\n setTimeout(() => {\n this.cd.markForCheck();\n }, 0);\n }\n\n public ngOnInit(): void {\n this.actionName = this.actionsReasonService.getAction() || this.options?.actionName;\n if(this.options?.showLabel != null) {\n this.showLabel = this.options?.showLabel;\n }\n this.fieldLabel = this.options?.fieldLabel;\n this.position = this.actionsReasonService.getPosition() || this.options?.position;\n this.mainButtonTitle = this.actionsReasonService.getMainButtonTitle();\n this.isRequired = this.actionsReasonService.getIsRequired() || this.options?.isRequired;\n\n this.form = this.fb.group({\n comment: [this.value]\n });\n\n if (this.isRequired) {\n this.form.get('comment').setValidators([Validators.required]);\n }\n\n const makeTimer = (job: FileUploadJob) => {\n job.progress = job.progress || new ReplaySubject(1);\n job.cancelled = job.cancelled || new Subject();\n job.link =\n job.link ||\n this.fileUploadService.requestAttachmentUploadLink(this.context.requestId, 'stage-action-attachment', job.file).pipe(\n doOnSubscribe(() => {\n // Display some progress in case if link process has started\n job.progress.next(1);\n })\n );\n\n job.uploadedFile =\n job.uploadedFile ||\n job.link.pipe(\n switchMap(uploadLink =>\n this.fileUploadService.uploadFileWithProgress(uploadLink, job.file).pipe(\n switchMap(event => {\n this.loaderService.showLoader();\n if (event.type === HttpEventType.UploadProgress) {\n const progress = Math.floor((event.loaded / event.total) * 100);\n job.progress.next(progress);\n }\n this.cd.markForCheck();\n if (event.type === HttpEventType.Response) {\n job.progress.next(100);\n }\n if (event.type === HttpEventType.Response) {\n return of(event).pipe(delay(5000), switchMap(() =>\n this.fileUploadService.scanUploadFile(uploadLink.uploadId, job.file.name).pipe(\n switchMap(res => {\n if (res.code === FILESCANCODE.SAFE) {\n return of({\n uploadId: uploadLink.uploadId,\n uploadUrl: uploadLink.uploadUrl,\n fileName: job.file.name,\n fileSize: job.file.size\n });\n }\n job.cancelled.next();\n const indexesToRemove: number[] = [];\n\n this.attachmentFileJobs.forEach((element, index) => {\n if (element.file.name === job.file.name) {\n indexesToRemove.push(index);\n }\n });\n\n indexesToRemove.forEach((index) => {\n this.removeAttachment(index);\n });\n\n console.error(job.file.name);\n return EMPTY;\n }))\n ));\n }\n return EMPTY;\n }),\n finalize(() => this.loaderService.hideLoader())\n )\n ),\n takeUntil(job.cancelled),\n shareReplay({\n bufferSize: 1,\n refCount: false\n })\n );\n\n return job.uploadedFile;\n };\n\n combineLatest([this._attachmentFileJobs, this._excludedFileJobs])\n .pipe(\n switchMap(([attachmentJobs, excludedJobs]) => {\n const activeJobs = attachmentJobs.filter(aj => !excludedJobs.includes(aj));\n const deactivatedJobs = attachmentJobs.filter(aj => excludedJobs.includes(aj));\n deactivatedJobs.forEach(job => job.cancelled.next());\n const resolutionJobs = activeJobs.map(makeTimer);\n return merge(...resolutionJobs);\n })\n )\n .subscribe(() => {});\n }\n getScrollbarWidth = memoize(() => {\n // Creating invisible container\n const outer = document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.overflow = 'scroll'; // forcing scrollbar to appear\n (outer.style as any).msOverflowStyle = 'scrollbar'; // needed for WinJS apps\n document.body.appendChild(outer);\n\n // Creating inner element and placing it in the container\n const inner = document.createElement('div');\n outer.appendChild(inner);\n\n // Calculating difference between container's full width and the child width\n const scrollbarWidth = outer.offsetWidth - inner.offsetWidth;\n\n // Removing temporary elements from the DOM\n outer.parentNode.removeChild(outer);\n\n return scrollbarWidth;\n });\n\n public onConfirm(): void {\n if (this.form.valid && this.form.controls && this.form.controls.comment) {\n this.actionsReasonService.confirmAction(\n this.form.controls.comment.value,\n Promise.all(\n this.attachmentFileJobs\n .filter(f => !this.excludedFileJobs.includes(f))\n .map(fileJob => fileJob.uploadedFile)\n .map(file => file.toPromise())\n )\n );\n } else {\n Object.keys(this.form.controls).forEach(key => {\n const control = this.form.get(key);\n if (control.pristine) {\n control.markAsTouched();\n control.updateValueAndValidity({onlySelf: true, emitEvent: true});\n }\n });\n }\n\n this.cd.markForCheck();\n }\n\n public onCancel(): void {\n this.actionsReasonService.cancelAction();\n }\n\n public getErrorMessage(): string {\n if (this.form.invalid) {\n if (this.form.get('comment').hasError('required') || this.form.get('comment').hasError('notEmpty')) {\n return 'You must enter a value';\n }\n\n return 'Invalid value';\n }\n return null;\n }\n}\n","export const ARTWORK_STATUSES: {\n unreviewed: 'UNREVIEWED';\n approved: 'APPROVED';\n rejected: 'REJECTED';\n} = {\n unreviewed: 'UNREVIEWED',\n approved: 'APPROVED',\n rejected: 'REJECTED'\n};\n\nexport enum ARTWORK_SUMMARY_STATUSES {\n approved = 'APPROVED',\n rejected = 'REJECTED',\n inProgress = 'IN_PROGRESS',\n}\n","/* eslint-disable no-useless-escape */\nexport const MAX_ITEMS_PER_REQUEST = 999;\nexport const MAX_ITEMS_PER_IMAGE_REQUEST = 30;\nexport const NOTE_MAX_LENGTH = 10000;\nexport const QUANTITY_MAX_LENGTH = 10;\nexport const PKID_MAX_LENGTH = 4;\nexport const PRICE_PATTERN = /^(\\d+(?:[\\.]\\d{1,6})?)$/;\nexport const REQUEST_NAME_PATTERN = /[a-zA-Z0-9]*((-|,|.|:|\\s)*[a-zA-Z0-9])/;\nexport const INTEGER_PATTERN = /[0-9]*/;\nexport const INTEGER_PATTERN_EXCEPT_ZERO_VALUE = /^[1-9][0-9]*$/;\nexport const IMAGE_DENOM_PATTERN = /^[0-9 .,-]*$/;\nexport const MAX_PO_TOTAL = 999999999.9999; // <9>.<4>\nexport const MAX_PO_SUB_TOTAL = 9999999.99; // <7>.<2>\nexport const MAX_POP_PROD_COST_TOTAL = 9999999999.9999; // <10>.<4>\nexport const MAX_BIF_COST_TOTAL = 99999999.99; // <8>.<2>\nexport const MAX_REBILL_TOTAL = 9999999999.9999; // <10>.<4>\nexport const MAX_BIF_REBILL_TOTAL = 99999999.9999; // <8>.<4>\n\nexport const IH_MAX_PACKAGES = 99;\nexport const IH_MAX_COMPONENTS_PER_ITEM = 10;\nexport const IH_LABELS_QUANTITY_MULTIPLIER = 5000;\n\nexport const THIRD_MAX_RANGES_PER_ITEM = 99;\n\nexport interface PaymentType {\n code: string;\n name: string;\n}\n","export const POP_PRODUCTION_REQUEST = 'POP_PRODUCTION_REQUEST';\nexport const POP_DESIGN_REQUEST = 'POP_DESIGN_REQUEST';\nexport const CARD_DESIGN_REQUEST = 'CARD_DESIGN_REQUEST';\nexport const PRODUCTION_REQUEST = 'PRODUCTION_REQUEST';\nexport const FINANCIAL_SERVICES_REQUEST = 'FINANCIAL_SERVICES_REQUEST';\nexport const BIF_PRODUCTION_REQUEST = 'BIF_PRODUCTION_REQUEST';\nexport const PRODUCTION_REQUEST_3RD_PARTY = 'PRODUCTION_REQUEST_3RD_PARTY';\nexport const DIGITAL_ASSETS_REQUEST = 'DIGITAL_ASSETS_REQUEST';\nexport const IH_PRODUCTION_REQUEST = 'IH_PRODUCTION_REQUEST';\nexport const IMAGE_REQUEST = 'IMAGE_REQUEST';\n\nexport const SUPPORTED_REQUEST_TYPES = [\n POP_PRODUCTION_REQUEST,\n POP_DESIGN_REQUEST,\n CARD_DESIGN_REQUEST,\n PRODUCTION_REQUEST,\n FINANCIAL_SERVICES_REQUEST,\n BIF_PRODUCTION_REQUEST,\n PRODUCTION_REQUEST_3RD_PARTY,\n IH_PRODUCTION_REQUEST,\n IMAGE_REQUEST\n];\n\nexport const DUPLICATE_SUPPORTED_REQUEST_TYPES = [\n PRODUCTION_REQUEST,\n BIF_PRODUCTION_REQUEST,\n IH_PRODUCTION_REQUEST,\n FINANCIAL_SERVICES_REQUEST,\n POP_PRODUCTION_REQUEST,\n PRODUCTION_REQUEST_3RD_PARTY,\n CARD_DESIGN_REQUEST,\n POP_DESIGN_REQUEST,\n IMAGE_REQUEST\n];\n\nexport const CHANGE_OWNER_REQUEST_TYPES = [\n POP_PRODUCTION_REQUEST,\n POP_DESIGN_REQUEST,\n CARD_DESIGN_REQUEST,\n PRODUCTION_REQUEST,\n FINANCIAL_SERVICES_REQUEST,\n BIF_PRODUCTION_REQUEST,\n PRODUCTION_REQUEST_3RD_PARTY,\n IH_PRODUCTION_REQUEST,\n IMAGE_REQUEST\n];\n\nexport enum REQUEST_TYPE {\n CPR = 'PRODUCTION_REQUEST',\n CDR = 'CARD_DESIGN_REQUEST',\n PPR = 'POP_PRODUCTION_REQUEST',\n PDR = 'POP_DESIGN_REQUEST',\n FSR = 'FINANCIAL_SERVICES_REQUEST',\n BPR = 'BIF_PRODUCTION_REQUEST',\n TPPR = 'PRODUCTION_REQUEST_3RD_PARTY',\n DAR = 'DIGITAL_ASSETS_REQUEST',\n IPR = 'IH_PRODUCTION_REQUEST',\n IR = 'IMAGE_REQUEST',\n}\n\nexport const REQUEST_TYPES = [\n {\n label: '3rd Party Card Production Request',\n value: PRODUCTION_REQUEST_3RD_PARTY\n },\n {\n label: 'BIF Production Request',\n value: BIF_PRODUCTION_REQUEST\n },\n {\n label: 'Card Design Request',\n value: CARD_DESIGN_REQUEST\n },\n {\n label: 'Digital Assets Request',\n value: DIGITAL_ASSETS_REQUEST\n },\n {\n label: 'Financial Services Request',\n value: FINANCIAL_SERVICES_REQUEST\n },\n {\n label: 'IH Production Request',\n value: IH_PRODUCTION_REQUEST\n },\n {\n label: 'POP Design Request',\n value: POP_DESIGN_REQUEST\n },\n {\n label: 'POP Production Request',\n value: POP_PRODUCTION_REQUEST\n },\n {\n label: 'Production Request',\n value: PRODUCTION_REQUEST\n },\n {\n label: 'Image Request',\n value: IMAGE_REQUEST\n },\n];\n","import {Injectable} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\nimport { BlobStorageUploadJob } from '../models/file.model';\n\nexport interface IActionReasonAction {\n action?: string;\n buttonClicked?: 'confirm' | 'cancel' | string;\n comment?: string;\n attachments?: Promise;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ActionsReasonService {\n private currentAction = '';\n private currentPosition = '';\n private mainButtonTitle = 'confirm';\n private isRequired = false;\n\n private actionReason: Subject = new Subject<{action: string; comment?: string}>();\n\n public setAction(action: string): void {\n this.currentAction = action;\n this.mainButtonTitle = '';\n }\n public setPosition(position: string): void {\n this.currentPosition = position;\n }\n public setMainButtonTitle(title: string): string {\n this.mainButtonTitle = title;\n return this.mainButtonTitle;\n }\n public setIsRequired(isRequired: boolean): void {\n this.isRequired = isRequired;\n }\n public getAction(): string {\n return this.currentAction;\n }\n public getPosition(): string {\n return this.currentPosition;\n }\n public getMainButtonTitle(): string {\n return this.mainButtonTitle ? this.mainButtonTitle : 'confirm';\n }\n public getIsRequired(): boolean {\n return this.isRequired;\n }\n\n public cancelAction(): void {\n this.actionReason.next({action: this.currentAction, buttonClicked: 'cancel'});\n this.setAction('');\n }\n\n public confirmAction(comment: string, attachments: Promise = null): void {\n this.actionReason.next({action: this.currentAction, buttonClicked: 'confirm', comment, attachments});\n this.setAction('');\n }\n\n public getReason(): Observable {\n return this.actionReason.asObservable();\n }\n}\n","import { HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { UserModel } from 'src/app/shared/models/user.model';\n\nimport { API } from '../../shared/constants/api.constants';\nimport { ErrorHandlingHttpClient } from 'src/app/shared/services/error-handling-http-client.service';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AssigneeService {\n constructor(private errorHandlingHttpClient: ErrorHandlingHttpClient) {}\n\n loadValues(values: string[]): Observable {\n let httpParams = new HttpParams();\n\n values.forEach(v => {\n httpParams = httpParams.append('usernames', v);\n });\n\n return this.errorHandlingHttpClient.get(`${API.searchUsersByUsernameFullMatch}`, {\n params: httpParams\n });\n }\n\n searchValues(query: string): Observable {\n const httpParams = (new HttpParams()).append(\n 'nameBeginning', query\n );\n\n return this.errorHandlingHttpClient.get(`${API.getUsers}`, {\n params: httpParams\n });\n }\n}\n","import { HttpResponse, HttpHeaders } from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {saveAs} from 'file-saver';\nimport {catchError} from 'rxjs/operators';\nimport {ErrorHandlingHttpClient} from '../../shared/services/error-handling-http-client.service';\nimport {UtilsService} from '../../shared/services/utils.service';\nimport {EMPTY} from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FileDownloadService {\n constructor(private errorHandlingHttp: ErrorHandlingHttpClient) {}\n\n public getFileBlob(url: string, payload?: any): Promise<[Blob, HttpHeaders]> {\n return new Promise((resolve, reject) => {\n const options = {\n observe: 'response',\n responseType: 'blob'\n };\n\n const http$ = payload\n ? this.errorHandlingHttp.post>(url, payload, options)\n : this.errorHandlingHttp.get>(url, options);\n http$\n .pipe(\n catchError(e => {\n reject(e);\n return EMPTY;\n })\n )\n .subscribe(resp => {\n resolve([resp.body, resp.headers]);\n });\n });\n }\n public static getFileNameFromContentDispostion(disposition: string): string {\n const utf8FilenameRegex = /filename\\*=UTF-8''([\\w%\\-.]+)(?:; ?|$)/i;\n const asciiFilenameRegex = /^filename=([\"']?)(.*?[^\\\\])\\1(?:; ?|$)/i;\n\n let fileName: string = null;\n if (utf8FilenameRegex.test(disposition)) {\n fileName = decodeURIComponent(utf8FilenameRegex.exec(disposition)[1]);\n } else {\n // prevent ReDos attacks by anchoring the ascii regex to string start and\n // slicing off everything before 'filename='\n const filenameStart = disposition.toLowerCase().indexOf('filename=');\n if (filenameStart >= 0) {\n const partialDisposition = disposition.slice(filenameStart);\n const matches = asciiFilenameRegex.exec(partialDisposition);\n if (matches != null && matches[2]) {\n fileName = matches[2];\n }\n }\n }\n return fileName;\n }\n\n public downloadFile(url: string, fileName?: string, payload?: any): void {\n const options = {\n observe: 'response',\n responseType: 'blob'\n };\n\n const http$ = payload\n ? this.errorHandlingHttp.post>(url, payload, options)\n : this.errorHandlingHttp.get>(url, options);\n http$.subscribe(resp => {\n const name = this.getFileNameFromHeader(resp) || fileName || this.getFileNameFromUrl(url);\n saveAs(resp.body, name);\n });\n }\n\n private getFileNameFromHeader(resp: HttpResponse): string {\n return resp.headers.has('file-name') ? UtilsService.getFileNameFromHeaders(resp.headers) : null;\n }\n\n private getContentTypeFromHeader(resp: HttpResponse): string {\n return resp.headers.get('Content-Type') || 'application/octet-stream';\n }\n\n private getFileNameFromUrl(url: string): string {\n url = decodeURIComponent(url);\n const base = url.split('?')[0];\n const components = base.split('/');\n // fileName\n return components[components.length - 1];\n }\n}\n","import {Injectable} from '@angular/core';\nimport {Observable, of, throwError} from 'rxjs';\nimport {UploadLinkModel} from '../models/upload-link.model';\nimport {API} from '../../shared/constants/api.constants';\nimport {ErrorHandlingHttpClient} from '../../shared/services/error-handling-http-client.service';\nimport {UtilsService} from '../../shared/services/utils.service';\nimport {FILE_SIZE_RESTRICTIONS} from '../../shared/models/upload-file-restrictions.model';\nimport {delay, filter, first, map, repeat, switchMap, tap} from 'rxjs/operators';\nimport {HttpEvent, HttpEventType} from '@angular/common/http';\nimport {REQUEST_TYPE} from '../constants/request-types.constant';\nimport {CardDesignRequestItemModel} from '../models/card-design-request.model';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MessageService } from '../../shared/services/message-service.service';\nexport enum FILESCANCODE {\n SAFE = 'SAFE',\n UNSAFE = 'UNSAFE',\n PENDING = 'PENDING'\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FileUploadService {\n\n pendingUploads: Array = [];\n\n constructor(\n private errorHandlingHttp: ErrorHandlingHttpClient,\n protected messageService: MessageService,\n protected translateService: TranslateService) {\n }\n\n public requestAttachmentUploadLink(requestId: number | string, fileType: string, file: File): Observable {\n const sizeLimit = FILE_SIZE_RESTRICTIONS.GLOBAL;\n if (UtilsService.isFileFitsBySize(file.size, sizeLimit)) {\n return this.errorHandlingHttp.post(API.createAttachmentUploadLink(requestId, fileType), { fileName: file.name });\n }\n return throwError(new Error(\n `Unable to upload ${file.name} as it is larger than ${sizeLimit.sizeNumber} ${sizeLimit.sizeType}`\n ));\n }\n\n public overwriteFile(uploadUrl: string, file: File): Observable {\n return this.errorHandlingHttp.put(uploadUrl, file, {\n headers: {\n 'x-ms-blob-type': 'BlockBlob',\n 'x-ms-version': '2019-12-12',\n }\n });\n }\n\n public uploadFileWithProgress(uploadLink: UploadLinkModel, file: File): Observable {\n this.pendingUploads.push(uploadLink.uploadId);\n return this.errorHandlingHttp.put(uploadLink.uploadUrl, file, {\n headers: {\n 'x-ms-blob-type': 'BlockBlob',\n 'x-ms-client-request-id': uploadLink.uploadId,\n 'x-ms-version': '2019-12-12',\n },\n reportProgress: true,\n observe: 'events',\n }).pipe(switchMap(event => {\n const uploadIndex = this.pendingUploads.indexOf(uploadLink.uploadId);\n const uploadCanceled = uploadIndex === -1;\n if (event.type === HttpEventType.Response && !uploadCanceled) {\n this.pendingUploads.splice(uploadIndex, 1);\n return of(event);\n }\n if (uploadCanceled) {\n return throwError({\n error: 'Upload canceled!'\n });\n }\n return of(event);\n }));\n }\n\n scanUploadFile(uploadId, fileName): Observable{\n return this.errorHandlingHttp.get(API.scanAttachmentUploadFile(uploadId)).pipe(\n delay(1000),\n repeat(),\n filter(fileValidationResponse => fileValidationResponse.code !== FILESCANCODE.PENDING),\n tap(fileValidationResponse => {\n if (fileValidationResponse.code === FILESCANCODE.UNSAFE) {\n this.messageService.showSystemMessage('error', null,\n this.translateService.instant('common.errors.file-scan-error', { fileName })\n );\n return throwError(new Error('Upload canceled!'));\n }\n }),\n first(),\n map(fileValidationResponse => fileValidationResponse),\n );\n }\n\n public cancelUploads() {\n this.pendingUploads = [];\n }\n\n// Common Upload Artwork functionality\n public uploadArtworkForRequestItem(file: File,\n requestId: number | string,\n requestType: REQUEST_TYPE,\n attachmentFileType: string,\n requestItemId?: number): Observable> {\n let createUploadItemArtworkUrl: string;\n let shouldRequestHasFileTypeParameter: boolean;\n switch (requestType) {\n case REQUEST_TYPE.CPR: {\n createUploadItemArtworkUrl = API.createAttachment(requestId as string);\n shouldRequestHasFileTypeParameter = true;\n break;\n }\n case REQUEST_TYPE.TPPR: {\n createUploadItemArtworkUrl = API.createThirdPartyArtwork(requestId as string);\n break;\n }\n case REQUEST_TYPE.PPR: {\n createUploadItemArtworkUrl = API.createPopProductionArtwork(requestId as string);\n break;\n }\n case REQUEST_TYPE.FSR: {\n createUploadItemArtworkUrl = API.createFsrArtwork(requestId as string);\n break;\n }\n case REQUEST_TYPE.BPR: {\n createUploadItemArtworkUrl = API.createBifArtwork(requestId as string);\n break;\n }\n case REQUEST_TYPE.IPR: {\n createUploadItemArtworkUrl = API.createIHProductionArtwork(requestId as string);\n break;\n }\n }\n return this.uploadAndCreateAttachment(\n file, requestId, createUploadItemArtworkUrl, attachmentFileType, shouldRequestHasFileTypeParameter);\n }\n\n public uploadAndCreateAttachment(file: File,\n requestId: number | string,\n createAttachmentUrl: string,\n attachmentFileType: string,\n shouldRequestHasFileTypeParameter?: boolean) {\n return this.requestAttachmentUploadLink(requestId, attachmentFileType, file).pipe(\n switchMap(uploadLink => this.uploadFileWithProgress(uploadLink, file).pipe(\n switchMap(event => {\n if (event.type === HttpEventType.Response) {\n return this.scanUploadFile(uploadLink.uploadId, file.name).pipe(\n switchMap(res => {\n if(res.code === FILESCANCODE.SAFE){\n return this.createAttachmentRequest(\n createAttachmentUrl, uploadLink.uploadId, shouldRequestHasFileTypeParameter, attachmentFileType);\n }\n })\n );\n }\n return of(event);\n })\n ))\n );\n }\n\n public createAttachmentRequest(\n createAttachmentUrl: string,\n uploadId: string,\n shouldRequestHasFileTypeParameter: boolean,\n fileType: string) {\n return this.errorHandlingHttp.post(createAttachmentUrl, null,\n {\n reportProgress: true,\n observe: 'events',\n params: shouldRequestHasFileTypeParameter ? {uploadId, fileType} : {uploadId},\n });\n }\n\n public deleteArtwork(requestId: string | number,\n requestItemId: string | number,\n attachmentId: string | number,\n requestType: REQUEST_TYPE): Observable {\n let apiUrl: string;\n switch (requestType) {\n case REQUEST_TYPE.CPR: {\n apiUrl = API.deleteArtwork(requestId, attachmentId);\n break;\n }\n case REQUEST_TYPE.PPR: {\n apiUrl = API.ppDeleteArtwork(requestId, requestItemId, attachmentId);\n break;\n }\n case REQUEST_TYPE.TPPR: {\n apiUrl = API.thirdPartyDeleteArtwork(requestId, attachmentId);\n break;\n }\n case REQUEST_TYPE.FSR: {\n apiUrl = API.fsrDeleteArtwork(requestId, attachmentId);\n break;\n }\n case REQUEST_TYPE.BPR: {\n apiUrl = API.bifDeleteArtwork(requestId, attachmentId);\n break;\n }\n case REQUEST_TYPE.IPR: {\n apiUrl = API.ihProductionDeleteArtwork(requestId, attachmentId);\n break;\n }\n }\n return this.errorHandlingHttp.delete(apiUrl);\n }\n\n}\n","import {Injectable} from '@angular/core';\nimport {HttpClient, HttpEventType, HttpResponse} from '@angular/common/http';\nimport {Observable, of, ReplaySubject, Subject} from 'rxjs';\nimport {RequestModel} from '../models/request.model';\nimport {API} from '../../shared/constants/api.constants';\nimport {catchError, finalize, map, shareReplay, switchMap, tap} from 'rxjs/operators';\nimport {Warehouse} from '../models/warehouse.model';\nimport {ProductionPoModel} from '../models/production-po.model';\nimport {UserService} from '../../shared/services/user.service';\nimport {saveAs} from 'file-saver';\nimport cloneDeep from 'lodash/cloneDeep';\nimport {MilestoneItem, PrinterItemModel} from '../models/printer-item.model';\nimport {ErrorHandlingHttpClient} from '../../shared/services/error-handling-http-client.service';\nimport {UserModel} from '../../shared/models/user.model';\nimport {UtilsService} from '../../shared/services/utils.service';\nimport {UserGroups} from '../../shared/constants/user-groups.enum';\nimport {FILESCANCODE, FileUploadService} from './file-upload.service';\nimport {RequestTypeModel} from '../models/request-type.model';\nimport {MessageService} from '../../shared/services/message-service.service';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Events, EventService} from '../../shared/services/event-service.service';\nimport {FileDownloadService} from './file-download.service';\nimport { LoaderService } from '../../shared/services/loader.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RequestsService {\n constructor(\n private http: HttpClient,\n private errorHandlingHttp: ErrorHandlingHttpClient,\n private fileUploadService: FileUploadService,\n private userService: UserService,\n private messageService: MessageService,\n private translateService: TranslateService,\n private eventService: EventService,\n private loaderService: LoaderService\n ) {\n this.warehousesObservable = this.replayAndClone(this.errorHandlingHttp.get(`${API.warehouses}`));\n this.companiesObservable = this.replayAndClone(this.errorHandlingHttp.get(`${API.companies}`));\n this.lineOfBusinessObservable = this.replayAndClone(this.errorHandlingHttp.get(`${API.lineOfBusinessTypes}`));\n this.channelTypesObservable = this.replayAndClone(this.errorHandlingHttp.get(`${API.chnTypes}`));\n this.inventoryTypesObservable = this.replayAndClone(this.errorHandlingHttp.get(`${API.inventoryTypes}`));\n this.requestTypeInventoryTypesObservable = this.replayAndClone(this.errorHandlingHttp.get(`${API.requestTypeInventoryTypes}`));\n this.europeanCountriesObservable = this.replayAndClone(this.errorHandlingHttp.get(`${API.europeCountries}`));\n this.printers = this.replayAndClone(this.errorHandlingHttp.get(`${API.printers}`));\n this.fileTypesWhiteList = this.replayAndClone(this.errorHandlingHttp.get(`${API.fileTypes}`));\n this.designerList = this.replayAndClone(\n this.errorHandlingHttp.get(`${API.getUsers}`, {params: {nameBeginning: '', groupKeys: UserGroups.Designer}})\n );\n }\n\n // tslint:disable-next-line:no-unused-variable\n private requestDetails: ReplaySubject = new ReplaySubject(1);\n private requestName: ReplaySubject = new ReplaySubject(1);\n private poDetails: ReplaySubject = new ReplaySubject(1);\n\n private warehousesObservable: Observable;\n private companiesObservable: Observable;\n private lineOfBusinessObservable: Observable;\n private channelTypesObservable: Observable;\n private inventoryTypesObservable: Observable;\n private requestTypeInventoryTypesObservable: Observable;\n private europeanCountriesObservable: Observable;\n private printers: Observable;\n private fileTypesWhiteList: Observable;\n private designerList: Observable>;\n private wpnDetailsByWpnId = {};\n\n private requestTypes$ = this.errorHandlingHttp.get(`${API.requestTypes}`).pipe(\n shareReplay({\n bufferSize: 1,\n refCount: false\n })\n );\n\n /**\n * @depreacted Rewrite using store\n */\n public createRequest(): Observable {\n return this.requestTypes$;\n }\n\n public updateRequestDetails(requestId: string | number, details: any, draft = false): Observable {\n return this.errorHandlingHttp.put(API.getRequestId(requestId, draft), details);\n }\n\n public postCreateNewRequest(requestName: string, requestType: string): Observable {\n const requestObj = {\n name: requestName,\n type: requestType\n };\n this.resetRequestDetails();\n\n return this.errorHandlingHttp.post(`${API.createNewRequest}`, requestObj);\n }\n\n public downloadAttachment(requestId: string | number, attachmentId: string | number) {\n this.downloadFile(API.attachmentDownload(requestId, attachmentId));\n }\n\n public downloadPoPdf(requestId: string | number, poId: number, type: string): void {\n this.downloadFile(API.poPdfDownload(requestId, poId, type));\n }\n public fetchPoPdf(requestId: string | number, poId: number, type: string): Observable<[Blob, string]> {\n return this.errorHandlingHttp\n .get(API.poPdfDownload(requestId, poId, type), {\n observe: 'response',\n responseType: 'blob' as 'json'\n })\n .pipe(map(resp => [resp.body, FileDownloadService.getFileNameFromContentDispostion(resp.headers.get('content-disposition'))]));\n }\n\n public downloadFile(url: string, fileName?: string): void {\n this.errorHandlingHttp\n .get>(url, {\n observe: 'response',\n responseType: 'blob' as 'json'\n })\n .subscribe(resp => {\n const name = this.getFileNameFromHeader(resp) || fileName || this.getFileNameFromUrl(url);\n saveAs(resp.body, name);\n });\n }\n\n private getFileNameFromHeader(resp: HttpResponse): string {\n if (resp.headers.has('file-name')) {\n return UtilsService.getFileNameFromHeaders(resp.headers);\n }\n return null;\n }\n\n private getFileNameFromUrl(url: string): string {\n url = decodeURIComponent(url);\n const base = url.split('?')[0];\n const components = base.split('/');\n // fileName\n return components[components.length - 1];\n }\n\n public downloadItemFile(item, requestId: number | string): void {\n this.downloadFile(this.getFileUrl(item, requestId));\n }\n\n public getFileUrl(item, requestId: number | string): string {\n let url: string;\n\n if (item.url) {\n return item.url;\n }\n\n switch (item.type) {\n case 'po':\n case 'sow':\n case 'printer':\n url = API.poPdfDownload(requestId, item.id, item.type);\n break;\n case 'file':\n url = API.getFile(item.id);\n break;\n default:\n url = API.attachmentDownload(requestId, item.attachmentId || item.id);\n }\n\n return url;\n }\n\n public getBlob(url: string): Observable {\n return this.errorHandlingHttp.get(url, {\n observe: 'response',\n responseType: 'blob' as 'json'\n });\n }\n\n public getFileTypes(): Observable {\n return this.fileTypesWhiteList;\n }\n\n public uploadProofOfPayments(requestId: string | number, file: File): Observable {\n this.loaderService.showLoader();\n return this.fileUploadService\n .requestAttachmentUploadLink(requestId, 'finance', file)\n .pipe(\n switchMap(uploadLink =>\n this.fileUploadService\n .uploadFileWithProgress(uploadLink, file)\n .pipe(\n switchMap(event => {\n if (event.type === HttpEventType.Response) {\n return this.fileUploadService.scanUploadFile(uploadLink.uploadId, file.name).pipe(\n switchMap(res => {\n if(res.code === FILESCANCODE.SAFE){\n return this.createProofOfPayments(requestId, uploadLink.uploadId);\n }\n })\n );\n }\n return of(event);\n })\n )\n )\n ).pipe(finalize(() => this.loaderService.hideLoader()));\n }\n\n public createProofOfPayments(requestId: string | number, uploadId: string): Observable {\n return this.errorHandlingHttp.post(`${API.createProofOfPayment(requestId)}`, null, {\n reportProgress: true,\n observe: 'events',\n params: {uploadId}\n });\n }\n\n public uploadExternalPin(requestId: string | number, file: File, reqItemId: string | number, reqType: string): Observable {\n this.loaderService.showLoader();\n return this.fileUploadService\n .requestAttachmentUploadLink(requestId, 'external-pin', file)\n .pipe(\n switchMap(uploadLink =>\n this.fileUploadService\n .uploadFileWithProgress(uploadLink, file)\n .pipe(\n switchMap(event => {\n if (event.type === HttpEventType.Response) {\n return this.fileUploadService.scanUploadFile(uploadLink.uploadId, file.name).pipe(\n switchMap(res => {\n if(res.code === FILESCANCODE.SAFE){\n return this.createExternalPin(requestId, uploadLink.uploadId, reqItemId, reqType);\n }\n })\n );\n }\n return of(event);\n })\n )\n )\n ).pipe(finalize(() => this.loaderService.hideLoader()));\n }\n\n public createExternalPin(requestId: string | number, uploadId: string, reqItemId: string | number, reqType: string): Observable {\n return this.errorHandlingHttp.post(`${API.createExternalPin[reqType](requestId, reqItemId)}`, null, {\n reportProgress: true,\n observe: 'events',\n params: {uploadId}\n });\n }\n\n public linkFileToReqItem(requestId: string | number, reqItemId: string | number, attachmentId: string | number): Observable {\n /**\n * Important to use http client in order to catch errors\n */\n return this.http.post(`${API.linkAttachment(requestId, reqItemId)}`, [{attachmentId}], {\n headers: {\n username: this.userService.getCurrentUserName()\n }\n });\n }\n\n public updateAttachmentStatus(\n requestType: string,\n requestId: string | number,\n reqItemId: string | number,\n attachmentId: string | number,\n status: string,\n rejectionReason?: string,\n isPrinterProofs?: boolean\n ): Observable {\n return this.errorHandlingHttp.put(\n `${API.updateAttachmentStatus[requestType](requestId, reqItemId, attachmentId, isPrinterProofs)}`,\n {attachmentId, status, rejectionReason},\n {\n headers: {\n username: this.userService.getCurrentUserName()\n }\n }\n );\n }\n\n public updateItemStatus(\n requestType: string,\n requestId: string | number,\n reqItemId: string | number,\n status: string,\n rejectionReason?: string,\n isPrinterProofs?: boolean\n ): Observable {\n return this.errorHandlingHttp.put(\n `${API.updateRequestItemStatus[requestType](requestId, reqItemId, isPrinterProofs)}`,\n {status, rejectionReason},\n {\n headers: {\n username: this.userService.getCurrentUserName()\n }\n }\n );\n }\n\n public deleteProofOfPayment(requestId: string | number, attachmentId: string | number): Observable {\n return this.errorHandlingHttp.delete(`${API.deleteProofOfPayment(requestId, attachmentId)}`);\n }\n\n public deleteExternalPin(\n requestId: string | number,\n attachmentId: string | number,\n itemId: string | number,\n reqType: string\n ): Observable {\n return this.errorHandlingHttp.delete(`${API.deleteExternalPin[reqType](requestId, attachmentId, itemId)}`);\n }\n\n public uploadSOWFile(requestId: string | number, poId: string | number, file: File): Observable {\n this.loaderService.showLoader();\n return this.fileUploadService\n .requestAttachmentUploadLink(requestId, 'sow', file)\n .pipe(\n switchMap(uploadLink =>\n this.fileUploadService\n .uploadFileWithProgress(uploadLink, file)\n .pipe(\n switchMap(event => {\n if (event.type === HttpEventType.Response) {\n return this.fileUploadService.scanUploadFile(uploadLink.uploadId, file.name).pipe(\n switchMap(res => {\n if(res.code === FILESCANCODE.SAFE){\n return this.createSowAttachment(requestId, poId, uploadLink.uploadId);\n }\n })\n );\n }\n return of(event);\n })\n )\n )\n ).pipe(finalize(() => this.loaderService.hideLoader()));\n }\n\n private createSowAttachment(requestId: string | number, poId: string | number, uploadId: string): Observable {\n return this.errorHandlingHttp.post(`${API.createSowAttachment(requestId, poId)}`, null, {\n reportProgress: true,\n observe: 'events',\n params: {uploadId}\n });\n }\n\n public deleteSOWFile(requestId: string | number, poId: string | number, attachmentId: string | number): Observable {\n return this.errorHandlingHttp.delete(`${API.deleteSOWFile(requestId, poId, attachmentId)}`);\n }\n\n public getUsers(nameBeginning: string, groupKeys?: string[]): Observable {\n /**\n * Important to use http client in order to catch errors\n */\n const queryParams = {\n params: {\n nameBeginning,\n ...(groupKeys && {groupKeys})\n }\n };\n return this.http.get(`${API.getUsers}`, queryParams);\n }\n\n public getDesignerList(): Observable> {\n return this.designerList;\n }\n\n public getWPNdata(WPN: number): Observable {\n if (!this.wpnDetailsByWpnId[WPN]) {\n /**\n * Important to use http client in order to catch errors\n */\n this.wpnDetailsByWpnId[WPN] = this.replayAndClone(this.http.get(`${API.getWPNdetails(WPN)}`));\n }\n return this.wpnDetailsByWpnId[WPN];\n }\n\n public getEuropeCountriesList(): Observable {\n return this.europeanCountriesObservable;\n }\n\n public getMerchants(name: string, limit?: number): Observable {\n const queryParams = {\n params: {\n merchantName: name\n }\n };\n return this.errorHandlingHttp.get(`${API.getMerchants}`, queryParams);\n }\n\n public getMerchantInfo(id: number): Observable {\n /**\n * Important to use http client in order to catch errors\n */\n return this.http.get(`${API.getMerchantInfo(id)}`);\n }\n\n public getContacts(nameBeginning: string): Observable {\n const queryParams = {\n params: {\n nameBeginning\n }\n };\n return this.errorHandlingHttp.get(`${API.getContacts}`, queryParams);\n }\n\n public getShipments(): Observable> {\n return this.warehousesObservable;\n }\n\n public deleteRequest(id: string): Observable {\n return this.errorHandlingHttp.delete(`${API.getRequestId(id)}`);\n }\n\n public updateRequest(id: string | number, request: any): Observable {\n return this.errorHandlingHttp.put(API.getRequestId(id), request);\n }\n\n public updateRequestName(id: string, name: string): Observable {\n const observable = new Subject();\n\n this.errorHandlingHttp.put(API.updateRequestName(id), {value: name}).subscribe(\n (data: {value: string}) => {\n this.requestName.next(data.value);\n observable.next(data);\n },\n err => observable.error(err)\n );\n\n return observable.asObservable();\n }\n\n public getRequestNameListener(): Observable {\n return this.requestName.asObservable();\n }\n\n public getPOListener(): Observable {\n return this.poDetails.asObservable();\n }\n\n public callPO(requestId: number | string): void {\n this.http.get(`${API.managePO(requestId)}`).subscribe((data: ProductionPoModel) => {\n this.poDetails.next(data);\n });\n this.eventService.emit({eventName: Events.UpdateActionHistory});\n }\n\n public performAction(\n requestId: string | number,\n actionType: string,\n stageCode: string,\n comment?: string,\n attachmentUploadIds?: string[]\n ): Observable> {\n return this.errorHandlingHttp.post(\n `${API.performAction(requestId)}`,\n {\n actionType,\n stageCode,\n comment,\n attachmentUploadIds\n },\n {\n headers: {\n username: this.userService.getCurrentUserName()\n },\n observe: 'response'\n }\n );\n }\n\n public createPO(requestId: number | string, data: any): Observable {\n const reqObj = Object.assign(data);\n return this.errorHandlingHttp.post(`${API.managePO(requestId)}`, reqObj);\n }\n\n public updatePO(requestId: number | string, poId: number, data: any): Observable {\n const observable = new Subject();\n\n const reqObj = Object.assign(data);\n this.errorHandlingHttp.put(`${API.updatePO(requestId, poId)}`, reqObj).subscribe(\n response => {\n this.callPO(requestId);\n observable.next(response);\n },\n error => observable.error(error)\n );\n return observable.asObservable();\n }\n\n public deletePO(requestId: number | string, poId: number): Observable {\n const observable = new Subject();\n\n this.errorHandlingHttp.delete(`${API.updatePO(requestId, poId)}`).subscribe(\n () => {\n this.callPO(requestId);\n observable.next();\n },\n err => observable.error(err)\n );\n\n return observable.asObservable();\n }\n\n public getPrinters(): Observable {\n return this.printers;\n }\n\n public getCompanies(): Observable {\n return this.companiesObservable;\n }\n\n public getChnTypes(): Observable {\n return this.channelTypesObservable;\n }\n\n public getInventoryTypes(): Observable {\n return this.inventoryTypesObservable;\n }\n\n public getRequestTypeInventoryTypes(): Observable {\n return this.requestTypeInventoryTypesObservable;\n }\n\n public getLinesOfBusinessTypes(): Observable {\n return this.lineOfBusinessObservable;\n }\n\n private replayAndClone(objectObservable: Observable) {\n // cloning to avoid data corruption\n return objectObservable.pipe(\n shareReplay({\n refCount: false,\n bufferSize: 1\n }),\n map(data => cloneDeep(data))\n );\n }\n\n private resetRequestDetails(): void {\n this.requestDetails = new ReplaySubject(1);\n }\n\n public getAPIversion(): Observable {\n return this.getVersions(API.version);\n }\n\n public getUIversion(): Observable {\n return this.getVersions(API.uiVersion);\n }\n\n public getFnVersion(): Observable {\n return this.getVersions(API.fnVersion);\n }\n\n private getVersions(versionsUri: string): Observable {\n const httpOptions = {\n responseType: 'text' as 'json'\n };\n\n return this.http.get(versionsUri, httpOptions).pipe(catchError(() => of('')));\n }\n\n public getRequestPrinterWorkItems(requestId: number | string): Observable {\n return this.http.get(`${API.getRequestPrinterWorkItems(requestId)}`);\n }\n\n /**\n * @todo move to AtPrinterService implementation\n */\n public uploadCardProductionWorkItemMilestoneAsn(\n requestId: string,\n printerId: number,\n itemId: number,\n milestoneId: number,\n file: File\n ): Observable {\n this.loaderService.showLoader();\n return this.fileUploadService\n .requestAttachmentUploadLink(requestId, 'asn', file)\n .pipe(\n switchMap(uploadLink =>\n this.fileUploadService\n .uploadFileWithProgress(uploadLink, file)\n .pipe(\n switchMap(event => {\n if (event.type === HttpEventType.Response) {\n return this.fileUploadService.scanUploadFile(uploadLink.uploadId, file.name).pipe(\n switchMap(res => {\n if(res.code === FILESCANCODE.SAFE){\n return this.createCardProductionWorkItemMilestoneAsn(\n requestId, printerId, itemId, milestoneId, uploadLink.uploadId);\n }\n })\n );\n }\n return of(event);\n })\n )\n )\n ).pipe(finalize(() => this.loaderService.hideLoader()));\n }\n\n /**\n * @todo move to AtPrinterService implementation\n */\n private createCardProductionWorkItemMilestoneAsn(\n requestId: string,\n printerId: number,\n itemId: number,\n milestoneId: number,\n uploadId: string\n ): Observable {\n return this.http.post(`${API.createCardProductionWorkItemMilestoneAsn(requestId, printerId, itemId, milestoneId)}`, null, {\n reportProgress: true,\n observe: 'events',\n params: {uploadId}\n });\n }\n\n public deleteCardProductionWorkItemMilestoneAsn(\n requestId: string,\n printerId: number,\n itemId: number,\n milestoneId: number,\n attachmentId: number\n ): Observable {\n return this.errorHandlingHttp.delete(\n `${API.deleteCardProductionWorkItemMilestoneAsn(requestId, printerId, itemId, milestoneId, attachmentId)}`\n );\n }\n\n public updateRequestStatus(requestId: number | string, status: string): any {\n const reqObj = {value: status};\n\n return this.errorHandlingHttp.put(`${API.updateRequestStatus(requestId)}`, reqObj);\n }\n\n public bulkUpdateCardProductionAtPrinter(requestId: string, printerId: number, itemId: number, data: any) {\n return this.errorHandlingHttp.put(`${API.doCardProductionBulkWorkItemMilestoneUpdate(requestId, printerId, itemId)}`, data);\n }\n\n public bulkUpdatePopProductionAtPrinter(requestId: string, printerId: number, itemId: number, data: any) {\n return this.errorHandlingHttp.put(`${API.doPopProdBulkWorkItemMilestoneUpdate(requestId, printerId, itemId)}`, data);\n }\n\n public updateMilestoneDetails(\n requestId: number | string,\n printerItem: PrinterItemModel,\n milestone: MilestoneItem,\n data: any\n ): Observable {\n return this.errorHandlingHttp.put(\n API.updateMilestoneDetails(requestId, printerItem.printerDetails.id, printerItem.id, milestone.id),\n data\n );\n }\n\n public uploadArtworkAttachment(requestId: number | string, file: File): Observable {\n this.loaderService.showLoader();\n return this.fileUploadService\n .requestAttachmentUploadLink(requestId, 'art', file)\n .pipe(\n switchMap(uploadLink => this.fileUploadService.uploadFileWithProgress(uploadLink, file)\n .pipe(\n switchMap(event => {\n if (event.type === HttpEventType.Response) {\n return this.fileUploadService.scanUploadFile(uploadLink.uploadId, file.name).pipe(\n switchMap(res => {\n if(res.code === FILESCANCODE.SAFE){\n return this.createArtworkAttachment(uploadLink.uploadId, requestId);\n }\n })\n );\n }\n return of(event);\n })\n )\n )\n ).pipe(finalize(() => this.loaderService.hideLoader()));\n }\n\n private createArtworkAttachment(uploadId: string, requestId: number | string): Observable {\n return this.errorHandlingHttp.post(API.createArtworkAttachment(requestId), null, {\n reportProgress: true,\n observe: 'events',\n params: {uploadId}\n });\n }\n\n public deleteArtworkAttachment(requestId: number | string, attachmentId: number): Observable {\n return this.errorHandlingHttp.delete(API.deleteArtworkAttachment(requestId, attachmentId));\n }\n\n public duplicateRequest(requestId: number | string): Observable {\n return this.errorHandlingHttp.post(API.duplicateRequest(requestId), {}).pipe(\n tap(() => {\n this.messageService.showSystemMessage(\n 'success',\n null,\n this.translateService.instant('common.message.request-successfully-created', {requestId})\n );\n })\n );\n }\n}\n","\n \n {{ label }}\n *\n :\n \n \n \n {{ element.value }}\n \n cancel\n \n \n \n \n \n \n {{ messageService.getControlErrorMessage(formControl.errors) }}\n \n\n","import {ChangeDetectionStrategy, Component, OnInit, Self, Optional, ChangeDetectorRef, Input, ViewChild} from '@angular/core';\nimport {ControlValueAccessor, FormArray, NgControl, ValidatorFn, FormControl, FormBuilder} from '@angular/forms';\nimport {MatChipInput, MatChipInputEvent} from '@angular/material/chips';\nimport {WithCheckControlUpdates} from '../../constants/form-field.constant';\nimport {MessageService} from '../../services/message-service.service';\nimport {WithDestroy} from '../with-destroy/with-destroy.mixin';\nimport {AbstractControl} from '@angular/forms';\n\n@Component({\n selector: 'app-chips',\n templateUrl: './chips.component.html',\n styleUrls: ['./chips.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'appChips',\n providers: []\n})\nexport class ChipsComponent extends WithDestroy(WithCheckControlUpdates(self => self.chipsGroup)) implements OnInit, ControlValueAccessor {\n @Input() label: string;\n @Input() isRequired = false;\n @Input() testId = 'chips';\n @Input() fieldClass;\n @Input() valueValidator: () => ValidatorFn;\n @Input() type: 'number' | 'text' = 'text';\n @ViewChild('newChipInput', {\n read: MatChipInput\n })\n newChipInput: MatChipInput;\n\n chipsGroup = this.fb.group({\n elements: this.fb.array([])\n });\n\n constructor(\n @Self() @Optional() public ctrl: NgControl,\n private cd: ChangeDetectorRef,\n public messageService: MessageService,\n private fb: FormBuilder\n ) {\n super(cd);\n if (this.ctrl) {\n this.ctrl.valueAccessor = this;\n }\n }\n get formControl(): FormArray {\n return this.chipsGroup?.get('elements') as FormArray;\n }\n get values() {\n return this.formControl.value;\n }\n onChangeFn: (...args: any[]) => void;\n onTouchFn: (...args: any[]) => void;\n isDisabled = false;\n\n writeValue(value: any[]): void {\n if (value && !Array.isArray(value)) {\n throw new Error('Value should be array');\n }\n this.formControl.clear();\n if (value) {\n value.forEach(element => {\n this.formControl.push(new FormControl(element, this.valueValidator?.()));\n });\n }\n }\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouchFn = fn;\n }\n setDisabledState?(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n }\n\n ngOnInit(): void {}\n\n private update() {\n this.onChangeFn(this.formControl.value);\n }\n\n get value() {\n return this.formControl.controls.map(c => (this.type === 'number' ? +c.value : c.value));\n }\n\n get validValue() {\n return this.formControl.controls.filter(c => c.valid).map(c => (this.type === 'number' ? +c.value : c.value));\n }\n\n removeElement(formControl: AbstractControl) {\n this.formControl.removeAt(this.formControl.controls.findIndex(c => c === formControl));\n this.update();\n }\n\n onBackspace(keyboardEvent: KeyboardEvent, inputElement: any) {\n if (inputElement.value === '') {\n this.removeElement([...this.formControl.controls].pop());\n }\n }\n onPaste(event: ClipboardEvent) {\n let pastedText;\n if (event.clipboardData && event.clipboardData.getData) {\n pastedText = event.clipboardData.getData('text/plain');\n event.preventDefault();\n this.addElement({\n input: event.target as any,\n value: pastedText,\n chipInput: this.newChipInput\n });\n }\n }\n\n addElement(event: MatChipInputEvent) {\n if (event.value) {\n const multipleValues = event.value\n .split(/[,; \\t\\n]/g)\n .map(v => v.trim())\n .filter(v => !!v);\n multipleValues.forEach(value => {\n this.formControl.push(new FormControl(value, this.valueValidator ? [this.valueValidator?.()] : []));\n });\n event.chipInput.inputElement.value = '';\n this.update();\n }\n return true;\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ChipsComponent} from './chips.component';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {MatChipsModule} from '@angular/material/chips';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport {CommonDirectivesModule} from '../../pipes/directives.module';\nimport {MatIconModule} from '@angular/material/icon';\n\n@NgModule({\n declarations: [ChipsComponent],\n imports: [CommonModule, ReactiveFormsModule, FormsModule, MatChipsModule, MatFormFieldModule, CommonDirectivesModule, MatIconModule],\n exports: [ChipsComponent]\n})\nexport class ChipsModule {}\n","\n $\n −\n \n {{inputLabel}}\n *:\n \n \n \n {{inputHint}}\n\n \n \n {{warningMessage}}\n \n \n {{getErrorMessage()}}\n\n","/* eslint-disable no-underscore-dangle */\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n Input,\n OnChanges,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ErrorStateMatcher } from '@angular/material/core';\n\nimport { WithCheckControlUpdates } from '../../constants/form-field.constant';\nimport { AutonumericDirective } from '../../directives/autonumeric.directive';\nimport { MessageService } from '../../services/message-service.service';\n\nclass CustomFieldErrorMatcher implements ErrorStateMatcher {\n constructor(private customControl: FormControl) {}\n isErrorState(): boolean {\n return this.customControl && this.customControl.touched && this.customControl.invalid;\n }\n}\n\n@Component({\n selector: 'app-currency-input',\n templateUrl: './app-currency-input.component.html',\n styleUrls: ['./app-currency-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AppCurrencyInputComponent),\n multi: true\n }\n ]\n})\nexport class AppCurrencyInputComponent\n extends WithCheckControlUpdates(self => self.control)\n implements ControlValueAccessor, OnChanges\n{\n readonly defaultOptions = {\n digitGroupSeparator: ',',\n decimalCharacter: '.',\n decimalCharacterAlternative: '.',\n minimumValue: '0',\n maximumValue: 999999.9999,\n decimalPlaces: 4,\n decimalPlacesShownOnBlur: 4,\n watchExternalChanges: true\n };\n\n @ViewChild(AutonumericDirective) input: AutonumericDirective;\n @Input()\n get isRequired(): boolean {\n return this._required;\n }\n set isRequired(value: boolean) {\n this._required = value;\n }\n @Input()\n get readonly(): boolean {\n return this._readonly;\n }\n set readonly(value: boolean) {\n this._readonly = value;\n }\n @Input()\n get maxLength(): number {\n return this._maxLength || null;\n }\n set maxLength(value: number) {\n this._maxLength = value;\n }\n\n constructor(private messageService: MessageService, cd: ChangeDetectorRef) {\n super(cd);\n }\n @Input() public placeholder: string;\n @Input() public testId: string;\n @Input() public hideLabel?: boolean;\n @Input() public inputLabel?: string;\n @Input() public inputHint?: string;\n @Input() public warningMessage?: string;\n @Input() public isWarningVisible?: boolean;\n @Input() public shouldShowCurrencySign = true;\n @Input() public shouldShowMinusSign = false;\n @Input() public inputClass?: string;\n @Input() public isTouched: string;\n\n // tslint:disable-next-line:no-input-rename\n @Input('formControl') public control: FormControl;\n @Input() public maxValue = 999999.9999;\n @Input() public decimals = 4;\n @Input() public useRequiredProperty = true;\n\n // tslint:disable-next-line:variable-name\n private _required: boolean;\n private _readonly: boolean;\n private _maxLength: number;\n\n currencyControlOptions = Object.assign(this.defaultOptions);\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n public errorMatcher() {\n return new CustomFieldErrorMatcher(this.control);\n }\n\n public getErrorMessage(): string {\n return this.control && this.control.errors ? this.messageService.getControlErrorMessage(this.control.errors) : '';\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.control && this.input) {\n if (this.control && this.control.value) {\n this.input.instance.set(this.control.value);\n } else {\n this.input.instance.clear();\n }\n }\n if (changes.decimals || changes.maxValue) {\n this.currencyControlOptions = Object.assign(this.defaultOptions);\n this.currencyControlOptions.decimalPlaces = this.decimals;\n this.currencyControlOptions.decimalPlacesShownOnBlur = this.decimals;\n this.currencyControlOptions.maximumValue = this.maxValue;\n }\n }\n\n writeValue(value: any): void {}\n\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","\n \n {{inputLabel}}\n *:\n \n \n \n \n \n\n \n\n \n \n {{inputHint}}\n \n\n \n \n {{warningMessage}}\n \n\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Optional,\n Output,\n Renderer2,\n Self,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport moment from 'moment';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { DatePickerHeaderComponent } from './date-picker-header/date-picker-header.component';\nimport { ViewChild } from '@angular/core';\nimport {MatDatepickerInput, MatDatepickerToggle} from '@angular/material/datepicker';\n\nclass CustomFieldErrorMatcher implements ErrorStateMatcher {\n constructor(private customControl: FormControl) { }\n isErrorState(): boolean {\n return this.customControl && this.customControl.touched && (this.customControl.invalid);\n }\n}\n\n@Component({\n selector: 'app-date-picker',\n templateUrl: './app-date-picker.component.html',\n styleUrls: ['./app-date-picker.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AppDatePickerComponent implements OnInit, AfterViewInit, ControlValueAccessor, DoCheck {\n @Input() public filterDateFn?: (d: Date | null) => boolean;\n @Input() public inputLabel: string;\n @Input() public shouldShowLabel = true;\n @Input() public inputHint?: string;\n @Input() public warningMessage?: string;\n @Input() public isWarningVisible?: boolean;\n @Input() public testId?: string;\n @Input() public disabled?: boolean;\n @Input() public useRequiredProperty = true;\n\n /**\n * Html form validation flag\n */\n @Input() isRequired = true;\n\n @Output() public dateSelected: EventEmitter\n = new EventEmitter();\n\n /**\n * Restrict date selection that out of the project scope\n */\n @Input() public minDate = moment('1900-01-01 00:00:00', 'YYYY-MM-DD HH:mm:ss').toDate();\n @Input() public maxDate = moment('2199-12-31 23:59:59', 'YYYY-MM-DD HH:mm:ss').toDate();\n @ViewChild('datePickerToggle', {\n read: MatDatepickerToggle,\n static: false\n }) datePickerToggle: MatDatepickerToggle;\n @ViewChild(MatDatepickerInput, {\n read: MatDatepickerInput\n }) datePickerInput: MatDatepickerInput;\n\n private ngUnsubscribe = new Subject();\n public hasFocusInitial = false;\n private oldTouched = null;\n private oldValid = null;\n private oldDisabled = null;\n\n constructor(private element: ElementRef,\n private renderer: Renderer2,\n private cd: ChangeDetectorRef,\n @Self() @Optional() public ctrl: NgControl) {\n if (this.ctrl) {\n this.ctrl.valueAccessor = this;\n }\n this.hasFocusInitial = element.nativeElement.getAttribute('cdkFocusInitial') != null;\n renderer.removeAttribute(element.nativeElement, 'cdkFocusInitial');\n }\n\n public selectedDate: Date;\n datePickerHeaderHeader = DatePickerHeaderComponent;\n\n private toggleElement: HTMLElement;\n\n onChange: any = (value: string) => { };\n onTouched: any = () => {};\n\n ngDoCheck() {\n if (this.ctrl.touched !== this.oldTouched) {\n this.oldTouched = this.ctrl.touched;\n this.cd.markForCheck();\n }\n if (this.ctrl.valid !== this.oldValid) {\n this.oldValid = this.ctrl.valid;\n this.cd.markForCheck();\n }\n if (this.ctrl.disabled !== this.oldDisabled) {\n this.oldDisabled = this.ctrl.disabled;\n if (this.datePickerToggle) {\n this.datePickerToggle.disabled = this.ctrl.disabled;\n this.datePickerInput.setDisabledState(this.ctrl.disabled);\n (this.datePickerToggle as any)?._changeDetectorRef?.markForCheck();\n }\n this.cd.markForCheck();\n }\n }\n\n ngOnInit() {\n this.testId = this.testId || 'date-picker-toggle';\n\n if (this.ctrl.control) {\n this.ctrl.control.valueChanges.pipe(takeUntil(this.ngUnsubscribe)).subscribe((newDate: Date) => {\n this.dateSelected.emit(newDate);\n });\n this.ctrl.control.statusChanges.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => this.cd.markForCheck());\n }\n }\n\n ngAfterViewInit(): void {\n this.toggleElement = this.element.nativeElement.querySelector(`[data-test-id=${this.testId}]`);\n }\n\n public focusInput(): void {\n this.renderer.addClass(this.toggleElement, 'mat-datepicker-toggle-active');\n }\n\n public blurInput(): void {\n this.renderer.removeClass(this.toggleElement, 'mat-datepicker-toggle-active');\n }\n\n writeValue(value: any): void {\n this.cd.markForCheck();\n }\n\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n public setDisabledState?(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n public errorMatcher(): CustomFieldErrorMatcher {\n return new CustomFieldErrorMatcher(this.ctrl.control as FormControl);\n }\n}\n","/* eslint-disable no-underscore-dangle */\nimport {ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, OnDestroy} from '@angular/core';\nimport {Subject} from 'rxjs';\nimport {MatCalendar} from '@angular/material/datepicker';\nimport {DateAdapter, MAT_DATE_FORMATS, MatDateFormats} from '@angular/material/core';\nimport {takeUntil} from 'rxjs/operators';\n\n@Component({\n selector: 'app-date-picker-header',\n templateUrl: './date-picker-header.component.html',\n styleUrls: ['./date-picker-header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DatePickerHeaderComponent implements OnDestroy {\n // tslint:disable-next-line:variable-name\n private _destroyed = new Subject();\n\n // tslint:disable-next-line:variable-name max-line-length\n constructor(private _calendar: MatCalendar, private _dateAdapter: DateAdapter, @Inject(MAT_DATE_FORMATS) private _dateFormats: MatDateFormats,\n cdr: ChangeDetectorRef) {\n _calendar.stateChanges\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => cdr.markForCheck());\n }\n\n ngOnDestroy(): void {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n get periodLabel(): string {\n return this._dateAdapter\n .format(this._calendar.activeDate, this._dateFormats.display.monthYearA11yLabel);\n }\n\n previousClicked(mode: 'month' | 'year'): void {\n this._calendar.activeDate = mode === 'month' ?\n this._dateAdapter.addCalendarMonths(this._calendar.activeDate, -1) :\n this._dateAdapter.addCalendarYears(this._calendar.activeDate, -1);\n }\n\n nextClicked(mode: 'month' | 'year'): void {\n this._calendar.activeDate = mode === 'month' ?\n this._dateAdapter.addCalendarMonths(this._calendar.activeDate, 1) :\n this._dateAdapter.addCalendarYears(this._calendar.activeDate, 1);\n }\n}\n","
\n \n {{periodLabel}}\n \n
\n","
\n \n\n \n {{label ? label :'common.label.filter-dates' | translate}}\n *:\n \n \n \n\n \n \n
\n","import {Component, OnInit, ViewEncapsulation, ViewChild, Output, EventEmitter, Input, Self, Optional} from '@angular/core';\nimport moment, { Moment } from 'moment';\nimport {DaterangepickerDirective} from 'ngx-daterangepicker-material';\nimport {NgControl, ControlValueAccessor} from '@angular/forms';\n\ninterface DateRange {\n startDate: Moment;\n endDate: Moment;\n}\n\nconst DAYS_OF_WEEK_SHORT = ['S', 'M', 'T', 'W', 'T', 'F', 'S'];\nconst DATE_FORMAT = 'MM/DD/YYYY';\nexport const BUTTON_LOCATIONS: {\n INSIDE: 'inside';\n OUTSIDE: 'outside';\n} = {\n INSIDE: 'inside',\n OUTSIDE: 'outside'\n};\ntype ValueOf = T[keyof T];\n\n\n@Component({\n selector: 'app-date-range',\n templateUrl: './app-date-range.component.html',\n styleUrls: ['./app-date-range.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AppDateRangeComponent implements OnInit, ControlValueAccessor {\n @Input() testId;\n @Input() public showLabel: boolean;\n @Input() public showRanges = false;\n @Input() label?: string;\n @Input() rangeClass?: string;\n @Input() isRequired?: boolean;\n @Input() buttonClearLabel?: string;\n @Input() isDisabled = false;\n @Input() buttonLocation: ValueOf = 'outside';\n\n @Output() public rangeSelected: EventEmitter = new EventEmitter();\n @ViewChild(DaterangepickerDirective) ngxDaterangepickerMd: any;\n\n @ViewChild(DaterangepickerDirective, {static: true}) private pickerDirective: DaterangepickerDirective;\n\n public get selected(): {startDate: Moment; endDate: Moment} {\n return this.ctrl?.control?.value;\n }\n\n public ranges = {};\n public locale: any = {\n separator: ' - ',\n format: DATE_FORMAT,\n daysOfWeek: DAYS_OF_WEEK_SHORT\n };\n public readonly BUTTON_LOCATIONS = BUTTON_LOCATIONS;\n\n public onChange: (value: DateRange) => void;\n public onTouched: () => void;\n\n constructor(@Self() @Optional() public ctrl?: NgControl) {\n if (this.ctrl) {\n this.ctrl.valueAccessor = this;\n }\n }\n\n writeValue(value: any): void {}\n\n registerOnChange(fn: (value: DateRange) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n ngOnInit(): void {\n this.ranges = this.showRanges\n ? {\n 'Last 7 Days': [moment().subtract(6, 'days'), moment()],\n 'Last 30 Days': [moment().subtract(1, 'month').add(1, 'day'), moment()],\n 'Last 90 Days': [moment().subtract(3, 'month').add(1, 'day'), moment()],\n 'Last Year': [moment().subtract(1, 'year').add(1, 'day'), moment()]\n }\n : {};\n }\n\n public onChangeApply(e: Event): void {\n if (!(e instanceof Event)) {\n return;\n }\n if (!(e as any).target.value.length) {\n this.clear();\n return;\n }\n\n const dateString = (e as any).target.value.split(this.locale.separator);\n const start = moment(dateString[0], this.locale.format);\n const end = dateString.length < 2 ? moment(dateString[0], this.locale.format) : moment(dateString[1], this.locale.format);\n\n if (!start.isValid() || !end.isValid() || start > end) {\n this.ctrl?.control?.setErrors({incorrectDate: true});\n return;\n }\n\n this.ctrl?.control?.setValue({\n startDate: start,\n endDate: end\n });\n }\n\n public onModelChange(e: Event): void {\n this.rangeSelected.emit(e);\n }\n\n public openCalendar(): void {\n if (!this.isDisabled) {\n this.pickerDirective.open();\n }\n }\n\n public clear(): void {\n this.ctrl.reset();\n }\n}\n","\n \n {{inputLabel}}\n *:\n \n \n \n \n \n \n \n \n\n \n \n {{warningMessage}}\n \n\n \n \n \n\n \n {{getErrorMessage()}}\n \n\n","/* eslint-disable @angular-eslint/no-conflicting-lifecycle */\n/* eslint-disable no-underscore-dangle */\nimport {FocusMonitor} from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {ErrorStateMatcher} from '@angular/material/core';\nimport {MatInput} from '@angular/material/input';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {AutonumericDirective, AutonumericUpdateTriggerEventType} from '../../directives/autonumeric.directive';\nimport {MessageService} from '../../services/message-service.service';\nimport {WithControlCheck} from '../with-control-check/with-control-check.mixin';\n\nclass CustomFieldErrorMatcher implements ErrorStateMatcher {\n constructor(private customControl: FormControl) {}\n isErrorState(): boolean {\n return this.customControl && this.customControl.touched && this.customControl.invalid;\n }\n}\n\n// tslint:disable-next-line:no-conflicting-lifecycle\n@Component({\n selector: 'app-input-form',\n templateUrl: './app-input-form.component.html',\n styleUrls: ['./app-input-form.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AppInputFormComponent),\n multi: true\n }\n ]\n})\nexport class AppInputFormComponent\n extends WithControlCheck(function() {\n return this.control;\n })\n implements ControlValueAccessor, OnChanges, OnInit, AfterViewInit, DoCheck, OnDestroy\n{\n @ViewChild(AutonumericDirective) input: AutonumericDirective;\n @ViewChild(MatInput) matInput: ElementRef;\n @Input() public placeholder: string;\n @Input() public inputType: string;\n @Input() public testId: string;\n @Input() public hideLabel?: boolean;\n @Input() public showLabel?: boolean;\n @Input() public inputLabel?: string;\n @Input() public inputHint?: string;\n @Input() public inputHintIcon?: boolean;\n @Input() public inputClass?: string;\n @Input() public inputHintClass?: string;\n @Input() public warningMessage?: string;\n @Input() public isWarningVisible?: boolean;\n @Input() public shouldShowErrorMessage = true;\n @Input() public numeric = false;\n @Input() public decimals = 0;\n // tslint:disable-next-line:no-input-rename\n @Input('formControl') public control: FormControl;\n @Input() public isTouched: boolean;\n @Input() public autoFocus?: boolean;\n\n @Input()\n get isRequired(): boolean {\n return this._required;\n }\n set isRequired(value: boolean) {\n this._required = value;\n }\n @Input()\n get readonly(): boolean {\n return this._readonly;\n }\n set readonly(value: boolean) {\n this._readonly = value;\n }\n\n @Input()\n get maxLength(): number {\n return this._maxLength || null;\n }\n set maxLength(value: number) {\n this._maxLength = value;\n }\n\n @Output() public blurChange = new EventEmitter();\n /**\n * By default we have based our autonumeric update tracking by it's raw value update event, which is not correct\n * for the case when we update autonumeric value from outside the component (by form.patchValue, ...)\n * In order to skip extra model update event please use 'change' that only covers the cases when update came from user input.\n */\n @Input() autonumericUpdateTriggerEventType: AutonumericUpdateTriggerEventType = 'raw';\n\n // tslint:disable-next-line:variable-name\n private _required: boolean;\n private _readonly: boolean;\n private _maxLength: number;\n private ngUnsubscribe = new Subject();\n\n public focused = false;\n\n public currencyControlOptions = {\n digitGroupSeparator: '',\n decimalCharacter: '.',\n decimalCharacterAlternative: '.',\n currencySymbol: '',\n currencySymbolPlacement: 's',\n roundingMethod: 'U',\n minimumValue: '0',\n maximumValue: undefined,\n decimalPlaces: 0,\n decimalPlacesShownOnBlur: 0,\n watchExternalChanges: true\n };\n private oldTouched = null;\n private oldValue = null;\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n private messageService: MessageService,\n private cd: ChangeDetectorRef,\n private fm: FocusMonitor,\n private elRef: ElementRef\n ) {\n super();\n fm.monitor(elRef.nativeElement, true)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(origin => {\n this.focused = !!origin;\n this.cd.markForCheck();\n });\n }\n\n ngAfterViewInit() {\n if (this.autoFocus) {\n setTimeout(() => {\n this.fm.focusVia(this.matInput, 'program');\n this.fm.stopMonitoring(this.elRef.nativeElement);\n }, 0);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.decimals) {\n this.currencyControlOptions.decimalPlaces = this.decimals;\n this.currencyControlOptions.decimalPlacesShownOnBlur = this.decimals;\n }\n\n if (this.numeric && this._maxLength) {\n this.currencyControlOptions.maximumValue = this.currencyControlOptions.decimalPlaces\n ? '9'.repeat(this._maxLength - this.currencyControlOptions.decimalPlaces - 1) +\n '.' +\n '9'.repeat(this.currencyControlOptions.decimalPlaces)\n : '9'.repeat(this._maxLength);\n } else {\n this.currencyControlOptions.maximumValue = undefined;\n }\n\n if (changes.control && this.input) {\n if (this.control && this.control.value) {\n this.input.instance.set(this.control.value);\n } else {\n this.input.instance.clear();\n }\n }\n }\n\n ngOnInit() {\n this.control?.statusChanges.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {\n this.cd.markForCheck();\n });\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this.fm.stopMonitoring(this.elRef.nativeElement);\n }\n\n ngDoCheck() {\n if (this.control.touched !== this.oldTouched) {\n this.oldTouched = this.control.touched;\n this.cd.markForCheck();\n }\n if (this.numeric && this.control.value !== this.oldValue) {\n if (!this.control.value) {\n this.input?.instance.clear();\n }\n this.oldValue = this.control.value;\n }\n const hasControlChange = this.checkControlChanges();\n if (hasControlChange) {\n this.cd.markForCheck();\n }\n }\n\n public errorMatcher() {\n return new CustomFieldErrorMatcher(this.control);\n }\n\n public getErrorMessage(): string {\n if (this.control && this.control.errors) {\n return this.messageService.getControlErrorMessage(this.control.errors);\n }\n return null;\n }\n\n writeValue(value: any): void {}\n\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","import {FormControl} from '@angular/forms';\nimport {AbstractConstructor, Constructor} from '@angular/material/core/common-behaviors/constructor';\n\nexport interface HasWithControlCheck {\n checkControlChanges(): boolean;\n}\n\nexport type CanWithControlCheck = {\n get fieldControl(): FormControl;\n};\n\nexport type HasWithControlCheckCtor = Constructor & AbstractConstructor;\n\nexport function mixinHasControlCheck | AbstractConstructor>(\n base: T\n): HasWithControlCheckCtor & T {\n return class extends base {\n private oldTouched = null;\n private oldValue = null;\n private oldDisabled = null;\n private oldErrors = null;\n\n checkControlChanges(): boolean {\n const control = super.fieldControl;\n\n if (control?.touched !== this.oldTouched) {\n this.oldTouched = control.touched;\n return true;\n }\n if (control?.disabled !== this.oldDisabled) {\n this.oldDisabled = control?.disabled;\n return true;\n }\n if (control?.value && control.value !== this.oldValue) {\n this.oldValue = control.value;\n return true;\n }\n if (JSON.stringify(control?.errors) !== JSON.stringify(this.oldErrors)) {\n this.oldErrors = control.errors;\n return true;\n }\n return false;\n }\n };\n}\nconst defaultClass = class {};\nexport type FormControlAccessorFn = () => FormControl;\n// eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/ban-types\ntype WithControlCheckFn = | AbstractConstructor = typeof defaultClass>(\n formControlAccessor: FormControlAccessorFn,\n base?: T\n) => HasWithControlCheckCtor & T;\n\nexport const WithControlCheck: WithControlCheckFn = (formControlAccessor: FormControlAccessorFn, base?) =>\n (base\n ? mixinHasControlCheck(\n class extends base {\n get fieldControl() {\n return formControlAccessor.bind(this)();\n }\n }\n )\n : mixinHasControlCheck(\n class {\n get fieldControl() {\n return formControlAccessor.bind(this)();\n }\n }\n )) as unknown as any;\n","\n \n {{inputLabel}}\n *:\n \n \n \n \n \n \n \n \n\n \n \n {{warningMessage}}\n \n\n \n {{getErrorMessage()}}\n \n\n","/* eslint-disable @angular-eslint/no-conflicting-lifecycle */\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n ElementRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Self,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { MatInput } from '@angular/material/input';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { AutonumericDirective, AutonumericUpdateTriggerEventType } from '../../directives/autonumeric.directive';\nimport { MessageService } from '../../services/message-service.service';\nimport { Options as AutonumericOptions, EmptyInputBehaviorOption } from 'autonumeric';\n\nclass CustomFieldErrorMatcher implements ErrorStateMatcher {\n constructor(private customControl: FormControl) { }\n isErrorState(): boolean {\n return this.customControl && this.customControl.touched && (this.customControl.invalid);\n }\n}\n\n// tslint:disable-next-line:no-conflicting-lifecycle\n@Component({\n selector: 'app-input',\n templateUrl: './app-input.component.html',\n styleUrls: [],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AppInputComponent implements ControlValueAccessor, OnChanges, OnInit, AfterViewInit, DoCheck, OnDestroy {\n @ViewChild(AutonumericDirective) input: AutonumericDirective;\n @ViewChild(MatInput) matInput: ElementRef;\n @Input() public placeholder: string;\n @Input() public inputType: string;\n @Input() public testId: string;\n @Input() public hideLabel?: boolean;\n @Input() public showLabel?: boolean;\n @Input() public inputLabel?: string;\n @Input() public inputHint?: string;\n @Input() public inputHintIcon?: boolean;\n @Input() public inputClass?: string;\n @Input() public inputHintClass?: string;\n @Input() public warningMessage?: string;\n @Input() public isWarningVisible?: boolean;\n @Input() public shouldShowErrorMessage = true;\n @Input() public numeric = false;\n @Input() public decimals = 0;\n // tslint:disable-next-line:no-input-rename\n @Input() public isTouched: boolean;\n @Input() public autoFocus?: boolean;\n @Input() useRequiredProperty = true;\n private _isDisabled = null;\n @Input() set isDisabled(isDisabled: boolean) {\n this._isDisabled = isDisabled;\n this.ctrl?.control?.[isDisabled ? 'disable' : 'enable']({emitEvent: false});\n }\n @Input() set emptyInputBehavior(emptyInputBehavior: EmptyInputBehaviorOption) {\n this.currencyControlOptions = {\n ...this.currencyControlOptions,\n emptyInputBehavior\n };\n }\n\n\n @Input()\n get isRequired(): boolean { return this._required; }\n set isRequired(value: boolean) { this._required = value; }\n @Input()\n get readonly(): boolean { return this._readonly; }\n set readonly(value: boolean) { this._readonly = value; }\n\n @Input()\n get maxLength(): number { return this._maxLength || null; }\n set maxLength(value: number) { this._maxLength = value; }\n /**\n * By default we have based our autonumeric update tracking by it's raw value update event, which is not correct\n * for the case when we update autonumeric value from outside the component (by form.patchValue, ...)\n * In order to skip extra model update event please use 'change' that only covers the cases when update came from user input.\n */\n @Input() autonumericUpdateTriggerEventType: AutonumericUpdateTriggerEventType = 'raw';\n // tslint:disable-next-line:variable-name\n private _required: boolean; private _readonly: boolean; private _maxLength: number;\n private ngUnsubscribe = new Subject();\n\n public focused = false;\n\n public currencyControlOptions: AutonumericOptions & {[k: string]: any} = {\n digitGroupSeparator: '',\n decimalCharacter: '.',\n decimalCharacterAlternative: '.',\n currencySymbol: '',\n currencySymbolPlacement: 's',\n roundingMethod: 'U',\n minimumValue: '0',\n maximumValue: undefined,\n decimalPlaces: 0,\n decimalPlacesShownOnBlur: 0,\n watchExternalChanges: true,\n };\n\n private oldTouched = null;\n private oldValue = null;\n private oldDisabled = null;\n private oldErrors = null;\n\n onChange: any = () => { };\n onTouched: any = () => { };\n\n constructor(private messageService: MessageService, private cd: ChangeDetectorRef,\n private fm: FocusMonitor, private elRef: ElementRef,\n @Self() @Optional() public ctrl: NgControl) {\n if (this.ctrl) {\n this.ctrl.valueAccessor = this;\n }\n\n fm.monitor(elRef.nativeElement, true).pipe(takeUntil(this.ngUnsubscribe)).subscribe(origin => {\n this.focused = !!origin;\n this.cd.markForCheck();\n });\n }\n\n ngAfterViewInit() {\n if (this.autoFocus) {\n setTimeout(() => {\n this.fm.focusVia(this.matInput, 'program');\n this.fm.stopMonitoring(this.elRef.nativeElement);\n }, 0);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.decimals) {\n this.currencyControlOptions.decimalPlaces = this.decimals;\n this.currencyControlOptions.decimalPlacesShownOnBlur = this.decimals;\n }\n\n if (this.numeric && this._maxLength) {\n this.currencyControlOptions.maximumValue = this.currencyControlOptions.decimalPlaces ?\n '9'.repeat(\n this._maxLength - this.currencyControlOptions.decimalPlaces - 1) + '.' + '9'.repeat(this.currencyControlOptions.decimalPlaces) :\n '9'.repeat(this._maxLength);\n } else {\n this.currencyControlOptions.maximumValue = undefined;\n }\n\n if (changes.ctrl && this.input) {\n if (this.ctrl?.control?.value) {\n this.input.instance.set(this.ctrl.control.value);\n } else {\n this.input.instance.clear();\n }\n }\n }\n\n ngOnInit() {\n this.ctrl?.control?.statusChanges.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {\n this.cd.markForCheck();\n });\n }\n\n ngDoCheck() {\n if (this.ctrl?.touched !== this.oldTouched) {\n this.oldTouched = this.ctrl.touched;\n return this.cd.markForCheck();\n }\n if (this.ctrl?.disabled !== this.oldDisabled) {\n this.oldDisabled = this.ctrl?.disabled;\n return this.cd.markForCheck();\n }\n if (this.ctrl?.value && this.ctrl.value !== this.oldValue) {\n this.oldValue = this.ctrl.value;\n return this.cd.markForCheck();\n }\n if(JSON.stringify(this.ctrl?.errors) !== JSON.stringify(this.oldErrors)) {\n this.oldErrors = this.ctrl.errors;\n return this.cd.markForCheck();\n }\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this.fm.stopMonitoring(this.elRef.nativeElement);\n }\n\n public errorMatcher() {\n return new CustomFieldErrorMatcher(this.ctrl.control as FormControl);\n }\n\n public getErrorMessage(): string {\n if (this.ctrl?.invalid) {\n return this.messageService.getControlErrorMessage(this.ctrl.errors);\n } return null;\n }\n\n writeValue(value: any): void {\n }\n\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","\n %\n \n {{inputLabel}}\n *:\n \n \n \n {{inputHint}}\n\n \n \n {{warningMessage}}\n \n\n \n {{getErrorMessage()}}\n\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnChanges,\n Optional,\n Self,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport {AutonumericDirective} from '../../directives/autonumeric.directive';\nimport {MessageService} from '../../services/message-service.service';\nimport {ControlValueAccessor, FormControl, NgControl} from '@angular/forms';\nimport {ErrorStateMatcher} from '@angular/material/core';\n\nclass CustomFieldErrorMatcher implements ErrorStateMatcher {\n constructor(private customControl: FormControl) { }\n isErrorState(): boolean {\n return this.customControl && this.customControl.touched && (this.customControl.invalid);\n }\n}\n\n@Component({\n selector: 'app-percent-input',\n templateUrl: './app-percent-input.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AppPercentInputComponent implements ControlValueAccessor, OnChanges {\n\n readonly defaultOptions = {\n digitGroupSeparator: ',',\n decimalCharacter: '.',\n decimalCharacterAlternative: '.',\n minimumValue: '0',\n maximumValue: 100.00,\n decimalPlaces: 2,\n decimalPlacesShownOnBlur: 2,\n watchExternalChanges: true\n };\n\n @ViewChild(AutonumericDirective) input: AutonumericDirective;\n @Input()\n get isRequired(): boolean { return this._required; }\n set isRequired(value: boolean) { this._required = value; }\n @Input()\n get readonly(): boolean { return this._readonly; }\n set readonly(value: boolean) { this._readonly = value; }\n\n constructor(private messageService: MessageService,\n @Self() @Optional() public ctrl: NgControl) {\n if (this.ctrl) {\n this.ctrl.valueAccessor = this;\n }\n }\n @Input() public placeholder: string;\n @Input() public testId: string;\n @Input() public hideLabel?: boolean;\n @Input() public inputLabel?: string;\n @Input() public inputHint?: string;\n @Input() public warningMessage?: string;\n @Input() public isWarningVisible?: boolean;\n @Input() public inputClass?: string;\n @Input() public isTouched: string;\n\n // tslint:disable-next-line:variable-name\n private _required: boolean; private _readonly: boolean;\n\n currencyControlOptions = Object.assign(this.defaultOptions);\n\n onChange: any = () => { };\n onTouched: any = () => { };\n\n public errorMatcher() {\n return new CustomFieldErrorMatcher(this.ctrl.control as FormControl);\n }\n\n public getErrorMessage(): string {\n return this.ctrl.control && this.ctrl.control.errors ?\n this.messageService.getControlErrorMessage(this.ctrl.control.errors) : '';\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.control && this.input) {\n if (this.ctrl.control && this.ctrl.control.value) {\n this.input.instance.set(this.ctrl.control.value);\n } else {\n this.input.instance.clear();\n }\n }\n }\n\n writeValue(value: any): void {}\n\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","\n \n {{inputLabel | titlecase}}\n *:\n \n \n\n \n \n \n \n\n \n \n {{warningMessage}}\n \n\n \n {{getErrorMessage()}}\n\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n ElementRef,\n Input,\n OnDestroy,\n Optional,\n Self,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { MatInput } from '@angular/material/input';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { MessageService } from '../../services/message-service.service';\n\nclass CustomFieldErrorMatcher implements ErrorStateMatcher {\n constructor(private customControl: FormControl) { }\n isErrorState(): boolean {\n return this.customControl && this.customControl.touched && (this.customControl.invalid);\n }\n}\n\n@Component({\n selector: 'app-textarea-form',\n templateUrl: './app-textarea-form.component.html',\n styleUrls: ['./app-textarea-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class AppTextareaFormComponent implements ControlValueAccessor, AfterViewInit, DoCheck, OnDestroy {\n @ViewChild(MatInput) textarea: ElementRef;\n @Input() public placeholder: string;\n @Input() public showLabel?: boolean;\n @Input() public testId: string;\n @Input() public inputLabel?: string;\n @Input() public inputHint?: string;\n @Input() public inputHintIcon?: boolean;\n @Input() public inputClass?: string;\n @Input() public warningMessage?: string;\n @Input() public isWarningVisible?: string;\n @Input() public autoFocus?: boolean;\n\n @Input()\n get isRequired(): boolean { return this._required; }\n set isRequired(value: boolean) { this._required = value; }\n @Input()\n get readonly(): boolean { return this._readonly; }\n set readonly(value: boolean) { this._readonly = value; }\n @Input()\n get maxLength(): number { return this._maxLength || null; }\n set maxLength(value: number) { this._maxLength = value; }\n\n // tslint:disable-next-line:variable-name\n private _required: boolean; private _readonly: boolean; private _maxLength: number;\n\n public focused = false;\n private oldDisabled = null;\n private oldTouched = null;\n private oldControl: FormControl = null;\n private ngUnsubscribe = new Subject();\n\n onChange: any = () => { };\n onTouched: any = () => { };\n\n constructor(private messageService: MessageService, private cd: ChangeDetectorRef,\n private fm: FocusMonitor, private elRef: ElementRef,\n @Self() @Optional() public ctrl: NgControl) {\n if (this.ctrl) {\n this.ctrl.valueAccessor = this;\n }\n\n fm.monitor(elRef.nativeElement, true).pipe(takeUntil(this.ngUnsubscribe)).subscribe(origin => {\n this.focused = !!origin;\n this.cd.markForCheck();\n });\n }\n\n ngAfterViewInit() {\n if (this.autoFocus) {\n setTimeout(() => {\n this.fm.focusVia(this.textarea, 'program');\n this.fm.stopMonitoring(this.elRef.nativeElement); }, 0);\n }\n }\n\n ngDoCheck() {\n if (this.ctrl.disabled !== this.oldDisabled) {\n this.oldDisabled = this.ctrl.disabled;\n this.cd.markForCheck();\n }\n if (this.ctrl.touched !== this.oldTouched) {\n this.oldTouched = this.ctrl.touched;\n this.cd.markForCheck();\n }\n if (this.ctrl.control !== this.oldControl) {\n this.oldTouched = this.ctrl.touched;\n this.cd.markForCheck();\n }\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this.fm.stopMonitoring(this.elRef.nativeElement);\n }\n\n public errorMatcher() {\n return new CustomFieldErrorMatcher(this.ctrl.control as FormControl);\n }\n\n public getErrorMessage(): string {\n if (this.ctrl?.invalid) {\n return this.messageService.getControlErrorMessage(this.ctrl.errors);\n } return null;\n }\n\n writeValue(value: any): void {}\n\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-back-link',\n templateUrl: './back-link.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BackLinkComponent {\n @Input() public page: string;\n @Input() public label: string;\n @Input() public testId: string;\n\n}\n","\n \n {{ label }}\n\n","
\n \n {{ label }}\n \n\n \n \n {{ inputHint }}\n \n\n \n \n {{ errorMessage }}\n \n
\n","import { Component, EventEmitter, forwardRef, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'app-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true\n }\n ]\n})\n\nexport class CheckboxComponent implements ControlValueAccessor {\n @Input() public isErrorExist: boolean;\n @Input() public errorMessage?: string;\n @Input() public isDisabled?: boolean;\n @Input() public isBoldLabel?: boolean;\n @Input() public label?: string;\n @Input() public testId?: string;\n @Input() public inputHint?: string;\n @Input() public hideHint = false;\n // tslint:disable-next-line:variable-name no-input-rename\n @Input('isChecked') _value = false;\n\n // tslint:disable-next-line:no-output-native\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() change = new EventEmitter();\n\n onChange: any = (event) => {\n this.change.emit(event);\n };\n onTouched: any = () => {};\n\n get isChecked() {\n return this._value;\n }\n\n set isChecked(val) {\n this._value = val;\n this.onChange(val);\n this.onTouched();\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n }\n\n registerOnChange(fn): void {\n this.onChange = fn;\n }\n\n writeValue(value): void {\n this.isChecked = !!value;\n }\n\n registerOnTouched(fn): void {\n this.onTouched = fn;\n }\n}\n","
\n
\n
\n
\n","import {ChangeDetectionStrategy, Component, Input} from '@angular/core';\n\n@Component({\n selector: 'app-file-upload-progress',\n templateUrl: './file-upload-progress.component.html',\n styleUrls: ['./file-upload-progress.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class FileUploadProgressComponent {\n\n @Input() file: {\n progress: number;\n };\n}\n","
\n
\n
\n
\n \n {{uploaderLabel}}\n *:\n {{files.length}}\n
\n
\n
\n \n
\n
\n
\n \n \n \n \n or drag and drop them here\n \n
\n
\n \n
\n \n
\n \n {{ file?.name || file?.fileName }}\n \n

\n \n {{ utilsService.getFormattedBytes(file.size !== undefined ? file.size : file.fileSize) }}\n \n \n {{file?.progress + '%'}}\n \n

\n

\n {{file.status}}\n \n {{file.reviewer.firstName}} {{file.reviewer.lastName}}\n {{file.updatedAt | date : 'MM/dd/yyyy, hh:mm a'}}\n \n

\n

\n {{'module.requests.upload.rejection-reason' | translate | uppercase}}:\n {{file.rejectionReason}}\n

\n \n Upload failed\n
\n
\n \n
\n
\n \n
\n
\n Upload failed\n \n
\n
\n
\n \n
\n
\n \n {{'common.restrictions.file-size-exceeded' | translate : {size: (restrictionOptions.fileSize.sizeNumber + restrictionOptions.fileSize.sizeType)} }}\n
\n
\n\n","import { HttpErrorResponse, HttpEventType } from '@angular/common/http';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Observable, of, Subject, throwError, BehaviorSubject } from 'rxjs';\nimport { finalize, map, takeUntil } from 'rxjs/operators';\n\nimport { ARTWORK_STATUSES } from '../../../requests/constants/artwork-file-statuses.constants';\nimport { File } from '../../../requests/models/file.model';\nimport { RequestsService } from '../../../requests/services/requests.service';\nimport { FILE_TYPES } from '../../constants/upload-restrictions.constants';\nimport { RestrictionOptionsObject } from '../../models/upload-file-restrictions.model';\nimport { Events, EventService } from '../../services/event-service.service';\nimport { LoaderService } from '../../services/loader.service';\nimport { MessageService } from '../../services/message-service.service';\nimport { UtilsService } from '../../services/utils.service';\n\n@Component({\n selector: 'app-file-uploader',\n templateUrl: './file-uploader.component.html',\n styleUrls: ['./file-uploader.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FileUploaderComponent implements OnInit, OnDestroy, OnChanges {\n @Input() public uploadFunction: (file: any) => Observable;\n @Input() public beforeUploadFunction?: () => Observable;\n @Input() public removeFunction: (idWrapper: any, fileItem?: File) => Observable;\n @Input() public uploaderLabel: string;\n @Input() public moreLabel: string;\n @Input() public isDisabled: boolean;\n @Input() public initialFiles: any = [];\n @Input() public restrictionOptions?: RestrictionOptionsObject;\n // tslint:disable-next-line:no-unused-variable\n @Input() private type: string;\n @Input() public requestId: string | number;\n @Input() public itemToLinkId: string | number;\n @Input() public testId?: string;\n // tslint:disable-next-line:no-output-on-prefix\n @Output() public onUpdateFiles: EventEmitter = new EventEmitter();\n @Input() public usePageMaskLoader = true;\n @Input() public isRequired = false;\n @Input() public isPreviewEnabled = false;\n @Input() showDownloadAll = false;\n\n @ViewChild('fileDropRef', {static: false}) fileDropEl: ElementRef;\n\n public files: any = [];\n public ARTWORK_STATUSES = ARTWORK_STATUSES;\n public isRestrictionSizeWarningExist: boolean;\n public fileTypesToAccept: string[] = [];\n\n private filesToUploadNumber = 0;\n private proceededFilesNumber = 0;\n protected ngUnsubscribe = new Subject();\n private filesLoadingSubject = new BehaviorSubject([]);\n numberOfFilesLoading$ = this.filesLoadingSubject.pipe(map(files => files.length));\n\n constructor(protected requestService: RequestsService,\n public utilsService: UtilsService,\n protected cd: ChangeDetectorRef,\n private messageService: MessageService,\n private translate: TranslatePipe,\n protected loaderService: LoaderService,\n protected eventService: EventService) {\n }\n\n public ngOnInit() {\n this.requestService.getFileTypes()\n .pipe(\n takeUntil(this.ngUnsubscribe)\n )\n .subscribe(data => {\n if (data) {\n this.fileTypesToAccept = this.restrictionOptions?.fileType ?\n data[this.restrictionOptions?.fileType] :\n data[FILE_TYPES.DEFAULT];\n this.cd.markForCheck();\n }\n });\n }\n\n public ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes?.initialFiles?.currentValue) {\n this.files = this.initialFiles.map(proof => ({ ...proof, progress: 100 }));\n }\n }\n\n private fileTypeAccepted(file: any) {\n if (!this.fileTypesToAccept || this.fileTypesToAccept.length === 0) {\n return true;\n }\n const fileTypeAccepted = this.fileTypesToAccept.indexOf(file.type) > -1;\n const [,fileExtension] = /(?:\\.([^.]+))?$/.exec(file.name);\n const fileExtensionAccepted = this.fileTypesToAccept.indexOf(`.${fileExtension.toLowerCase()}`) > -1;\n\n return fileTypeAccepted || fileExtensionAccepted;\n }\n\n private filterFileTypes(files: Array): Array {\n const filtered = files.filter(this.fileTypeAccepted.bind(this));\n\n if (filtered.length !== files.length) {\n this.messageService.showSystemMessage('error',\n this.translate.transform('common.errors.file-not-supported'));\n }\n\n return filtered;\n }\n\n /**\n * on file drop handler\n */\n onFileDropped($event: FileList) {\n const filtered = this.filterFileTypes(Array.from($event));\n\n if (!this.isDisabled) {\n this.isRestrictionSizeWarningExist = false;\n this.prepareFilesList(filtered);\n }\n }\n\n /**\n * handle file from browsing\n */\n fileBrowseHandler(files: FileList) {\n const filtered = this.filterFileTypes(Array.from(files));\n this.isRestrictionSizeWarningExist = false;\n this.prepareFilesList(Array.from(filtered));\n }\n\n /**\n * Download file from server\n *\n * @param index (File index)\n */\n public downloadFile(index: number) {\n if (this.files[index].url) {\n const fileUrl = this.files[index].url;\n this.requestService.downloadFile(fileUrl, this.files[index].fileName);\n } else {\n const attachmentId = this.files[index].attachmentId || this.files[index].id;\n this.requestService.downloadAttachment(this.requestId, attachmentId);\n }\n }\n\n /**\n * Download and open file for preview in a separate browser tab\n *\n * @param index (File index)\n */\n public openFileForPreview(index: number): void {\n const file = this.files[index];\n const fileUrl = file?.url || this.requestService.getFileUrl(file, this.requestId);\n this.requestService.getBlob(fileUrl).subscribe(data => {\n const blob = new Blob([data.body], {type: data.headers.get('content-type') || 'application/pdf'});\n const link = URL.createObjectURL(blob);\n window.open(link, '_blank');\n });\n }\n\n /**\n * Delete file from files list. Using for currently uploaded files\n *\n * @param index (File index)\n */\n deleteFile(index: number) {\n if (this.files[index].progress < 100) {\n return; // Upload in progress.\n }\n\n if (this.files[index].uploadFailed) {\n this.files.splice(index, 1);\n return;\n }\n if (this.usePageMaskLoader) {\n this.loaderService.showLoader();\n }\n const attachmentId = this.files[index].attachmentId || this.files[index].id;\n this.removeFunction(attachmentId, this.files[index])\n .pipe(\n this.triggerActionHistoryUpdate()\n )\n .subscribe(() => {\n this.files.splice(index, 1);\n if (this.usePageMaskLoader) {\n this.loaderService.hideLoader();\n }\n\n this.onUpdateFiles.emit({action: 'delete', data: attachmentId});\n this.cd.markForCheck();\n });\n }\n\n /**\n * Convert Files list to normal array list\n *\n * @param files (Files List)\n */\n prepareFilesList(files: Array) {\n const beforeUploadFunction = this.beforeUploadFunction || (() => of(true));\n\n if (!files.length) {\n return;\n }\n\n if (this.usePageMaskLoader) {\n this.loaderService.showLoader();\n }\n this.filesToUploadNumber = files.length;\n\n beforeUploadFunction().subscribe(() => {\n this.filesLoadingSubject.next([...this.filesLoadingSubject.value, ...files]);\n for (const item of files) {\n if (this.isValidByRestrictionsOptions(item)) {\n item.progress = 0;\n this.files = [...this.files, item];\n if (!item.uploaded) {\n const uploadObservable = this.uploadFunction(item);\n\n uploadObservable.pipe(map((event) => {\n this.cd.markForCheck();\n switch (event.type) {\n case HttpEventType.UploadProgress:\n const progress = Math.round(100 * event.loaded / event.total);\n return {progress, data: null};\n case HttpEventType.Response:\n return {progress: 100, data: event.body};\n default:\n return `Unhandled event: ${event.type}`;\n }\n }),\n finalize(() => {\n this.filesLoadingSubject.next(this.filesLoadingSubject.value.filter(f => f !== item));\n }),\n this.triggerActionHistoryUpdate()\n )\n .subscribe((progressObject: string | { progress: number; data: any }) => {\n if (!progressObject || typeof progressObject === 'string') {\n return;\n }\n item.progress = progressObject.progress;\n item.uploaded = item.progress === 100;\n\n if (typeof progressObject === 'object' && progressObject.data) {\n item.attachmentId = progressObject.data.id || progressObject.data.attachmentId;\n item.url = progressObject.data.url;\n\n if (this.itemToLinkId) {\n this.requestService.linkFileToReqItem(this.requestId, this.itemToLinkId, progressObject.data.id)\n .subscribe(() => {\n this.proceededFilesNumber ++;\n this.hideLoader();\n this.messageService.showSystemMessage('success',\n item.name + ' ' + this.translate.transform('module.requests.upload.success-upload'));\n }, error => throwError(error));\n } else {\n this.proceededFilesNumber ++;\n this.hideLoader();\n this.messageService.showSystemMessage('success',\n item.name + ' ' + this.translate.transform('module.requests.upload.success-upload'));\n }\n\n this.onUpdateFiles.emit({action: 'add', data: progressObject.data});\n this.cd.markForCheck();\n }\n }, (error: HttpErrorResponse) => {\n this.proceededFilesNumber ++;\n this.hideLoader();\n item.uploadFailed = true;\n this.cd.markForCheck();\n });\n }\n } else {\n this.proceededFilesNumber ++;\n this.hideLoader();\n }\n }\n });\n\n this.fileDropEl.nativeElement.value = '';\n }\n\n private hideLoader(): void {\n if (this.proceededFilesNumber === this.filesToUploadNumber) {\n if (this.usePageMaskLoader) {\n this.loaderService.hideLoader();\n }\n this.proceededFilesNumber = 0;\n this.filesToUploadNumber = 0;\n }\n }\n\n protected triggerActionHistoryUpdate() {\n return finalize(() => {\n this.eventService.emit({eventName: Events.UpdateActionHistory});\n });\n }\n\n private isValidByRestrictionsOptions(file): boolean {\n let fileValidBySize = true;\n\n if (this.restrictionOptions?.fileSize) {\n fileValidBySize = UtilsService.isFileFitsBySize(file.size, this.restrictionOptions.fileSize);\n this.isRestrictionSizeWarningExist = this.isRestrictionSizeWarningExist ? true : !fileValidBySize;\n }\n\n return fileValidBySize;\n }\n\n public downloadAll(): void {\n this.files.forEach(item => this.downloadItem(item));\n }\n\n public downloadItem(item): void {\n this.requestService.downloadItemFile(item, this.requestId);\n }\n}\n","\n\n\n \n {{ item }}\n cancel\n \n\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Self,\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'app-input-chips',\n templateUrl: './input-chips.component.html',\n styleUrls: ['./input-chips.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InputChipsComponent implements OnInit, OnDestroy, ControlValueAccessor {\n @Input() public inputLabel: string;\n @Input() public testId: string;\n @Input() public shouldShowChips = true;\n @Input() public numeric = false;\n\n @Input()\n get maxLength(): number {\n return this._maxLength || null;\n }\n set maxLength(value: number) {\n this._maxLength = value;\n }\n\n private _maxLength: number;\n\n public items: string[] = [];\n public itemsControl = new FormControl('');\n\n private ngUnsubscribe = new Subject();\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Self() @Optional() public ctrl: NgControl,\n private cd: ChangeDetectorRef,\n ) {\n if (this.ctrl) {\n this.ctrl.valueAccessor = this;\n }\n }\n\n public ngOnInit(): void {\n this.itemsControl.valueChanges\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(items => {\n const itemsArr = items\n .split(/,\\s*/)\n .map(v => v[v.length - 1] === ',' ? v.slice(0, -1) : v)\n .filter(v => !!v);\n\n if (items[items.length - 1] === ',' || itemsArr.length > 1) {\n this.setItems(itemsArr);\n }\n });\n }\n\n public ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n public registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n public writeValue(value: any): void {\n if (!value?.length) {\n this.items = [];\n this.cd.markForCheck();\n }\n }\n\n public onRemoveItem(item: string): void {\n this.items = this.items.filter(v => v !== item);\n this.ctrl.control.setValue(this.items);\n }\n\n public onEnterKeyup(items: string): void {\n if (items?.length) {\n this.setItems([items]);\n }\n }\n public onBlur(items: string): void {\n if (items?.length) {\n this.setItems([items]);\n }\n }\n\n private setItems(itemsArr: string[]) {\n this.items = [...new Set([...this.items, ...itemsArr])];\n this.itemsControl.reset('', { emitEvent: false });\n this.ctrl.control.setValue(this.items);\n }\n}\n","\n \n {{inputLabel}}*:\n \n
\n \n
\n \n
\n \n close\n \n
\n \n \n \n \n \n \n
{{getOptionLabel(item)}}
\n
{{item[itemLabel]}}
\n
\n \n
\n
\n
\n \n
\n\n \n {{inputHint}}\n\n \n {{getErrorMessage()}}\n
\n","/* eslint-disable @angular-eslint/no-conflicting-lifecycle */\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n EventEmitter,\n forwardRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {MatSelect} from '@angular/material/select';\nimport {ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {Observable, ReplaySubject, Subject} from 'rxjs';\nimport {debounceTime, map, switchMapTo, takeUntil} from 'rxjs/operators';\nimport {MessageService} from '../../services/message-service.service';\nimport {ErrorStateMatcher} from '@angular/material/core';\nimport isEmpty from 'lodash/isEmpty';\nimport {MAT_INPUT_VALUE_ACCESSOR} from '@angular/material/input';\n\nclass CustomFieldErrorMatcher implements ErrorStateMatcher {\n constructor(private customControl: FormControl) {}\n isErrorState(): boolean {\n return this.customControl && this.customControl.touched && this.customControl.invalid;\n }\n}\n\n// tslint:disable-next-line:no-conflicting-lifecycle\n@Component({\n selector: 'app-input-search-dropdown',\n templateUrl: './input-search-dropdown.component.html',\n styleUrls: ['./input-search-dropdown.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputSearchDropdownComponent),\n multi: true\n },\n {provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: InputSearchDropdownComponent}\n ]\n})\nexport class InputSearchDropdownComponent implements ControlValueAccessor, OnInit, OnDestroy, OnChanges, DoCheck {\n @Input() public placeholder: string;\n @Input() public testId: string;\n @Input() public inputLabel?: string;\n @Input() public inputClass?: string;\n @Input() inputType? = 'text';\n // tslint:disable-next-line:no-input-rename\n @Input('formControl') public resultControl: FormControl;\n @Input() public itemsList: any[];\n @Input() public itemLabel: string;\n @Input() public itemLabelFn?: (optionValue: any) => string;\n @Input() public itemFilterFn?: (optionValue: any) => any;\n @Input() public isLoading: Observable;\n @Input() public inputHint?: string;\n @Input() public inputHintIcon?: boolean;\n @Input() highlights = false;\n\n @ViewChild('ItemsSelect', {static: true}) ItemsSelect: MatSelect;\n\n // tslint:disable-next-line:no-output-on-prefix\n @Output() private onSearch: EventEmitter = new EventEmitter();\n @Output() private onClear: EventEmitter = new EventEmitter();\n\n @Input()\n get isRequired(): boolean {\n return this._required;\n }\n set isRequired(value: boolean) {\n this._required = value;\n }\n\n // tslint:disable-next-line:variable-name\n private _required: boolean;\n private isDisabled: boolean;\n\n public inputCtrl: FormControl = new FormControl();\n public ItemsFormCtrl: FormControl = new FormControl();\n public ItemsFormFilterCtrl: FormControl = new FormControl();\n public filteredItemsList: ReplaySubject = new ReplaySubject(1);\n public searching = false;\n\n /** Subject that emits when the component has been destroyed. */\n // tslint:disable-next-line:variable-name\n private _onDestroy = new Subject();\n private oldTouched = null;\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(private messageService: MessageService, private cd: ChangeDetectorRef) {}\n\n public setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n if (isDisabled) {\n this.ItemsFormCtrl.disable();\n this.inputCtrl.disable();\n } else {\n this.ItemsFormCtrl.enable();\n this.inputCtrl.enable();\n }\n this.cd.markForCheck();\n }\n\n ngOnInit() {\n // set initial selection\n this.ItemsFormCtrl.setValue([]);\n\n // load the initial items list\n this.filteredItemsList.next(this.itemsList.slice());\n\n // listen for search field value changes\n this.ItemsFormFilterCtrl.valueChanges\n .pipe(takeUntil(this._onDestroy))\n .pipe(debounceTime(1000))\n .pipe(\n map(search => {\n if (search.length) {\n this.searching = true;\n this.onSearch.emit(search);\n }\n }),\n switchMapTo(this.isLoading)\n )\n .subscribe(loading => {\n // this.onSearch.emit(value)\n this.filteredItemsList.next(this.itemsList);\n if (!loading) {\n this.searching = false;\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.resultControl?.currentValue?.value) {\n this.inputCtrl.setValue(this.getOptionLabel(this.resultControl.value));\n }\n\n if (changes.resultControl) {\n if (this.resultControl.disabled) {\n this.inputCtrl.disable();\n } else {\n this.inputCtrl.enable();\n }\n }\n }\n\n ngDoCheck(): void {\n if (this.resultControl.touched !== this.oldTouched) {\n this.oldTouched = this.resultControl.touched;\n this.cd.markForCheck();\n }\n }\n\n ngOnDestroy() {\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n public openedChange(opened: boolean) {\n if (!opened && !isEmpty(this.ItemsFormCtrl.value)) {\n // Set value to parent control\n if (!isEmpty(this.ItemsFormCtrl.value)) {\n this.resultControl.setValue(this.ItemsFormCtrl.value);\n }\n // set value to inner input control\n if (this.resultControl.value) {\n this.inputCtrl.setValue(this.getOptionLabel(this.resultControl.value));\n } else {\n this.inputCtrl.setValue(this.resultControl.value);\n }\n\n // reset selected from dropdown value\n this.ItemsFormCtrl.reset();\n }\n\n if (!this.resultControl.touched) {\n this.resultControl.markAsTouched();\n }\n }\n\n public errorMatcher() {\n return new CustomFieldErrorMatcher(this.resultControl);\n }\n\n public getErrorMessage(): string {\n if (this.resultControl && this.resultControl.errors) {\n return this.messageService.getControlErrorMessage(this.resultControl.errors);\n }\n return null;\n }\n\n public getOptionLabel(item): any {\n if (!this.itemLabelFn) {\n return item && item[this.itemLabel] ? item[this.itemLabel] : '';\n }\n return this.itemLabelFn(item);\n }\n\n public clearInputValue(): void {\n if (!this.isDisabled) {\n this.resultControl.reset();\n this.inputCtrl.reset();\n this.onClear.next();\n }\n }\n\n public togglePanel(event: Event): void {\n if ((event.target as HTMLSpanElement).dataset.testId === `clear_button_${this.testId}`) {\n this.clearInputValue();\n } else {\n this.ItemsSelect.toggle();\n }\n }\n\n writeValue(value: any): void {}\n\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n highlighted(content: string, search: string) {\n if(search.length > 0) {\n // eslint-disable-next-line no-useless-escape\n const regex = new RegExp(search.replace(/[-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&'), 'gi');\n return '' + content.replace(regex, '$&');\n }\n return content;\n }\n\n withExtras(originalContent: string, item: {extras: string[]}, search) {\n const prefilteredExtras = (item.extras || []).filter(\n e =>\n e\n .replace(/(<([^>]+)>)/gi, '')\n .toLowerCase()\n .indexOf(search) > -1\n );\n if (prefilteredExtras.length) {\n return `${originalContent} (${prefilteredExtras.join(', ')})`;\n }\n return originalContent;\n }\n}\n","import {Observable} from 'rxjs';\n\nexport interface MultiSelectSearchDropdownOption {\n label: string;\n value: string;\n}\n\nexport abstract class ItemListProvider {\n abstract loadValues(values: string[]): Observable;\n abstract searchValues(query: string): Observable;\n}\n","\n
\n \n 0\"\n (click)=\"removeAllSelectedItems($event)\"\n class=\"remove-selected-items\"\n data-test-id=\"remove-selected-items\"\n class=\"filtered row ai-center remove-all-button\"\n [attr.data-test-id]=\"[testId, 'remove_all_items'].join('_')\"\n >\n {{ value.length }}\n \n \n
\n\n \n {{ label }}\n *:\n \n\n \n \n close\n \n \n\n \n \n 0 && value.length === (selectionListCombined$ | async)?.length\"\n [toggleAllCheckboxTooltipMessage]=\"'common.label.select-all' | translate\"\n [toogleAllCheckboxTooltipPosition]=\"'above'\"\n (toggleAll)=\"toggleSelectAll($event)\"\n [placeholderLabel]=\"'common.label.search' | translate\"\n >\n \n\n \n \n
\n
\n\n
\n
\n \n {{ 'common.statuses.loading' | translate }}\n
\n
\n\n \n
Not found
\n
\n\n \n \n \n
\n \n
\n
\n \n \n \n \n {{inputHint\n }}\n\n \n {{getErrorMessage()}}\n \n\n","/* eslint-disable no-useless-escape */\nimport {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {AbstractControl, ControlValueAccessor, FormControl, NgControl} from '@angular/forms';\nimport {BehaviorSubject, combineLatest, Observable, of, Subject, timer, merge} from 'rxjs';\nimport {debounce, filter, map, shareReplay, startWith, switchMap, takeUntil, tap, catchError, take} from 'rxjs/operators';\n\nimport {ItemListProvider, MultiSelectSearchDropdownOption} from './item-list.provider';\nimport {MatSelect, MatSelectConfig, MAT_SELECT_CONFIG} from '@angular/material/select';\nimport { MessageService } from 'src/app/shared/services/message-service.service';\n\nexport type SelectSearchDropdownOptionsInput = string | {label: string; value: string};\n\n@Component({\n selector: 'app-multiselect-search-dropdown',\n templateUrl: './multiselect-search-dropdown.component.html',\n styleUrls: ['./multiselect-search-dropdown.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: MAT_SELECT_CONFIG,\n useValue: {\n disableOptionCentering: true\n } as MatSelectConfig\n }\n ]\n})\nexport class MultiSelectSearchDropdownComponent implements OnInit, OnDestroy, ControlValueAccessor {\n\n @Input() public set value(value: string[]) {\n this.control?.setValue(value || []);\n if (value.length === 0) {\n // tslint:disable-next-line: no-unused-expression\n this.matSelect && ((this.matSelect as unknown) as any)._propagateChanges();\n }\n this.cd.markForCheck();\n }\n public get value(): string[] {\n return this.control?.value;\n }\n\n @Output() public valueChange = new EventEmitter();\n\n public filterControl: FormControl = new FormControl('');\n\n public isOverlayOpened: boolean;\n\n @Input() itemListProvider: ItemListProvider;\n @Input() useCustomToggler = true;\n @Input() testId: string = null;\n @Input() label: string = null;\n @Input() isRequired = false;\n @Input() useSelectAll = false;\n @Input() disableOptionCentering = null;\n @Input() inputHint: string = null;\n @Input() inputHintIcon: string = null;\n\n @ViewChild('matSelect', {read: MatSelect}) matSelect: MatSelect;\n\n private cachedValues = new Map();\n private ngUnsubscribe = new Subject();\n\n private localControl: AbstractControl = new FormControl([]);\n public get control() {\n if (this.ngControl) {\n return this.ngControl.control;\n }\n return this.localControl;\n }\n\n constructor(@Self() @Optional() private ngControl: NgControl, private cd: ChangeDetectorRef, private messageService: MessageService) {\n if (ngControl) {\n ngControl.valueAccessor = this;\n }\n }\n\n selectedItemList$: Observable;\n private loadingSubject = new BehaviorSubject(false);\n selectedItemListLoading$ = this.loadingSubject.asObservable();\n selectionListCombined$: Observable;\n\n searchedItemList$: Observable;\n\n writeValue(obj: any): void {}\n registerOnChange(fn: any): void {}\n registerOnTouched(fn: any): void {}\n\n ngOnInit() {\n /**\n * Control input value changes\n */\n this.selectedItemList$ = combineLatest([\n // tslint:disable-next-line:deprecation\n merge(of(this.filterControl.value), this.filterControl.valueChanges),\n this.control.valueChanges.pipe(\n startWith(this.control.value || []),\n switchMap((value: string[]) => {\n const usernamesToLoad = value.filter(v => !this.cachedValues.has(v));\n if (usernamesToLoad.length) {\n this.loadingSubject.next(true);\n return this.itemListProvider.loadValues(value).pipe(\n tap(() => this.loadingSubject.next(false)),\n tap(fetched => {\n this.addToCached(fetched);\n }),\n map(() => this.assignLabels(value)),\n catchError(() => of([] as MultiSelectSearchDropdownOption[]))\n );\n }\n return of(this.assignLabels(value));\n\n }),\n tap(() => {\n this.loadingSubject.next(false);\n })\n )\n ]).pipe(\n map(([search, options]) => options.map(v => {\n if (!search) {\n return v;\n }\n\n const regex = new RegExp(search.replace(/[-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&'), 'i');\n return {...v, label: v.label.replace(regex, '$&')};\n })),\n takeUntil(this.ngUnsubscribe),\n shareReplay({\n bufferSize: 1,\n refCount: false\n })\n );\n\n /**\n * Search item list\n */\n this.searchedItemList$ = combineLatest([\n this.filterControl.valueChanges.pipe(\n filter(v => typeof v === 'string'),\n debounce(v => (v.length ? timer(300) : timer(0))),\n switchMap((value: string) => {\n if (value.length === 0) {\n return of([]);\n }\n\n this.loadingSubject.next(true);\n return this.itemListProvider.searchValues(value).pipe(\n tap(() => this.loadingSubject.next(false)),\n tap(fetched => {\n this.addToCached(fetched);\n }),\n catchError(() => of([]))\n );\n }),\n tap(() => {\n this.loadingSubject.next(false);\n })\n ),\n this.control.valueChanges.pipe(startWith(this.control.value || []))\n ]).pipe(\n map(([list, value]) => {\n const visibleList = list\n .filter(v => value.indexOf(v.value) === -1)\n .map(v => {\n const search: string = this.filterControl.value;\n if (!search) {\n return v;\n }\n\n const regex = new RegExp(search, 'i');\n return {...v, label: v.label.replace(regex, '$&')};\n });\n\n return Object.assign(visibleList, {\n showNotFound: list.length === 0 && this.filterControl.value?.length > 0\n });\n }),\n takeUntil(this.ngUnsubscribe),\n shareReplay({\n bufferSize: 1,\n refCount: false\n })\n );\n\n this.selectionListCombined$ = combineLatest([this.selectedItemList$, merge(of([]), this.searchedItemList$)]).pipe(\n map(([a, b]) => [...a, ...b]),\n takeUntil(this.ngUnsubscribe),\n shareReplay({\n bufferSize: 1,\n refCount: false\n })\n );\n }\n\n private addToCached(fetched: Array) {\n fetched.forEach(v => {\n this.cachedValues.set(v.value, v.label);\n });\n }\n\n private assignLabels(value: string[]): MultiSelectSearchDropdownOption[] {\n return value.map(v => ({\n value: v,\n label: this.cachedValues.get(v)\n }));\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n public openedChange(opened: boolean) {\n this.isOverlayOpened = opened;\n\n if (!opened) {\n this.valueChange.emit(this.control.value);\n }\n }\n\n public removeAllSelectedItems(event: Event): void {\n event.stopPropagation();\n\n this.control.setValue([]);\n this.filterControl.setValue('');\n this.valueChange.emit(this.control.value);\n ((this.matSelect as unknown) as any)._propagateChanges(); // refreshed the MatOption state\n }\n\n public trackByItem(index: number, element: MultiSelectSearchDropdownOption) {\n return element.value;\n }\n\n public toggleSelectAll($event: boolean) {\n if (!$event) {\n this.control.setValue([]);\n this.valueChange.emit(this.control.value);\n ((this.matSelect as unknown) as any)._propagateChanges(); // refreshed the MatOption state\n } else {\n this.selectionListCombined$.pipe(take(1)).subscribe(fil => {\n this.control.setValue(fil.map(i => i.value));\n this.valueChange.emit(this.control.value);\n fil.forEach(i => {\n ((this.matSelect as unknown) as any)._propagateChanges(i);\n });\n });\n }\n }\n\n reset(): void {\n this.control.setValue([]);\n this.valueChange.emit(this.control.value);\n }\n\n\n public getErrorMessage(): string {\n if (this.control && this.control.errors) {\n return this.messageService.getControlErrorMessage(this.control.errors);\n } return null;\n }\n\n}\n","
\n
\n \n \n {{item.name}}\n \n
\n\n \n \n {{inputHint}}\n \n\n \n \n {{warningMessage}}\n \n\n \n \n {{getErrorMessage()}}\n \n
\n","import {\n ChangeDetectionStrategy, ChangeDetectorRef,\n Component, DoCheck,\n Input,\n OnInit,\n Optional,\n Self,\n ViewEncapsulation\n} from '@angular/core';\nimport {RadioGroupInputValue} from '../../models/radioGroupInputValue';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { MessageService } from '../../services/message-service.service';\n\n@Component({\n selector: 'app-radio-group-form',\n templateUrl: './radio-group-form.component.html',\n styleUrls: ['./radio-group-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class RadioGroupFormComponent implements ControlValueAccessor, OnInit, DoCheck {\n\n @Input() public buttonValues: RadioGroupInputValue[];\n @Input() public label?: string;\n @Input() public inputHint?: string;\n @Input() public hintIconExist?: boolean;\n @Input() public errorMessage?: string;\n @Input() public testId?: string;\n @Input() public warningMessage?: string;\n @Input() public isWarningVisible?: boolean;\n @Input() public isRequired?: boolean;\n @Input() private defaultSelectedIndex?: number;\n @Input() public isLabelInColumn = true;\n public isDisabled: boolean;\n\n private oldTouched = null;\n\n onChange: any = (event) => {\n this.ctrl?.control.setValue(event);\n };\n onTouched: any = () => {};\n\n constructor(@Self() @Optional() public ctrl: NgControl,\n private cd: ChangeDetectorRef, private messageService: MessageService) {\n if (this.ctrl) {\n this.ctrl.valueAccessor = this;\n }\n }\n\n ngOnInit(): void {\n if (\n typeof this.ctrl.value !== 'boolean' &&\n typeof this.defaultSelectedIndex === 'number' &&\n this.buttonValues?.length\n ) {\n this.selectItem(this.buttonValues[this.defaultSelectedIndex].code);\n }\n }\n\n ngDoCheck() {\n if (this.ctrl.touched !== this.oldTouched) {\n this.oldTouched = this.ctrl.touched;\n }\n this.cd.markForCheck();\n }\n\n registerOnChange(fn) {\n this.onChange = fn;\n }\n\n writeValue(value) {}\n\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n\n selectItem(value) {\n if (!this.isDisabled) {\n this.ctrl?.control.setValue(value);\n }\n }\n\n setDisabledState?(disabled: boolean) {\n this.isDisabled = disabled;\n }\n\n\n public getErrorMessage(): string {\n if (!this.errorMessage) {\n if (this.ctrl?.invalid) {\n return this.messageService.getControlErrorMessage(this.ctrl.errors);\n } return null;\n }\n return this.errorMessage;\n }\n}\n","import {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {DOCUMENT} from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Directive,\n ElementRef,\n HostBinding,\n Inject,\n Injector,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n Optional,\n PLATFORM_ID,\n Renderer2,\n Self\n} from '@angular/core';\nimport {ControlValueAccessor, FormGroupDirective, NgControl, NgForm, Validator} from '@angular/forms';\nimport {CanDisable, CanUpdateErrorState, ErrorStateMatcher, mixinDisabled, mixinErrorState} from '@angular/material/core';\nimport {HasErrorState} from '@angular/material/core/common-behaviors/error-state';\nimport {MatFormFieldControl} from '@angular/material/form-field';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {QuillEditorBase, QuillService} from 'ngx-quill';\nimport Quill from 'quill';\nimport {Subject, Subscription} from 'rxjs';\nimport {debounceTime, distinctUntilChanged} from 'rxjs/operators';\n\nconst Link = Quill.import('formats/link');\n// Override the existing property on the Quill global object and add custom protocols\nLink.PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel', 'sms'];\n\nclass CustomLinkSanitizer extends Link {\n static sanitize(url) {\n // Run default sanitize method from Quill\n const sanitizedUrl = super.sanitize(url);\n\n // Not whitelisted URL based on protocol so, let's return `blank`\n if (!sanitizedUrl || sanitizedUrl === 'about:blank') {\n return sanitizedUrl;\n }\n\n // Verify if the URL already have a whitelisted protocol\n const hasWhitelistedProtocol = (this as any).PROTOCOL_WHITELIST.some(function(protocol) {\n return sanitizedUrl.startsWith(protocol);\n });\n\n if (hasWhitelistedProtocol) {\n return sanitizedUrl;\n }\n\n // if not, then append only 'http' to not to be a relative URL\n return `http://${sanitizedUrl}`;\n }\n}\n\nQuill.register(CustomLinkSanitizer, true);\nclass MatQuillBase extends QuillEditorBase {\n stateChanges = new Subject();\n bounds = 'self';\n\n constructor(\n public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n public ngControl: NgControl,\n injector: Injector,\n cdr: ChangeDetectorRef,\n elementRef: ElementRef,\n domSanitizer: DomSanitizer,\n platformId: any,\n renderer: Renderer2,\n zone: NgZone,\n service: QuillService\n ) {\n super(injector, elementRef, cdr, domSanitizer, platformId, renderer, zone, service);\n }\n}\n\nconst _MatQuillMixinBase = mixinErrorState(mixinDisabled(MatQuillBase));\n\n@Directive()\nexport abstract class _MatQuillBase\n extends _MatQuillMixinBase\n implements\n AfterViewInit,\n CanDisable,\n CanUpdateErrorState,\n ControlValueAccessor,\n HasErrorState,\n MatFormFieldControl,\n OnChanges,\n OnDestroy,\n Validator\n{\n abstract controlType: string;\n focused = false;\n abstract id: string;\n private contentChangedSubscription: Subscription;\n private blurSubscription: Subscription;\n private focusSubscription: Subscription;\n\n constructor(\n defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() parentForm: NgForm,\n @Optional() parentFormGroup: FormGroupDirective,\n @Optional() @Self() public ngControl: NgControl,\n cdr: ChangeDetectorRef,\n elementRef: ElementRef,\n domSanitizer: DomSanitizer,\n @Inject(PLATFORM_ID) platformId: any,\n renderer: Renderer2,\n zone: NgZone,\n injector: Injector,\n service: QuillService,\n @Inject(DOCUMENT) doc: any\n ) {\n super(\n defaultErrorStateMatcher,\n parentForm,\n parentFormGroup,\n ngControl,\n injector,\n cdr,\n elementRef,\n domSanitizer,\n platformId,\n renderer,\n zone,\n service\n );\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n\n this.contentChangedSubscription = this.onContentChanged.pipe(debounceTime(300), distinctUntilChanged()).subscribe(() => {\n this.updateErrorState();\n this.stateChanges.next();\n });\n\n this.blurSubscription = this.onBlur.subscribe(() => {\n this.focused = false;\n if (!!this.ngControl && !this.ngControl.control.touched) {\n this.ngControl.control.markAsTouched();\n this.updateErrorState();\n }\n this.stateChanges.next();\n });\n\n this.focusSubscription = this.onFocus.subscribe(() => {\n this.focused = true;\n this.stateChanges.next();\n });\n }\n\n ngOnDestroy() {\n this.contentChangedSubscription.unsubscribe();\n this.blurSubscription.unsubscribe();\n this.focusSubscription.unsubscribe();\n super.ngOnDestroy();\n }\n\n /*\n * GETTERS & SETTERS\n */\n\n @Input()\n disabled = false;\n\n get empty() {\n return !coerceBooleanProperty(this.value);\n }\n\n @Input()\n placeholder = '';\n\n @Input()\n required = false;\n\n @HostBinding('class.floating')\n get shouldLabelFloat() {\n return this.focused || !this.empty;\n }\n\n get value(): any {\n try {\n return this.valueGetter(this.quillEditor, this.editorElem!);\n } catch (e) {\n return;\n }\n }\n set value(value: any) {\n this.writeValue(value);\n this.stateChanges.next();\n }\n\n /*\n * METHODS\n */\n\n blur(): void {\n (this.editorElem.childNodes as NodeListOf)[0].blur();\n }\n\n focus(): void {\n this.quillEditor.focus();\n }\n\n @HostBinding('attr.aria-describedby') _describedBy = '';\n setDescribedByIds(ids: string[]): void {\n this._describedBy = ids.join(' ');\n }\n\n onContainerClick(event: MouseEvent): void {\n if ((event.target as HTMLElement)?.closest('.ql-tooltip')) {\n return;\n }\n if (!this.focused) {\n this.quillEditor.focus();\n }\n }\n\n static ngAcceptInputType_disabled: boolean | string | null | undefined;\n static ngAcceptInputType_required: boolean | string | null | undefined;\n}\n// Increasing integer for generating unique ids for mat-quill components.\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'app-quill',\n exportAs: 'appQuill',\n template: `\n \n
\n
\n    
\n \n \n
\n
\n    
\n \n `,\n styleUrls: ['./quill.component.scss'],\n providers: [{provide: MatFormFieldControl, useExisting: QuillInputComponent}],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class QuillInputComponent extends _MatQuillBase implements AfterViewInit {\n private _testId: string;\n @Input() set testId(testId: string) {\n if (this.elementRef) {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'data-test-id', testId);\n }\n this._testId = testId;\n }\n get testId(): string {\n return this._testId;\n }\n @Input() disabled;\n controlType = 'app-quill';\n @HostBinding() id = `${'app-quill'}-${nextUniqueId++}`;\n @Input() errorStateMatcher: ErrorStateMatcher;\n @Input() styles: any;\n\n static ngAcceptInputType_disabled: boolean | string | null | undefined;\n static ngAcceptInputType_required: boolean | string | null | undefined;\n\n ngAfterViewInit(): void {\n super.ngAfterViewInit();\n this.renderer.setAttribute(\n this.elementRef.nativeElement.querySelector('[quill-editor-element]'),\n 'data-test-id',\n [this.testId, 'input'].join('_')\n );\n }\n}\n","\n \n {{ inputLabel | titlecase }}\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 \n\n \n \n {{ warningMessage }}\n \n\n \n \n {{ getErrorMessage() }}\n \n\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n ChangeDetectorRef,\n Component,\n ContentChild,\n DoCheck,\n ElementRef,\n Input,\n OnDestroy,\n Optional,\n Self,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { MatInput } from '@angular/material/input';\nimport { Subject } from 'rxjs';\nimport { MessageService } from 'src/app/shared/services/message-service.service';\n\nimport { CustomHintDirective } from '../../directives/custom-hint.directive';\nimport { QuillInputComponent } from '../quill/quill.component';\nimport { RichTextExtra } from './rich-text.model';\n\nclass CustomFieldErrorMatcher implements ErrorStateMatcher {\n isErrorState(control: FormControl): boolean {\n return control && control.touched && control.invalid;\n }\n}\n\n@Component({\n selector: 'app-rich-text',\n templateUrl: './rich-text.component.html',\n styleUrls: ['./rich-text.component.scss'],\n encapsulation: ViewEncapsulation.Emulated\n})\nexport class RichTextComponent implements OnDestroy, DoCheck, ControlValueAccessor {\n @ViewChild(MatInput) textarea: ElementRef;\n @Input() public placeholder: string;\n @Input() public showLabel?: boolean;\n @Input() public testId = 'rich_text';\n @Input() public inputLabel?: string;\n @Input() public inputHint?: string;\n @Input() public inputHintIcon?: boolean;\n @Input() public inputClass?: string;\n @Input() public warningMessage?: string;\n @Input() public isWarningVisible?: string;\n @Input() public autoFocus?: boolean;\n @ViewChild('matEditor', {\n static: true\n }) matEditor: QuillInputComponent;\n @ContentChild(CustomHintDirective, {\n static: false,\n }) customHint: CustomHintDirective;\n\n @Input()\n get isRequired(): boolean {\n return this._required;\n }\n set isRequired(value: boolean) {\n this._required = value;\n }\n @Input()\n get readonly(): boolean {\n return this._readonly;\n }\n set readonly(value: boolean) {\n this._readonly = value;\n }\n get maxLength(): number {\n return this._maxLength || null;\n }\n @Input()\n set maxLength(value: number) {\n this._maxLength = value;\n }\n private _extras: Array = [];\n get extras(): Array {\n return this._extras;\n }\n @Input()\n set extras(extras: Array) {\n this._extras = extras;\n }\n\n @Input() minHeight = 150;\n\n // tslint:disable-next-line:variable-name\n private _required: boolean;\n private _readonly: boolean;\n private _maxLength: number;\n public focused = false;\n private oldDisabled = null;\n private oldTouched = null;\n private oldValid = null;\n private ngUnsubscribe = new Subject();\n\n onChange: any = () => {};\n onTouched: any = () => {};\n constructor(\n private messageService: MessageService,\n private cd: ChangeDetectorRef,\n private fm: FocusMonitor,\n private elRef: ElementRef,\n @Self() @Optional() public ctrl: NgControl\n ) {\n if (this.ctrl) {\n this.ctrl.valueAccessor = this;\n }\n }\n\n ngDoCheck() {\n if (this.ctrl.disabled !== this.oldDisabled) {\n this.oldDisabled = this.ctrl.disabled;\n this.matEditor?.updateErrorState?.();\n this.cd.markForCheck();\n }\n if (this.ctrl.touched !== this.oldTouched) {\n this.oldTouched = this.ctrl.touched;\n this.matEditor?.updateErrorState?.();\n this.cd.markForCheck();\n }\n if (this.ctrl.valid !== this.oldValid) {\n this.oldValid = this.ctrl.valid;\n this.matEditor?.updateErrorState?.();\n this.cd.markForCheck();\n }\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this.fm.stopMonitoring(this.elRef.nativeElement);\n }\n\n writeValue(value: any): void { }\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n errorMatcher() {\n return new CustomFieldErrorMatcher();\n }\n\n public getErrorMessage(): string {\n if (this.ctrl?.invalid) {\n return this.messageService.getControlErrorMessage(this.ctrl.errors);\n }\n return null;\n }\n}\n","import { RichTextComponent } from './rich-text.component';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { CommonModule } from '@angular/common';\nimport { QuillInputComponent } from '../quill/quill.component';\nimport { CommonDirectivesModule } from '../../pipes/directives.module';\n\n@NgModule({\n declarations: [\n RichTextComponent,\n QuillInputComponent,\n ],\n imports: [FormsModule, ReactiveFormsModule, MatFormFieldModule, CommonModule, CommonDirectivesModule],\n exports: [\n RichTextComponent,\n QuillInputComponent,\n ],\n})\nexport class RichTextModule {\n\n}\n"," 0\"\n [appearance]=\"useCustomToggler ? 'legacy' : 'outline'\"\n #matFormField\n>\n
\n \n 0\"\n (click)=\"removeAllSelectedItems($event)\"\n [attr.data-test-id]=\"[testId, 'remove_selected_items'].join('_')\"\n class=\"filtered row ai-center remove-all-button remove-selected-items\"\n >\n {{ itemsFormCtrl.value?.length }}\n \n \n
\n\n \n\n \n \n close\n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n {{ errorMessage }}\n \n\n","/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-useless-escape */\nimport {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation,\n ElementRef,\n SimpleChanges,\n OnChanges,\n TemplateRef,\n Self,\n Optional\n} from '@angular/core';\nimport {FormControl, NgControl} from '@angular/forms';\nimport {ReplaySubject, Subject} from 'rxjs';\nimport {take, takeUntil} from 'rxjs/operators';\nimport {MatSelect} from '@angular/material/select';\nimport {FilteredItem} from '../../models/filtered-item.model';\nimport {MessageService} from '../../services/message-service.service';\nimport {FocusMonitor} from '@angular/cdk/a11y';\nimport isEqual from 'lodash/isEqual';\nimport {MatFormField} from '@angular/material/form-field';\nimport {UserModel} from '../../models/user.model';\n\nexport interface SelectSearchDropdownOption {\n label: string;\n value: T;\n level?: number;\n parent?: any;\n extras?: string[];\n disabled?: boolean;\n}\nexport type SelectSearchDropdownOptionsInput = string | SelectSearchDropdownOption;\n\ntype Comparator = (a: any, b: any) => boolean;\nexport const exactComparator: Comparator = (a: any, b: any) => a === b;\nexport const mdmIdComparator: Comparator = (a: any, b: any) => {\n if (a?.mdmId && b?.mdmId) {\n return a.mdmId === b.mdmId;\n }\n return false;\n};\n\nexport const userNameComparator: Comparator = (a: UserModel, b: UserModel) => a?.userName === b?.userName;\nexport const isEqualComparator: Comparator = (a: any, b: any) => isEqual(a, b);\nexport const optionValueComparatorFactory =\n (optionName: string) =>\n (a: any, b: any): boolean =>\n typeof a !== 'string' ? a[optionName] === b : a === b;\n\nexport const DEFAULT_COMPARATORS = [exactComparator, mdmIdComparator, isEqualComparator];\n\n@Component({\n selector: 'app-select-search-dropdown',\n templateUrl: './select-search-dropdown.component.html',\n styleUrls: ['./select-search-dropdown.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class SelectSearchDropdownComponent implements OnInit, AfterViewInit, OnDestroy, OnChanges {\n public normalizedItemList: SelectSearchDropdownOption[];\n\n @Input() useCustomToggler = false;\n @Input() useSelectAll = false;\n @Input() label: string = null;\n @Input() isRequired = false;\n @Input() isMultiple = false;\n @Input() testId = null;\n @Input() autoFocus = false;\n @Input() disableOptionCentering = true;\n @Input() comparators: Comparator[] = DEFAULT_COMPARATORS;\n @Input() canReset = true;\n\n @Input() public set itemsList(itemsList: SelectSearchDropdownOptionsInput[]) {\n const normalizedItemList = itemsList.map(il => (typeof il === 'string' ? {label: il, value: il} : il));\n const itemListValues = itemsList.map(il => (typeof il === 'string' ? il : il.value));\n /**\n * Reset selected values if they are absent in a new option list\n */\n if (Array.isArray(this.itemsFormCtrl.value)) {\n const boundedValue = this.itemsFormCtrl.value.filter(val => itemListValues.includes(val));\n const hasChange = this.itemsFormCtrl.value.length !== boundedValue.length;\n /**\n * Update only in case of value has been bounded\n */\n if (hasChange) {\n this.itemsFormCtrl.setValue(boundedValue);\n this.onActionSave.emit(this.itemsFormCtrl.value);\n this.valueChange.emit(this.itemsFormCtrl.value);\n }\n }\n this.normalizedItemList = normalizedItemList;\n this.filteredItemsList$.next(this.normalizedItemList);\n }\n\n @ViewChild('ItemsAssignSelect') public select: ElementRef;\n @ViewChild('ItemsAssignSelect', {static: true}) ItemsAssignSelect: MatSelect;\n @ViewChild('matFormField', {read: MatFormField, static: true}) matFormField: MatFormField;\n @Input() hint: TemplateRef;\n @Input() hintParams: any = {};\n // tslint:disable-next-line:no-output-on-prefix\n @Output() private onActionSave: EventEmitter = new EventEmitter();\n\n private _itemsFormCtrl = new FormControl([]);\n /** control for the selected items for multi-selection checkboxes */\n @Input() set itemsFormCtrl(itemsFormCtrl: FormControl) {\n this._itemsFormCtrl = itemsFormCtrl;\n }\n get itemsFormCtrl(): FormControl {\n if (this.ctrl?.control) {\n return this.ctrl?.control as FormControl;\n }\n return this._itemsFormCtrl;\n }\n\n @Input() public set value(value: any[]) {\n this.itemsFormCtrl.setValue(value || []);\n }\n\n public get value(): any[] {\n return this.itemsFormCtrl.value;\n }\n\n @Output() public valueChange = new EventEmitter();\n\n /** control for the MatSelect filter keyword multi-selection */\n public ItemsFormFilterCtrl: FormControl = new FormControl();\n\n /** list of items filtered by search keyword */\n public filteredItemsList$: ReplaySubject = new ReplaySubject(1);\n\n public isDropdownOpened: boolean;\n\n /** Subject that emits when the component has been destroyed. */\n // tslint:disable-next-line:variable-name\n private _onDestroy = new Subject();\n\n constructor(\n private messageService: MessageService,\n private fm: FocusMonitor,\n private elRef: ElementRef,\n @Self() @Optional() private ctrl: NgControl\n ) {\n if (this.ctrl) {\n this.ctrl.valueAccessor = this;\n }\n }\n\n writeValue(obj: unknown): void {\n this.ItemsAssignSelect.writeValue(obj);\n }\n registerOnChange(fn: () => void): void {\n this.ItemsAssignSelect.registerOnChange(fn);\n }\n registerOnTouched(fn: () => object): void {\n this.ItemsAssignSelect.registerOnTouched(fn);\n }\n setDisabledState?(isDisabled: boolean): void {\n this.ItemsAssignSelect.setDisabledState(isDisabled);\n }\n\n ngOnInit(): void {\n // load the initial items list\n this.filteredItemsList$.next(this.normalizedItemList);\n\n // listen for search field value changes\n this.ItemsFormFilterCtrl.valueChanges.pipe(takeUntil(this._onDestroy)).subscribe(() => {\n this.filterItemsMulti();\n });\n }\n\n reset(): void {\n this.itemsFormCtrl.setValue(null);\n this.onActionSave.emit(this.itemsFormCtrl.value);\n this.valueChange.emit(this.itemsFormCtrl.value);\n }\n\n ngAfterViewInit(): void {\n this.setInitialValue();\n if (this.autoFocus) {\n setTimeout(() => {\n this.fm.focusVia(this.select, 'program');\n this.fm.stopMonitoring(this.elRef.nativeElement);\n }, 0);\n }\n }\n\n ngOnDestroy(): void {\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.itemsFormCtrl) {\n this.trackDisabledStateForItemsCtrl(changes.itemsFormCtrl.currentValue);\n }\n }\n\n private trackDisabledStateForItemsCtrl(control: FormControl) {\n (this.matFormField as any)?._changeDetectorRef.markForCheck();\n this.ItemsAssignSelect.setDisabledState(control?.disabled);\n control?.registerOnDisabledChange(isDisabled => {\n this.ItemsAssignSelect.setDisabledState(isDisabled);\n (this.matFormField as any)?._changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * Sets the initial value after the filteredItems are loaded initially\n */\n private setInitialValue(): void {\n this.filteredItemsList$.pipe(take(1), takeUntil(this._onDestroy)).subscribe(() => {\n // setting the compareWith property to a comparison function\n // triggers initializing the selection according to the initial value of\n // the form control (i.e. _initializeSelection())\n // this needs to be done after the filteredItems are loaded initially\n // and after the mat-option elements are available\n this.ItemsAssignSelect.compareWith = (a: any, b: any) => this.comparators.some(comparator => comparator(a, b));\n });\n }\n\n private filterItemsMulti(): void {\n if (!this.normalizedItemList) {\n return;\n }\n // get the search keyword\n let search: string = this.ItemsFormFilterCtrl.value;\n if (!search) {\n const filteredItemsNoSearch: FilteredItem[] = this.normalizedItemList.map(item => ({\n value: item.value,\n label: item.label.replace(/(<([^>]+)>)/gi, ''),\n level: item.level,\n disabled: item.disabled\n }));\n\n this.filteredItemsList$.next(filteredItemsNoSearch);\n\n return;\n }\n search = search.toLowerCase();\n\n // prefiltered items\n const prefilteredItems = this.normalizedItemList.filter(\n filteredItem =>\n filteredItem.label\n .replace(/(<([^>]+)>)/gi, '')\n .toLowerCase()\n .indexOf(search) > -1\n );\n\n // prefiltered items\n const prefilteredByExtrasItems = this.normalizedItemList.filter(filteredItem =>\n (filteredItem.extras || []).some(\n e =>\n e\n .replace(/(<([^>]+)>)/gi, '')\n .toLowerCase()\n .indexOf(search) > -1\n )\n );\n\n // filter the items\n const filteredItems: FilteredItem[] = this.normalizedItemList\n .map(item => {\n if (prefilteredItems.indexOf(item) > -1 || prefilteredItems.findIndex(pfi => pfi.parent === item) > -1) {\n return ['label', item] as const;\n }\n if (prefilteredByExtrasItems.indexOf(item) > -1 || prefilteredByExtrasItems.findIndex(pfi => pfi.parent === item) > -1) {\n return ['extras', item] as const;\n }\n return null;\n })\n .filter(filteredItem => filteredItem != null)\n .map(([found, item]) => {\n const filteredItem = {\n value: item.value,\n label: item.label.replace(/(<([^>]+)>)/gi, ''),\n level: item.level,\n disabled: item.disabled\n };\n\n const regex = new RegExp(search.replace(/[-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&'), 'i');\n filteredItem.label = '' + item.label.replace(regex, '$&');\n if (found === 'extras') {\n if (item.extras != null) {\n const foundExtras = item.extras.filter(e => e.indexOf(search) > -1).slice(0, 2);\n if (foundExtras.length > 0) {\n filteredItem.label = filteredItem.label + ` (${foundExtras.map(fe => fe.replace(regex, '$&')).join(', ')})`;\n }\n }\n }\n return filteredItem;\n });\n\n this.filteredItemsList$.next(filteredItems);\n }\n\n public removeAllSelectedItems(event: Event): void {\n event.stopPropagation();\n this.itemsFormCtrl.setValue([]);\n this.ItemsFormFilterCtrl.setValue('');\n this.onActionSave.emit(this.itemsFormCtrl.value);\n this.valueChange.emit(this.itemsFormCtrl.value);\n (this.ItemsAssignSelect as unknown as any)._propagateChanges(); // refreshed the MatOption state\n }\n\n public toggleSelectAll($event: boolean) {\n if (!$event) {\n this.itemsFormCtrl.setValue([]);\n this.onActionSave.emit(this.itemsFormCtrl.value);\n this.valueChange.emit(this.itemsFormCtrl.value);\n (this.ItemsAssignSelect as unknown as any)._propagateChanges(); // refreshed the MatOption state\n } else {\n this.filteredItemsList$.pipe(take(1)).subscribe(fil => {\n this.itemsFormCtrl.setValue(fil.map(i => i.value));\n this.onActionSave.emit(this.itemsFormCtrl.value);\n this.valueChange.emit(this.itemsFormCtrl.value);\n fil.forEach(i => {\n (this.ItemsAssignSelect as unknown as any)._propagateChanges(i);\n });\n });\n }\n }\n\n public saveSelectedItems() {\n this.ItemsAssignSelect.close();\n }\n\n public openedChange(opened: boolean) {\n this.isDropdownOpened = opened;\n\n if (!opened) {\n this.onActionSave.emit(this.itemsFormCtrl.value);\n this.valueChange.emit(this.itemsFormCtrl.value);\n }\n }\n itemTrackFn(i: number, option: {label: string; value: any}) {\n return option.value;\n }\n\n public get errorMessage(): string {\n if (this.itemsFormCtrl?.invalid) {\n return this.messageService.getControlErrorMessage(this.itemsFormCtrl.errors);\n }\n return '';\n }\n}\n","import {AbstractConstructor, Constructor} from '@angular/material/core/common-behaviors/constructor';\nimport {Subject, Observable} from 'rxjs';\nimport {OnDestroy} from '@angular/core';\n\nexport interface HasWithDestory {\n ngUnsubscribe$: Observable;\n ngOnDestroy(): void;\n}\n\nexport type CanWithDestroy = object;\n\nexport type HasWithDestroyCtor = Constructor & AbstractConstructor;\n\n// export function mixinHasDestroy>(base: T): HasWithDestroyCtor & T;\n\nexport function mixinHasDestroy | AbstractConstructor>(\n base: T\n): HasWithDestroyCtor & T {\n return class extends base implements OnDestroy {\n protected ngUnsubscribe: Subject;\n ngUnsubscribe$: Observable;\n\n constructor(...args: any[]) {\n super(...args);\n this.ngUnsubscribe = new Subject();\n this.ngUnsubscribe$ = this.ngUnsubscribe.asObservable();\n }\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n };\n}\nconst defaultClass = class {};\n// eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/ban-types\ntype WithDestroyFn = | AbstractConstructor = new (...args: any[]) => typeof defaultClass>(\n// =======\n// type WithDestroyFn = | AbstractConstructor = typeof defaultClass>(\n// >>>>>>> FRNTOFF-10496 PO Signature\n base?: T\n) => HasWithDestroyCtor & T;\n\nexport const WithDestroy: WithDestroyFn = (base?) => (base ? mixinHasDestroy(base) : mixinHasDestroy(class {})) as unknown as any;\n","import {REQUEST_TYPE} from '../../requests/constants/request-types.constant';\nexport class API {\n public static version = '/api/versions';\n public static fnVersion = '/api/fn/versions';\n public static uiVersion = '/assets/versions.txt';\n\n public static requestTypes = '/api/requests/types';\n public static paymentTypes = '/api/reference/request/card-production/payment-types';\n public static requestItemsTypes = '/api/reference/request/card-production/request-item-types';\n public static createNewRequest = '/api/requests';\n public static searchRequests = '/api/public/requests';\n\n public static searchUsersByUsernameFullMatch = '/api/public/users/search/usernames';\n public static getUsers = '/api/public/users/search';\n\n public static dataPINfileTypes = '/api/reference/request/card-production/data-pin-file-types';\n public static europeCountries = '/api/reference/request/countries/europe';\n public static getMerchants = '/api/reference/request/merchants';\n public static getContacts = '/api/public/contacts';\n public static redemptionTypes = '/api/reference/request/card-production/redemption-types';\n public static dielines = '/api/reference/request/card-production/dielines';\n public static substrates = '/api/reference/request/card-production/substrates';\n public static warehouses = '/api/reference/request/card-production/warehouses';\n public static requestAttachment(requestId: number, attachmentId: number) {\n return `/api/requests/${requestId}/stages/attachments/${attachmentId}`;\n }\n\n public static purchaseOrderApprovalTaskControllerSearchTasks = '/api/purchase-order-approval-tasks';\n public static purchaseOrderApprovalTaskControllerCollectSearchFilterOptions = '/api/purchase-order-approval-tasks/filter-options';\n public static purchaseOrderApprovalTaskControllerCollectGetTaskDetails = (purchaseOrderNumber: number) =>\n `/api/purchase-order-approval-tasks/${purchaseOrderNumber}`;\n public static purchaseOrderApprovalTaskControllerReviewPurchaseOrders = `/api/purchase-order-approval-tasks/reviews`;\n public static purchaseOrderApprovalTaskControllerReviewPurchaseOrder = (purchaseOrderNumber: number) =>\n `/api/purchase-order-approval-tasks/${purchaseOrderNumber}/reviews`;\n\n public static logout = '/api/logout';\n public static authorities = '/api/authorization/user/authorities';\n public static userDetails = '/api/authorization/user/details';\n public static darkModeChange = '/api/users/profiles/settings/display-mode';\n\n public static printers = '/api/reference/request/card-production/printers';\n public static companies = '/api/reference/request/card-production/companies';\n public static chnTypes = '/api/reference/request/card-production/chn-types';\n public static popChannelTypes = '/api/reference/request/pop/channel-types';\n public static inventoryTypes = '/api/reference/request/card-production/inventory-types';\n public static requestTypeInventoryTypes = (requestType: string) =>\n `/api/reference/request/inventory-types?requestType=${requestType}`;\n public static lineOfBusinessTypes = '/api/reference/request/card-production/line-of-business-types';\n public static designLineOfBusinessTypes = '/api/reference/request/design-line-of-business-types';\n public static regions = '/api/reference/request/card-design/regions';\n public static artLocationTypes = '/api/reference/request/card-design/art-location-types';\n public static designSourceTypes = '/api/reference/request/card-design/design-source-types';\n public static popItemTypes = '/api/reference/request/pop/item-types';\n public static colorTypes = '/api/reference/request/colors';\n public static dimensionTypes = '/api/reference/request/dimensions';\n public static financialTypes = '/api/reference/request/pop/financial-types';\n public static ppEventTypes = '/api/reference/request/pop-production/event-types';\n public static ppFundingTypes = '/api/reference/request/pop-production/funding-types';\n public static ppCuttingTypes = '/api/reference/request/pop-production/items/cutting-types';\n public static ppMaterialTypes = '/api/reference/request/pop-production/items/material-types';\n public static ppTapeTypes = '/api/reference/request/pop-production/items/tape-types';\n public static ppUsageDurationTypes = '/api/reference/request/pop-production/items/usage-duration-types';\n public static ppInventoryTypes = '/api/reference/request/pop-production/inventory-types';\n\n public static fsPaymentTypes = '/api/reference/request/financial-services/payment-types';\n public static fsComponentTypes = '/api/reference/request/financial-services/po/component-types';\n\n public static bifComponentTypes = '/api/reference/request/bif-production/component-types';\n public static bifFulfillmentTypes = '/api/reference/request/bif-production/fulfillment-types';\n\n public static thirdPartyOrderTypes = '/api/reference/request/third-party-production/items/order-types';\n public static thirdPartyDataPinFileTypes = '/api/reference/request/third-party-production/items/data-pin-file-types';\n public static thirdPartyPrintOwnerTypes = '/api/reference/request/third-party-production/print-owner-types';\n public static thirdPartyIssuer = '/api/reference/request/third-party-production/issuers/search';\n public static thirdPartyReturnFileTypes = '/api/reference/request/third-party-production/items/return-file-types';\n public static thirdPartyCompanies = '/api/reference/request/third-party-production/companies';\n\n public static ihComponents = '/api/reference/request/ih-production/components';\n public static ihHealthPlans = '/api/reference/request/ih-production/health-plans';\n public static ihHealthPrograms = '/api/reference/request/ih-production/health-programs';\n public static ihPriorities = '/api/reference/request/ih-production/priorities';\n\n public static imageBrand = '/api/reference/request/image/brand/search';\n public static imageFormatTypes = '/api/reference/request/image/image-format-types';\n\n public static fileTypes = '/api/requests/attachments/types';\n\n // Reports\n public static reportsPopProduction = '/api/fn/reports/preview/pop-production-report';\n public static reportsPopProductionDownload = '/api/fn/reports/download/pop-production-report';\n public static reportsCreativeServices = '/api/fn/reports/preview/creative-services-report';\n public static reportsCreativeServicesDownload = '/api/fn/reports/download/creative-services-report/';\n public static reportsCreativeServicesFilters = '/api/fn/reports/aggregate-filters/creative-services-report';\n\n public static reportsShipping = '/api/fn/reports/preview/shipping-report';\n public static reportsShippingDownload = '/api/fn/reports/download/shipping-report/';\n public static reportsShippingFilters = '/api/fn/reports/aggregate-filters/shipping-report';\n\n public static reportsTrafficTracker = '/api/fn/reports/preview/traffic-tracker-report';\n public static reportsTrafficTrackerDownload = '/api/fn/reports/download/traffic-tracker-report/';\n public static reportsTrafficTrackerFilters = '/api/fn/reports/aggregate-filters/traffic-tracker-report';\n\n public static reportsSignedPo = '/api/signed-purchase-orders'; // @todo'/api/fn/reports/preview/shipping-report';\n // public static reportsShippingDownload = '/api/fn/reports/download/shipping-report/';\n public static reportsSignedPoFilters = '/api/signed-purchase-orders/filter-options';\n\n public static reportsPO = '/api/fn/reports/preview/po-report';\n public static reportsPODownload = '/api/fn/reports/download/po-report';\n public static reportsPOFilters = '/api/fn/reports/aggregate-filters/po-report';\n public static thirdParty = '/api/fn/reports/preview/third-party-report';\n public static thirdPartyDownload = '/api/fn/reports/download/third-party-report';\n public static thirdPartyFilters = '/api/fn/reports/aggregate-filters/third-party-report';\n public static production = '/api/fn/reports/preview/production-report';\n public static productionDownload = '/api/fn/reports/download/production-report';\n public static productionFilters = '/api/fn/reports/aggregate-filters/production-report';\n public static reportsIh = '/api/fn/reports/preview/ih-report';\n public static reportsIhDownload = '/api/fn/reports/download/ih-report';\n public static cardRanges = '/api/fn/reports/preview/card-ranges-report';\n public static cardRangesDownload = '/api/fn/reports/download/card-ranges-report';\n public static cardRangesFilters = '/api/fn/reports/aggregate-filters/card-ranges-report';\n // Reports End\n\n public static updateAttachmentStatus = {\n PRODUCTION_REQUEST: (requestId, requestItemId, attachmentId) =>\n `/api/requests/card-production/${requestId}/details/items/${requestItemId}/artworks/${attachmentId}`,\n POP_PRODUCTION_REQUEST: (requestId, requestItemId, attachmentId) =>\n `/api/requests/pop-production/${requestId}/items/${requestItemId}/printer-proofs/${attachmentId}/review`\n };\n\n public static updateRequestItemStatus = {\n PRODUCTION_REQUEST: (requestId, requestItemId) => `/api/requests/card-production/${requestId}/artworks/items/${requestItemId}/review`,\n PRODUCTION_REQUEST_3RD_PARTY: (requestId, requestItemId) =>\n `api/requests/third-party-production/${requestId}/items/${requestItemId}/artworks/review`,\n FINANCIAL_SERVICES_REQUEST: (requestId, requestItemId) =>\n `/api/requests/financial-services/${requestId}/items/${requestItemId}/artworks/review`,\n BIF_PRODUCTION_REQUEST: (requestId, requestItemId) =>\n `/api/requests/bif-production/${requestId}/items/${requestItemId}/printer-proofs/review`,\n [REQUEST_TYPE.IPR]: (requestId, requestItemId, isPrinterProofs = false) =>\n `/api/requests/ih-production/${requestId}/items/${requestItemId}/${isPrinterProofs ? 'printer-proofs' : 'artworks'}/review`,\n [REQUEST_TYPE.PPR]: (requestId, requestItemId, isPrinterProofs = false) =>\n `/api/requests/pop-production/${requestId}/items/${requestItemId}/${isPrinterProofs ? 'printer-proofs' : 'artworks'}/review`\n };\n\n public static createExternalPin = {\n PRODUCTION_REQUEST: (requestId, itemId) => `/api/requests/card-production/${requestId}/items/${itemId}/external-pin-files`,\n PRODUCTION_REQUEST_3RD_PARTY: (requestId, itemId) =>\n `/api/requests/third-party-production/${requestId}/items/${itemId}/external-pin-files`\n };\n\n public static deleteExternalPin = {\n PRODUCTION_REQUEST: (requestId, attachmentId, itemId) =>\n `/api/requests/card-production/${requestId}/items/${itemId}/external-pin-files/${attachmentId}`,\n PRODUCTION_REQUEST_3RD_PARTY: (requestId, attachmentId, itemId) =>\n `/api/requests/third-party-production/${requestId}/items/${itemId}/external-pin-files/${attachmentId}`\n };\n\n public static IH_PRODUCTION_PRINTER = {\n getPrinterWorkItems: requestId => `/api/requests/ih-production/${requestId}/printers/work-items`,\n updateMilestoneDetails: (requestId, printerId, itemId, milestoneId) =>\n `/api/requests/ih-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/details`,\n doBulkWorkItemMilestoneUpdate: (requestId, printerId, itemId) =>\n `/api/requests/ih-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones`\n };\n public static duplicateRequest(requestId: string | number) {\n return `/api/requests/${requestId}`;\n }\n\n public static createProofOfPayment(requestId) {\n return `/api/requests/card-production/${requestId}/finance/attachments`;\n }\n public static deleteProofOfPayment(requestId, attachmentId) {\n return `/api/requests/card-production/${requestId}/finance/attachments/${attachmentId}`;\n }\n public static fsCreateProofOfPayment(requestId) {\n return `api/requests/financial-services/${requestId}/details/proofs-of-payment`;\n }\n public static fsDeleteProofOfPayment(requestId, attachmentId) {\n return `/api/requests/financial-services/${requestId}/details/proofs-of-payment/${attachmentId}`;\n }\n public static bifCreateProofOfPayment(requestId) {\n return `api/requests/bif-production/${requestId}/details/proofs-of-payment`;\n }\n public static bifDeleteProofOfPayment(requestId, attachmentId) {\n return `/api/requests/bif-production/${requestId}/details/proofs-of-payment/${attachmentId}`;\n }\n public static thirdPartyCreateProofOfPayment(requestId) {\n return `api/requests/third-party-production/${requestId}/details/finance-proofs-of-payment`;\n }\n public static thirdPartyCreateOperationsAttachment(requestId) {\n return `api/requests/third-party-production/${requestId}/details/operations-attachments`;\n }\n public static thirdPartyDeleteProofOfPayment(requestId, attachmentId) {\n return `/api/requests/third-party-production/${requestId}/details/finance-proofs-of-payment/${attachmentId}`;\n }\n public static thirdPartyDeleteOperationsAttachment(requestId, attachmentId) {\n return `/api/requests/third-party-production/${requestId}/details/operations-attachments/${attachmentId}`;\n }\n public static thirdPartyUpdateOperationsDetails(requestId) {\n return `api/requests/third-party-production/${requestId}/operations-details`;\n }\n public static thirdPartyUpdateCardCollateralDetails(requestId, itemId) {\n return `/api/requests/third-party-production/${requestId}/items/${itemId}/card-collateral-confirmation-details`;\n }\n public static thirdPartyUpdateConfirmedPrinters(requestId) {\n return `/api/requests/third-party-production/${requestId}/items/confirmed-printers`;\n }\n public static bifUpdatePrinterProofReview(requestId: string | number, itemId: string | number, attachmentId: string | number) {\n return `/api/requests/bif-production/${requestId}/items/${itemId}/printer-proofs/${attachmentId}/review`;\n }\n public static imageCreateArtFile(requestId) {\n return `api/requests/image/${requestId}/art-file/attachments`;\n }\n public static imageDeleteArtFile(requestId, attachmentId) {\n return `/api/requests/image/${requestId}/art-file/attachments/${attachmentId}`;\n }\n public static imageUpdateDesigner = requestId => `/api/requests/image/${requestId}/designer`;\n public static imageUpdateArtFilePath = requestId => `/api/requests/image/${requestId}/final-art-file-path`;\n public static imageSaveTmReview = requestId => `/api/requests/image/${requestId}/tm-review`;\n public static imageUpdateRequestItemsCompleted(requestId) {\n return `api/requests/image/${requestId}/request-items/completed`;\n }\n public static bifPoPdfDownload(requestId, poId, type) {\n return `/api/requests/bif-production/${requestId}/purchase-orders/${poId}/documents/${type}`;\n }\n public static bifPO(requestId) {\n return `/api/requests/bif-production/${requestId}/purchase-orders`;\n }\n public static bifUpdatePO(requestId, poId) {\n return `/api/requests/bif-production/${requestId}/purchase-orders/${poId}`;\n }\n public static createAttachment(requestId) {\n return `/api/requests/card-production/${requestId}/artworks`;\n }\n public static attachmentDownload(requestId, attachmentId) {\n return `/api/requests/${requestId}/attachments/${attachmentId}`;\n }\n public static poPdfDownload(requestId, poId, type) {\n return `/api/requests/card-production/${requestId}/purchase-orders/${poId}/documents/${type}`;\n }\n public static linkAttachment(requestId, requestItemId) {\n return `/api/requests/card-production/${requestId}/details/items/${requestItemId}/artworks`;\n }\n public static deleteArtwork(requestId, attachmentId) {\n return `/api/requests/card-production/${requestId}/artworks/${attachmentId}`;\n }\n public static getRequestId(id, draft = false) {\n return `/api/requests/${id}${draft ? '?draft' : ''}`;\n }\n public static updateRequestName(id) {\n return `/api/requests/${id}/name`;\n }\n public static updateRequestStatus(id) {\n return `/api/requests/${id}/status`;\n }\n public static updatePpm(requestId) {\n return `/api/requests/${requestId}/print-production-manager`;\n }\n public static changeRequestOwner(requestId) {\n return `/api/requests/${requestId}/request-owner`;\n }\n public static changeRequestTrafficManager(requestId) {\n return `/api/requests/${requestId}/traffic-manager`;\n }\n public static refreshProductOwner(requestId: number | string): string {\n return `/api/requests/${requestId}/events/product-owner-refresh`;\n }\n\n public static changeRequestDesigner(requestId) {\n return `/api/requests/${requestId}/designer`;\n }\n public static getWPNdetails(partNumber) {\n return `/api/reference/request/wpn/${partNumber}`;\n }\n public static getMerchantInfo(merchantId) {\n return `/api/reference/request/merchants/${merchantId}/details`;\n }\n public static getRequestSteps(requestId) {\n return `/api/requests/${requestId}/stages`;\n }\n public static managePO(requestId) {\n return `/api/requests/card-production/${requestId}/purchase-orders`;\n }\n public static updatePO(requestId, poId) {\n return `/api/requests/card-production/${requestId}/purchase-orders/${poId}`;\n }\n public static performAction(requestId) {\n return `/api/requests/${requestId}/stages/actions`;\n }\n public static getRequestPrinterWorkItems(requestId) {\n return `/api/requests/card-production/${requestId}/printers/work-items`;\n }\n public static getPopProductionRequestPrinterWorkItems(requestId) {\n return `/api/requests/pop-production/${requestId}/printers/work-items`;\n }\n public static getFsrPrinterWorkItems(requestId) {\n return `/api/requests/financial-services/${requestId}/printers/work-items`;\n }\n public static getBifPrinterWorkItems(requestId) {\n return `/api/requests/bif-production/${requestId}/printers/work-items`;\n }\n public static getThirdProdPrinterWorkItems(requestId) {\n return `/api/requests/third-party-production/${requestId}/printers/work-items`;\n }\n public static updateMilestoneDetails(requestId, printerId, itemId, milestoneId) {\n return `/api/requests/card-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/details`;\n }\n public static updatePopProdMilestoneDetails(requestId, printerId, itemId, milestoneId) {\n return `/api/requests/pop-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/details`;\n }\n public static updateFsrMilestoneDetails(requestId, printerId, itemId, milestoneId) {\n return `/api/requests/financial-services/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/details`;\n }\n public static updateBifMilestoneDetails(requestId, printerId, itemId, milestoneId) {\n return `/api/requests/bif-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/details`;\n }\n public static updateThirdProdMilestoneDetails(requestId, printerId, itemId, milestoneId) {\n // tslint:disable-next-line: max-line-length\n return `/api/requests/third-party-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/details`;\n }\n public static createSowAttachment(reqId, poId) {\n return `/api/requests/card-production/${reqId}/purchase-orders/${poId}/sow/attachments`;\n }\n public static deleteSOWFile(reqId, poId, attachmentId) {\n return `/api/requests/card-production/${reqId}/purchase-orders/${poId}/sow/attachments/${attachmentId}`;\n }\n public static getFile(fileId) {\n return `/api/files/${fileId}`;\n }\n\n public static createThirdSowAttachment(requestAlternateId, orderAlternateId) {\n return `/api/requests/third-party-production/${requestAlternateId}/purchase-orders/${orderAlternateId}/sow/attachments`;\n }\n public static deleteThirdSowFile(requestAlternateId, orderAlternateId, attachmentId) {\n return `/api/requests/third-party-production/${requestAlternateId}/purchase-orders/${orderAlternateId}/sow/attachments/${attachmentId}`;\n }\n\n public static createCardProductionWorkItemMilestoneAsn(requestId: string, printerId: number, itemId: number, milestoneId: number) {\n return `/api/requests/card-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/asn-files`;\n }\n\n public static createPopProductionWorkItemMilestoneAsn(requestId: string, printerId: number, itemId: number, milestoneId: number) {\n return `/api/requests/pop-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/asn-files`;\n }\n\n public static createFsrWorkItemMilestoneAsn(requestId: string, printerId: number, itemId: number, milestoneId: number) {\n return `/api/requests/financial-services/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/asn-files`;\n }\n\n public static createBifWorkItemMilestoneAsn(requestId: string, printerId: number, itemId: number, milestoneId: number) {\n return `/api/requests/bif-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/asn-files`;\n }\n\n public static createThirdProdWorkItemMilestoneAsn(requestId: string, printerId: number, itemId: number, milestoneId: number) {\n return `/api/requests/third-party-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/asn-files`;\n }\n\n public static deleteCardProductionWorkItemMilestoneAsn(\n requestId: string,\n printerId: number,\n itemId: number,\n milestoneId: number,\n attachmentId: number\n ) {\n // tslint:disable-next-line: max-line-length\n return `/api/requests/card-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/asn-files/${attachmentId}`;\n }\n\n public static deletePopProductionWorkItemMilestoneAsn(\n requestId: string,\n printerId: number,\n itemId: number,\n milestoneId: number,\n attachmentId: number\n ) {\n // tslint:disable-next-line: max-line-length\n return `/api/requests/pop-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/asn-files/${attachmentId}`;\n }\n\n public static deleteFsrWorkItemMilestoneAsn(\n requestId: string,\n printerId: number,\n itemId: number,\n milestoneId: number,\n attachmentId: number\n ) {\n // tslint:disable-next-line: max-line-length\n return `/api/requests/financial-services/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/asn-files/${attachmentId}`;\n }\n\n public static deleteBifWorkItemMilestoneAsn(\n requestId: string,\n printerId: number,\n itemId: number,\n milestoneId: number,\n attachmentId: number\n ) {\n // tslint:disable-next-line: max-line-length\n return `/api/requests/bif-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/asn-files/${attachmentId}`;\n }\n\n public static deleteThirdProdWorkItemMilestoneAsn(\n requestId: string,\n printerId: number,\n itemId: number,\n milestoneId: number,\n attachmentId: number\n ) {\n // tslint:disable-next-line: max-line-length\n return `/api/requests/third-party-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones/${milestoneId}/asn-files/${attachmentId}`;\n }\n\n public static doCardProductionBulkWorkItemMilestoneUpdate(requestId: string, printerId: number, itemId: number) {\n return `/api/requests/card-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones`;\n }\n\n public static doPopProdBulkWorkItemMilestoneUpdate(requestId: string, printerId: number, itemId: number) {\n return `/api/requests/pop-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones`;\n }\n\n public static doFsrBulkWorkItemMilestoneUpdate(requestId: string, printerId: number, itemId: number) {\n return `/api/requests/financial-services/${requestId}/printers/${printerId}/work-items/${itemId}/milestones`;\n }\n\n public static doBifBulkWorkItemMilestoneUpdate(requestId: string, printerId: number, itemId: number) {\n return `/api/requests/bif-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones`;\n }\n\n public static doThirdProdBulkWorkItemMilestoneUpdate(requestId: string, printerId: number, itemId: number) {\n return `/api/requests/third-party-production/${requestId}/printers/${printerId}/work-items/${itemId}/milestones`;\n }\n\n public static cardProductionUpdateOperationsNotes(requestId) {\n return `api/requests/card-production/${requestId}/printers/details/operations-notes`;\n }\n\n public static getActionHistory(requestId) {\n return `/api/requests/${requestId}/action-history`;\n }\n\n public static createAttachmentUploadLink(requestId, fileType) {\n return `/api/requests/${requestId}/attachments/${fileType}/upload-link`;\n }\n public static scanAttachmentUploadFile(uploadId){\n return `/api/requests/attachments/scan-statuses/${uploadId}`;\n }\n\n public static createArtworkAttachment = requestId => `/api/requests/${requestId}/art-file/attachments`;\n public static deleteArtworkAttachment = (requestId, attachmentId) => `/api/requests/${requestId}/art-file/attachments/${attachmentId}`;\n\n public static requestDeleteArtworkAttachment(requestId, attachmentId) {\n return `/api/requests/${requestId}/art-file/attachments/${attachmentId}`;\n }\n public static cdUpdateDesigner(requestId) {\n return `/api/requests/card-design/${requestId}/designer`;\n }\n public static cdUpdateCsJobs(requestId) {\n return `/api/requests/card-design/${requestId}/cs-job-id`;\n }\n public static getProductUpc(productUpc) {\n return `/api/reference/request/product/${productUpc}`;\n }\n public static cdUpdateTmDatesApproval(requestId) {\n return `/api/requests/card-design/${requestId}/tm-review`;\n }\n public static cdUpdateFinalArtDueDate = requestId => `/api/requests/card-design/${requestId}/final-art-due`;\n public static cdDeleteItem = (requestId, requestItemId) => `/api/requests/card-design/${requestId}/request-item/${requestItemId}`;\n public static createCardDesignItemArtwork = (requestId: string, requestItemId: number) =>\n `/api/requests/card-design/${requestId}/items/${requestItemId}/artworks`;\n public static createCardDesignArtworkVersion(requestId, requestItemId, artworkFileId) {\n return `/api/requests/card-design/${requestId}/items/${requestItemId}/artworks/${artworkFileId}/versions`;\n }\n public static deleteArtworkItem(requestId, requestItemId, artworkFileId) {\n return `/api/requests/card-design/${requestId}/items/${requestItemId}/artworks/${artworkFileId}`;\n }\n public static cdAddVersionResolution(requestId, requestItemId, artworkFileId, versionId) {\n return `/api/requests/card-design/${requestId}/items/${requestItemId}/artworks/${artworkFileId}/versions/${versionId}/resolution`;\n }\n\n public static cdTmReview2StageData(requestId) {\n return `/api/requests/card-design/${requestId}/tm-review-2`;\n }\n public static updateArtPathNotes(requestId) {\n return `/api/requests/card-design/${requestId}/request-items/art-path-notes`;\n }\n public static pdUpdateTmDatesApproval = requestId => `/api/requests/pop-design/${requestId}/tm-review`;\n public static pdUpdateFinalArtDueDate = requestId => `/api/requests/pop-design/${requestId}/delivery-date`;\n public static pdDeleteItem = (requestId, requestItemId) => `/api/requests/pop-design/${requestId}/request-item/${requestItemId}`;\n public static pdUpdateDesigner = requestId => `/api/requests/pop-design/${requestId}/designer`;\n\n public static createPopDesignItemArtwork = (requestId: string, requestItemId: number) =>\n `/api/requests/pop-design/${requestId}/items/${requestItemId}/artworks`;\n public static createPopDesignArtworkVersion(requestId, requestItemId, artworkFileId) {\n return `/api/requests/pop-design/${requestId}/items/${requestItemId}/artworks/${artworkFileId}/versions`;\n }\n public static pdAddVersionResolution(requestId, requestItemId, artworkFileId, versionId) {\n return `/api/requests/pop-design/${requestId}/items/${requestItemId}/artworks/${artworkFileId}/versions/${versionId}/resolution`;\n }\n\n public static pdTmReview2StageData(requestId) {\n return `/api/requests/pop-design/${requestId}/tm-review-2`;\n }\n\n public static updateRequestItemWithFinancialServicesProductLines(requestAlternateId: number) {\n return `/api/requests/pop-design/${requestAlternateId}/items/financial-services-product-lines`;\n }\n public static createFinancialServicesArtwork(requestAlternateId: number, itemId: number) {\n return `/api/requests/pop-design/${requestAlternateId}/items/${itemId}/financial-services-artworks`;\n }\n public static deleteFinancialServicesArtworkFile(requestAlternateId: number, itemId: number, attachmentId: number) {\n return `/api/requests/pop-design/${requestAlternateId}/items/${itemId}/financial-services-artworks/${attachmentId}`;\n }\n public static pdUpdateArtPathNotes(requestId) {\n return `/api/requests/pop-design/${requestId}/request-items/art-path-notes`;\n }\n public static pdDeleteArtworkItem(requestId, requestItemId, artworkFileId) {\n return `api/requests/pop-design/${requestId}/items/${requestItemId}/artworks/${artworkFileId}`;\n }\n public static createPopProductionPartnerAttachments(requestId) {\n return `/api/requests/pop-production/${requestId}/details/partner-art-attachments`;\n }\n public static createPopProductionPrinterQuoteAttachments(requestId) {\n return `/api/requests/pop-production/${requestId}/details/printer-quote-attachments`;\n }\n public static ppRemovePartnerAttachments(requestId, attachmentId) {\n return `/api/requests/pop-production/${requestId}/details/partner-art-attachments/${attachmentId}`;\n }\n public static ppRemovePrinterQuoteAttachments(requestId, attachmentId) {\n return `/api/requests/pop-production/${requestId}/details/printer-quote-attachments/${attachmentId}`;\n }\n public static createPopProductionAdditionalAttachments(requestId) {\n return `/api/requests/pop-production/${requestId}/details/additional-attachments`;\n }\n public static ppRemoveAdditionalAttachments(requestId, attachmentId) {\n return `/api/requests/pop-production/${requestId}/details/additional-attachments/${attachmentId}`;\n }\n public static createPopProductionArtwork(requestId: string) {\n return `/api/requests/pop-production/${requestId}/details/artworks`;\n }\n public static ppDeleteArtwork(requestId: string | number, itemId: string | number | undefined, attachmentId: string | number) {\n return `/api/requests/pop-production/${requestId}/details/artworks/${attachmentId}`;\n }\n public static createPopProductionPrinterProof(requestId: string) {\n return `/api/requests/pop-production/${requestId}/details/printer-proofs`;\n }\n public static ppDeletePrinterProof(requestId: string | number, attachmentId: string | number) {\n return `/api/requests/pop-production/${requestId}/details/printer-proofs/${attachmentId}`;\n }\n public static ppUpdatePrinterProofReview(requestId: string | number, itemId: string | number, attachmentId: string | number) {\n return `/api/requests/pop-production/${requestId}/details/printer-proofs/${attachmentId}/review`;\n }\n public static ppPoPdfDownload(requestId, poId, type) {\n return `/api/requests/pop-production/${requestId}/purchase-orders/${poId}/documents/${type}`;\n }\n public static ppPrinterQuoteStageDownload(requestId) {\n return `/api/requests/pop-production/${requestId}/documents/request-process-printer-quote`;\n }\n public static fsrDetailsStageDownload(requestId) {\n return `/api/requests/financial-services/${requestId}/documents/request-for-quote`;\n }\n public static ppPO(requestId) {\n return `/api/requests/pop-production/${requestId}/purchase-orders`;\n }\n public static ppUpdatePO(requestId, poId) {\n return `/api/requests/pop-production/${requestId}/purchase-orders/${poId}`;\n }\n public static ppUpdateConversionToProduction(requestId: string) {\n return `/api/requests/pop-production/${requestId}/details/production-conversion`;\n }\n public static createFsrArtwork(requestId: string) {\n return `/api/requests/financial-services/${requestId}/details/artworks`;\n }\n public static fsrDeleteArtwork(requestId: string | number, attachmentId: string | number) {\n return `/api/requests/financial-services/${requestId}/details/artworks/${attachmentId}`;\n }\n public static fsrPoPdfDownload(requestId, poId, type) {\n return `/api/requests/financial-services/${requestId}/purchase-orders/${poId}/documents/${type}`;\n }\n public static fsrPO(requestId) {\n return `/api/requests/financial-services/${requestId}/purchase-orders`;\n }\n public static fsrUpdatePO(requestId, poId) {\n return `/api/requests/financial-services/${requestId}/purchase-orders/${poId}`;\n }\n public static fsUpdateArtworkReview(requestId: string | number, itemId: string | number, attachmentId: string | number) {\n return `/api/requests/financial-services/${requestId}/items/${itemId}/artworks/${attachmentId}/review`;\n }\n public static createBifArtwork(requestId: string) {\n return `/api/requests/bif-production/${requestId}/artworks`;\n }\n public static bifDeleteArtwork(requestId: string | number, attachmentId: string | number) {\n return `/api/requests/bif-production/${requestId}/artworks/${attachmentId}`;\n }\n public static createBifPrinterProof(requestId: string) {\n return `/api/requests/bif-production/${requestId}/printer-proofs`;\n }\n public static bifDeletePrinterProof(requestId: string | number, attachmentId: string | number) {\n return `/api/requests/bif-production/${requestId}/printer-proofs/${attachmentId}`;\n }\n public static createThirdPartyArtwork(requestId: string) {\n return `api/requests/third-party-production/${requestId}/details/artworks`;\n }\n public static thirdPartyDeleteArtwork(requestId: string | number, attachmentId: string | number) {\n return `api/requests/third-party-production/${requestId}/details/artworks/${attachmentId}`;\n }\n public static thirdProdPo(requestId) {\n return `/api/requests/third-party-production/${requestId}/purchase-orders`;\n }\n public static thirdProdPoPdfDownload(requestId, poId, type) {\n return `/api/requests/third-party-production/${requestId}/purchase-orders/${poId}/documents/${type}`;\n }\n public static thirdProdTpsReportDownload() {\n return `/api/fn/reports/download/third-party-tps-report`;\n }\n public static thirdProdUpdatePO(requestId, poId) {\n return `/api/requests/third-party-production/${requestId}/purchase-orders/${poId}`;\n }\n public static thirdPartyItemPrinters(requestId: string | number) {\n return `/api/requests/third-party-production/${requestId}/spreadsheets/items/printers`;\n }\n public static thirdPartyCreateTps(requestId: string | number) {\n return `/api/requests/third-party-production/${requestId}/spreadsheets`;\n }\n public static thirdPartyGetRequestTps(requestId: string | number) {\n return `/api/requests/third-party-production/${requestId}/spreadsheets`;\n }\n public static thirdPartyDeleteTps(requestId: string | number, tpsId: string | number) {\n return `/api/requests/third-party-production/${requestId}/spreadsheets/${tpsId}`;\n }\n public static thirdPartyBulkUpdateItems(requestId: string | number) {\n return `/api/requests/third-party-production/${requestId}/items/operations-details`;\n }\n public static thirdPartyBulkUpdateCardRanges(requestId: string | number) {\n return `/api/requests/third-party-production/${requestId}/items/operations-details/card-ranges`;\n }\n public static thirdPartyBulkUpdateCC(requestId: string | number) {\n return `/api/requests/third-party-production/${requestId}/card-collateral-confirmation-details`;\n }\n /**\n * @deprecated\n */\n public static createIHProductionItemArtwork(requestId: string, itemId: number) {\n return `/api/requests/ih-production/${requestId}/items/${itemId}/artworks`;\n }\n public static createIHProductionArtwork(requestId: string) {\n return `/api/requests/ih-production/${requestId}/artworks`;\n }\n /**\n * @deprecated\n */\n public static ihProductionDeleteItemArtwork(requestId: string | number, itemId: string | number, attachmentId: string | number) {\n return `/api/requests/ih-production/${requestId}/items/${itemId}/artworks/${attachmentId}`;\n }\n\n public static ihProductionDeleteArtwork(requestId: string | number, attachmentId: string | number) {\n return `/api/requests/ih-production/${requestId}/artworks/${attachmentId}`;\n }\n\n /**\n * IH Production Request\n */\n public static ihProdPo(requestId) {\n return `/api/requests/ih-production/${requestId}/purchase-orders`;\n }\n public static ihProdPoPdfDownload(requestId, poId, type) {\n return `/api/requests/ih-production/${requestId}/purchase-orders/${poId}/documents/${type}`;\n }\n public static ihProdUpdatePO(requestId, poId) {\n return `/api/requests/ih-production/${requestId}/purchase-orders/${poId}`;\n }\n public static createIhPrinterProof(requestId: string) {\n return `/api/requests/ih-production/${requestId}/printer-proofs`;\n }\n public static ihDeletePrinterProof(requestId: string | number, attachmentId: string | number) {\n return `/api/requests/ih-production/${requestId}/printer-proofs/${attachmentId}`;\n }\n public static ihUpdatePrinterProofReview(requestId: string | number, itemId: string | number, attachmentId: string | number) {\n return `/api/requests/ih-production/${requestId}/items/${itemId}/printer-proofs/${attachmentId}/review`;\n }\n\n static substitutes() {\n return `/api/users/substitutes`;\n }\n\n static substitute(substituteUsername: string) {\n return `/api/users/substitutes/${substituteUsername}`;\n }\n\n static adminSubstitute(username: string, substituteUsername: string) {\n return `/api/admin/users/substitutes/${username}/${substituteUsername}`;\n }\n\n static adminSubstitutes(username?: string) {\n if (username == null) {\n return `/api/admin/users/substitutes`;\n }\n return `/api/admin/users/substitutes/${username}`;\n }\n\n static emailTps() {\n return `/api/fn/reports/email/tps`;\n }\n\n static emailTpsTemplates() {\n return `/api/requests/third-party-production/spreadsheets/email-templates`;\n }\n\n static userSettings() {\n return `/api/users/profiles/settings`;\n }\n\n static userEmailSignature() {\n return `/api/users/profiles/settings/email-signature`;\n }\n\n static cardDesignPrepArtifactsDesigner(requestId: number): string {\n return `/api/requests/card-design/${requestId}/prep-artifacts-designer`;\n }\n\n static popDesignPrepArtifactsDesigner(requestId: number): string {\n return `/api/requests/pop-design/${requestId}/prep-artifacts-designer`;\n }\n static editAdditionalOtherContacts(requestNumber) {\n return `/api/requests/${requestNumber}/contacts`;\n }\n}\n","import { AfterViewInit, ChangeDetectorRef, DoCheck, Injectable, OnDestroy } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { AbstractConstructor, Constructor } from '@angular/material/core/common-behaviors/constructor';\nimport { Subject, Subscribable, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n/**\n * Don't forget to add providers in your component\n *\n * @example\n * providers: [\n * {\n * provide: UpdateTriggerContainer,\n * useExisting: forwardRef(() => PopItemComponent )\n * }\n * ],\n */\nexport interface UpdateTriggerContainerInterface {\n updateFormTrigger: Subscribable;\n}\n@Injectable()\nexport abstract class UpdateTriggerContainer implements UpdateTriggerContainerInterface {\n updateFormTrigger = new Subject();\n}\n\nexport interface HasUpdateTriggerListener {\n ngAfterViewInit(): void;\n ngOnDestroy(): void;\n}\n\nexport type CanUpdateTriggerListener = object;\n\nexport type HasUpdateTriggerListenerCtor = Constructor &\n AbstractConstructor &\n (new (...args: any[]) => HasUpdateTriggerListener);\n\nexport function mixinHasUpdateTriggerListener<\n T extends Constructor | AbstractConstructor\n>(ngUnsubscribeField = 'ngUnsubscribe$', base?: T): HasUpdateTriggerListenerCtor & T {\n return class extends base implements AfterViewInit, OnDestroy {\n protected updateTriggerSubscription: Subscription;\n protected updateTriggerListenerChangeDetector: ChangeDetectorRef;\n protected updateTriggerContainer: UpdateTriggerContainer;\n constructor(...args: any[]) {\n super(...args);\n args.forEach(a => {\n if (a instanceof ChangeDetectorRef || a?.markForCheck) {\n this.updateTriggerListenerChangeDetector = a;\n }\n if (a instanceof UpdateTriggerContainer || a?.updateFormTrigger) {\n this.updateTriggerContainer = a;\n }\n });\n }\n ngAfterViewInit(): void {\n if (super.ngAfterViewInit) {\n super.ngAfterViewInit && super.ngAfterViewInit();\n }\n if (this.updateTriggerContainer && this.updateTriggerListenerChangeDetector) {\n this.updateTriggerSubscription = this.updateTriggerContainer.updateFormTrigger\n .pipe(takeUntil(this[ngUnsubscribeField] || new Subject()))\n .subscribe(() => {\n this.updateTriggerListenerChangeDetector.markForCheck();\n });\n }\n }\n\n ngOnDestroy(): void {\n if (super.ngOnDestroy) {\n super.ngOnDestroy();\n }\n if (this.updateTriggerSubscription) {\n this.updateTriggerSubscription.unsubscribe();\n }\n }\n };\n}\nconst defaultClass = class {\n constructor(...args: any[]) {}\n};\n// eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/ban-types\ntype WithUpdateTriggerListenerFn = | AbstractConstructor = typeof defaultClass>(\n ngUnsubscribeField?: string,\n base?: T\n) => HasUpdateTriggerListenerCtor & T;\n\nexport const WithUpdateTriggerListener: WithUpdateTriggerListenerFn = (ngUnsubscribeField = 'ngUnsubscribe$', base?) =>\n (base\n ? mixinHasUpdateTriggerListener(ngUnsubscribeField, base)\n : mixinHasUpdateTriggerListener(ngUnsubscribeField, class {})) as unknown as any;\n\n\nexport interface HasCheckControlUpdates {\n ngDoCheck(): void;\n}\n\nexport type CanCheckControlUpdates = object;\n\nexport type HasCheckControlUpdatesCtor = Constructor &\n AbstractConstructor &\n (new (...args: any[]) => HasCheckControlUpdates & T);\n\nexport type mixinHasCheckControlUpdatesFn<\n T extends Constructor | AbstractConstructor,\n R = any\n> = (base: T, controlAccessor?: (self: R) => AbstractControl) => Omit & HasCheckControlUpdatesCtor;\n\nexport function mixinHasCheckControlUpdates(base, controlAccessor) {\n return class extends base implements DoCheck {\n private checkControlUpdatesCd: ChangeDetectorRef;\n private oldTouched;\n private oldValue;\n private oldDisabled;\n private oldErrors;\n\n constructor(...args: any[]) {\n super(...args);\n args.forEach(a => {\n if (a instanceof ChangeDetectorRef || a?.markForCheck) {\n this.checkControlUpdatesCd = a;\n }\n });\n }\n private getCheckControlUpdatesTarget() {\n return controlAccessor(this as any);\n }\n ngDoCheck(): void {\n const control = this.getCheckControlUpdatesTarget();\n if (control?.touched !== this.oldTouched) {\n this.oldTouched = control.touched;\n return this.checkControlUpdatesCd.markForCheck();\n }\n if (control?.disabled !== this.oldDisabled) {\n this.oldDisabled = control?.disabled;\n return this.checkControlUpdatesCd.markForCheck();\n }\n if (control?.value && control.value !== this.oldValue) {\n this.oldValue = control.value;\n return this.checkControlUpdatesCd.markForCheck();\n }\n if (JSON.stringify(control?.errors) !== JSON.stringify(this.oldErrors)) {\n this.oldErrors = control.errors;\n return this.checkControlUpdatesCd.markForCheck();\n }\n }\n };\n}\n// eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/ban-types\ntype WithCheckControlUpdatesFn = | AbstractConstructor = typeof defaultClass>(\n controlAccessor?: (self: R) => AbstractControl,\n base?: T\n) => ReturnType>;\n\nexport const WithCheckControlUpdates: WithCheckControlUpdatesFn = (controlAccessor, base?) =>\n (base ? mixinHasCheckControlUpdates(base, controlAccessor) : mixinHasCheckControlUpdates(class {}, controlAccessor)) as unknown as any;\n","export const PAGES_CONFIG = {\n DASHBOARD: 'dashboard',\n REQUESTS: 'requests',\n REPORTS: 'reports',\n HELP: 'help',\n VERSIONS: 'versions',\n ERROR: 'error',\n ERROR_AUTH: 'error-authorization',\n SUBSTITUTES: 'substitutes',\n APPROVALS: 'approvals',\n};\n\nexport enum ERRORS {\n auth = 'auth',\n permission = 'permission',\n notFound = '404',\n translationLoadError = 'translation',\n serviceUnavailable = 'service_unavailable'\n}\n","export interface FileTypes {\n CARD_PRODUCTION: {\n ARTWORK: string;\n ASN: string;\n PROOF_OF_PAYMENT: string;\n EXTERNAL_PIN: string;\n PO_SOW: string;\n };\n CARD_DESIGN: {\n ART: string;\n ARTWORK: string;\n };\n DEFAULT: string;\n DEFAULT_DESIGN: string;\n POP_DESIGN: {\n ART: string;\n ARTWORK: string;\n FS_FILE: string;\n };\n POP_PRODUCTION: {\n ARTWORK: string;\n ASN: string;\n OTHER: string;\n PARTNER_ART: string;\n PRINTER_PROOF: string;\n PRINTER_QUOTE: string;\n };\n FINANCIAL_SERVICES: {\n ARTWORK: string;\n ASN: string;\n FINANCE: string;\n };\n BIF_PRODUCTION: {\n FINANCE: string;\n ARTWORK: string;\n PRINTER_PROOF: string;\n ASN: string;\n };\n THIRD_PARTY_PRODUCTION: {\n FINANCE: string;\n ARTWORK: string;\n OPS: string;\n ASN: string;\n PO_SOW: string;\n EXTERNAL_PIN: string;\n };\n IH_PRODUCTION: {\n ARTWORK: string;\n PRINTER_PROOF: string;\n };\n IMAGE: {\n ART_FILE: string;\n };\n}\n\nexport const FILE_TYPES: FileTypes = {\n CARD_PRODUCTION: {\n ARTWORK: 'card-production-artwork',\n ASN: 'card-production-asn',\n PROOF_OF_PAYMENT: 'card-production-finances',\n EXTERNAL_PIN: 'card-production-external-pin',\n PO_SOW: 'card-production-po-sow',\n },\n CARD_DESIGN: {\n ART: 'card-design-art-file',\n ARTWORK: 'card-design-artwork-file'\n },\n POP_DESIGN: {\n ART: 'pop-design-art-file',\n ARTWORK: 'pop-design-artwork-file',\n FS_FILE: 'pop-design-fs-review-file'\n },\n POP_PRODUCTION: {\n ARTWORK: 'pop-production-artwork',\n ASN: 'pop-production-asn',\n OTHER: 'pop-production-other',\n PARTNER_ART: 'pop-production-partner-art',\n PRINTER_PROOF: 'pop-production-printer-proof',\n PRINTER_QUOTE: 'pop-production-printer-quote'\n },\n FINANCIAL_SERVICES: {\n ARTWORK: 'financial-services-artwork',\n ASN: 'financial-services-asn',\n FINANCE: 'financial-services-finance',\n },\n BIF_PRODUCTION: {\n FINANCE: 'bif-production-finance',\n ARTWORK: 'bif-production-artwork',\n PRINTER_PROOF: 'bif-production-printer-proof',\n ASN: 'bif-production-asn'\n },\n THIRD_PARTY_PRODUCTION: {\n FINANCE: 'third-party-production-finance',\n ARTWORK: 'third-party-production-artwork',\n OPS: 'third-party-production-ops',\n ASN: 'third-party-production-asn',\n PO_SOW: 'third-party-production-po-sow',\n EXTERNAL_PIN: 'third-party-production-external-pin'\n },\n IMAGE: {\n ART_FILE: 'image-art-file',\n },\n IH_PRODUCTION: {\n ARTWORK: 'ih-production-artwork',\n PRINTER_PROOF: 'ih-production-printer-proof'\n },\n DEFAULT: 'default',\n DEFAULT_DESIGN: 'default.design'\n};\n","export enum UserGroups {\n PPM = 'FN_PRODUCEIT_PRODUCTION_MANAGER',\n FA = 'FN_PRODUCEIT_FINANCE_APPROVER',\n Designer = 'FN_PRODUCEIT_DESIGNER',\n TM = 'FN_PRODUCEIT_TRAFFIC_MANAGER',\n CD = 'FN_PRODUCEIT_CREATIVE_DIRECTOR',\n POP_PPM = 'FN_PRODUCEIT_POP_PRODUCTION_MANAGER',\n FSR_PPM = 'FN_PRODUCEIT_FSR_PRODUCTION_MANAGER',\n BIF_PPM = 'FN_PRODUCEIT_BIF_PRODUCTION_MANAGER',\n IH_PPM = 'FN_PRODUCEIT_IHA_PRODUCTION_MANAGER',\n THIRD_PARTY_PPM = 'FN_PRODUCEIT_3RD_PARTY_CARD_PRODUCTION_MANAGER',\n IM_TM = 'FN_PRODUCEIT_IMAGE_TRAFFIC_MANAGER',\n}\n","const GROUP_FN_PRODUCEIT_PRODUCTION_MANAGER = 'GROUP_FN_PRODUCEIT_PRODUCTION_MANAGER';\nconst GROUP_FN_PRODUCEIT_POP_PRODUCTION_MANAGER = 'GROUP_FN_PRODUCEIT_POP_PRODUCTION_MANAGER';\nconst GROUP_FN_PRODUCEIT_FSR_PRODUCTION_MANAGER = 'GROUP_FN_PRODUCEIT_FSR_PRODUCTION_MANAGER';\nconst GROUP_FN_PRODUCEIT_BIF_PRODUCTION_MANAGER = 'GROUP_FN_PRODUCEIT_BIF_PRODUCTION_MANAGER';\nconst GROUP_FN_PRODUCEIT_IHA_PRODUCTION_MANAGER = 'GROUP_FN_PRODUCEIT_IHA_PRODUCTION_MANAGER';\nconst GROUP_FN_PRODUCEIT_3RD_PARTY_CARD_PRODUCTION_MANAGER = 'GROUP_FN_PRODUCEIT_3RD_PARTY_CARD_PRODUCTION_MANAGER';\nconst GROUP_FN_PRODUCEIT_FINANCE_APPROVER_PREPAID = 'GROUP_FN_PRODUCEIT_FINANCE_APPROVER_PREPAID';\nconst GROUP_FN_PRODUCEIT_FINANCE_APPROVER_REBILL = 'GROUP_FN_PRODUCEIT_FINANCE_APPROVER_REBILL';\nconst GROUP_FN_PRODUCEIT_FINANCE_APPROVER_INCOMM_PAYS = 'GROUP_FN_PRODUCEIT_FINANCE_APPROVER_INCOMM_PAYS';\nconst GROUP_FN_PRODUCEIT_POP_PRODUCTION_FINANCE_APPROVER = 'GROUP_FN_PRODUCEIT_POP_PRODUCTION_FINANCE_APPROVER';\nconst GROUP_FN_PRODUCEIT_TRAFFIC_MANAGER = 'GROUP_FN_PRODUCEIT_TRAFFIC_MANAGER';\nconst GROUP_FN_PRODUCEIT_PRODUCTION_TRAFFIC_MANAGER = 'GROUP_FN_PRODUCEIT_PRODUCTION_TRAFFIC_MANAGER';\nconst GROUP_FN_PRODUCEIT_CARD_DESIGN_TRAFFIC_MANAGER = 'GROUP_FN_PRODUCEIT_CARD_DESIGN_TRAFFIC_MANAGER';\nconst FN_PRODUCEIT_CARD_DESIGN_TRAFFIC_MANAGER = 'FN_PRODUCEIT_CARD_DESIGN_TRAFFIC_MANAGER';\nconst GROUP_FN_PRODUCEIT_POP_DESIGN_TRAFFIC_MANAGER = 'GROUP_FN_PRODUCEIT_POP_DESIGN_TRAFFIC_MANAGER';\nconst FN_PRODUCEIT_POP_DESIGN_TRAFFIC_MANAGER = 'FN_PRODUCEIT_POP_DESIGN_TRAFFIC_MANAGER';\nconst GROUP_FN_PRODUCEIT_IMAGE_TRAFFIC_MANAGER = 'GROUP_FN_PRODUCEIT_IMAGE_TRAFFIC_MANAGER';\nconst FN_PRODUCEIT_IMAGE_TRAFFIC_MANAGER = 'FN_PRODUCEIT_IMAGE_TRAFFIC_MANAGER';\n\nconst GROUP_FN_PRODUCEIT_POP_PRODUCTION_TRAFFIC_MANAGER = 'GROUP_FN_PRODUCEIT_POP_PRODUCTION_TRAFFIC_MANAGER';\nconst GROUP_FN_PRODUCEIT_3RD_PARTY_PRODUCTION_TRAFFIC_MANAGER = 'GROUP_FN_PRODUCEIT_3RD_PARTY_PRODUCTION_TRAFFIC_MANAGER';\nconst GROUP_FN_PRODUCEIT_DESIGNER = 'GROUP_FN_PRODUCEIT_DESIGNER';\nconst GROUP_FN_PRODUCEIT_CREATIVE_DIRECTOR = 'GROUP_FN_PRODUCEIT_CREATIVE_DIRECTOR';\nconst GROUP_FN_PRODUCEIT_FSM_AMERICAN_EXPRESS_GIFT = 'GROUP_FN_PRODUCEIT_FSM_AMERICAN_EXPRESS_GIFT';\nconst GROUP_FN_PRODUCEIT_FSM_BLUEBIRD = 'GROUP_FN_PRODUCEIT_FSM_BLUEBIRD';\nconst GROUP_FN_PRODUCEIT_FSM_CUENTAS = 'GROUP_FN_PRODUCEIT_FSM_CUENTAS';\nconst GROUP_FN_PRODUCEIT_FSM_FS_TAX = 'GROUP_FN_PRODUCEIT_FSM_FS_TAX';\nconst GROUP_FN_PRODUCEIT_FSM_GO_RAN = 'GROUP_FN_PRODUCEIT_FSM_GO_RAN';\nconst GROUP_FN_PRODUCEIT_FSM_MY_VANILLA = 'GROUP_FN_PRODUCEIT_FSM_MY_VANILLA';\nconst GROUP_FN_PRODUCEIT_FSM_SECURE_SPEND = 'GROUP_FN_PRODUCEIT_FSM_SECURE_SPEND';\nconst GROUP_FN_PRODUCEIT_FSM_SERVE = 'GROUP_FN_PRODUCEIT_FSM_SERVE';\nconst GROUP_FN_PRODUCEIT_FSM_VANILLA_DIRECT = 'GROUP_FN_PRODUCEIT_FSM_VANILLA_DIRECT';\nconst GROUP_FN_PRODUCEIT_FSM_VANILLA_GIFT = 'GROUP_FN_PRODUCEIT_FSM_VANILLA_GIFT';\nconst GROUP_FN_PRODUCEIT_FSM_VANILLA_GO = 'GROUP_FN_PRODUCEIT_FSM_VANILLA_GO';\nconst GROUP_FN_PRODUCEIT_POP_DESIGN_FINANCE_APPROVER = 'GROUP_FN_PRODUCEIT_POP_DESIGN_FINANCE_APPROVER';\nconst GROUP_FN_PRODUCEIT_ADMIN = 'GROUP_FN_PRODUCEIT_ADMIN';\nconst GROUP_FN_PRODUCEIT_USER = 'GROUP_FN_PRODUCEIT_USER';\nconst GROUP_FN_PRODUCEIT_SUPER_USER = 'GROUP_FN_PRODUCEIT_SUPER_USER';\nconst GROUP_FN_PRODUCEIT_SUBSTITUTION_ADMIN = 'GROUP_FN_PRODUCEIT_SUBSTITUTION_ADMIN';\nconst GROUP_FN_PRODUCEIT_PO_REPORT_USER = 'GROUP_FN_PRODUCEIT_PO_REPORT_USER';\n\nexport class PermissionGroups {\n static readonly PRODUCTION_MANAGER = GROUP_FN_PRODUCEIT_PRODUCTION_MANAGER;\n static readonly POP_PRODUCTION_MANAGER = GROUP_FN_PRODUCEIT_POP_PRODUCTION_MANAGER;\n static readonly FSR_PRODUCTION_MANAGER = GROUP_FN_PRODUCEIT_FSR_PRODUCTION_MANAGER;\n static readonly BIF_PRODUCTION_MANAGER = GROUP_FN_PRODUCEIT_BIF_PRODUCTION_MANAGER;\n static readonly IHA_PRODUCTION_MANAGER = GROUP_FN_PRODUCEIT_IHA_PRODUCTION_MANAGER;\n static readonly ['3RD_PARTY_CARD_PRODUCTION_MANAGER'] = GROUP_FN_PRODUCEIT_3RD_PARTY_CARD_PRODUCTION_MANAGER;\n static readonly FINANCE_APPROVER_PREPAID = GROUP_FN_PRODUCEIT_FINANCE_APPROVER_PREPAID;\n static readonly FINANCE_APPROVER_REBILL = GROUP_FN_PRODUCEIT_FINANCE_APPROVER_REBILL;\n static readonly FINANCE_APPROVER_INCOMM_PAYS = GROUP_FN_PRODUCEIT_FINANCE_APPROVER_INCOMM_PAYS;\n static readonly POP_PRODUCTION_FINANCE_APPROVER = GROUP_FN_PRODUCEIT_POP_PRODUCTION_FINANCE_APPROVER;\n static readonly TRAFFIC_MANAGER = GROUP_FN_PRODUCEIT_TRAFFIC_MANAGER;\n static readonly PRODUCTION_TRAFFIC_MANAGER = GROUP_FN_PRODUCEIT_PRODUCTION_TRAFFIC_MANAGER;\n static readonly CARD_DESIGN_TRAFFIC_MANAGER = GROUP_FN_PRODUCEIT_CARD_DESIGN_TRAFFIC_MANAGER;\n static readonly POP_DESIGN_TRAFFIC_MANAGER = GROUP_FN_PRODUCEIT_POP_DESIGN_TRAFFIC_MANAGER;\n static readonly IMAGE_TRAFFIC_MANAGER = GROUP_FN_PRODUCEIT_IMAGE_TRAFFIC_MANAGER;\n static readonly POP_PRODUCTION_TRAFFIC_MANAGER = GROUP_FN_PRODUCEIT_POP_PRODUCTION_TRAFFIC_MANAGER;\n static readonly ['3RD_PARTY_PRODUCTION_TRAFFIC_MANAGER'] = GROUP_FN_PRODUCEIT_3RD_PARTY_PRODUCTION_TRAFFIC_MANAGER;\n static readonly DESIGNER = GROUP_FN_PRODUCEIT_DESIGNER;\n static readonly CREATIVE_DIRECTOR = GROUP_FN_PRODUCEIT_CREATIVE_DIRECTOR;\n static readonly FSM_AMERICAN_EXPRESS_GIFT = GROUP_FN_PRODUCEIT_FSM_AMERICAN_EXPRESS_GIFT;\n static readonly FSM_BLUEBIRD = GROUP_FN_PRODUCEIT_FSM_BLUEBIRD;\n static readonly FSM_CUENTAS = GROUP_FN_PRODUCEIT_FSM_CUENTAS;\n static readonly FSM_FS_TAX = GROUP_FN_PRODUCEIT_FSM_FS_TAX;\n static readonly FSM_GO_RAN = GROUP_FN_PRODUCEIT_FSM_GO_RAN;\n static readonly FSM_MY_VANILLA = GROUP_FN_PRODUCEIT_FSM_MY_VANILLA;\n static readonly FSM_SECURE_SPEND = GROUP_FN_PRODUCEIT_FSM_SECURE_SPEND;\n static readonly FSM_SERVE = GROUP_FN_PRODUCEIT_FSM_SERVE;\n static readonly FSM_VANILLA_DIRECT = GROUP_FN_PRODUCEIT_FSM_VANILLA_DIRECT;\n static readonly FSM_VANILLA_GIFT = GROUP_FN_PRODUCEIT_FSM_VANILLA_GIFT;\n static readonly FSM_VANILLA_GO = GROUP_FN_PRODUCEIT_FSM_VANILLA_GO;\n static readonly POP_DESIGN_FINANCE_APPROVER = GROUP_FN_PRODUCEIT_POP_DESIGN_FINANCE_APPROVER;\n static readonly ADMIN = GROUP_FN_PRODUCEIT_ADMIN;\n static readonly USER = GROUP_FN_PRODUCEIT_USER;\n static readonly SUPER_USER = GROUP_FN_PRODUCEIT_SUPER_USER;\n static readonly SUBSTITUTION_ADMIN = GROUP_FN_PRODUCEIT_SUBSTITUTION_ADMIN;\n static readonly PO_REPORT_USER = GROUP_FN_PRODUCEIT_PO_REPORT_USER;\n}\n\nconst ROLE_FN_PRODUCEIT_CARD_PROD_UPLD_ART_SUBMIT = 'FN_PRODUCEIT_CARD_PROD_UPLD_ART_SUBMIT';\nconst ROLE_FN_PRODUCEIT_CARD_PROD_UPLD_ART_ROUTE_BACK = 'FN_PRODUCEIT_CARD_PROD_UPLD_ART_ROUTE_BACK';\nconst ROLE_FN_PRODUCEIT_CARD_PROD_UPLD_ART_CANCEL = 'FN_PRODUCEIT_CARD_PROD_UPLD_ART_CANCEL';\nconst ROLE_FN_PRODUCEIT_CARD_DESIGN_DESIGNER_NAME_VIEW = 'FN_PRODUCEIT_CARD_DESIGN_DESIGNER_NAME_VIEW';\nconst ROLE_FN_PRODUCEIT_CARD_DESIGN_TM_EDIT = 'FN_PRODUCEIT_CARD_DESIGN_TM_EDIT';\nconst ROLE_FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_APPROVE = 'FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_APPROVE';\nconst ROLE_FN_PRODUCEIT_CARD_DESIGN_DSGN_PRCS_ROUTE_BACK = 'FN_PRODUCEIT_CARD_DESIGN_DSGN_PRCS_ROUTE_BACK';\nconst ROLE_FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_ROUT_BACK = 'FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_ROUT_BACK';\nconst ROLE_FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_CANCEL = 'FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_CANCEL';\nconst ROLE_FN_PRODUCEIT_CARD_DESIGN_IEC_PROOF_ROUTE_BACK = 'FN_PRODUCEIT_CARD_DESIGN_IEC_PROOF_ROUTE_BACK';\nconst ROLE_FN_PRODUCEIT_CARD_DESIGN_NOTATE_VERSION = 'FN_PRODUCEIT_CARD_DESIGN_NOTATE_VERSION';\nconst ROLE_FN_PRODUCEIT_POP_DESIGN_FS_REVIEW_1_EDIT = 'FN_PRODUCEIT_POP_DESIGN_FS_REVIEW_1_EDIT';\nconst ROLE_FN_PRODUCEIT_POP_DESIGN_FS_REVIEW_2_EDIT = 'FN_PRODUCEIT_POP_DESIGN_FS_REVIEW_2_EDIT';\nconst ROLE_FN_PRODUCEIT_POP_DESIGN_TM_EDIT = 'FN_PRODUCEIT_POP_DESIGN_TM_EDIT';\nconst ROLE_FN_PRODUCEIT_POP_DESIGN_CD_REVIEW_EDIT = 'FN_PRODUCEIT_POP_DESIGN_CD_REVIEW_EDIT';\nconst ROLE_FN_PRODUCEIT_POP_DESIGN_DESIGNER_NAME_VIEW = 'FN_PRODUCEIT_POP_DESIGN_DESIGNER_NAME_VIEW';\nconst ROLE_FN_PRODUCEIT_POP_DESIGN_NOTATE_VERSION = 'FN_PRODUCEIT_POP_DESIGN_NOTATE_VERSION';\nconst ROLE_FN_PRODUCEIT_POP_PROD_FIN_APPR_EDIT = 'FN_PRODUCEIT_POP_PROD_FIN_APPR_EDIT';\nconst ROLE_FN_PRODUCEIT_POP_PROD_UPLD_ART_EDIT = 'FN_PRODUCEIT_POP_PROD_UPLD_ART_EDIT';\nconst ROLE_FN_PRODUCEIT_IMAGE_DESIGNER_NAME_VIEW = 'FN_PRODUCEIT_IMAGE_DESIGNER_NAME_VIEW';\nconst ROLE_FN_PRODUCEIT_IMAGE_TM_EDIT = 'FN_PRODUCEIT_IMAGE_TM_EDIT';\nconst ROLE_FN_PRODUCEIT_IMAGE_NOTATE_VERSION = 'FN_PRODUCEIT_IMAGE_NOTATE_VERSION';\nconst ROLE_FN_PRODUCEIT_PO_REPORT = 'FN_PRODUCEIT_PO_REPORT';\nconst ROLE_FN_PRODUCEIT_MIMIC_USER = 'FN_PRODUCEIT_MIMIC_USER';\nconst ROLE_FN_PRODUCEIT_ADMIN_USER = 'FN_PRODUCEIT_ADMIN_USER';\n\nexport class PermissionRoles {\n static readonly CARD_PROD_UPLD_ART_SUBMIT = ROLE_FN_PRODUCEIT_CARD_PROD_UPLD_ART_SUBMIT;\n static readonly CARD_PROD_UPLD_ART_ROUTE_BACK = ROLE_FN_PRODUCEIT_CARD_PROD_UPLD_ART_ROUTE_BACK;\n static readonly CARD_PROD_UPLD_ART_CANCEL = ROLE_FN_PRODUCEIT_CARD_PROD_UPLD_ART_CANCEL;\n static readonly CARD_DESIGN_DESIGNER_NAME_VIEW = ROLE_FN_PRODUCEIT_CARD_DESIGN_DESIGNER_NAME_VIEW;\n static readonly CARD_DESIGN_TM_EDIT = ROLE_FN_PRODUCEIT_CARD_DESIGN_TM_EDIT;\n static readonly CARD_DESIGN_CD_REVIEW_APPROVE = ROLE_FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_APPROVE;\n static readonly CARD_DESIGN_DSGN_PRCS_ROUTE_BACK = ROLE_FN_PRODUCEIT_CARD_DESIGN_DSGN_PRCS_ROUTE_BACK;\n static readonly CARD_DESIGN_CD_REVIEW_ROUT_BACK = ROLE_FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_ROUT_BACK;\n static readonly CARD_DESIGN_CD_REVIEW_CANCEL = ROLE_FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_CANCEL;\n static readonly CARD_DESIGN_IEC_PROOF_ROUTE_BACK = ROLE_FN_PRODUCEIT_CARD_DESIGN_IEC_PROOF_ROUTE_BACK;\n static readonly CARD_DESIGN_NOTATE_VERSION = ROLE_FN_PRODUCEIT_CARD_DESIGN_NOTATE_VERSION;\n static readonly POP_DESIGN_FS_REVIEW_1_EDIT = ROLE_FN_PRODUCEIT_POP_DESIGN_FS_REVIEW_1_EDIT;\n static readonly POP_DESIGN_FS_REVIEW_2_EDIT = ROLE_FN_PRODUCEIT_POP_DESIGN_FS_REVIEW_2_EDIT;\n static readonly POP_DESIGN_TM_EDIT = ROLE_FN_PRODUCEIT_POP_DESIGN_TM_EDIT;\n static readonly POP_DESIGN_CD_REVIEW_EDIT = ROLE_FN_PRODUCEIT_POP_DESIGN_CD_REVIEW_EDIT;\n static readonly POP_DESIGN_DESIGNER_NAME_VIEW = ROLE_FN_PRODUCEIT_POP_DESIGN_DESIGNER_NAME_VIEW;\n static readonly POP_DESIGN_NOTATE_VERSION = ROLE_FN_PRODUCEIT_POP_DESIGN_NOTATE_VERSION;\n static readonly POP_PROD_FIN_APPR_EDIT = ROLE_FN_PRODUCEIT_POP_PROD_FIN_APPR_EDIT;\n static readonly POP_PROD_UPLD_ART_EDIT = ROLE_FN_PRODUCEIT_POP_PROD_UPLD_ART_EDIT;\n static readonly IMAGE_DESIGNER_NAME_VIEW = ROLE_FN_PRODUCEIT_IMAGE_DESIGNER_NAME_VIEW;\n static readonly IMAGE_TM_EDIT = ROLE_FN_PRODUCEIT_IMAGE_TM_EDIT;\n static readonly IMAGE_NOTATE_VERSION = ROLE_FN_PRODUCEIT_IMAGE_NOTATE_VERSION;\n static readonly PO_REPORT = ROLE_FN_PRODUCEIT_PO_REPORT;\n static readonly MIMIC_USER = ROLE_FN_PRODUCEIT_MIMIC_USER;\n static readonly ADMIN_USER = ROLE_FN_PRODUCEIT_ADMIN_USER;\n}\n\nconst REQUEST_DETAILS_REQUESTER = 'REQUESTER';\n// Can assign designer\nconst CARD_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER = 'ASSIGNED_PREP_ARTIFACT_DESIGNER';\nconst POP_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER = 'ASSIGNED_PREP_ARTIFACT_DESIGNER';\nconst REQUEST_STAGE_ASSIGNEE_STEP_INCLUDED = 'ASSIGNEE_STEP_INCLUDED';\nconst ASSIGNED_TM = 'ASSIGNED_TM';\nconst ASSIGNED_DESIGNER = 'ASSIGNED_DESIGNER';\nconst PPM = 'PPM';\n\nexport class SpecificRoles {\n static readonly REQUEST_DETAILS_REQUESTER = REQUEST_DETAILS_REQUESTER;\n static readonly CARD_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER = CARD_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER;\n static readonly POP_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER = POP_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER;\n static readonly REQUEST_STAGE_ASSIGNEE_STEP_INCLUDED = REQUEST_STAGE_ASSIGNEE_STEP_INCLUDED;\n static readonly ASSIGNED_TM = ASSIGNED_TM;\n static readonly ASSIGNED_DESIGNER = ASSIGNED_DESIGNER;\n static readonly PPM = PPM;\n}\n\nexport class TrafficManagers {\n static readonly CDR = FN_PRODUCEIT_CARD_DESIGN_TRAFFIC_MANAGER;\n static readonly PDR = FN_PRODUCEIT_POP_DESIGN_TRAFFIC_MANAGER;\n static readonly IR = FN_PRODUCEIT_IMAGE_TRAFFIC_MANAGER;\n}\n\nexport const POP_DESIGN_REQUEST_STAGE_REQUEST_DETAILS = 'REQUEST_DETAILS';\nexport const POP_DESIGN_REQUEST_STAGE_FINANCIAL_SERVICES_REVIEW = 'FINANCIAL_SERVICES_REVIEW';\nexport const POP_DESIGN_REQUEST_STAGE_TM_REVIEW = 'TM_REVIEW';\nexport const POP_DESIGN_REQUEST_STAGE_DESIGN_PROCESS = 'DESIGN_PROCESS';\nexport const POP_DESIGN_REQUEST_STAGE_TM_REVIEW_2 = 'TM_REVIEW_2';\nexport const POP_DESIGN_REQUEST_STAGE_CREATIVE_DIRECTOR_REVIEW = 'CREATIVE_DIRECTOR_REVIEW';\nexport const POP_DESIGN_REQUEST_STAGE_FINANCIAL_SERVICES_REVIEW_2 = 'FINANCIAL_SERVICES_REVIEW_2';\nexport const POP_DESIGN_REQUEST_STAGE_INT_EXT_CLIENT_PROOF = 'INT_EXT_CLIENT_PROOF';\nexport const POP_DESIGN_REQUEST_STAGE_PREP_POST_ARTIFACTS = 'PREP_POST_ARTIFACTS';\nexport const POP_DESIGN_REQUEST_STAGE_TM_REVIEW_3 = 'TM_REVIEW_3';\nexport const POP_DESIGN_REQUEST_STAGE_PREP_ARTIFACTS = 'PREP_ARTIFACTS';\nexport const POP_DESIGN_REQUEST_STAGE_POST_ARTIFACTS = 'POST_ARTIFACTS';\n\nexport const CARD_DESIGN_REQUEST_STAGE_REQUEST_DETAILS = 'REQUEST_DETAILS';\nexport const CARD_DESIGN_REQUEST_STAGE_TM_REVIEW = 'TM_REVIEW';\nexport const CARD_DESIGN_REQUEST_STAGE_DESIGN_PROCESS = 'DESIGN_PROCESS';\nexport const CARD_DESIGN_REQUEST_STAGE_TM_REVIEW_2 = 'TM_REVIEW_2';\nexport const CARD_DESIGN_REQUEST_STAGE_TM_REVIEW_3 = 'TM_REVIEW_3';\nexport const CARD_DESIGN_REQUEST_STAGE_PREP_ARTIFACTS = 'PREP_ARTIFACTS';\nexport const CARD_DESIGN_REQUEST_STAGE_POST_ARTIFACTS = 'POST_ARTIFACTS';\n\nexport const CARD_DESIGN_REQUEST_STAGE_CREATIVE_DIRECTOR_REVIEW = 'CREATIVE_DIRECTOR_REVIEW';\nexport const CARD_DESIGN_REQUEST_STAGE_INT_EXT_CLIENT_PROOF = 'INT_EXT_CLIENT_PROOF';\nexport const CARD_DESIGN_REQUEST_STAGE_PREP_POST_ARTIFACTS = 'PREP_POST_ARTIFACTS';\n\nexport const UserRoles = {\n PRODUCTION_REQUEST: {\n CREATE_REQUEST: 'ROLE_FN_PRODUCEIT_CARD_PROD_REQUEST_CREATE',\n REQUEST_DETAILS: {\n 'step-delete': REQUEST_DETAILS_REQUESTER,\n 'step-save': REQUEST_DETAILS_REQUESTER,\n 'step-submit': REQUEST_DETAILS_REQUESTER\n },\n REQUEST_REVIEW: {\n 'step-back': ['PRINT_PRODUCTION_MANAGER', 'ASSIGNEE_STEP_INCLUDED'],\n 'step-submit': ['PRINT_PRODUCTION_MANAGER', 'ASSIGNEE_STEP_INCLUDED']\n },\n FINANCE_APPROVAL: {\n 'step-approve': ['PRINT_PRODUCTION_MANAGER', 'ASSIGNEE_STEP_INCLUDED'],\n 'step-back': ['PRINT_PRODUCTION_MANAGER', 'ASSIGNEE_STEP_INCLUDED']\n },\n UPLOAD_ARTWORK: {\n 'step-submit': ['ROLE_FN_PRODUCEIT_CARD_PROD_UPLD_ART_SUBMIT', 'PRINT_PRODUCTION_MANAGER'],\n 'step-back': ['ROLE_FN_PRODUCEIT_CARD_PROD_UPLD_ART_ROUTE_BACK', 'PRINT_PRODUCTION_MANAGER'],\n 'step-cancel': ['ROLE_FN_PRODUCEIT_CARD_PROD_UPLD_ART_CANCEL', 'PRINT_PRODUCTION_MANAGER']\n },\n ART_APPROVAL: {\n 'step-approve': ['PRINT_PRODUCTION_MANAGER', 'PRODUCT_OWNER'],\n 'step-back': ['PRINT_PRODUCTION_MANAGER', 'PRODUCT_OWNER'],\n 'step-cancel': ['PRINT_PRODUCTION_MANAGER', 'PRODUCT_OWNER']\n },\n PO_SOW: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-cancel': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n COMMITTEE_APPROVAL: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-cancel': 'PRINT_PRODUCTION_MANAGER',\n 'step-approve': 'PRINT_PRODUCTION_MANAGER'\n },\n PO_APPROVAL: {\n ENABLED: [SpecificRoles.PPM, 'GROUP_FN_PRODUCEIT_PO_APPROVER_1', 'GROUP_FN_PRODUCEIT_PO_APPROVER_2'],\n },\n PRINT: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-close': 'PRINT_PRODUCTION_MANAGER'\n },\n PRODUCTION_MANAGER: 'GROUP_FN_PRODUCEIT_PRODUCTION_MANAGER',\n TRAFFIC_MANAGER: PermissionGroups.PRODUCTION_TRAFFIC_MANAGER\n },\n CARD_DESIGN_REQUEST: {\n CREATE_REQUEST: 'ROLE_FN_PRODUCEIT_CARD_DESIGN_REQUEST_CREATE',\n [CARD_DESIGN_REQUEST_STAGE_REQUEST_DETAILS]: {\n 'step-delete': REQUEST_DETAILS_REQUESTER,\n 'step-save': REQUEST_DETAILS_REQUESTER,\n 'step-submit': REQUEST_DETAILS_REQUESTER\n },\n [CARD_DESIGN_REQUEST_STAGE_TM_REVIEW]: {\n 'step-submit': [ASSIGNED_TM],\n 'step-back': [ASSIGNED_TM],\n 'step-save': [ASSIGNED_TM],\n 'view-designer-name': 'ANY'\n },\n [CARD_DESIGN_REQUEST_STAGE_DESIGN_PROCESS]: {\n 'step-submit': [ASSIGNED_DESIGNER],\n 'step-back': [ASSIGNED_DESIGNER],\n 'step-save': [ASSIGNED_DESIGNER]\n },\n [CARD_DESIGN_REQUEST_STAGE_TM_REVIEW_2]: {\n 'step-submit': [ASSIGNED_TM],\n 'step-back': [ASSIGNED_TM]\n },\n [CARD_DESIGN_REQUEST_STAGE_CREATIVE_DIRECTOR_REVIEW]: {\n 'step-submit': 'ROLE_FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_APPROVE',\n 'step-back': 'ROLE_FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_ROUT_BACK',\n 'step-cancel': 'ROLE_FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_CANCEL'\n },\n [CARD_DESIGN_REQUEST_STAGE_INT_EXT_CLIENT_PROOF]: {\n 'step-back': [REQUEST_DETAILS_REQUESTER, 'ROLE_FN_PRODUCEIT_CARD_DESIGN_IEC_PROOF_ROUTE_BACK'],\n 'step-submit': REQUEST_DETAILS_REQUESTER,\n VIEW: 'ROLE_FN_PRODUCEIT_CARD_DESIGN_IEC_PROOF_VIEW'\n },\n [CARD_DESIGN_REQUEST_STAGE_TM_REVIEW_3]: {\n 'step-submit': [ASSIGNED_TM],\n 'step-back': [ASSIGNED_TM]\n },\n [CARD_DESIGN_REQUEST_STAGE_PREP_ARTIFACTS]: {\n 'step-submit': [CARD_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER],\n 'step-save': [CARD_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER],\n 'step-back': [CARD_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER],\n 'auto-assign': GROUP_FN_PRODUCEIT_DESIGNER,\n 'can-assign-designer': [\n GROUP_FN_PRODUCEIT_CARD_DESIGN_TRAFFIC_MANAGER,\n GROUP_FN_PRODUCEIT_DESIGNER,\n ROLE_FN_PRODUCEIT_CARD_DESIGN_CD_REVIEW_APPROVE,\n GROUP_FN_PRODUCEIT_CREATIVE_DIRECTOR\n ]\n },\n [CARD_DESIGN_REQUEST_STAGE_POST_ARTIFACTS]: {\n 'step-close': 'ROLE_FN_PRODUCEIT_CARD_DESIGN_TM_EDIT',\n 'step-back': 'ROLE_FN_PRODUCEIT_CARD_DESIGN_TM_EDIT'\n },\n DESIGNER: 'DESIGNER',\n DESIGNER_GROUP: 'GROUP_FN_PRODUCEIT_DESIGNER',\n TRAFFIC_MANAGERS: 'GROUP_FN_PRODUCEIT_CARD_DESIGN_TRAFFIC_MANAGER',\n TRAFFIC_MANAGER: SpecificRoles.ASSIGNED_TM,\n CREATIVE_DIRECTOR: 'GROUP_FN_PRODUCEIT_CREATIVE_DIRECTOR',\n APPROVAL_MANAGER_ANNOTATE: 'ROLE_FN_PRODUCEIT_CARD_DESIGN_NOTATE_VERSION',\n CAN_ASSIGN_TM: 'ROLE_FN_PRODUCEIT_CARD_DESIGN_TM_EDIT',\n TM_AUTO_ASSIGN: 'ROLE_FN_PRODUCEIT_CARD_DESIGN_TM_EDIT',\n CAN_ASSIGN_DESIGNER: ['GROUP_FN_PRODUCEIT_DESIGNER', GROUP_FN_PRODUCEIT_CARD_DESIGN_TRAFFIC_MANAGER],\n DESIGNER_AUTO_ASSIGN: 'GROUP_FN_PRODUCEIT_DESIGNER'\n },\n POP_DESIGN_REQUEST: {\n [POP_DESIGN_REQUEST_STAGE_REQUEST_DETAILS]: {\n 'step-delete': REQUEST_DETAILS_REQUESTER,\n 'step-save': REQUEST_DETAILS_REQUESTER,\n 'step-submit': REQUEST_DETAILS_REQUESTER\n },\n [POP_DESIGN_REQUEST_STAGE_FINANCIAL_SERVICES_REVIEW]: {\n 'step-back': ['ASSIGNEE_STEP_INCLUDED'],\n 'step-submit': ['ASSIGNEE_STEP_INCLUDED'],\n 'upload-art-files': 'ROLE_FN_PRODUCEIT_POP_DESIGN_FS_REVIEW_1_EDIT'\n },\n [POP_DESIGN_REQUEST_STAGE_TM_REVIEW]: {\n 'step-back': [ASSIGNED_TM],\n 'step-submit': [ASSIGNED_TM],\n 'step-save': [ASSIGNED_TM],\n 'view-designer-name': 'ANY'\n },\n [POP_DESIGN_REQUEST_STAGE_DESIGN_PROCESS]: {\n 'step-submit': [ASSIGNED_DESIGNER],\n 'step-back': [ASSIGNED_DESIGNER],\n 'step-save': [ASSIGNED_DESIGNER]\n },\n [POP_DESIGN_REQUEST_STAGE_TM_REVIEW_2]: {\n 'step-back': [ASSIGNED_TM],\n 'step-submit': [ASSIGNED_TM]\n },\n [POP_DESIGN_REQUEST_STAGE_CREATIVE_DIRECTOR_REVIEW]: {\n 'step-back': 'ROLE_FN_PRODUCEIT_POP_DESIGN_CD_REVIEW_EDIT',\n 'step-cancel': 'ROLE_FN_PRODUCEIT_POP_DESIGN_CD_REVIEW_EDIT',\n 'step-submit': 'ROLE_FN_PRODUCEIT_POP_DESIGN_CD_REVIEW_EDIT'\n },\n [POP_DESIGN_REQUEST_STAGE_FINANCIAL_SERVICES_REVIEW_2]: {\n 'step-back': 'ROLE_FN_PRODUCEIT_POP_DESIGN_FS_REVIEW_2_EDIT',\n 'step-submit': 'ROLE_FN_PRODUCEIT_POP_DESIGN_FS_REVIEW_2_EDIT'\n },\n [POP_DESIGN_REQUEST_STAGE_INT_EXT_CLIENT_PROOF]: {\n 'step-back': REQUEST_DETAILS_REQUESTER,\n 'step-submit': REQUEST_DETAILS_REQUESTER\n },\n [POP_DESIGN_REQUEST_STAGE_TM_REVIEW_3]: {\n 'step-submit': [ASSIGNED_TM],\n 'step-back': [ASSIGNED_TM]\n },\n [POP_DESIGN_REQUEST_STAGE_PREP_ARTIFACTS]: {\n 'step-submit': [POP_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER],\n 'step-save': [POP_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER],\n 'step-back': [POP_DESIGN_REQUEST_ASSIGNED_PREP_ARTIFACT_DESIGNER],\n 'auto-assign': GROUP_FN_PRODUCEIT_DESIGNER,\n 'can-assign-designer': [\n GROUP_FN_PRODUCEIT_POP_DESIGN_TRAFFIC_MANAGER,\n GROUP_FN_PRODUCEIT_DESIGNER,\n ROLE_FN_PRODUCEIT_POP_DESIGN_CD_REVIEW_EDIT,\n GROUP_FN_PRODUCEIT_CREATIVE_DIRECTOR\n ]\n },\n [POP_DESIGN_REQUEST_STAGE_POST_ARTIFACTS]: {\n 'step-close': 'ROLE_FN_PRODUCEIT_POP_DESIGN_TM_EDIT',\n 'step-back': 'ROLE_FN_PRODUCEIT_POP_DESIGN_TM_EDIT'\n },\n DESIGNER: 'DESIGNER',\n DESIGNER_GROUP: 'GROUP_FN_PRODUCEIT_DESIGNER',\n TRAFFIC_MANAGERS: 'GROUP_FN_PRODUCEIT_POP_DESIGN_TRAFFIC_MANAGER',\n TRAFFIC_MANAGER: SpecificRoles.ASSIGNED_TM,\n CREATIVE_DIRECTOR: 'GROUP_FN_PRODUCEIT_CREATIVE_DIRECTOR',\n FINANCE_APPROVER: 'GROUP_FN_PRODUCEIT_POP_DESIGN_FINANCE_APPROVER',\n APPROVAL_MANAGER_ANNOTATE: 'ROLE_FN_PRODUCEIT_POP_DESIGN_NOTATE_VERSION',\n CAN_ASSIGN_TM: 'ROLE_FN_PRODUCEIT_POP_DESIGN_TM_EDIT',\n TM_AUTO_ASSIGN: 'ROLE_FN_PRODUCEIT_POP_DESIGN_TM_EDIT',\n CAN_ASSIGN_DESIGNER: ['GROUP_FN_PRODUCEIT_DESIGNER', GROUP_FN_PRODUCEIT_POP_DESIGN_TRAFFIC_MANAGER],\n DESIGNER_AUTO_ASSIGN: 'GROUP_FN_PRODUCEIT_DESIGNER'\n },\n POP_PRODUCTION_REQUEST: {\n REQUEST_DETAILS: {\n 'step-delete': REQUEST_DETAILS_REQUESTER,\n 'step-save': REQUEST_DETAILS_REQUESTER,\n 'step-submit': REQUEST_DETAILS_REQUESTER\n },\n PRODUCTION_REVIEW: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-cancel': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n PRINTER_QUOTE_REQUEST: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n INTERNAL_REQUESTOR_REVIEW: {\n 'step-back': REQUEST_DETAILS_REQUESTER,\n 'step-submit': REQUEST_DETAILS_REQUESTER\n },\n FINANCE_APPROVAL: {\n 'step-back': 'ROLE_FN_PRODUCEIT_POP_PROD_FIN_APPR_EDIT',\n 'step-approve': 'ROLE_FN_PRODUCEIT_POP_PROD_FIN_APPR_EDIT'\n },\n UPLOAD_ARTWORK: {\n 'step-back': 'ROLE_FN_PRODUCEIT_POP_PROD_UPLD_ART_EDIT',\n 'step-submit': 'ROLE_FN_PRODUCEIT_POP_PROD_UPLD_ART_EDIT'\n },\n PO_SOW: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n PRINTER_PROOF_REQUEST: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-cancel': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n INTERNAL_PRINTER_PROOF_REVIEW: {\n 'step-back': REQUEST_DETAILS_REQUESTER,\n 'step-approve': REQUEST_DETAILS_REQUESTER\n },\n PO_APPROVAL: {\n ENABLED: [SpecificRoles.PPM, 'GROUP_FN_PRODUCEIT_PO_APPROVER_1', 'GROUP_FN_PRODUCEIT_PO_APPROVER_2'],\n },\n PRINT: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-close': 'PRINT_PRODUCTION_MANAGER'\n },\n PRODUCTION_MANAGER: 'GROUP_FN_PRODUCEIT_POP_PRODUCTION_MANAGER',\n TRAFFIC_MANAGER: PermissionGroups.POP_PRODUCTION_TRAFFIC_MANAGER\n },\n FINANCIAL_SERVICES_REQUEST: {\n REQUEST_DETAILS: {\n 'step-delete': REQUEST_DETAILS_REQUESTER,\n 'step-save': REQUEST_DETAILS_REQUESTER,\n 'step-submit': REQUEST_DETAILS_REQUESTER\n },\n FINANCE_APPROVAL: {\n 'step-back': 'ASSIGNEE_STEP_INCLUDED',\n 'step-approve': 'ASSIGNEE_STEP_INCLUDED'\n },\n UPLOAD_ARTWORK: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-cancel': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n PO: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n PO_APPROVAL: {\n ENABLED: [SpecificRoles.PPM, 'GROUP_FN_PRODUCEIT_PO_APPROVER_1', 'GROUP_FN_PRODUCEIT_PO_APPROVER_2'],\n },\n ART_REQUEST_APPROVAL: {\n 'step-back': 'PRODUCT_OWNER',\n 'step-approve': 'PRODUCT_OWNER'\n },\n PRINT: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-close': 'PRINT_PRODUCTION_MANAGER'\n },\n PRODUCTION_MANAGER: 'GROUP_FN_PRODUCEIT_FSR_PRODUCTION_MANAGER'\n },\n BIF_PRODUCTION_REQUEST: {\n REQUEST_DETAILS: {\n 'step-delete': REQUEST_DETAILS_REQUESTER,\n 'step-save': REQUEST_DETAILS_REQUESTER,\n 'step-submit': REQUEST_DETAILS_REQUESTER\n },\n ARTWORK_UPLOAD_AND_COST_QUOTE_CONFIRMATION: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n FINANCE_APPROVAL: {\n 'step-back': 'ASSIGNEE_STEP_INCLUDED',\n 'step-approve': 'ASSIGNEE_STEP_INCLUDED'\n },\n PO: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n PO_APPROVAL: {\n ENABLED: [SpecificRoles.PPM, 'GROUP_FN_PRODUCEIT_PO_APPROVER_1', 'GROUP_FN_PRODUCEIT_PO_APPROVER_2'],\n },\n PRINTER_PROOF_REQUEST: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n INTERNAL_PRINTER_PROOF_REVIEW: {\n 'step-back': REQUEST_DETAILS_REQUESTER,\n 'step-approve': REQUEST_DETAILS_REQUESTER\n },\n PRINT: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-close': 'PRINT_PRODUCTION_MANAGER'\n },\n PRODUCTION_MANAGER: 'GROUP_FN_PRODUCEIT_BIF_PRODUCTION_MANAGER'\n },\n PRODUCTION_REQUEST_3RD_PARTY: {\n REQUEST_DETAILS: {\n 'step-delete': REQUEST_DETAILS_REQUESTER,\n 'step-save': REQUEST_DETAILS_REQUESTER,\n 'step-submit': REQUEST_DETAILS_REQUESTER\n },\n FINANCE_APPROVAL: {\n 'step-back': 'ASSIGNEE_STEP_INCLUDED',\n 'step-approve': 'ASSIGNEE_STEP_INCLUDED'\n },\n UPLOAD_ARTWORK: {\n 'step-back': 'ASSIGNEE_STEP_INCLUDED',\n 'step-cancel': 'ASSIGNEE_STEP_INCLUDED',\n 'step-submit': 'ASSIGNEE_STEP_INCLUDED'\n },\n ART_REQUEST_APPROVAL: {\n 'step-back': 'ASSIGNEE_STEP_INCLUDED',\n 'step-approve': 'ASSIGNEE_STEP_INCLUDED'\n },\n PO_SOW_TPS: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n COMMITTEE_APPROVAL: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-approve': 'PRINT_PRODUCTION_MANAGER'\n },\n PO_APPROVAL: {\n ENABLED: [SpecificRoles.PPM, 'GROUP_FN_PRODUCEIT_PO_APPROVER_1', 'GROUP_FN_PRODUCEIT_PO_APPROVER_2'],\n },\n CONFIRM_PRINTER: {\n 'step-back': 'PRODUCT_OWNER',\n 'step-submit': 'PRODUCT_OWNER'\n },\n INTERNAL_EXTERNAL_OPERATIONS: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-save': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n IN_PRODUCTION: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-close': 'PRINT_PRODUCTION_MANAGER'\n },\n PRODUCTION_MANAGER: 'GROUP_FN_PRODUCEIT_3RD_PARTY_CARD_PRODUCTION_MANAGER',\n TRAFFIC_MANAGER: PermissionGroups['3RD_PARTY_PRODUCTION_TRAFFIC_MANAGER']\n },\n IH_PRODUCTION_REQUEST: {\n REQUEST_DETAILS: {\n 'step-delete': REQUEST_DETAILS_REQUESTER,\n 'step-save': REQUEST_DETAILS_REQUESTER,\n 'step-submit': REQUEST_DETAILS_REQUESTER\n },\n ARTWORK_UPLOAD_AND_COST_QUOTE_CONFIRMATION: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-cancel': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n INTERNAL_REQUESTOR_REVIEW: {\n 'step-back': REQUEST_DETAILS_REQUESTER,\n 'step-approve': REQUEST_DETAILS_REQUESTER\n },\n PO: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n PO_APPROVAL: {\n ENABLED: [SpecificRoles.PPM, 'GROUP_FN_PRODUCEIT_PO_APPROVER_1', 'GROUP_FN_PRODUCEIT_PO_APPROVER_2'],\n },\n IH_QUOTE_PROCESS: {\n 'step-back': REQUEST_DETAILS_REQUESTER,\n 'step-submit': REQUEST_DETAILS_REQUESTER\n },\n PRINTER_PROOF_REQUEST: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-submit': 'PRINT_PRODUCTION_MANAGER'\n },\n INTERNAL_PRINTER_PROOF_REVIEW: {\n 'step-back': REQUEST_DETAILS_REQUESTER,\n 'step-approve': REQUEST_DETAILS_REQUESTER\n },\n PRINT: {\n 'step-back': 'PRINT_PRODUCTION_MANAGER',\n 'step-close': 'PRINT_PRODUCTION_MANAGER'\n },\n PRODUCTION_MANAGER: 'GROUP_FN_PRODUCEIT_IHA_PRODUCTION_MANAGER'\n },\n IMAGE_REQUEST: {\n REQUEST_DETAILS: {\n 'step-delete': REQUEST_DETAILS_REQUESTER,\n 'step-save': REQUEST_DETAILS_REQUESTER,\n 'step-submit': REQUEST_DETAILS_REQUESTER\n },\n TM_REVIEW: {\n 'step-back': [ASSIGNED_TM],\n 'step-submit': [ASSIGNED_TM],\n 'view-designer-name': 'ANY'\n },\n DESIGN_PROCESS: {\n 'step-submit': [ASSIGNED_DESIGNER],\n 'step-back': [ASSIGNED_DESIGNER],\n 'step-save': [ASSIGNED_DESIGNER]\n },\n TM_REVIEW_2: {\n 'step-back': [ASSIGNED_TM],\n 'step-close': [ASSIGNED_TM],\n 'view-designer-name': 'ANY'\n },\n TRAFFIC_MANAGERS: 'GROUP_FN_PRODUCEIT_IMAGE_TRAFFIC_MANAGER',\n TRAFFIC_MANAGER: SpecificRoles.ASSIGNED_TM,\n CAN_ASSIGN_TM: 'ROLE_FN_PRODUCEIT_IMAGE_TM_EDIT',\n TM_AUTO_ASSIGN: 'ROLE_FN_PRODUCEIT_IMAGE_TM_EDIT',\n CAN_ASSIGN_DESIGNER: ['GROUP_FN_PRODUCEIT_DESIGNER', 'GROUP_FN_PRODUCEIT_IMAGE_TRAFFIC_MANAGER'],\n DESIGNER_AUTO_ASSIGN: 'GROUP_FN_PRODUCEIT_DESIGNER'\n },\n REPORTS: {\n PO_REPORT_ROLE: 'ROLE_FN_PRODUCEIT_PO_REPORT', // 'GROUP_FN_PRODUCEIT_POP_PRODUCTION_MANAGER'\n SIGNED_PO_REPORT_ROLE: 'ROLE_FN_PRODUCEIT_PO_REPORT', // 'GROUP_FN_PRODUCEIT_POP_PRODUCTION_MANAGER'\n TRAFFIC_TRACKER_ROLE: 'ROLE_FN_PRODUCEIT_TRAFFIC_TRACKER_REPORT' // 'FN_PRODUCEIT_TRAFFIC_TRACKER_REPORT_USER'\n },\n APP: {\n MIMIC_USER: 'ROLE_FN_PRODUCEIT_MIMIC_USER',\n ADMIN: PermissionGroups.ADMIN,\n SUPER_USER: PermissionGroups.SUPER_USER,\n APPROVER: ['GROUP_FN_PRODUCEIT_PO_APPROVER_1', 'GROUP_FN_PRODUCEIT_PO_APPROVER_2'],\n CREATE_REQUEST: ['ROLE_FN_PRODUCEIT_REQUEST_CREATE']\n },\n PO_APPROVAL: {\n STAGE_ONE_APPROVER: ['GROUP_FN_PRODUCEIT_PO_APPROVER_1'],\n STAGE_TWO_APPROVER: ['GROUP_FN_PRODUCEIT_PO_APPROVER_2']\n },\n ALLOWED_PRINT_FINANCE_PO: [\n 'GROUP_FN_PRODUCEIT_FINANCE_APPROVER_REBILL',\n 'GROUP_FN_PRODUCEIT_FINANCE_APPROVER_PREPAID',\n 'GROUP_FN_PRODUCEIT_FINANCE_APPROVER_INCOMM_PAYS',\n 'GROUP_FN_PRODUCEIT_POP_PRODUCTION_FINANCE_APPROVER',\n 'GROUP_FN_PRODUCEIT_PO_REPORT_USER',\n 'GROUP_FN_PRODUCEIT_PO_APPROVER_1',\n 'GROUP_FN_PRODUCEIT_PO_APPROVER_2'\n ],\n SETTINGS: {\n EMAIL: GROUP_FN_PRODUCEIT_3RD_PARTY_CARD_PRODUCTION_MANAGER\n }\n};\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\n// @ts-ignore\nimport AutoNumeric from 'autonumeric';\nimport {AutonumericDefaults} from '@angularfy/autonumeric';\nexport const AUTONUMERIC_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AutonumericDirective),\n multi: true\n};\n\nexport type AutonumericUpdateTriggerEventType = 'raw' | 'change';\n\n@Directive({\n selector: '[appAutonumeric]',\n providers: [AUTONUMERIC_CONTROL_VALUE_ACCESSOR],\n // tslint:disable-next-line:use-host-property-decorator no-host-metadata-property\n host: { '(blur)': 'onTouchedFn()' },\n})\nexport class AutonumericDirective implements OnInit, AfterViewInit, OnChanges, OnDestroy, ControlValueAccessor {\n\n /* Defines the strategy to apply when options change.\n * reset will drop any previous options\n * update will change old values one by one but keep those that are not mentioned in the new options\n */\n @Input() strategy: 'reset' | 'update' = 'reset';\n\n @Input() options: any;\n @Input() predefined: string;\n\n instance: AutoNumeric;\n private isDisabled = false;\n // tslint:disable-next-line:no-unused-variable\n private initialValue: any;\n unsubscribeFormat: () => void;\n unsubscribeRawValueModified: () => void;\n @Output()\n formatted = new EventEmitter();\n @Output()\n rawValueModified = new EventEmitter();\n onChangeFn: (value: any) => void = () => {};\n @Input() autonumericUpdateTriggerEventType: AutonumericUpdateTriggerEventType = 'raw';\n\n onTouchedFn = () => {};\n\n constructor(\n private elm: ElementRef,\n private defaults: AutonumericDefaults,\n private renderer: Renderer2,\n ) {}\n\n ngOnInit(): void {\n this.instance = new AutoNumeric(\n this.elm.nativeElement,\n this.getOptions() as any\n );\n }\n\n private normalize(options: any) {\n const normalized = {};\n Object.keys((AutoNumeric as any).options).forEach(key => {\n if (typeof options[key] === 'undefined') {\n normalized[key] = (this.defaults as any)[key];\n } else {\n normalized[key] = options[key];\n }\n });\n return normalized;\n }\n\n ngAfterViewInit(): void {\n this.setDisabledState(this.isDisabled);\n this.unsubscribeFormat = this.renderer.listen(this.elm.nativeElement, 'autoNumeric:formatted', ($event) => {\n this.formatted.emit($event);\n });\n this.unsubscribeRawValueModified = this.renderer.listen(this.elm.nativeElement, 'autoNumeric:rawValueModified', ($event) => {\n if(this.autonumericUpdateTriggerEventType === 'raw') {\n this.onChangeFn($event.detail.newRawValue);\n }\n this.rawValueModified.emit($event);\n });\n this.unsubscribeRawValueModified = this.renderer.listen(this.elm.nativeElement, 'change', ($event) => {\n if(this.autonumericUpdateTriggerEventType === 'change') {\n this.onChangeFn(this.instance.getFormatted());\n }\n });\n}\n\n private getOptions() {\n if (this.options === undefined && this.predefined === undefined) {\n return this.defaults;\n }\n if (this.options !== undefined && this.predefined !== undefined) {\n throw new Error('predefined attribute could not be combined with options. Please use either predefined or options');\n }\n if (this.options !== undefined) {\n return this.normalize(this.options);\n }\n const predefined = AutoNumeric.getPredefinedOptions()[this.predefined];\n return this.normalize(predefined);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.instance) {\n return;\n }\n if (changes.options || changes.predefined) {\n if (this.strategy === 'reset') {\n (this.instance as any).options.reset();\n }\n this.instance.update(this.getOptions());\n }\n }\n\n ngOnDestroy(): void {\n if(this.unsubscribeFormat){\n this.unsubscribeFormat();\n }\n if(this.unsubscribeRawValueModified) {\n this.unsubscribeRawValueModified();\n }\n try {\n this.instance.remove(); // remove listeners\n } catch (e) {\n }\n }\n\n writeValue(value: any): void {\n if (this.instance) {\n this.instance.set(value);\n } else {\n // autonumeric hasn't been initialised yet, store the value for later use\n this.initialValue = value;\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n if (this.instance) {\n if (this.isDisabled) {\n this.renderer.setProperty((this.instance as any).domElement, 'disabled', 'disabled');\n } else {\n this.renderer.removeAttribute((this.instance as any).domElement, 'disabled');\n }\n }\n }\n}\n","import {Directive, ElementRef, EventEmitter, OnDestroy, OnInit, Output, Renderer2} from '@angular/core';\n\n/**\n * Prevents click if selection has been started\n *\n * @example ```html\n *
Some selectable content
\n * ```\n */\n@Directive({\n // tslint:disable-next-line: directive-selector\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[click.no-selection]'\n})\nexport class ClickNoSelectionDirective implements OnInit, OnDestroy {\n private subscription: () => void;\n @Output('click.no-selection') public clickNoSelection = new EventEmitter();\n\n constructor(private renderer: Renderer2, private element: ElementRef) {}\n\n ngOnInit() {\n this.subscription = this.renderer.listen(this.element.nativeElement, 'click', event => {\n const selection = window.getSelection();\n\n if (selection.type !== 'Range' || selection.toString().length === 0) {\n this.clickNoSelection.emit(event);\n }\n });\n }\n\n ngOnDestroy() {\n this.subscription();\n }\n}\n","import {Directive, ElementRef, EventEmitter, OnDestroy, OnInit, Output, Renderer2} from '@angular/core';\n\n/**\n * Prevents click if selection has been started\n *\n * @example ```html\n *
Some selectable content
\n * ```\n */\n@Directive({\n // tslint:disable-next-line: directive-selector\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[click.stop-propagation]'\n})\nexport class ClickStopPropagationDirective implements OnInit, OnDestroy {\n private subscription: () => void;\n @Output('click.stop-propagation') public propagationStopped = new EventEmitter();\n\n constructor(private renderer: Renderer2, private element: ElementRef) {}\n\n ngOnInit(): void {\n this.subscription = this.renderer.listen(this.element.nativeElement, 'click', event => {\n event.stopPropagation();\n this.propagationStopped.next(event);\n });\n }\n\n ngOnDestroy(): void {\n this.subscription();\n }\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n/**\n *\n */\n@Directive({\n // tslint:disable-next-line: directive-selector\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[appCustomHint]'\n})\nexport class CustomHintDirective {\n @Input() hintClass = 'hint d-flex';\n @Input() showDefaultIcon = true;\n constructor(public templateRef: TemplateRef) {}\n}\n","import {\n Directive,\n Output,\n EventEmitter,\n HostBinding,\n HostListener\n} from '@angular/core';\n\n@Directive({\n selector: '[appDnd]'\n})\nexport class DndDirective {\n @HostBinding('class.fileover') fileOver: boolean;\n @Output() fileDropped = new EventEmitter();\n\n // Dragover listener\n @HostListener('dragover', ['$event']) onDragOver(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n this.fileOver = true;\n }\n\n // Dragleave listener\n @HostListener('dragleave', ['$event']) public onDragLeave(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n this.fileOver = false;\n }\n\n // Drop listener\n @HostListener('drop', ['$event']) public ondrop(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n this.fileOver = false;\n const files = evt.dataTransfer.files;\n if (files.length > 0) {\n this.fileDropped.emit(files);\n }\n }\n}\n","import {Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2, RendererStyleFlags2} from '@angular/core';\n\n/**\n * Prevents click if selection has been started\n *\n * @example ```html\n *
Some selectable content
\n * ```\n */\n@Directive({\n // tslint:disable-next-line: directive-selector\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[easyAria]'\n})\nexport class EasyAriaDirective implements OnInit, OnDestroy {\n @Input('easyAria') label: string;\n @Input() clickable: string;\n private removeListener: () => void;\n constructor(private renderer: Renderer2, private element: ElementRef) {}\n\n ngOnInit() {\n this.renderer.setAttribute(this.element.nativeElement, 'aria-label', this.label);\n if (this.element.nativeElement.tagName !== 'BUTTON') {\n this.renderer.setAttribute(this.element.nativeElement, 'tabindex', '0');\n this.renderer.setStyle(this.element.nativeElement, 'outline', 'none', RendererStyleFlags2.Important);\n }\n this.removeListener = this.renderer.listen(this.element.nativeElement, 'keydown', event => {\n if (event.key === ' ') {\n this.element.nativeElement.dispatchEvent(new Event('click'));\n event.preventDefault();\n }\n });\n }\n\n ngOnDestroy() {\n this.removeListener();\n }\n}\n","import {Directive, ElementRef, HostListener, Input, OnDestroy, Renderer2, TemplateRef, ViewContainerRef} from '@angular/core';\n\n@Directive({\n selector: '[appTooltip]'\n})\nexport class TooltipDirective implements OnDestroy {\n @Input() tooltipText: string;\n @Input() position: string;\n @Input() customClass = '';\n @Input() template: TemplateRef;\n @Input() context: any;\n @Input() isFixed = false;\n\n private tooltip: HTMLElement;\n private longTextTooltip: boolean;\n private offset = 8;\n\n constructor(private el: ElementRef, private renderer: Renderer2, private viewContainerRef: ViewContainerRef) {}\n\n ngOnDestroy(): void {\n this.hide();\n }\n\n @HostListener('mouseenter') onMouseEnter() {\n if (!this.tooltip) {\n this.show();\n }\n }\n\n @HostListener('mouseleave') onMouseLeave() {\n if (this.tooltip) {\n this.hide();\n }\n }\n\n show() {\n this.create();\n this.setPosition();\n this.renderer.addClass(this.tooltip, 'ng-tooltip-show');\n }\n\n hide() {\n if (this.tooltip) {\n this.renderer.removeClass(this.tooltip, 'ng-tooltip-show');\n this.renderer.removeChild(document.body, this.tooltip);\n this.tooltip = null;\n }\n }\n\n create() {\n let tooltipContent;\n this.tooltip = this.renderer.createElement('span');\n\n if (this.tooltipText) {\n tooltipContent = this.renderer.createText(this.tooltipText);\n }\n\n if (this.template) {\n const ref = this.viewContainerRef.createEmbeddedView(this.template, this.context);\n tooltipContent = ref.rootNodes[0];\n ref.detectChanges();\n tooltipContent.remove();\n }\n\n this.renderer.appendChild(this.tooltip, tooltipContent);\n\n this.renderer.appendChild(document.body, this.tooltip);\n\n this.renderer.addClass(this.tooltip, 'ng-tooltip');\n this.renderer.addClass(this.tooltip, `ng-tooltip-${this.position}`);\n if (this.customClass) {\n this.renderer.addClass(this.tooltip, this.customClass);\n }\n\n if (this.tooltip.offsetWidth === 305) {\n this.longTextTooltip = true;\n this.renderer.addClass(this.tooltip, 'long-text-tooltip');\n }\n }\n\n setPosition() {\n const hostPos = this.el.nativeElement.getBoundingClientRect();\n\n const tooltipPos = this.tooltip.getBoundingClientRect();\n\n const scrollPos = this.isFixed ? 0 : window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n\n let top;\n let left;\n\n if (this.position === 'top') {\n top = hostPos.top - tooltipPos.height - this.offset;\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\n }\n\n if (this.position === 'bottom') {\n top = hostPos.bottom + this.offset;\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\n }\n\n if (this.position === 'left') {\n top = this.longTextTooltip ? hostPos.top - hostPos.height : hostPos.top - hostPos.height + this.offset;\n left = hostPos.left - tooltipPos.width - this.offset;\n }\n\n if (this.position === 'right') {\n top = this.longTextTooltip ? hostPos.top - hostPos.height : hostPos.top - hostPos.height + this.offset;\n left = hostPos.right + this.offset;\n }\n\n this.renderer.setStyle(this.tooltip, 'top', `${top + scrollPos}px`);\n this.renderer.setStyle(this.tooltip, 'left', `${left}px`);\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n EmbeddedViewRef,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\nimport {combineLatest, EMPTY, merge, Observable, of, ReplaySubject, Subject} from 'rxjs';\nimport {exhaustMap, map, takeUntil, tap, shareReplay} from 'rxjs/operators';\n\nimport {AbstractRoleUpdateAwareProvider} from '../../requests/classes/role-update-aware-provider';\nimport {UserPermissionsService} from '../services/user-permissions.service';\nimport {EventEmitter} from '@angular/core';\n\n/**\n * @usageNotes\n *\n * To remove from template a component inaccessible due to permissions use directive\n * on ng-template component\n * @example\n * \n *
...
\n *
...
\n *
\n * ```\n * Content of ng-template will not be rendered\n */\n\n@Directive({\n selector: '[appUserPermissionsV2]',\n exportAs: 'appUserPermissionsV2'\n})\nexport class UserPermissionsV2Directive implements OnInit, OnDestroy {\n public isAllowed: boolean;\n\n private userPermissionsSubject = new ReplaySubject(1);\n private ngUnsubscribe = new Subject();\n\n private roleUpdates$: Observable;\n isAllowed$: Observable;\n\n constructor(\n private viewContainer: ViewContainerRef,\n private userPermissionsService: UserPermissionsService,\n private cd: ChangeDetectorRef,\n @Optional() private roleProvider: AbstractRoleUpdateAwareProvider,\n @Optional() private templateRef?: TemplateRef\n ) {\n this.roleUpdates$ = combineLatest([\n this.userPermissionsSubject.asObservable(),\n merge(of(null), this.roleProvider?.roleUpdates$ || EMPTY)\n ]).pipe(\n map(([roles]) => roles),\n takeUntil(this.ngUnsubscribe)\n );\n\n this.isAllowed$ = merge(\n of(false),\n this.roleUpdates$.pipe(\n exhaustMap(permission => (permission ? this.userPermissionsService.isActionAvailable(permission, this.roleProvider) : of(true))),\n tap(() => {\n this.cd.detectChanges();\n }),\n shareReplay({\n bufferSize: 1,\n refCount: true\n })\n )\n ).pipe(takeUntil(this.ngUnsubscribe));\n }\n\n @Input('appUserPermissionsV2') set appUserPermissions(permission: string | string[]) {\n const arrayPermission = [permission].flat();\n this.userPermissionsSubject.next(arrayPermission);\n }\n\n @Output() allowedChanged = new EventEmitter(true);\n private currentEmbeddedView: EmbeddedViewRef;\n\n ngOnInit() {\n this.isAllowed$.pipe(takeUntil(this.ngUnsubscribe)).subscribe({\n next: isAllowed => {\n if (this.templateRef) {\n this.updateContainerRef(isAllowed);\n }\n this.allowedChanged.emit(isAllowed);\n },\n complete() {\n if (this.templateRef) {\n this.viewContainer.clear();\n this.currentEmbeddedView = null;\n }\n }\n });\n }\n\n private async updateContainerRef(isAllowed) {\n if (isAllowed) {\n if (this.templateRef && !this.currentEmbeddedView) {\n this.currentEmbeddedView = this.viewContainer.createEmbeddedView(this.templateRef);\n }\n this.isAllowed = true;\n } else {\n if (this.templateRef) {\n this.viewContainer.clear();\n this.currentEmbeddedView = null;\n }\n this.isAllowed = false;\n }\n this.cd.markForCheck();\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n}\n","import {Directive, Input, TemplateRef, ViewContainerRef, OnInit, Optional, OnDestroy, ChangeDetectorRef} from '@angular/core';\nimport {ReplaySubject, Subject} from 'rxjs';\nimport {UserPermissionsService} from '../services/user-permissions.service';\nimport { takeUntil} from 'rxjs/operators';\nimport {AbstractRoleProvider} from '../../requests/classes/role-provider';\n\n/**\n * @usageNotes\n *\n * Use exportsAs and isAllowed properties of this directive to disable component\n * @example\n * ```\n *
\n * \n *
\n *\n * To remove from template a component inaccessible due to permissions use directive\n * on ng-template component\n * @example\n * \n *
...
\n *
...
\n *
\n * ```\n * Content of ng-template will not be rendered\n */\n\n@Directive({\n selector: '[appUserPermissions]',\n exportAs: 'appUserPermissions'\n})\nexport class UserPermissionsDirective implements OnInit, OnDestroy {\n public isAllowed: boolean;\n\n private userPermissionsSubject = new ReplaySubject(1);\n private ngUnsubscribe = new Subject();\n\n constructor(private viewContainer: ViewContainerRef,\n private userPermissionsService: UserPermissionsService,\n private cd: ChangeDetectorRef,\n @Optional() private roleProvider: AbstractRoleProvider,\n @Optional() private templateRef?: TemplateRef,\n ) {\n }\n\n @Input() set appUserPermissions(permission: string | string[]) {\n const arrayPermission = [permission].flat();\n this.userPermissionsSubject.next(arrayPermission);\n }\n\n ngOnInit() {\n this.userPermissionsSubject\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((permission) => this.checkUserPermissions(permission));\n }\n\n private async checkUserPermissions(permission: string | Array) {\n const isAllowed = await this.userPermissionsService.isActionAvailable(permission, this.roleProvider);\n\n if (isAllowed) {\n if (this.templateRef) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n }\n this.isAllowed = true;\n } else {\n if (this.templateRef) {\n this.viewContainer.clear();\n }\n this.isAllowed = false;\n }\n this.cd.markForCheck();\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n}\n","import {Injectable} from '@angular/core';\nimport {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree} from '@angular/router';\nimport {Observable, of} from 'rxjs';\nimport {UserService} from '../services/user.service';\nimport {catchError, map, tap} from 'rxjs/operators';\nimport {StateProviderService} from '../services/state-provider.service';\nimport {UserPermissionsService} from '../services/user-permissions.service';\nimport {ERRORS, PAGES_CONFIG} from '../constants/pages.constants';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { PitMsalService } from '../services/pit-msal.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuard implements CanActivate {\n constructor(\n public router: Router,\n private userService: UserService,\n private pitMsalService: PitMsalService,\n private stateProviderService: StateProviderService,\n private userPermissionService: UserPermissionsService\n ) {}\n\n canActivate(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable | Promise | boolean | UrlTree {\n if (this.userService.isLoggedInProduceit()) {\n return true;\n }\n return this.userService.login().pipe(\n map((userGroupRoles: string[]) => {\n this.userService.setLoggedInProduceit(true);\n this.userPermissionService.setUserRoles(userGroupRoles);\n return true;\n }),\n tap(() => {\n this.userService.updateUserDetails();\n }),\n catchError(err => {\n if(err instanceof HttpErrorResponse) {\n // 500 status is not included into the condition because it may point to an isolated BE error\n if(err.status > 500 || err.status === 0) {\n this.stateProviderService.putParam('error', ERRORS.serviceUnavailable);\n this.stateProviderService.putParam('original', state);\n\n this.router.navigate([PAGES_CONFIG.ERROR]);\n return of(false);\n }\n // 400 status when user logins with invalid credentials/token/header\n if(err.status === 400) {\n this.userService.resetUser();\n this.pitMsalService.logout();\n return of(false);\n }\n }\n this.stateProviderService.putParam('user', this.userService.getCurrentUserName());\n this.router.navigate([PAGES_CONFIG.ERROR_AUTH]);\n return of(false);\n })\n );\n }\n}\n","import {Injectable} from '@angular/core';\nimport {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree} from '@angular/router';\nimport {Observable, of} from 'rxjs';\nimport {map, catchError} from 'rxjs/operators';\n\nimport {PitTranslateLoader} from '../services/pit-translate-loader.service';\nimport {StateProviderService} from '../services/state-provider.service';\nimport { ERRORS } from '../constants/pages.constants';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TranslationLoadedGuard implements CanActivate {\n constructor(public router: Router, private pitTranslateLoader: PitTranslateLoader, private stateProviderService: StateProviderService) {}\n\n canActivate(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable | Promise | boolean | UrlTree {\n return this.pitTranslateLoader.translationLoaded$.pipe(\n map(() => true),\n catchError(() => {\n this.stateProviderService.putParam('error', ERRORS.translationLoadError);\n return of(this.router.createUrlTree(['/error']));\n })\n );\n }\n}\n","import {UserService} from '../services/user.service';\nimport {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {Injectable} from '@angular/core';\n\n@Injectable()\nexport class UsernameHeaderInterceptor implements HttpInterceptor {\n\n constructor(public userService: UserService) {}\n\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\n\n if (this.userService.getCurrentUserName()) {\n request = request.clone({\n setHeaders: {\n username: this.userService.getCurrentUserName() ?\n encodeURIComponent(this.userService.getCurrentUserName()) :\n this.userService.getCurrentUserName()\n }\n });\n }\n return next.handle(request);\n }\n}\n","export interface RestrictionOptionsObject {\n fileType?: string;\n fileSize?: FileSizeRestriction;\n}\n\nexport interface FileSizeRestriction {\n sizeNumber: number;\n sizeType: string;\n}\n\nexport interface FileSizeRestrictions {\n GLOBAL: FileSizeRestriction;\n CARD_PRODUCTION: {\n ARTWORK: FileSizeRestriction;\n ASN: FileSizeRestriction;\n PROOF_OF_PAYMENT: FileSizeRestriction;\n EXTERNAL_PIN: FileSizeRestriction;\n PO_SOW: FileSizeRestriction;\n };\n CARD_DESIGN: {\n ART: FileSizeRestriction;\n ARTWORK: FileSizeRestriction;\n };\n POP_DESIGN: {\n ART: FileSizeRestriction;\n ARTWORK: FileSizeRestriction;\n FS_FILE: FileSizeRestriction;\n };\n POP_PRODUCTION: {\n ARTWORK: FileSizeRestriction;\n ASN: FileSizeRestriction;\n OTHER: FileSizeRestriction;\n PARTNER_ART: FileSizeRestriction;\n PRINTER_PROOF: FileSizeRestriction;\n PRINTER_QUOTE: FileSizeRestriction;\n };\n FINANCIAL_SERVICES: {\n ARTWORK: FileSizeRestriction;\n ASN: FileSizeRestriction;\n FINANCE: FileSizeRestriction;\n };\n BIF_PRODUCTION: {\n ARTWORK: FileSizeRestriction;\n PRINTER_PROOF: FileSizeRestriction;\n ASN: FileSizeRestriction;\n };\n THIRD_PARTY_PRODUCTION: {\n FINANCE: FileSizeRestriction;\n ARTWORK: FileSizeRestriction;\n OPS: FileSizeRestriction;\n ASN: FileSizeRestriction;\n EXTERNAL_PIN: FileSizeRestriction;\n };\n IMAGE: {\n ART_FILE: FileSizeRestriction;\n };\n IH_PRODUCTION: {\n ARTWORK: FileSizeRestriction;\n PRINTER_PROOF: FileSizeRestriction;\n };\n}\n\nconst DEFAULT_FILE_SIZE_RESTRICTION: FileSizeRestriction = {\n sizeNumber: 50,\n sizeType: 'MB'\n};\n\nexport const FILE_SIZE_RESTRICTIONS: FileSizeRestrictions = {\n GLOBAL: DEFAULT_FILE_SIZE_RESTRICTION,\n CARD_PRODUCTION: {\n ARTWORK: DEFAULT_FILE_SIZE_RESTRICTION,\n ASN: DEFAULT_FILE_SIZE_RESTRICTION,\n PROOF_OF_PAYMENT: DEFAULT_FILE_SIZE_RESTRICTION,\n EXTERNAL_PIN: DEFAULT_FILE_SIZE_RESTRICTION,\n PO_SOW: DEFAULT_FILE_SIZE_RESTRICTION,\n },\n CARD_DESIGN: {\n ART: DEFAULT_FILE_SIZE_RESTRICTION,\n ARTWORK: DEFAULT_FILE_SIZE_RESTRICTION,\n },\n POP_DESIGN: {\n ART: DEFAULT_FILE_SIZE_RESTRICTION,\n ARTWORK: DEFAULT_FILE_SIZE_RESTRICTION,\n FS_FILE: DEFAULT_FILE_SIZE_RESTRICTION,\n },\n POP_PRODUCTION: {\n ARTWORK: DEFAULT_FILE_SIZE_RESTRICTION,\n ASN: DEFAULT_FILE_SIZE_RESTRICTION,\n OTHER: DEFAULT_FILE_SIZE_RESTRICTION,\n PARTNER_ART: DEFAULT_FILE_SIZE_RESTRICTION,\n PRINTER_PROOF: DEFAULT_FILE_SIZE_RESTRICTION,\n PRINTER_QUOTE: DEFAULT_FILE_SIZE_RESTRICTION,\n },\n FINANCIAL_SERVICES: {\n ARTWORK: DEFAULT_FILE_SIZE_RESTRICTION,\n ASN: DEFAULT_FILE_SIZE_RESTRICTION,\n FINANCE: DEFAULT_FILE_SIZE_RESTRICTION,\n },\n BIF_PRODUCTION: {\n ARTWORK: DEFAULT_FILE_SIZE_RESTRICTION,\n PRINTER_PROOF: DEFAULT_FILE_SIZE_RESTRICTION,\n ASN: DEFAULT_FILE_SIZE_RESTRICTION,\n },\n THIRD_PARTY_PRODUCTION: {\n FINANCE: DEFAULT_FILE_SIZE_RESTRICTION,\n ARTWORK: DEFAULT_FILE_SIZE_RESTRICTION,\n OPS: DEFAULT_FILE_SIZE_RESTRICTION,\n ASN: DEFAULT_FILE_SIZE_RESTRICTION,\n EXTERNAL_PIN: DEFAULT_FILE_SIZE_RESTRICTION,\n },\n IMAGE: {\n ART_FILE: DEFAULT_FILE_SIZE_RESTRICTION,\n },\n IH_PRODUCTION: {\n ARTWORK: DEFAULT_FILE_SIZE_RESTRICTION,\n PRINTER_PROOF: DEFAULT_FILE_SIZE_RESTRICTION,\n }\n};\n","import { UserSettings } from './user-settings.model';\n\nexport interface UserModel {\n firstName: string;\n userName: string;\n lastName: string;\n mdmId?: number;\n middleName?: string;\n incomm?: boolean;\n groups?: string[];\n}\n\n/**\n * Model, descripting current logged in user\n */\nexport interface SystemUserModel {\n userName: string;\n firstName: string;\n lastName: string;\n substitutedUsers: string[];\n settings: UserSettings;\n}\n\nexport enum UserTheme {\n 'LIGHT' = 'LIGHT',\n 'DARK' = 'DARK',\n}\n","import {DatePipe} from '@angular/common';\nimport {Inject, LOCALE_ID, Pipe, PipeTransform} from '@angular/core';\n// eslint-disable-next-line no-restricted-syntax\nimport * as moment from 'moment-timezone';\n\n@Pipe({\n name: 'date',\n})\nexport class DatePipeTz extends DatePipe implements PipeTransform {\n constructor(@Inject(LOCALE_ID) locale: string) {\n super(locale);\n }\n transform(value: any, format?: string, timezone: string = 'America/New_York', locale?: string): any {\n return super.transform(value, format, timezone !== null ? moment.tz(value, timezone).format('z') : undefined, locale);\n }\n}\n","import { DatePipe } from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {DatePipeTz} from './date-pipe-tz.pipe';\nimport {JoinPipe} from './join.pipe';\nimport {ToSelectSearchDropdownOptions} from './to-select-search-dropdown-options.pipe';\n\n@NgModule({\n declarations: [DatePipeTz, JoinPipe, ToSelectSearchDropdownOptions],\n exports: [DatePipeTz, JoinPipe, ToSelectSearchDropdownOptions],\n providers: [\n {\n provide: DatePipe,\n useClass: DatePipeTz\n },\n {\n provide: ToSelectSearchDropdownOptions,\n useClass: ToSelectSearchDropdownOptions\n }\n ]\n})\nexport class CommonDirectivesModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'join'\n})\nexport class JoinPipe implements PipeTransform {\n\n transform(value: Array, separator = '_'): string {\n return value.filter(i => i != null).join(separator);\n }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport get from 'lodash/get';\n\ntype LabelGeneratorFn = (...args: any[]) => string;\ntype ExtrasGeneratorFn = (...args: any[]) => string[];\ntype LabelFieldInput = string | LabelGeneratorFn;\ntype SearchExtrasFieldInput = string | ExtrasGeneratorFn;\n@Pipe({\n name: 'toSelectDropdownOptions',\n pure: true\n})\nexport class ToSelectSearchDropdownOptions implements PipeTransform {\n public getLabel = (item: any, labelField: LabelFieldInput): string => {\n switch (true) {\n case item == null:\n return item;\n case typeof labelField === 'string':\n return get(item, labelField as string);\n case labelField instanceof Function:\n const itemLabel = labelField as (item: any) => string;\n return itemLabel(item);\n }\n return item;\n };\n\n public getValue = (item: any, valueField: LabelFieldInput): any => {\n switch (true) {\n case item == null:\n return null;\n case valueField === null:\n return item;\n case typeof valueField === 'string':\n return get(item, valueField as string);\n case valueField instanceof Function:\n const itemValue = valueField as (item: any) => string;\n return itemValue(item);\n }\n return item;\n };\n public getExtras = (item: any, extrasField: SearchExtrasFieldInput): string[] => {\n switch (true) {\n case item == null:\n return [];\n case typeof extrasField === 'string':\n return [get(item, extrasField as string)].flat();\n case extrasField instanceof Function:\n const itemExtras = extrasField as (item: any) => string[];\n return itemExtras(item);\n }\n return null;\n };\n\n private flatternOptions(items: {level: number; children: any[]}[], level = 0, parent: any = null) {\n return items.flatMap(item => [[item, level, parent], ...('children' in item ? this.flatternOptions(item.children, level + 1, item) : [])]);\n }\n\n transform(\n options: any[],\n valueField: string = 'code',\n labelFieldInput: LabelFieldInput = 'name',\n createLabelFromValue = false,\n extrasField: SearchExtrasFieldInput = null\n ): {label: string; value: any}[] {\n if(!options) {\n return [];\n }\n const flatternedItems = this.flatternOptions(options);\n\n return flatternedItems\n .map(([option, level, parent]) => {\n const value = this.getValue(option, valueField);\n const label = this.getLabel(createLabelFromValue ? value : option, labelFieldInput);\n const extras = this.getExtras(extrasField ? value : option, extrasField);\n return {\n label,\n value,\n option,\n parent,\n level,\n extras\n };\n })\n .map((option, optionIndex, list) => {\n option.parent = option.parent ? list.find(o => o.option === option.parent) : null;\n return option;\n });\n }\n}\n","export enum errorCodes {\n FORBIDDEN = 403,\n NOT_FOUND = 404,\n}\n","import {Injectable} from '@angular/core';\r\nimport {HttpClient, HttpErrorResponse} from '@angular/common/http';\r\nimport {MessageService} from './message-service.service';\r\nimport {catchError} from 'rxjs/operators';\r\nimport {Observable, throwError} from 'rxjs';\r\nimport {Router} from '@angular/router';\r\nimport {ERRORS, PAGES_CONFIG} from '../constants/pages.constants';\r\nimport {StateProviderService} from './state-provider.service';\r\nimport {errorCodes} from '../constants/error-code.constants';\r\n\r\ntype ErrorOptions = {\r\n duration?: number;\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ErrorHandlingHttpClient {\r\n constructor(\r\n private http: HttpClient,\r\n private messageService: MessageService,\r\n private stateProviderService: StateProviderService,\r\n private router: Router\r\n ) {}\r\n\r\n public post(url: string, body: any | null, options?: unknown, errorOptions?: ErrorOptions) {\r\n return this.http.post(url, body, options).pipe(catchError(err => this.handleError(err, errorOptions)));\r\n }\r\n\r\n public request(method: string, url: any | null, options?: unknown, errorOptions?: ErrorOptions) {\r\n return this.http.request(method, url, options).pipe(catchError(err => this.handleError(err, errorOptions)));\r\n }\r\n\r\n get(url: string, options?: unknown, errorOptions?: ErrorOptions) {\r\n return this.http.get(url, options).pipe(catchError(err => this.handleError(err, errorOptions)));\r\n }\r\n\r\n public put(url: string, body: any | null, options?: unknown, errorOptions?: ErrorOptions) {\r\n return this.http.put(url, body, options).pipe(catchError(err => this.handleError(err, errorOptions)));\r\n }\r\n\r\n public delete(url: string, options?: unknown, errorOptions?: ErrorOptions) {\r\n return this.http.delete(url, options).pipe(catchError(err => this.handleError(err, errorOptions)));\r\n }\r\n\r\n public handleError(error: HttpErrorResponse, errorOptions?: ErrorOptions): Observable {\r\n let errorPromise = Promise.resolve(error?.error);\r\n if (error.error instanceof Blob) {\r\n errorPromise = new Response(error.error).text().then(errorDetailsJson => {\r\n try {\r\n return JSON.parse(errorDetailsJson);\r\n } catch (e) {\r\n return {message: `${error.status} ${error.statusText}`};\r\n }\r\n });\r\n }\r\n errorPromise.then(errorDetails => this.displayError(error.status, errorDetails, errorOptions));\r\n return throwError(error);\r\n }\r\n\r\n private displayError(status: number, errorDetails: any, errorOptions: ErrorOptions = {}) {\r\n const {duration} = errorOptions;\r\n const errorMessage = errorDetails?.message;\r\n if (status === errorCodes.FORBIDDEN) {\r\n this.stateProviderService.putParam('error', ERRORS.permission);\r\n this.router.navigate([PAGES_CONFIG.ERROR]);\r\n } else if (status === errorCodes.NOT_FOUND) {\r\n this.stateProviderService.putParam('error', ERRORS.notFound);\r\n this.messageService.showSystemMessage('error', 'Could not perform action', errorMessage, duration);\r\n } else {\r\n this.messageService.showSystemMessage('error', 'Could not perform action', errorMessage, duration);\r\n }\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\nimport {Subject, Subscription, Observable} from 'rxjs';\nimport {filter, map, takeUntil} from 'rxjs/operators';\n\nexport enum Events {\n RequestDetailsSubmit = 'request-details-submit',\n RequestDetailsSave = 'request-details-save',\n TmReviewSave = 'tm-review-save',\n RequestDetailsDelete = 'request-details-delete',\n RequestDetailsValidation = 'request-details-submit-validation',\n ApproveSubmitValidated = 'approve-art-submit-validation',\n PoSowSubmitValidated = 'pow-sow-submit-validation',\n AtPrinterSubmitValidated = 'at-printer-submit-validation',\n DesignProcessValidation = 'design-process-validation',\n DesignProcessSubmit = 'design-process-submit',\n StepApprove = 'step-approve',\n StepSubmit = 'step-submit',\n StepCancel = 'step-cancel',\n StepBack = 'step-back',\n StepClose = 'step-close',\n StepActivate = 'step-activate',\n UploadArtworkSubmit = 'upload-submit',\n ChangeRequestStage = 'change-request-stage',\n StartRecalculatePoTotalPrice = 'start-recalculate-po-total-price',\n SowSubmit = 'sow-submit',\n PoSubmit = 'po-submit',\n TpsSubmit = 'tps-submit',\n UpdateActionHistory = 'update-action-history',\n UpdateCommentCount = 'update-comment-count',\n RequestDetails = 'requestDetails',\n PopFinancialServicesSubmitValidation = 'popFinancialServicesSubmitValidation',\n PopFinancialServicesSubmit = 'popFinancialServicesSubmit',\n PopFinancialServicesRollbackValidation = 'popFinancialServicesRollbackValidation',\n PopFinancialServicesRollback = 'popFinancialServicesRollback',\n FinancialServicesReview2Submit = 'financialServicesReview2Submit',\n ProductionReviewSubmit = 'production-review-submit',\n ProductionReviewRollback = 'production-review-rollback',\n ProductionReviewValidation = 'production-review-validation',\n PpVendorProofSubmit = 'pp-vendor-proof-submit',\n UploadPrinterProofValidation = 'upload-printer-proof-validation',\n UploadPrinterProofSubmit = 'upload-printer-proof-submit',\n TmReviewRollback = 'tm-review-rollback',\n RefreshPoApprovalList = 'refresh-po-approval-list'\n}\n\nexport enum CardDesignEvents {\n TmReviewSubmitValidated = 'tm-review-submit-validation',\n TmReviewSubmit = 'tm-review-submit',\n TmReview2SubmitValidated = 'tm-review-2-submit-validation',\n TmReview2Submit = 'tm-review-2-submit',\n TmReview3Submit = 'tm-review-3-submit',\n CreativeReviewSubmitValidated = 'creative-review-submit-validation',\n CreativeReviewSubmit = 'creative-review-submit',\n IntExtClientProofApproveValidated = 'client-proof-approve-validation',\n IntExtClientProofApprove = 'client-proof-approve',\n PrepArtifactValidated = 'prep-artifact-validation',\n PrepArtifactSave = 'prep-artifact-save',\n PrepArtifactSubmit = 'prep-artifact-submit',\n PostArtifactSubmit = 'post-artifact-submit'\n}\n\nexport enum PopDesignEvents {\n TmReviewSubmitValidated = 'tm-review-submit-validation',\n TmReviewSubmit = 'tm-review-submit',\n TmReview2SubmitValidated = 'tm-review-2-submit-validation',\n TmReview2Submit = 'tm-review-2-submit',\n TmReview3Submit = 'pop-tm-review-3-submit',\n FinancialServicesReview2Validation = 'financial-services-review-2-validation',\n FinancialServicesReview2Submit = 'financial-services-review-2-submit',\n PrepArtifactValidated = 'pop-prep-artifact-validation',\n PrepArtifactSave = 'pop-prep-artifact-save',\n PrepArtifactSubmit = 'pop-prep-artifact-submit',\n PostArtifactSubmit = 'pop-post-artifact-submit'\n}\n\nexport enum PopProductionEvents {\n PrinterQuoteSubmitValidated = 'printer-quote-submit-validation',\n PrinterQuoteSubmit = 'printer-quote-submit',\n InternalRequesterReviewSubmitValidation = 'internal-requester-review-submit-validation',\n InternalRequesterReviewSubmit = 'internal-requester-review-submit',\n ReviewPrinterProofApproveValidation = 'review-printer-proof-approve-validation',\n ReviewPrinterProofApprove = 'review-printer-proof-approve'\n}\n\nexport enum FsrEvents {\n UploadSubmit = 'fsr-upload',\n ArtworkApproveValidation = 'artwork-approve-validation',\n ArtworkApprove = 'artwork-approve'\n}\n\nexport enum BifEvents {\n UploadArtworkValidation = 'upload-artwork-validation',\n UploadArtworkSubmit = 'upload-artwork-submit',\n InternalReviewPrinterProofValidated = 'internal-review-printer-proof-validation',\n InternalReviewPrinterProofApprove = 'internal-review-printer-proof-approve'\n}\n\nexport enum ThirdPartyEvents {\n ArtworkApproveValidation = 'artwork-approve-validation',\n ArtworkApprove = 'artwork-approve',\n InternalExternalOperationsSave = 'internal-external-operations-save',\n InternalExternalOperationsValidation = 'internal-external-operations-validation',\n InternalExternalOperationsSubmit = 'internal-external-operations-submit',\n InternalExternalOperationsRollback = 'internal-external-operations-rollback',\n ConfirmPrinter = 'confirm-printer',\n ConfirmPrinterValidation = 'confirm-printer-validation',\n BulkChangeTps = 'bulk-change-tps'\n}\n\nexport enum IhEvents {\n UploadArtworkValidation = 'upload-artwork-validation',\n UploadArtworkSubmit = 'upload-artwork-submit',\n ArtworkApproveValidation = 'artwork-approve-validation',\n ArtworkApprove = 'artwork-approve',\n InternalPrinterProofValidation = 'internal-printer-proof-validation',\n InternalPrinterProofApprove = 'internal-printer-proof-approve'\n}\nexport enum ImageEvents {\n TmReviewSubmitValidated = 'tm-review-submit-validation',\n TmReviewSubmit = 'tm-review-submit',\n DesignProcessSubmitValidated = 'design-process-submit-validation',\n DesignProcessSubmit = 'design-process-submit'\n}\n\nexport type RequestEvents =\n | Events\n | CardDesignEvents\n | PopDesignEvents\n | PopProductionEvents\n | FsrEvents\n | BifEvents\n | ThirdPartyEvents\n | IhEvents\n | ImageEvents;\n\ninterface EventObject {\n eventName: string;\n value?: T;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EventService {\n private subject$ = new Subject();\n\n public emit(event: EventObject): void {\n this.subject$.next(event);\n }\n\n public on(eventName: string, action: (value: T) => any, takeUntilBy: Observable = new Subject()): Subscription {\n return this.subject$\n .pipe(\n filter((e: EventObject) => e.eventName === eventName),\n map((e: EventObject) => e.value),\n takeUntil(takeUntilBy)\n )\n .subscribe(action);\n }\n}\n","import {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LoaderService {\n private loader = new BehaviorSubject(false);\n loading$ = this.loader.asObservable();\n\n public showLoader(): void {\n this.loader.next(true);\n }\n\n public hideLoader(): void {\n this.loader.next(false);\n }\n\n public get spinnerStatus(): Observable {\n return this.loader.asObservable();\n }\n\n public wrapPromise(promise: () => Promise): Promise {\n this.showLoader();\n return promise().then(r => {\n this.hideLoader();\n return r;\n }, (e) => {\n this.hideLoader();\n return e;\n });\n }\n}\n","
\n
\n \n \n \n
\n
\n

{{title}}

\n

\n
\n
\n \n
\n
\n
\n
\n
\n","import {animate, state, style, transition, trigger} from '@angular/animations';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n HostListener,\n NgZone,\n OnDestroy,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {IndividualConfig, ToastPackage, ToastrService} from 'ngx-toastr';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\nimport { SafeHtml } from '@angular/platform-browser';\n\n@Component({\n selector: 'app-system-message',\n templateUrl: './system-message.component.html',\n styleUrls: ['./system-message.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('flyInOut', [\n state('inactive', style({opacity: 0})),\n state('active', style({opacity: 1})),\n state('removed', style({opacity: 0})),\n transition('inactive => active', animate('{{ easeTime }}ms {{ easing }}')),\n transition('active => removed', animate('{{ easeTime }}ms {{ easing }}'))\n ])\n ]\n})\nexport class SystemMessageComponent implements OnDestroy {\n message?: string | null | SafeHtml;\n title?: string;\n options: IndividualConfig;\n duplicatesCount!: number;\n originalTimeout: number;\n /** width of progress bar */\n width = -1;\n private timeout: any;\n intervalId: any;\n private hideTime!: number;\n private ngUnsubscribe = new Subject();\n @ViewChild('main') mainElement;\n\n constructor(\n protected toastrService: ToastrService,\n private toastPackage: ToastPackage,\n private cd: ChangeDetectorRef,\n private ngZone: NgZone\n ) {\n this.message = toastPackage.message;\n this.title = toastPackage.title;\n this.options = toastPackage.config;\n this.originalTimeout = toastPackage.config.timeOut;\n\n toastPackage.toastRef\n .afterActivate()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n this.activateToast();\n });\n toastPackage.toastRef\n .manualClosed()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n this.remove();\n });\n toastPackage.toastRef\n .timeoutReset()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n this.resetTimeout();\n });\n toastPackage.toastRef\n .countDuplicate()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(count => {\n this.duplicatesCount = count;\n });\n }\n\n /** controls animation */\n @HostBinding('@flyInOut')\n public state = {\n value: 'inactive',\n params: {\n easeTime: this.toastPackage.config.easeTime || '300',\n easing: 'ease-in'\n }\n };\n\n @HostListener('mouseenter')\n stickAround(): void {\n if (this.state.value === 'removed') {\n return;\n }\n clearTimeout(this.timeout);\n this.options.timeOut = 0;\n this.hideTime = 0;\n\n // disable progressBar\n clearInterval(this.intervalId);\n this.width = 0;\n }\n @HostListener('mouseleave')\n delayedHideToast(): void {\n if (\n this.options.disableTimeOut === true ||\n this.options.disableTimeOut === 'extendedTimeOut' ||\n this.options.extendedTimeOut === 0 ||\n this.state.value === 'removed'\n ) {\n return;\n }\n this.outsideTimeout(() => this.remove(), this.options.extendedTimeOut);\n this.options.timeOut = this.options.extendedTimeOut;\n this.hideTime = new Date().getTime() + (this.options.timeOut || 0);\n this.width = -1;\n if (this.options.progressBar) {\n this.outsideInterval(() => this.updateProgress(), 10);\n }\n }\n\n outsideTimeout(func: () => any, timeout: number): void {\n if (this.ngZone) {\n this.ngZone.runOutsideAngular(() => (this.timeout = setTimeout(() => this.runInsideAngular(func), timeout)));\n } else {\n this.timeout = setTimeout(() => func(), timeout);\n }\n }\n\n outsideInterval(func: () => any, timeout: number): void {\n if (this.ngZone) {\n this.ngZone.runOutsideAngular(() => (this.intervalId = setInterval(() => this.runInsideAngular(func), timeout)));\n } else {\n this.intervalId = setInterval(() => func(), timeout);\n }\n }\n\n private runInsideAngular(func: () => any): void {\n if (this.ngZone) {\n this.ngZone.run(() => func());\n } else {\n func();\n }\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n clearInterval(this.intervalId);\n clearTimeout(this.timeout);\n }\n\n /**\n * activates toast and sets timeout\n */\n private activateToast(): void {\n this.state = {...this.state, value: 'active'};\n if (!(this.options.disableTimeOut === true || this.options.disableTimeOut === 'timeOut') && this.options.timeOut) {\n this.timeout = setTimeout(() => {\n this.remove();\n }, this.options.timeOut);\n this.hideTime = new Date().getTime() + this.options.timeOut;\n if (this.options.progressBar) {\n this.intervalId = setInterval(() => this.updateProgress(), 10);\n }\n }\n }\n /**\n * updates progress bar width\n */\n updateProgress(): void {\n if (this.width === 0 || this.width === 100 || !this.options.timeOut) {\n return;\n }\n const now = new Date().getTime();\n const remaining = this.hideTime - now;\n this.width = (remaining / this.options.timeOut) * 100;\n if (this.options.progressAnimation === 'increasing') {\n this.width = 100 - this.width;\n }\n if (this.width <= 0) {\n this.width = 0;\n }\n if (this.width >= 100) {\n this.width = 100;\n }\n this.cd.markForCheck();\n }\n\n resetTimeout(): void {\n clearTimeout(this.timeout);\n clearInterval(this.intervalId);\n this.state = {...this.state, value: 'active'};\n\n this.options.timeOut = this.originalTimeout;\n this.timeout = setTimeout(() => this.remove(), this.originalTimeout);\n this.hideTime = new Date().getTime() + (this.originalTimeout || 0);\n this.width = -1;\n if (this.options.progressBar) {\n this.intervalId = setInterval(() => this.updateProgress(), 10);\n }\n }\n\n /**\n * tells toastrService to remove this toast after animation time\n */\n remove(): void {\n (this.mainElement.nativeElement as HTMLDivElement).removeAttribute('role');\n (this.mainElement.nativeElement as HTMLDivElement).removeAttribute('aria-live');\n if (this.state.value === 'removed') {\n return;\n }\n clearTimeout(this.timeout);\n this.state = {...this.state, value: 'removed'};\n this.outsideTimeout(() => this.toastrService.remove(this.toastPackage.toastId), +this.toastPackage.config.easeTime);\n }\n}\n","import { Injectable, SecurityContext } from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\nimport {PRICE_PATTERN} from '../../requests/constants/request-details.constants';\nimport {SystemMessageComponent} from '../components/system-message/system-message.component';\nimport {ToastrService} from 'ngx-toastr';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nexport const DEFAULT_DURATION = 10000;\nexport const DEFAULT_EXTENDED_DURATION = 2000;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MessageService {\n\n constructor(private toastr: ToastrService,\n private sanitizer: DomSanitizer) {\n this.toastr.toastrConfig.toastComponent = SystemMessageComponent;\n this.toastr.toastrConfig.autoDismiss = true;\n this.toastr.toastrConfig.positionClass = 'toast-bottom-left';\n }\n\n public getControlErrorMessage(errors: ValidationErrors): string {\n if (errors.required) { return 'You must enter a value'; }\n if (errors.notEmpty) { return 'You must enter a value'; }\n if (errors.minlength) { return `Minimum length is ${errors.minlength.requiredLength}`; }\n if (errors.maxlength) { return `Maximum length is ${errors.maxlength.requiredLength}`; }\n if (errors.max) { return `Please enter value less than ${errors.max.max}`; }\n if (errors.min) { return `The minimum value for this field is ${errors.min.min}`; }\n if (errors.unique) { return `Value should be unique`; }\n if (errors.maxCalculation) { return `Please enter value so field ${errors.maxCalculation.fieldName\n } is less than ${errors.maxCalculation.max}`; }\n\n if (errors.pattern) {\n let message = 'Invalid value';\n if (errors.pattern.requiredPattern === String(PRICE_PATTERN)) {\n message = 'Please use numeric format XXXXXX.XXXXXX (ex. 999999.000000)';\n }\n return message;\n }\n\n if (errors.wpnError) {\n return 'Please recheck entered WPN';\n }\n\n if (errors.upcError) {\n return 'Please recheck entered Product UPC';\n }\n\n if (errors.email) {\n return 'Please enter a well-formed email address';\n }\n\n if (errors.notFound) {\n return 'No results found';\n }\n\n if (errors.userValidator) {\n return 'Please select user from dropdown list';\n }\n\n if (errors.printerInfoValidator) {\n return 'You must enter a value';\n }\n\n if (errors.packageIdTBDValidator) {\n return 'Package Id must be defined (no TBD)';\n }\n\n if (errors.productionQtyValidator) {\n return 'Production Qty must have a quantity in multiples of Master Case Size. Please re-enter quantity.';\n }\n\n if (errors.cardProductionQtyValidator) {\n return 'Production Qty must have a quantity in multiples of Case Size. Please re-enter quantity.';\n }\n\n return 'Invalid value';\n }\n\n public showSystemMessage(status: 'warning' | 'success' | 'error' | string, header?: string, body?: string | any, duration: number = DEFAULT_DURATION, extendedTimeoutDuration = DEFAULT_EXTENDED_DURATION, enableHtml = false): void {\n if(enableHtml) {\n body = this.sanitizer.bypassSecurityTrustHtml(\n this.sanitizer.sanitize(SecurityContext.NONE, body)\n );\n }\n this.toastr.show(body, header, {\n messageClass: status,\n closeButton: true,\n timeOut: duration,\n extendedTimeOut: duration !== 0 ? extendedTimeoutDuration : 0,\n disableTimeOut: duration !== 0 ? false : 'extendedTimeOut',\n tapToDismiss: true,\n progressBar: true,\n easeTime: 300,\n });\n }\n}\n","
\n \n

{{'module.requests.text.create-new' | translate}}

\n \n
{{'module.requests.text.production' | translate}}:
\n
\n
\n
\n \n {{request.name}}\n \n {{request.taskCount}} {{'module.requests.text.stages' | translate}}, - \n {{request.expectedDurationWeeks}} {{'module.requests.text.weeks' | translate}}\n \n
\n
\n
\n
{{'module.requests.text.design' | translate}}:
\n
\n
\n
\n
\n \n {{item.name}}\n \n {{item.taskCount}} {{'module.requests.text.stages' | translate}}, - \n {{item.expectedDurationWeeks}} {{'module.requests.text.weeks' | translate}}\n \n
\n
\n
\n
\n
\n
\n","import {Component, Inject, OnInit, ViewEncapsulation} from '@angular/core';\nimport {RequestTypeModel} from '../../models/request-type.model';\nimport {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\nimport {SUPPORTED_REQUEST_TYPES, REQUEST_TYPE} from '../../constants/request-types.constant';\nimport {EnvService} from '../../../env.service';\n\n@Component({\n selector: 'app-new-request',\n templateUrl: './new-request.component.html',\n styleUrls: ['./new-request.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class NewRequestComponent implements OnInit {\n\n public items: RequestTypeModel[] = [];\n\n constructor(private dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) data,\n public env: EnvService) {\n this.items = data.requestTypes;\n }\n\n ngOnInit(): void {\n this.roundDuration();\n }\n\n public selectRequestType(item: RequestTypeModel): void {\n if (SUPPORTED_REQUEST_TYPES.indexOf(item.type) !== -1) {\n this.dialogRef.close(item);\n }\n }\n\n public isItemDisabled(type: string): boolean {\n return SUPPORTED_REQUEST_TYPES.indexOf(type) === -1;\n }\n\n private roundDuration(): void {\n this.items.forEach(item => {\n let expectedDurationWeeks = Math.round(item.expectedDurationDays / 7);\n if(item.type === REQUEST_TYPE.IR) {\n expectedDurationWeeks = 2;\n }\n item.expectedDurationWeeks = expectedDurationWeeks;\n });\n }\n\n}\n","
\n \n

{{'module.requests.text.request-name' | translate}}

\n\n
\n \n \n \n {{inputHint | translate }}\n \n \n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { REQUEST_NAME_PATTERN } from '../../constants/request-details.constants';\nimport { POP_PRODUCTION_REQUEST, SUPPORTED_REQUEST_TYPES } from '../../constants/request-types.constant';\n\n\ntype ArrayItemType = T extends Array ? R : any;\n\nexport interface RequestNameFormData {\n name: string;\n type: ArrayItemType;\n}\n\n@Component({\n selector: 'app-request-name-form',\n templateUrl: './request-name-form.component.html',\n styleUrls: ['./request-name-form.component.scss']\n})\nexport class RequestNameFormComponent implements OnInit {\n\n public maxNameLength = 128;\n public minNameLength = 3;\n public form: FormGroup;\n public dataItem: RequestNameFormData;\n private value = '';\n get placeholder(): string {\n switch(this.dataItem?.type) {\n case POP_PRODUCTION_REQUEST:\n return 'module.requests.label.request-name-placeholder';\n }\n return null;\n }\n\n get inputHint(): string {\n switch(this.dataItem?.type) {\n case POP_PRODUCTION_REQUEST:\n return 'module.requests.label.request-name-hint';\n }\n return null;\n }\n\n constructor(\n private dialogRef: MatDialogRef,\n private fb: FormBuilder,\n @Inject(MAT_DIALOG_DATA) data: RequestNameFormData,\n ) {\n this.dataItem = { ...data };\n }\n\n public ngOnInit(): void {\n if (this.dataItem?.name) {\n this.value = this.dataItem?.name;\n }\n\n this.buildForm();\n }\n\n private buildForm(): void {\n this.form = this.fb.group({\n name: [this.value, Validators.compose([\n Validators.required,\n Validators.maxLength(this.maxNameLength),\n Validators.minLength(this.minNameLength),\n Validators.pattern(REQUEST_NAME_PATTERN)\n ])]\n });\n }\n\n public getErrorMessage(): string {\n if (this.form.invalid) {\n if (this.form.get('name').hasError('required') || this.form.get('name').hasError('notEmpty')) {\n return 'You must enter a value';\n }\n if (this.form.get('name').hasError('maxlength')) {\n return `Maximum length is ${this.maxNameLength}`;\n }\n\n return 'Invalid value';\n } return null;\n }\n\n public addName(): void {\n if (this.form.valid) {\n this.dialogRef.close({name: this.form.controls.name.value, redirect: false});\n } else {\n Object.keys(this.form.controls).forEach(key => {\n const control = this.form.get(key);\n if (control.pristine) {\n control.markAsTouched();\n control.updateValueAndValidity({ onlySelf: true, emitEvent: true });\n }\n });\n }\n }\n\n public close(): void {\n this.dialogRef.close({name: this.dataItem?.name, redirect: true});\n }\n\n}\n","
\n \n
\n

{{ header }}

\n
\n
\n

\n
\n
\n \n \n
\n
\n","import {ChangeDetectionStrategy, Component, Inject} from '@angular/core';\nimport {MAT_DIALOG_DATA} from '@angular/material/dialog';\nimport {TranslateService} from '@ngx-translate/core';\n\n@Component({\n selector: 'app-confirm-close-modal',\n templateUrl: './confirm-close-modal.component.html',\n styleUrls: ['./confirm-close-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ConfirmCloseModalComponent {\n public header: string;\n public message: string;\n public confirmBtn: string;\n public closeBtn: string;\n public isCloseModal: boolean;\n\n constructor(@Inject(MAT_DIALOG_DATA) data, private translate: TranslateService) {\n this.header = data.header;\n this.message = data.message;\n this.confirmBtn = data.confirmBtn;\n this.closeBtn = data.closeBtn;\n this.isCloseModal = data.isCloseModal;\n }\n\n public get getCloseBtnLabel(): string {\n if (this.isCloseModal) {\n return this.translate.instant('common.button.close');\n }\n\n return this.closeBtn ? this.closeBtn : this.translate.instant('common.label.no');\n }\n}\n","\n \n \n {{ start }}\n \n \n {{ end }}\n \n \n\n\n \n\n","import {\n Component,\n OnInit,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ViewChild,\n ElementRef,\n Input,\n ChangeDetectorRef,\n SkipSelf,\n HostBinding,\n Optional,\n AfterViewInit\n} from '@angular/core';\nimport {WithDestroy} from 'src/app/shared/components/with-destroy/with-destroy.mixin';\nimport { ReplaySubject } from 'rxjs';\nimport {debounceTime, takeUntil} from 'rxjs/operators';\n\n@Component({\n selector: 'app-truncate-middle',\n templateUrl: './truncate-middle.component.html',\n styleUrls: ['./truncate-middle.component.scss'],\n encapsulation: ViewEncapsulation.Emulated,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TruncateMiddleComponent extends WithDestroy() implements OnInit, AfterViewInit {\n @Input() minStartingChars = 6;\n @Input() minLastingChars = 6;\n @HostBinding('style.flex-basis') flexBasis = 'auto';\n @ViewChild('projectedContentContainer', {\n read: ElementRef\n })\n projectedContentContainer;\n\n start = '';\n end = '';\n private contentSubject = new ReplaySubject(1);\n content$ = this.contentSubject.asObservable().pipe(debounceTime(0));\n constructor(private cd: ChangeDetectorRef, @Optional() @SkipSelf() private parentCd: ChangeDetectorRef) {\n super();\n }\n ngAfterViewInit(): void {\n this.contentSubject.next(this.containerContent);\n }\n\n get containerContent() {\n return this.projectedContentContainer?.nativeElement.innerHTML.trim();\n }\n\n ngOnInit(): void {\n this.content$.pipe(takeUntil(this.ngUnsubscribe$)).subscribe((content) => {\n this.split(content);\n this.flexBasis = this.projectedContentContainer.nativeElement.getBoundingClientRect().width + 'px';\n this.cd.markForCheck();\n this.parentCd?.detectChanges();\n });\n }\n\n split(text: string) {\n if (text.length > this.minStartingChars + this.minLastingChars) {\n this.start = text.substring(0, text.length - this.minLastingChars);\n this.end = text.substring(text.length - this.minLastingChars);\n } else {\n this.start = text;\n this.end = undefined;\n }\n }\n\n onContentChange($event) {\n // eslint-disable-next-line no-console\n console.debug('Content mutation', $event);\n this.contentSubject.next(this.containerContent);\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { ApprovalManagerService } from '../../../services/approval-manager/approval-manager.service';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { filter, first, takeUntil, tap } from 'rxjs/operators';\nimport { of, Subject } from 'rxjs';\nimport { ARTWORK_STATUSES } from '../../../../requests/constants/artwork-file-statuses.constants';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { RequestActionReasonComponent } from '../../../../requests/components/request-action-reason/request-action-reason.component';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { ActionsReasonService } from '../../../../requests/services/actions-reason.service';\nimport {UtilsService} from '../../../services/utils.service';\nimport {FileSizeRestriction} from '../../../models/upload-file-restrictions.model';\nimport {PdfViewerService} from '../../../services/pdf-viewer.service';\nimport {MessageService} from '../../../services/message-service.service';\nimport { ArtworkFile } from '../../../../requests/models/card-design-request.model';\nimport { Events } from 'src/app/shared/services/event-service.service';\nimport { TranslatePipe } from '@ngx-translate/core';\n\nexport class ApprovalManagerConfig {\n selectedRequestItemId?: number;\n selectedArtworkFileId?: number;\n selectedVersionId?: number;\n mode: 'design' | 'approval' | 'view' | 'final-approval' = 'design';\n approvalManagerService: ApprovalManagerService;\n fileTypesToAccept?: string[];\n restrictionOptions?: FileSizeRestriction;\n}\n\n@Component({\n selector: 'app-approval-manager',\n templateUrl: './approval-manager.component.html',\n styleUrls: ['./approval-manager.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ApprovalManagerComponent implements OnInit, OnDestroy {\n\n public ARTWORK_STATUSES = ARTWORK_STATUSES;\n public approvalManagerService: ApprovalManagerService;\n private ngUnsubscribe = new Subject();\n\n public readonly restrictionOptions: FileSizeRestriction;\n\n public requestName: string;\n public requestItems: Array;\n private selectedArtworkFileId: number;\n selectedArtworkFileIndex: number;\n private selectedRequestItemId: number;\n private selectedVersionId: number;\n public selectedRequestItem: any;\n public selectedArtwork: any;\n public canUploadSelectedArtwork: boolean;\n public canReviewSelectedArtwork: boolean;\n public selectedVersion: any;\n public compareVersion: any;\n public readonly mode;\n public artworkFiles: Array;\n public versions: Array;\n public latestRejectedVersions: Array = [];\n public comparisonOn = false;\n public fileTypesToAccept: string[];\n public isRestrictionSizeWarningExist = false;\n public testId = 'approval_manager';\n\n constructor(\n @Inject(MAT_DIALOG_DATA) config: ApprovalManagerConfig,\n private dialogRef: MatDialogRef,\n private overlay: Overlay,\n private actionsReasonService: ActionsReasonService,\n private element: ElementRef,\n private cd: ChangeDetectorRef,\n private pdfViewerService: PdfViewerService,\n private messageService: MessageService,\n private translate: TranslatePipe\n ) {\n this.approvalManagerService = config.approvalManagerService;\n this.selectedRequestItemId = config.selectedRequestItemId;\n this.selectedArtworkFileId = config.selectedArtworkFileId;\n this.fileTypesToAccept = config.fileTypesToAccept;\n this.restrictionOptions = config.restrictionOptions;\n this.mode = config.mode;\n this.selectedVersionId = config.selectedVersionId;\n this.pdfViewerService.approvalManagerService = this.approvalManagerService;\n }\n\n ngOnInit(): void {\n this.approvalManagerService.onRequestNameChange()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(requestName => {\n this.requestName = requestName;\n this.cd.markForCheck();\n });\n\n\n this.approvalManagerService.onRequestItemsChange()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(requestItems => {\n this.requestItems = requestItems || [];\n const selectedRequestItem = this.requestItems.find(item => item.id === this.selectedRequestItemId)\n || (this.requestItems.length ? this.requestItems[0] : null);\n const artworkFiles = this.getArtworkFiles(selectedRequestItem);\n const selectedArtworkFile = artworkFiles.find(item => item.id === this.selectedArtworkFileId)\n || (artworkFiles.length ? this.artworkFiles[0] : null);\n this.setSelectedRequestItem(selectedRequestItem, false);\n this.setSelectedArtworkFile(selectedArtworkFile);\n this.cd.markForCheck();\n });\n this.pdfViewerService.showViewer('approval-manager-pdf-viewer');\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n getRequestItemLabel(item: any) {\n return this.approvalManagerService.getRequestItemLabel(item);\n }\n\n setSelectedRequestItem(item, propagateArtworkFile = true) {\n this.selectedRequestItem = item;\n this.artworkFiles = this.getArtworkFiles(this.selectedRequestItem);\n this.selectedRequestItemId = this.selectedRequestItem?.id || null;\n const selectedArtworkFile = this.artworkFiles.length ? this.artworkFiles[0] : null;\n if (propagateArtworkFile) {\n this.setSelectedArtworkFile(selectedArtworkFile);\n }\n this.latestRejectedVersions = [];\n this.artworkFiles?.forEach(artwork =>{\n if(artwork.versions[0].resolutions[0].status === 'REJECTED' && artwork.versions[0].resolutions[0].stageType.code === 'INT_EXT_CLIENT_PROOF'){\n this.latestRejectedVersions.push(artwork.versions[0]); }\n });\n }\n\n async setSelectedArtworkFile(file) {\n this.selectedArtwork = file;\n this.selectedArtworkFileId = this.selectedArtwork?.id || null;\n this.versions = this.getVersions(this.selectedArtwork);\n\n this.selectedArtworkFileIndex = this.artworkFiles.findIndex(item => item.id === file.id);\n\n let targetVersion = this.getActiveVersion(this.versions);\n if (this.selectedVersionId) {\n targetVersion = (this.versions.find(v => v.id === this.selectedVersionId));\n this.selectedVersionId = undefined;\n }\n this.setSelectedVersion(targetVersion);\n\n this.canUploadSelectedArtwork = await this.canUpload(this.selectedArtwork);\n this.canReviewSelectedArtwork = await this.canReview(this.selectedArtwork, this.selectedVersion);\n this.cd.markForCheck();\n }\n\n async setSelectedVersion(version) {\n const oldId = this.selectedVersion?.id;\n this.selectedVersion = version;\n this.canReviewSelectedArtwork = await this.canReview(this.selectedArtwork, this.selectedVersion);\n if (oldId !== version?.id) {\n this.pdfViewerService.setSelectedVersion(this.selectedVersion);\n }\n this.cd.markForCheck();\n }\n\n setCompareVersion(version) {\n const oldId = this.compareVersion?.id;\n this.compareVersion = version;\n if (oldId !== version?.id) {\n this.pdfViewerService.setCompareVersion(this.compareVersion);\n }\n this.cd.markForCheck();\n }\n\n async canReview(artworkFile: any, selectedVersion: any) {\n return artworkFile?.status === 'ACTIVE'\n && (selectedVersion.active && !selectedVersion.reviewFinalized)\n && await this.approvalManagerService.canApprove(this.mode);\n }\n\n async canUpload(artworkFile: any) {\n return await this.approvalManagerService.canUpload(this.mode)\n && artworkFile?.status === 'ACTIVE';\n }\n\n getLatestResolution(version) {\n return this.approvalManagerService.getLatestResolution(version);\n }\n\n getCurrentVersion(artworkFile: ArtworkFile) {\n return artworkFile.versions.find(v => v.active === true);\n }\n\n close(rejectedArtworks?: number): void {\n this.pdfViewerService.hideViewer();\n if (rejectedArtworks !== undefined) {\n this.dialogRef.close(rejectedArtworks > 0 ? Events.StepBack : Events.StepSubmit);\n return;\n }\n this.dialogRef.close();\n }\n\n review(selectedVersion: any, status: string) {\n const modalResult$ = status === ARTWORK_STATUSES.rejected ? this.openReasonModal(status === ARTWORK_STATUSES.rejected) : of(null);\n\n modalResult$.subscribe(async data => {\n await this.approvalManagerService\n .addVersionResolution(this.selectedRequestItem.id, this.selectedArtwork.id, selectedVersion.id, status, data?.comment);\n this.cd.markForCheck();\n });\n }\n\n uploadVersion(file: File) {\n\n if (!UtilsService.fileTypeAccepted(file, this.fileTypesToAccept)) {\n this.messageService.showSystemMessage('error',\n this.translate.transform('common.errors.file-not-supported'));\n return;\n }\n this.isRestrictionSizeWarningExist = false;\n if (UtilsService.isFileFitsBySize(file.size, this.restrictionOptions)) {\n this.approvalManagerService.uploadVersion(this.selectedRequestItem.id, this.selectedArtwork.id, file);\n } else {\n this.isRestrictionSizeWarningExist = true;\n }\n }\n\n toggleComparison() {\n this.comparisonOn = !this.comparisonOn;\n this.pdfViewerService.enableCompareMode(this.comparisonOn);\n\n const selectedVersionIndex = this.versions.indexOf(this.selectedVersion);\n if (selectedVersionIndex > 0) {\n this.setCompareVersion(this.versions[selectedVersionIndex - 1]);\n } else {\n this.setCompareVersion(this.selectedVersion);\n }\n\n }\n\n downloadSelectedVersion() {\n this.approvalManagerService.downloadVersion(this.selectedVersion, this.selectedVersion?.attachment?.fileName);\n }\n\n downloadAllVersions() {\n this.versions.forEach((version) => {\n this.approvalManagerService.downloadVersion(version, version.attachment?.fileName);\n });\n }\n\n downloadLatestRejectionsVersions() {\n this.latestRejectedVersions.forEach((version) => {\n this.approvalManagerService.downloadVersion(version, version.attachment?.fileName);\n });\n }\n\n downloadSelectedVersionWithAnnotations() {\n this.pdfViewerService.triggerDownloadWithAnnotations(this.selectedVersion?.attachment?.fileName);\n }\n\n downloadAllVersionsWithAnnotations() {\n this.pdfViewerService.triggerDownloadAllWithAnnotations(this.versions);\n }\n\n downloadLatestRejectionsVersionsWithAnnotations() {\n this.pdfViewerService.triggerDownloadAllWithAnnotations(this.latestRejectedVersions);\n }\n\n isApproval() {\n return this.mode === 'approval' || this.mode === 'final-approval';\n }\n\n isDesign() {\n return this.mode === 'design';\n }\n\n private getArtworkFiles(item: any) {\n return item ? this.approvalManagerService.getArtworkFiles(item) || [] : [];\n }\n\n private getVersions(artwork: any) {\n return artwork ? this.approvalManagerService.getVersions(artwork, this.mode) || [] : [];\n }\n\n private getActiveVersion(versions) {\n return versions.find(version => version.active);\n }\n\n private getActiveVersionForFile(file) {\n return this.getVersions(file).find(version => version.active);\n }\n\n private openReasonModal(isReject: boolean) {\n this.actionsReasonService.setAction(isReject ? 'reject' : 'step-approve');\n this.actionsReasonService.setMainButtonTitle(isReject ? 'reject' : 'step-approve');\n this.actionsReasonService.setPosition('top');\n this.actionsReasonService.setIsRequired(isReject);\n\n const btnId = isReject ? 'appr_mgr_reject_btn' : 'appr_mgr_approve_btn';\n const origin: HTMLButtonElement = this.element.nativeElement.querySelector(`[data-test-id=\"${btnId}\"]`);\n\n const positionStrategy = this.overlay.position().flexibleConnectedTo(origin).withPositions(\n [\n { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetX: -95, offsetY: 15 }\n ]);\n const overlayRef = this.overlay.create({\n hasBackdrop: true,\n positionStrategy,\n width: 380,\n scrollStrategy: this.overlay.scrollStrategies.block(),\n });\n\n const reasonPortal = new ComponentPortal(RequestActionReasonComponent);\n\n const ref = overlayRef.attach(reasonPortal);\n ref.instance.isRedConfirmButton = isReject;\n\n return this.actionsReasonService.getReason()\n .pipe(\n first(),\n tap(() => overlayRef.detach()),\n filter(data => data?.buttonClicked === 'confirm'),\n );\n }\n\n countFilesToApprove(artworkFiles) {\n return artworkFiles\n .map(file => this.getActiveVersionForFile(file))\n .map(activeVersion => this.getLatestResolution(activeVersion).status)\n .filter(status => status === 'UNREVIEWED')\n .length;\n }\n\n countRequestItems() {\n const filledRI = this.requestItems.filter(ri => this.getArtworkFiles(ri).length > 0);\n const approved = filledRI.filter(ri =>\n this.getArtworkFiles(ri)\n .map(file => this.approvalManagerService.getLatestResolution(this.getActiveVersionForFile(file)).status)\n .every(status => status === 'APPROVED'))\n .length;\n const rejectedOrApproved = filledRI.filter(ri =>\n this.getArtworkFiles(ri)\n .map(file => this.approvalManagerService.getLatestResolution(this.getActiveVersionForFile(file)).status)\n .every(status => status !== 'UNREVIEWED'))\n .length;\n return {\n inProgress: filledRI.length - rejectedOrApproved,\n rejected: rejectedOrApproved - approved,\n approved\n };\n\n }\n\n getLatestVersionComment(version) {\n const latestResolution = this.getLatestResolution(version);\n if (latestResolution.status === ARTWORK_STATUSES.rejected && !latestResolution.reviewer) {\n return 'Automatically rejected by the system';\n }\n return latestResolution.comment;\n }\n}\n","
\n
\n
\n
\n \n
\n
{{ 'common.approval-manager.request-name' | translate | uppercase }}
\n
\n {{ requestName }}\n
\n
\n
\n
\n
{{ 'common.approval-manager.select-item' | translate | uppercase }}
\n \n \n {{ getRequestItemLabel(selectedRequestItem) }}\n \n \n \n \n \n {{ getRequestItemLabel(item) }}\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
{{ 'common.approval-manager.compare-to' | translate | uppercase }}
\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 {{ 'common.button.cancel-approval' | translate }}\n \n \n\n \n \n \n {{ 'common.button.cancel-rejection' | translate }}\n \n \n\n \n \n {{ 'common.button.step-approve' | translate }}\n \n \n \n {{ 'common.button.reject' | translate }}\n \n \n
\n
\n\n\n \n \n \n \n \n \n \n\n\n\n \n \n {{ 'common.button.compare' | translate }}\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 {{ countFilesToApprove(artworkFiles) }} / {{ artworkFiles.length }}\n {{ 'common.approval-manager.files-to-approve' | translate }}\n
\n \n \n \n \n Artwork {{ artworkFileIndex + 1 }}\n - ({{ getCurrentVersion(file).attachment.fileName }})\n \n \n \n
\n\n\n
\n
{{ 'common.approval-manager.version' | translate }}:
\n
\n \n \n \n \n \n \n \n \n \n
\n
\n
\n\n\n
\n
{{ 'common.approval-manager.version' | translate }}:
\n
\n \n \n \n \n \n \n \n \n \n
\n
\n
\n\n\n \n\n\n\n \n \n {{ version.attachment.fileName }}\n \n \n

\n \n V{{ index }}-{{ getLatestResolution(version).status }}\n \n

\n
\n\n\n In Progress\n Approved\n Rejected\n\n\n\n \n \n\n\n\n
\n \n \n {{ 'common.restrictions.file-size-exceeded' | translate : {size: restrictionOptions.sizeNumber + restrictionOptions.sizeType} }}\n \n
\n
\n","import {Injectable, TemplateRef} from '@angular/core';\nimport {ComponentType} from '@angular/cdk/overlay';\nimport {MatDialog, MatDialogConfig, MatDialogRef} from '@angular/material/dialog';\nimport {Observable} from 'rxjs';\nimport { filter, map, switchMap } from 'rxjs/operators';\nimport {NewRequestComponent} from '../../requests/components/new-request/new-request.component';\nimport {RequestNameFormComponent} from '../../requests/components/request-name-form/request-name-form.component';\nimport {ConfirmCloseModalComponent} from '../../requests/components/request-types/card-production/po-sow/confirm-close-modal/confirm-close-modal.component';\nimport {\n ApprovalManagerComponent,\n ApprovalManagerConfig\n} from '../components/approval-manager/approval-manager/approval-manager.component';\nimport { RequestTypeModel } from '../../requests/models/request-type.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ModalService {\n constructor(private dialog: MatDialog) { }\n\n openDialogs(): MatDialogRef[] {\n return this.dialog.openDialogs;\n }\n\n public openNewRequestModal(requestTypes: RequestTypeModel[]): Observable<{ redirect: boolean; name: string; type: string }> {\n return this.openModal(\n NewRequestComponent, { requestTypes }, undefined, undefined, true,\n )\n .afterClosed()\n .pipe(\n filter(v => !!v),\n switchMap(({ type }) =>\n this.openRequestNameModal(undefined, type).pipe(\n map(value => ({ ...value, type })),\n )),\n );\n }\n\n public openRequestNameModal(name?: string, type?: string): Observable<{ redirect: boolean; name: string }> {\n return this.openModal(\n RequestNameFormComponent, { name, type }, undefined, false, true,\n )\n .afterClosed()\n .pipe(filter(v => !!v.name || v.redirect));\n }\n\n public openConfirmationModal(\n header: string,\n message: string,\n confirmBtn?: string,\n closeBtn?: string,\n shouldHideConfirmBtn?: boolean,\n ): MatDialogRef {\n return this.openModal(ConfirmCloseModalComponent, { header, message, confirmBtn, closeBtn, shouldHideConfirmBtn });\n }\n\n public openCloseModal(header: string, message: string): MatDialogRef {\n return this.openModal(ConfirmCloseModalComponent, { header, message, isCloseModal: true });\n }\n\n public openApprovalManager(approvalManagerConfig: ApprovalManagerConfig): MatDialogRef {\n const config = new MatDialogConfig();\n config.disableClose = false;\n config.autoFocus = true;\n config.panelClass = 'am-modal';\n config.backdropClass = 'am-modal-backdrop';\n config.position = {top: '0px'};\n config.maxWidth = '';\n config.data = {...approvalManagerConfig};\n return this.dialog.open(ApprovalManagerComponent, config);\n }\n\n public openModal(\n template: TemplateRef | ComponentType,\n data?: D,\n dialogClass?: string,\n autofocus: boolean = true,\n hasBackdrop: boolean = true,\n extra?: Partial\n ): MatDialogRef {\n const config = new MatDialogConfig();\n config.disableClose = true;\n config.autoFocus = autofocus;\n config.hasBackdrop = hasBackdrop;\n config.panelClass = dialogClass;\n if (extra) {\n Object.assign(config, extra);\n }\n config.data = {...data};\n\n return this.dialog.open(template, config);\n }\n}\n","import {Injectable, Renderer2, RendererFactory2} from '@angular/core';\nimport {BehaviorSubject, ReplaySubject, Subject} from 'rxjs';\nimport {ApprovalManagerService} from './approval-manager/approval-manager.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PdfViewerService {\n\n private compareModeSubject$ = new BehaviorSubject(false);\n private initializedSubject$ = new BehaviorSubject(false);\n private approvalManagerService$: ApprovalManagerService;\n private selectedVersionSubject$ = new ReplaySubject(1);\n private compareVersionSubject$ = new ReplaySubject(1);\n private downloadSubject$ = new Subject();\n private downloadAllSubject$ = new Subject();\n private renderer: Renderer2;\n\n constructor(rendererFactory: RendererFactory2) {\n this.renderer = rendererFactory.createRenderer(null, null);\n }\n\n compareModeChanged() {\n return this.compareModeSubject$.asObservable();\n }\n\n enableCompareMode(turnOn: boolean) {\n this.compareModeSubject$.next(turnOn);\n }\n\n get approvalManagerService(): ApprovalManagerService {\n return this.approvalManagerService$;\n }\n\n set approvalManagerService(am: ApprovalManagerService) {\n this.approvalManagerService$ = am;\n }\n\n selectedVersionChanged() {\n return this.selectedVersionSubject$.asObservable();\n }\n\n compareVersionChanged() {\n return this.compareVersionSubject$.asObservable();\n }\n\n setSelectedVersion(version) {\n this.selectedVersionSubject$.next(version);\n }\n\n setCompareVersion(version) {\n this.compareVersionSubject$.next(version);\n }\n\n initializedChanged() {\n return this.initializedSubject$.asObservable();\n }\n\n showViewer(customClass: string = '') {\n if (!this.initializedSubject$.getValue()) {\n this.initializedSubject$.next(true);\n }\n const viewer = document.getElementById('pdf-viewer');\n this.renderer.removeClass(viewer, 'pdf-viewer-hidden');\n this.renderer.addClass(viewer, customClass);\n }\n\n hideViewer() {\n const viewer = document.getElementById('pdf-viewer');\n this.renderer.addClass(viewer, 'pdf-viewer-hidden');\n this.enableCompareMode(false);\n this.setSelectedVersion(null);\n this.setCompareVersion(null);\n }\n\n triggerDownloadWithAnnotations(fileName: string) {\n this.downloadSubject$.next(fileName);\n }\n\n triggerDownloadAllWithAnnotations(versions) {\n this.downloadAllSubject$.next(versions);\n }\n\n downloadClicked() {\n return this.downloadSubject$.asObservable();\n }\n\n getDownloadAllSubject() {\n return this.downloadAllSubject$.asObservable();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MsalService } from '@azure/msal-angular';\nimport {\n AccountInfo,\n AuthenticationResult,\n EndSessionRequest,\n EventType,\n RedirectRequest,\n SilentRequest,\n} from '@azure/msal-browser';\nimport { Observable, of, ReplaySubject } from 'rxjs';\n\n@Injectable()\nexport class PitMsalService {\n private accountSubject!: ReplaySubject;\n constructor(private msalService: MsalService) {}\n getAccount(): AccountInfo {\n return this.msalService.instance.getAllAccounts()[0];\n }\n getAccount$(): Observable {\n const cachedAccount = this.msalService.instance.getAllAccounts();\n if (cachedAccount.length) {\n return of(this.getAccount());\n }\n if (this.accountSubject) {\n return this.accountSubject;\n }\n this.accountSubject = new ReplaySubject(1);\n this.msalService.instance.addEventCallback(event => {\n if (event.eventType === EventType.LOGIN_SUCCESS && event.payload.account) {\n this.accountSubject.next(this.getAccount());\n }\n });\n return this.accountSubject;\n }\n logout(logoutRequest?: EndSessionRequest): Observable {\n return this.msalService.logout(logoutRequest);\n }\n acquireTokenSilent(silentRequest: SilentRequest): Observable {\n return this.msalService.acquireTokenSilent(silentRequest);\n }\n acquireTokenRedirect(request: RedirectRequest): Observable {\n return this.msalService.acquireTokenRedirect(request);\n }\n loginRedirect(request?: RedirectRequest): Observable {\n return this.msalService.loginRedirect(request);\n }\n handleRedirectObservable(hash?: string): Observable {\n return this.msalService.handleRedirectObservable(hash);\n }\n}\n","import {HttpClient} from '@angular/common/http';\nimport {forkJoin, Observable, of, ReplaySubject} from 'rxjs';\nimport { catchError, map, tap, debounceTime } from 'rxjs/operators';\nimport {Injectable} from '@angular/core';\nimport {TranslateLoader} from '@ngx-translate/core';\nimport { environment } from 'src/environments/environment';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PitTranslateLoader implements TranslateLoader {\n constructor(private http: HttpClient) {}\n\n resources = [\n {prefix: '/assets/locale/', suffix: '.json'},\n {prefix: '/api/web/action-entries-', suffix: '.json'}\n ];\n private translationLoadedSubject = new ReplaySubject(1);\n translationLoaded$ = this.translationLoadedSubject.asObservable().pipe(debounceTime(0));\n\n public getTranslation(lang: string): Observable {\n return forkJoin(\n this.resources.map(config => this.http.get(`${config.prefix}${lang}${config.suffix}?v=${environment.appVersion}`).pipe(\n map(response => response),\n tap(\n () => {},\n e => {\n this.translationLoadedSubject.error(e);\n }\n ),\n catchError(() => of({}))\n ))\n ).pipe(\n map(response => response.reduce((a, b) => Object.assign(a, b), {})),\n tap(() => {\n this.translationLoadedSubject.next(true);\n })\n );\n }\n}\n","import {Injectable} from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class StateProviderService {\n private stateParamMap: Map = new Map();\n\n public getParam(path: string): any {\n return this.stateParamMap.get(path);\n }\n\n public putParam(path: string, param: any): void {\n this.stateParamMap.set(path, param);\n }\n\n public clearParam(path: string): void {\n this.stateParamMap.delete(path);\n }\n}\n","import { Injectable } from '@angular/core';\nimport {UserService} from './user.service';\nimport {takeWhile, scan, take} from 'rxjs/operators';\nimport {merge, from, ReplaySubject} from 'rxjs';\nimport { AbstractRoleProvider } from '../../requests/classes/role-provider';\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class UserPermissionsService {\n private userRoles: string[] = [];\n private userRolesSubject = new ReplaySubject(1);\n // tslint:disable-next-line:no-unused-variable\n private currentUserName: string;\n\n constructor(private userService: UserService) {\n this.setUserNameSubscription();\n }\n\n public setUserRoles(roles: string[]): void {\n this.userRoles = roles;\n this.userRolesSubject.next(roles);\n }\n\n public getUserRoles(): string[] {\n return this.userRoles;\n }\n\n public async isActionAvailable(permission: string|Array, roleProvider?: AbstractRoleProvider): Promise {\n const userRoles = await this.userRolesSubject.pipe(take(1)).toPromise();\n if (!permission?.length) {\n return true;\n }\n\n if (Array.isArray(permission)) {\n const permissionChecks = permission.map(p => from(this.isActionAvailable(p, roleProvider)));\n // actionAvailable\n return merge(...permissionChecks)\n .pipe(\n takeWhile(permissionAllowed => permissionAllowed !== true, true),\n scan((acc, permissionAllowed) => acc || permissionAllowed, false)\n ).toPromise();\n }\n const specificRoles = roleProvider ? await roleProvider.getRoles() : [];\n\n return [...specificRoles, ...userRoles].includes(permission);\n }\n private setUserNameSubscription(): void {\n this.userService.usernameChange()\n .subscribe(name => this.currentUserName = name);\n }\n}\n","import { ChangeDetectionStrategy, Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { finalize, shareReplay, takeUntil } from 'rxjs/operators';\nimport { API } from 'src/app/shared/constants/api.constants';\nimport { UserSettings } from 'src/app/shared/models/user-settings.model';\nimport { MessageService } from 'src/app/shared/services/message-service.service';\nimport { UtilsService } from 'src/app/shared/services/utils.service';\n\nimport { ErrorHandlingHttpClient } from '../../../shared/services/error-handling-http-client.service';\nimport { LoaderService } from '../../../shared/services/loader.service';\nimport { SETTINGS_GROUPS, SettingsModalComponentData } from './settings-modal.model';\n\n\n@Component({\n selector: 'app-settings-modal',\n templateUrl: './settings-modal.component.html',\n styleUrls: ['./settings-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SettingsModalComponent implements OnInit, OnDestroy {\n private ngUnsubscribe = new Subject();\n private loadSettingsIntent = new BehaviorSubject(null);\n selectedIndex = [SETTINGS_GROUPS.EMAIL_SIGNATURE];\n settings$: Observable;\n settingsLoading$ = new BehaviorSubject(false);\n form!: FormGroup;\n testId = 'settings_modal';\n\n constructor(\n @Inject(MAT_DIALOG_DATA) dialogData: SettingsModalComponentData,\n private errorHandlingHttpClient: ErrorHandlingHttpClient,\n private loaderService: LoaderService,\n private fb: FormBuilder,\n private messageService: MessageService,\n private translate: TranslateService\n ) {\n this.settings$ = this.errorHandlingHttpClient.get(API.userSettings());\n this.selectedIndex = [dialogData.section];\n }\n\n ngOnInit(): void {\n this.initForm();\n this.loadSettingsIntent.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {\n this.loaderService.showLoader();\n this.settings$\n .pipe(\n finalize(() => {\n this.loaderService.hideLoader();\n }),\n takeUntil(this.ngUnsubscribe),\n shareReplay({\n refCount: false,\n bufferSize: 1\n })\n )\n .subscribe(settings => {\n this.form.patchValue(settings);\n });\n });\n }\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n private initForm() {\n this.form = this.fb.group({\n displayMode: this.fb.control(null),\n emailSignature: this.fb.control(null, [UtilsService.maxBytesLength(1 * 1000 * 1000, '1 MB')])\n });\n }\n\n async submitForm(selectedIndex) {\n switch (selectedIndex) {\n case SETTINGS_GROUPS.EMAIL_SIGNATURE: {\n try {\n const field = this.form.get('emailSignature');\n field.markAllAsTouched();\n if (field.valid) {\n this.loaderService.showLoader();\n await this.errorHandlingHttpClient\n .put(API.userEmailSignature(), {\n value: field.value || ''\n })\n .toPromise();\n\n this.messageService.showSystemMessage('success', 'Settings were successfully saved', '');\n } else {\n this.messageService.showSystemMessage(\n 'warning',\n this.translate.instant('common.modal.errors.invalid-form-header'),\n this.translate.instant('common.modal.errors.invalid-form-desc'),\n 5000\n );\n }\n } finally {\n this.loaderService.hideLoader();\n }\n }\n }\n }\n}\n","
\n \n
\n

{{ 'common.label.settings' | translate }}

\n
\n
\n
\n
\n \n \n settings\n Email\n \n \n
\n
\n
\n \n \n \n \n \n
\n
\n
\n
\n
\n \n {{ 'common.button.save' | translate }}\n \n
\n
\n","import { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { setUserTheme } from 'src/app/reducers/user/user.actions';\nimport { selectUserTheme } from 'src/app/reducers/user/user.selector';\n\nimport { SettingsModalComponent } from '../../nav-header/components/settings-modal/settings-modal.component';\nimport {\n SETTINGS_GROUPS,\n SettingsModalComponentData,\n} from '../../nav-header/components/settings-modal/settings-modal.model';\nimport { API } from '../constants/api.constants';\nimport { UserTheme } from '../models/user.model';\nimport { ErrorHandlingHttpClient } from './error-handling-http-client.service';\nimport { ModalService } from './modal-service.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UserSettingsService {\n userTheme$ = this.store.select(selectUserTheme);\n\n constructor(private store: Store, private errorHandlingHttpClient: ErrorHandlingHttpClient, private modalService: ModalService) {}\n\n public static getLocalUserTheme() {\n try {\n return window.localStorage.getItem('fusion-produceit-user-theme') || UserTheme.LIGHT;\n } catch (e) {\n return UserTheme.LIGHT;\n }\n }\n\n public static setLocalUserTheme(newTheme: string): void {\n window.localStorage.setItem('fusion-produceit-user-theme', newTheme);\n }\n\n public initiate() {\n this.store.dispatch(setUserTheme({theme: UserSettingsService.getLocalUserTheme()}));\n }\n\n public setStoredUserTheme(newTheme: string) {\n UserSettingsService.setLocalUserTheme(newTheme);\n this.store.dispatch(setUserTheme({theme: newTheme}));\n }\n\n public updateUserTheme(theme) {\n return this.errorHandlingHttpClient\n .put(API.darkModeChange, {\n value: theme\n })\n .subscribe(() => {\n this.store.dispatch(setUserTheme({theme}));\n });\n }\n\n public getEmailSignature$(): Observable<{\n value: string;\n }> {\n return this.errorHandlingHttpClient.get(API.userEmailSignature());\n }\n\n public openModal(\n data = {\n section: SETTINGS_GROUPS.EMAIL_SIGNATURE\n }\n ) {\n return this.modalService.openModal(SettingsModalComponent, data, undefined, true, true, {\n width: `640px`\n });\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { BehaviorSubject, Observable, ReplaySubject } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\n\nimport { State } from '../../reducers';\nimport { resetUser, setUser, setUserSettings, setUserSubstitutees, setUserTheme } from '../../reducers/user/user.actions';\nimport { API } from '../constants/api.constants';\nimport { SystemUserModel, UserModel, UserTheme } from '../models/user.model';\nimport { PitMsalService } from './pit-msal.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UserService {\n /**\n * Compares target user against system user (logged in user) that may substitute other users.\n *\n * @returns boolean\n */\n static userApplicable(systemUser: SystemUserModel, targetUser: UserModel | string) {\n const targetUserLogin = typeof targetUser === 'string' ? targetUser : targetUser?.userName || null;\n const systemUserLogins: string [] = [systemUser.userName, ...(systemUser.substitutedUsers || [])];\n\n return systemUserLogins.includes(targetUserLogin);\n }\n private nameSubject = new BehaviorSubject(null);\n private loggedInProduceit = new BehaviorSubject(false);\n private userDetails: SystemUserModel;\n private userDetailsSubject = new ReplaySubject(1);\n\n constructor(private http: HttpClient, private store: Store, private pitMsalService: PitMsalService) {}\n\n getCurrentUserName() {\n return window.localStorage.getItem('fusion-produceit-user');\n }\n\n public setCurrentUserName(newUserName: string): void {\n window.localStorage.setItem('fusion-produceit-user', newUserName);\n this.nameSubject.next(newUserName);\n this.store.dispatch(setUser({user: newUserName}));\n }\n\n usernameChange() {\n return this.nameSubject.asObservable();\n }\n\n authAccount$(): Observable {\n return this.pitMsalService.getAccount$();\n }\n\n login(): Observable {\n return this.authAccount$().pipe(switchMap(() => this.http.get(API.authorities, {})));\n }\n\n public resetUser(): void {\n window.localStorage.removeItem('fusion-produceit-user');\n window.localStorage.removeItem('REQUEST_LIST_FILTERS');\n this.store.dispatch(resetUser({user: null}));\n }\n\n setLoggedInProduceit(fullyLoaded: boolean): void {\n this.loggedInProduceit.next(fullyLoaded);\n }\n\n isLoggedInProduceit(): boolean {\n return this.loggedInProduceit.value;\n }\n\n getLoggedInProduceit() {\n return this.loggedInProduceit.asObservable();\n }\n\n updateUserDetails() {\n this.http.get(API.userDetails, {}).subscribe((userDetails: SystemUserModel) => {\n this.userDetails = userDetails;\n this.userDetailsSubject.next(userDetails);\n this.store.dispatch(setUserSubstitutees({substitutees: userDetails?.substitutedUsers || []}));\n this.store.dispatch(setUserTheme({theme: userDetails?.settings.displayMode || UserTheme.LIGHT}));\n this.store.dispatch(setUserSettings({settings: userDetails?.settings}));\n });\n }\n\n getUserDetails() {\n return cloneDeep(this.userDetails);\n }\n\n getUserDetails$() {\n return this.userDetailsSubject;\n }\n\n isMimicMode(authUserEmail: string): boolean {\n const realUserName = authUserEmail ? authUserEmail.substring(0, authUserEmail.indexOf('@')) : '';\n const mimicUserName = this.getCurrentUserName();\n return realUserName.toLocaleLowerCase() !== mimicUserName?.toLocaleLowerCase();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CodeNameModel } from '../models/code-name.model';\nimport { UserModel } from '../models/user.model';\nimport { AbstractControl, FormArray, FormBuilder, FormGroup, ValidatorFn, Validators } from '@angular/forms';\nimport { VersionAwareArtworkFile } from '../../requests/models/card-design-request.model';\nimport { ARTWORK_STATUSES } from '../../requests/constants/artwork-file-statuses.constants';\nimport { HttpHeaders } from '@angular/common/http';\nimport {ApprovalManagerService} from './approval-manager/approval-manager.service';\nimport {Warehouse} from '../../requests/models/warehouse.model';\nimport isEqual from 'lodash/isEqual';\nimport { FileSizeRestriction } from '../models/upload-file-restrictions.model';\nimport BigJs from 'big.js';\nimport sortBy from 'lodash/sortBy';\nimport { Observable, OperatorFunction, pipe } from 'rxjs';\nimport { combineLatest, first, map, skip, startWith, withLatestFrom } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UtilsService {\n\n constructor(private fb: FormBuilder) {}\n\n public static merchantValidator(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: boolean } | null => {\n if (!control.value?.name) {\n return { required: true };\n }\n\n return null;\n };\n }\n\n public static userValidationFn(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: boolean } | null => {\n if (control.value && typeof(control.value) === 'string') {\n return { userValidator: true };\n }\n\n return null;\n };\n }\n\n public static availableQtyValidationFn(total: AbstractControl, formArr: FormArray): ValidatorFn {\n return (): { [key: string]: boolean } | null => {\n const sum = formArr.getRawValue().reduce((acc, curr) => acc + Number(curr.quantity), 0);\n if (Number(total.value) !== Number(sum)) {\n return { hasNotZeroSum: true };\n }\n\n return null;\n };\n }\n\n public static availableArrayQtyValidationFn(formGroup: FormGroup, formArr: FormArray): ValidatorFn {\n return (): { [key: string]: boolean } | null => {\n\n const versionQuantities = (formGroup.get('versionQuantities') as FormArray);\n const compareSum = versionQuantities.length ?\n versionQuantities.getRawValue().reduce((acc, curr) => acc + Number(curr.quantity), 0) :\n formGroup.get('productionQuantity').value;\n\n const sum = formArr.getRawValue().reduce((acc, curr) => acc + Number(curr.quantity), 0);\n if (Number(compareSum) !== Number(sum)) {\n return { hasNotZeroSum: true };\n }\n\n return null;\n };\n }\n\n public static multiplicityValidationFn(multiplier: number): ValidatorFn {\n return (control): { [key: string]: boolean } | null => {\n if (control.value === null || control.value === '') {\n return null;\n }\n\n const value = Number(control.value);\n if (value && !(value % multiplier)) {\n return null;\n }\n\n return { multiplicity: true };\n };\n }\n\n public static artworksApprovedValidationFn(approvalManagerService: ApprovalManagerService): ValidatorFn {\n return (control: AbstractControl): { [key: string]: boolean } | null => {\n const { artworkFiles }: { artworkFiles: VersionAwareArtworkFile[]} = control.value;\n\n if (artworkFiles?.length) {\n const isAllApproved = approvalManagerService.getArtworkFileStatuses(artworkFiles)\n .every(status => status === ARTWORK_STATUSES.approved);\n return isAllApproved ? null : { notAllApproved: true };\n }\n\n return null;\n };\n }\n\n public static artworksNotRejectedValidationFn(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: boolean } | null => {\n const { artworkFiles }: { artworkFiles: VersionAwareArtworkFile[]} = control.value;\n\n if (artworkFiles?.length) {\n const isAnyRejected = artworkFiles.some(af =>\n af.versions[0].resolutions[0].status === ARTWORK_STATUSES.rejected);\n return isAnyRejected ? {rejected: isAnyRejected} : null;\n }\n\n return null;\n };\n }\n\n public static bulkFormValidationFn(validationObject): ValidatorFn {\n return (ac: AbstractControl) => {\n if (\n isEqual(ac.value, validationObject)\n ) {\n return {\n noChanges: true\n };\n }\n return null;\n };\n }\n\n public static isTrueExist(): ValidatorFn {\n return (arr: FormArray): { [key: string]: boolean } | null => {\n if (arr.value && !arr.value.includes(true)) {\n return { allInFalse: true };\n }\n\n return null;\n };\n }\n\n public static maxCalculationValidator(evaluator: (val: number) => number, max: number, fieldName: string) {\n return (ac: AbstractControl) => {\n if(ac?.value) {\n const actual = evaluator(ac.value);\n if(evaluator(ac.value) > max) {\n return {\n maxCalculation: {\n fieldName,\n max,\n actual\n }\n };\n }\n }\n return null;\n };\n }\n\n public static printerInfoValidationFn(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: boolean } | null => {\n if (control.value?.mdmId) {\n return null;\n }\n return { printerInfoValidator: true };\n };\n }\n\n public static startRangeValidationFn(endControl: AbstractControl): ValidatorFn {\n return (startControl: AbstractControl): { [key: string]: boolean } | null => {\n const { value: start }: { value: string | null } = startControl;\n const { value: end }: { value: string | null } = endControl;\n const bigStart = new BigJs(start || '0');\n const bigEnd = new BigJs(end || '0');\n\n if (start && end) {\n if (bigEnd.gt(bigStart) && start.length === end.length) {\n startControl.markAsUntouched();\n return null;\n }\n return { startRange: true };\n }\n\n return null;\n };\n }\n\n public static endRangeValidationFn(startControl: AbstractControl): ValidatorFn {\n return (endControl: AbstractControl): { [key: string]: boolean } | null => {\n const { value: start }: { value: string | null } = startControl;\n const { value: end }: { value: string | null } = endControl;\n const bigStart = new BigJs(start || '0');\n const bigEnd = new BigJs(end || '0');\n\n if (start && end) {\n if (bigEnd.gt(bigStart) && start.length === end.length) {\n endControl.markAsUntouched();\n return null;\n }\n return { endRange: true };\n }\n\n return null;\n };\n }\n\n public static packageIdTBDValidationFn(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: boolean } | null => {\n if (control.value?.toUpperCase() === 'TBD') {\n return { packageIdTBDValidator: true };\n }\n return null;\n };\n }\n\n public static checkboxTrueValidationFn(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: boolean } | null => {\n if (control.value === true) {\n return null;\n }\n return { checkboxTrueValidator: true };\n };\n }\n\n public static productionQtyValidationFn(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: boolean } | null => {\n const masterCaseSizeControl = control.parent?.get('masterCaseSize');\n if (control.value && masterCaseSizeControl?.value && control.value % masterCaseSizeControl?.value !== 0) {\n return { productionQtyValidator: true };\n }\n return null;\n\n };\n }\n\n public static cardProductionQtyValidationFn(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: boolean } | null => {\n const caseSizeControl = control.parent?.get('caseSize');\n if (control.value && caseSizeControl?.value && control.value % caseSizeControl?.value !== 0) {\n return { cardProductionQtyValidator: true };\n }\n return null;\n\n };\n }\n\n public static getFileNameFromHeaders(headers: HttpHeaders): string {\n return decodeURIComponent(headers.get('file-name'));\n }\n public static sortByFields(items: T[], sortFields: Array | ((val: any) => number)): T[] {\n return sortBy(items, sortFields);\n }\n\n public static isFileFitsBySize(bytes, fileSize: FileSizeRestriction): boolean {\n if (bytes === 0) {\n return true;\n }\n const k = 1024;\n const dm = 2;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const restrictionSizeTypeIndex = sizes.indexOf(fileSize.sizeType);\n\n const fileSizeTypeIndex = Math.floor(Math.log(bytes) / Math.log(k));\n\n if (fileSizeTypeIndex < restrictionSizeTypeIndex) {\n return true;\n }\n\n if (fileSizeTypeIndex > restrictionSizeTypeIndex) {\n return false;\n }\n\n if (fileSizeTypeIndex === restrictionSizeTypeIndex) {\n const revertedSize = parseFloat((bytes / Math.pow(k, fileSizeTypeIndex)).toFixed(dm));\n return revertedSize <= fileSize.sizeNumber;\n }\n }\n\n public static getFilesAggregatedStatus(files: Array): 'progress' | 'rejected' | 'approved' {\n if (files && files.length) {\n if (files.every(file => file.status === ARTWORK_STATUSES.rejected)) {\n return 'rejected';\n } else if (files.every(file => file.status === ARTWORK_STATUSES.approved)) {\n return 'approved';\n }\n }\n return 'progress';\n }\n\n public static maxBytesLength(maxBytesLength: number, maxBytesLabel: string) {\n return (ac: AbstractControl) => {\n const value = ac?.value;\n if(value && window.TextEncoder) {\n const encoder = new TextEncoder();\n const bytes = encoder.encode(value);\n\n if(bytes.length > maxBytesLength) {\n return {\n maxlength: {\n requiredLength: maxBytesLabel\n }\n };\n }\n }\n return null;\n };\n }\n\n public static getWarehouseName(warehouse: Partial): string {\n return warehouse?.name ?\n (typeof warehouse?.name === 'string' ? warehouse?.name : (warehouse?.name as Warehouse)?.name) :\n '';\n }\n\n public static fileTypeAccepted(file: File, fileTypesToAccept: string[]) {\n if (!fileTypesToAccept || fileTypesToAccept.length === 0) {\n return true;\n }\n const fileTypeAccepted = fileTypesToAccept.indexOf(file.type) > -1;\n const [,fileExtension] = /(?:\\.([^.]+))?$/.exec(file.name);\n const fileExtensionAccepted = fileTypesToAccept.indexOf(`.${fileExtension.toLowerCase()}`) > -1;\n\n return fileTypeAccepted || fileExtensionAccepted;\n }\n\n public static notEmptyValidator: ValidatorFn = (ac) => {\n const value = ac?.value || '';\n if(/^(\\s+\\S+\\s*)*(?!\\s).*$/.test(value)) {\n return null;\n }\n return {\n notEmpty: true\n };\n };\n\n public getItemName(array: Partial[], code: string): string {\n return array?.find(item => item.code === code)?.name || code;\n }\n\n public static getFullUserName(user: UserModel): string {\n let fullName = '';\n if (user?.firstName) {\n fullName = `${user.firstName} `;\n }\n if (user?.lastName) {\n fullName += user.lastName;\n }\n return fullName.trim();\n }\n public getFullUserName(user: UserModel): string {\n let fullName = '';\n if (user?.firstName) {\n fullName = `${user.firstName} `;\n }\n if (user?.lastName) {\n fullName += user.lastName;\n }\n return fullName.trim();\n }\n\n public static requiredIfSiblingTrue(siblingName: string): ValidatorFn {\n return (ac: AbstractControl) => {\n if (ac?.parent?.get(siblingName)?.valid && ac?.parent?.get(siblingName)?.value === true) {\n return Validators.required(ac);\n }\n return null;\n };\n }\n\n public getFormattedBytes(bytes: number, decimals = 2): string {\n if (bytes <= 0) {\n return '0 Bytes';\n }\n\n const k = 1024;\n const dm = decimals <= 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\n }\n\n public static getFormattedBytes(bytes: number, decimals = 2): string {\n if (bytes <= 0) {\n return '0 Bytes';\n }\n\n const k = 1024;\n const dm = decimals <= 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\n }\n\n public getParentChild(data: any[]): any[] {\n const formatted = [];\n data.sort((a, b) => {\n const codeA = a.code.toUpperCase();\n const codeB = b.code.toUpperCase();\n if (codeA < codeB) { return -1; }\n if (codeA > codeB) {return 1; }\n return 0;\n });\n data.forEach(item => {\n if (item.code === 'PRJ' && item.name.indexOf('(PRJ)') === -1) {\n item.name += ' (PRJ)';\n }\n if (!item.parentCode) {\n formatted.push({...item, children: []});\n }\n });\n data.forEach(child => {\n if (child.parentCode) {\n formatted.find(parent => parent.code === child.parentCode)?.children.push(child);\n }\n });\n return formatted;\n }\n\n public getMerchantName(option: any, merchant?: FormGroup): string {\n if (option?.name) {\n return `${option.name} - ${option.fcmsId ? option.fcmsId : (option.mdmId ? option.mdmId : option.id)}`;\n }\n const id = merchant?.controls?.id?.value;\n const mdmId = merchant?.controls?.mdmId?.value;\n const fcmsId = merchant?.controls?.fcmsId?.value;\n if (option && typeof option === 'string' && (fcmsId || mdmId || id)) {\n return `${option} - ${fcmsId ? fcmsId : (mdmId ? mdmId : id)}`;\n } return '';\n\n }\n\n public sortAZNames(a, b): number {\n const nameA = a.name.toUpperCase();\n const nameB = b.name.toUpperCase();\n\n if (nameA < nameB) {\n return -1;\n }\n if (nameA > nameB) {\n return 1;\n }\n return 0;\n }\n\n public sortByDate(a: Partial<{createdAt: string}>, b: Partial<{createdAt: string}>): number {\n const date1 = new Date(a.createdAt);\n const date2 = new Date(b.createdAt);\n\n return Number(date2) - Number(date1);\n }\n\n public codeNameMap(codeNames: CodeNameModel[]): { [key: string]: string } {\n return codeNames.reduce((acc, codeName) => ({...acc, [codeName.code]: codeName.name}), {});\n }\n\n public logInvalidControls(form: FormGroup, path: string = ''): void {\n const controls = form.controls;\n for (const name of Object.keys(controls)) {\n if ((controls[name] as FormGroup).controls) {\n this.logInvalidControls((controls[name] as FormGroup), [path, name].join('.'));\n } else {\n if (controls[name].invalid) {\n console.log('invalid ', [path, name].join('.'));\n }\n }\n }\n }\n\n public touchFormControls(form: FormGroup): void {\n Object.keys(form.controls).forEach(key => {\n const control = form.get(key);\n if ((control as FormGroup).controls) {\n this.touchFormControls((control as FormGroup));\n } else if (control.pristine) {\n control.markAsTouched();\n if (key !== 'name' || (control.invalid && key === 'name')) {\n control.updateValueAndValidity({onlySelf: true, emitEvent: true});\n }\n }\n });\n }\n\n consoleListPrinters(printers: any[]): void {\n function isIncludesType(item, type) {\n return item.types.includes(type) ? '+' : null;\n }\n console.table([...printers].map(printer => ({\n name: printer.name,\n INTERNAL: isIncludesType(printer, 'INTERNAL'),\n EXTERNAL: isIncludesType(printer, 'EXTERNAL'),\n CERTIFIED_WRAP: isIncludesType(printer, 'CERTIFIED_WRAP'),\n CERTIFIED_MULTIPACK: isIncludesType(printer, 'CERTIFIED_MULTIPACK'),\n }))\n );\n }\n\n\n public setMerchantsDataToControls(reqItems, itemsControlsArray: FormArray): void {\n reqItems.forEach((item, idx) => {\n const itemForm = itemsControlsArray.at(idx);\n itemForm.patchValue(item);\n const merchantsArray = (itemForm.get('merchants') as FormArray);\n merchantsArray.clear();\n\n item.merchants.forEach(merchant => {\n merchantsArray.push(this.fb.group({\n id: this.fb.control(merchant.id),\n mdmId: this.fb.control(merchant.mdmId),\n name: this.fb.control({ name: merchant.name, id: merchant.fcmsId ? merchant.fcmsId : merchant.mdmId }),\n fcmsId: this.fb.control(merchant.fcmsId, Validators.required),\n country: this.fb.control(merchant.country, Validators.required),\n accountManagers: this.fb.array(merchant.accountManagers)\n }));\n });\n });\n }\n\n}\n\nexport function delayedWithLatestFrom(target$: Observable): OperatorFunction {\n // special value to avoid accidental match with values that could originate from target$\n const uniqueSymbol = Symbol('withLatestFromIgnore');\n\n return pipe(\n // emit as soon target observable emits the first value\n combineLatest(target$.pipe(first())),\n // skip the first emission because it's handled above, and then continue like a normal `withLatestFrom` operator\n withLatestFrom(target$.pipe(skip(1), startWith(uniqueSymbol))),\n map(([[rest, combineLatestValue], withLatestValue]) => {\n // take combineLatestValue for the first time, and then always take withLatestValue\n const appendedValue = withLatestValue === uniqueSymbol ? combineLatestValue : withLatestValue;\n\n return [rest, appendedValue];\n })\n );\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule, CurrencyPipe, DatePipe} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\nimport { RouterModule } from '@angular/router';\nimport {NgxMatSelectSearchModule} from 'ngx-mat-select-search';\nimport { QuillModule } from 'ngx-quill';\n\nimport {MaterialModule} from '../material.module';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {NgxDaterangepickerMd} from 'ngx-daterangepicker-material';\nimport {AppDateRangeComponent} from './components/app-date-range/app-date-range.component';\nimport {AppPopoverComponent} from './components/app-popover/app-popover.component';\nimport {HoverDirective} from './components/app-popover/toggle-popover.directive';\nimport {SelectSearchDropdownComponent} from './components/select-search-dropdown/select-search-dropdown.component';\nimport {FileUploaderComponent} from './components/file-uploader/file-uploader.component';\nimport {DndDirective} from './directives/dnd.directive';\nimport {AppInputFormComponent} from './components/app-input-form/app-input-form.component';\nimport {AccordionComponent} from './components/accordion/accordion.component';\nimport {TooltipDirective} from './directives/tooltip.directive';\nimport {FileDownloaderComponent} from './components/file-downloader/file-downloader.component';\nimport {CheckboxComponent} from './components/checkbox/checkbox.component';\nimport {RadioGroupComponent} from './components/radio-group/radio-group.component';\nimport {AppDatePickerComponent} from './components/app-date-picker/app-date-picker.component';\nimport {DatePickerHeaderComponent} from './components/app-date-picker/date-picker-header/date-picker-header.component';\nimport {AppCurrencyInputComponent} from './components/app-currency-input/app-currency-input.component';\nimport {InputSearchComponent} from './components/input-search/input-search.component';\nimport {SystemMessageComponent} from './components/system-message/system-message.component';\nimport {ButtonDropdownComponent} from './components/button-dropdown/button-dropdown.component';\nimport {MoreDetailsLinkComponent} from './components/more-details-link/more-details-link.component';\nimport {AutonumericModule} from '@angularfy/autonumeric';\nimport {AutonumericDirective} from './directives/autonumeric.directive';\nimport {InputSearchDropdownComponent} from './components/input-search-dropdown/input-search-dropdown.component';\nimport {AppSelectFormComponent} from './components/app-select-form/app-select-form.component';\nimport {FileSelectorComponent} from './components/file-selector/file-selector.component';\nimport {UserPermissionsDirective} from './directives/user-permissions.directive';\nimport {AppTextareaFormComponent} from './components/app-textarea-form/app-textarea-form.component';\nimport {MultiSelectSearchDropdownComponent} from './components/multiselect-search-dropdown/multiselect-search-dropdown.component';\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {ClickNoSelectionDirective} from './directives/click-no-selection.directive';\nimport {RadioGroupFormComponent} from './components/radio-group-form/radio-group-form.component';\nimport {ApprovalManagerComponent} from './components/approval-manager/approval-manager/approval-manager.component';\nimport {PdfViewerComponent} from './components/approval-manager/pdf-viewer/pdf-viewer.component';\nimport {AppInputComponent} from './components/app-input/app-input.component';\nimport {AppArtworkItemComponent} from './components/app-artwork-item/app-artwork-item.component';\nimport {ArtworkItemStatusHeaderComponent} from './components/app-artwork-item/artwork-item-status-header/artwork-item-status-header.component';\nimport {AppDesignerAssignmentComponent} from './components/app-designer-assignment/app-designer-assignment.component';\nimport {TableComponent} from './components/table/table.component';\nimport {FileUploadProgressComponent} from './components/file-upload-progress/file-upload-progress.component';\nimport { OverlayscrollbarsModule } from 'overlayscrollbars-ngx';\nimport { InputChipsComponent } from './components/input-chips/input-chips.component';\nimport {ToastrModule} from 'ngx-toastr';\nimport { BackLinkComponent } from './components/back-link/back-link.component';\nimport { AppPercentInputComponent } from './components/app-percent-input/app-percent-input.component';\nimport { FilesApproveComponent } from './components/files-approve/files-approve.component';\nimport { ClickPreventDefaultDirective } from './directives/click-prevent-default.directive';\nimport { ClickStopPropagationDirective } from './directives/click-stop-propagation.directive';\nimport { AppInterceptableRadioGroupDirective } from './directives/interceptable-radio-group.directive';\nimport { RadioGroupFormConfirmComponent } from './components/radio-group-form-confirm/radio-group-form-confirm.component';\nimport { CustomHintDirective } from './directives/custom-hint.directive';\nimport { UserAssignmentComponent } from './components/app-user-assignment/app-user-assignment.component';\nimport { UserPermissionsV2Directive } from './directives/user-permissions-v2.directive';\nimport { EasyAriaDirective } from './directives/easy-aria.directive';\nimport { ArtworkItemCollapsibleComponent } from './components/app-artwork-item/artwork-item-collapsible/artwork-item-collapsible.component';\nimport { TruncateMiddleComponent } from './components/shared/components/truncate-middle/truncate-middle.component';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { CommonDirectivesModule } from './pipes/directives.module';\nimport { LazyComponent } from './components/app-lazy-component/lazy-component.component';\nimport { BulkChangeFileUploadComponent } from './components/bulk-change-file-upload/bulk-change-file-upload.component';\n\n@NgModule({\n declarations: [\n AppDateRangeComponent,\n AppPopoverComponent,\n HoverDirective,\n SelectSearchDropdownComponent,\n MultiSelectSearchDropdownComponent,\n FileUploaderComponent,\n FileSelectorComponent,\n BulkChangeFileUploadComponent,\n DndDirective,\n AppInputFormComponent,\n AccordionComponent,\n TooltipDirective,\n FileDownloaderComponent,\n CheckboxComponent,\n RadioGroupComponent,\n AppDatePickerComponent,\n DatePickerHeaderComponent,\n AppCurrencyInputComponent,\n InputSearchComponent,\n SystemMessageComponent,\n ButtonDropdownComponent,\n MoreDetailsLinkComponent,\n AutonumericDirective,\n MoreDetailsLinkComponent,\n InputSearchDropdownComponent,\n AppSelectFormComponent,\n UserPermissionsDirective,\n UserPermissionsV2Directive,\n AppTextareaFormComponent,\n ClickNoSelectionDirective,\n ClickPreventDefaultDirective,\n ClickStopPropagationDirective,\n RadioGroupFormComponent,\n RadioGroupFormConfirmComponent,\n ApprovalManagerComponent,\n PdfViewerComponent,\n AppInputComponent,\n ArtworkItemStatusHeaderComponent,\n AppArtworkItemComponent,\n AppDesignerAssignmentComponent,\n UserAssignmentComponent,\n TableComponent,\n FileUploadProgressComponent,\n InputChipsComponent,\n BackLinkComponent,\n AppPercentInputComponent,\n FilesApproveComponent,\n AppInterceptableRadioGroupDirective,\n CustomHintDirective,\n EasyAriaDirective,\n ArtworkItemCollapsibleComponent,\n TruncateMiddleComponent,\n LazyComponent,\n ],\n imports: [\n CommonModule,\n ObserversModule,\n MaterialModule,\n AutonumericModule.forRoot(),\n NgxMatSelectSearchModule,\n TranslateModule,\n ReactiveFormsModule,\n NgxDaterangepickerMd.forRoot(),\n FormsModule,\n OverlayModule,\n OverlayscrollbarsModule,\n ToastrModule.forRoot(),\n RouterModule,\n QuillModule.forRoot({\n customOptions: [\n {\n import: 'attributors/style/size',\n whitelist: ['0.75em', '1.125em', '1.5em', '2.5em']\n }\n ]\n }),\n CommonDirectivesModule\n ],\n exports: [\n CommonModule,\n CommonDirectivesModule,\n MaterialModule,\n ObserversModule,\n TranslateModule,\n AppInputFormComponent,\n AppDateRangeComponent,\n AppPopoverComponent,\n HoverDirective,\n SelectSearchDropdownComponent,\n MultiSelectSearchDropdownComponent,\n FileUploaderComponent,\n FileSelectorComponent,\n BulkChangeFileUploadComponent,\n DndDirective,\n AccordionComponent,\n TooltipDirective,\n FileDownloaderComponent,\n CheckboxComponent,\n ReactiveFormsModule,\n RadioGroupComponent,\n AppDatePickerComponent,\n DatePickerHeaderComponent,\n AppCurrencyInputComponent,\n InputSearchComponent,\n ButtonDropdownComponent,\n MoreDetailsLinkComponent,\n InputSearchDropdownComponent,\n AppSelectFormComponent,\n UserPermissionsDirective,\n UserPermissionsV2Directive,\n AppTextareaFormComponent,\n ClickNoSelectionDirective,\n ClickPreventDefaultDirective,\n ClickStopPropagationDirective,\n RadioGroupFormComponent,\n RadioGroupFormConfirmComponent,\n AppInputComponent,\n DatePipe,\n PdfViewerComponent,\n ArtworkItemStatusHeaderComponent,\n AppArtworkItemComponent,\n AppDesignerAssignmentComponent,\n TableComponent,\n OverlayscrollbarsModule,\n InputChipsComponent,\n BackLinkComponent,\n AppPercentInputComponent,\n FilesApproveComponent,\n AutonumericDirective,\n AppInterceptableRadioGroupDirective,\n CustomHintDirective,\n UserAssignmentComponent,\n EasyAriaDirective,\n ArtworkItemCollapsibleComponent,\n TruncateMiddleComponent,\n LazyComponent,\n ],\n providers: [\n CurrencyPipe,\n ]\n})\nexport class SharedModule { }\n","export const environment = {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n appVersion: require('../../package.json').version,\n newVersionPolingInterval: 'PT10M',\n production: true,\n locales: ['en'],\n defaultLocale: 'en',\n commitId: 'e18509b'\n};\n","import {Component} from '@angular/core';\nimport {Title} from '@angular/platform-browser';\n\n@Component({\n selector: 'app-dashboard',\n templateUrl: './dashboard.component.html',\n styleUrls: []\n})\nexport class DashboardComponent {\n constructor(private titleService: Title) {\n this.titleService.setTitle('ProduceIT - Dashboard');\n }\n}\n","

dashboard works!

\n","import {Component} from '@angular/core';\nimport {Title} from '@angular/platform-browser';\n\n@Component({\n selector: 'app-help',\n templateUrl: './help.component.html',\n styleUrls: []\n})\nexport class HelpComponent {\n constructor(private titleService: Title) {\n this.titleService.setTitle('ProduceIT - Help');\n }\n}\n","

help works!

\n
\n
\n
\n
\n\n","
\n
\n
\n \n
\n
\n \n

{{'common.errors.permission' | translate}}

\n

{{'common.errors.permission-desc' | translate}} \n {{'common.errors.back-to-list' | translate}}.

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

{{'common.errors.not-found' | translate}}

\n

{{'common.errors.permission-desc' | translate}} \n {{'common.errors.back-to-list' | translate}}.

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

\n

\n {{'common.label.please'|translate}}\n \n {{'common.label.or-contact'|translate}} \n \n

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

{{'common.errors.authorization' | translate}}

\n
\n
\n
\n","import { ChangeDetectionStrategy, Component, Inject, InjectionToken, OnInit } from '@angular/core';\nimport { Router, RouterStateSnapshot } from '@angular/router';\nimport { interval } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { WithDestroy } from '../../../shared/components/with-destroy/with-destroy.mixin';\nimport { ERRORS, PAGES_CONFIG } from '../../../shared/constants/pages.constants';\nimport { StateProviderService } from '../../../shared/services/state-provider.service';\nimport { TranslatePipe } from '@ngx-translate/core';\n\nexport const ERROR_PAGE_REFRESH_INTERVAL = new InjectionToken('ERROR_PAGE_REFRESH_INTERVAL', {\n factory: () => 10 * 1000\n});\n\n@Component({\n selector: 'app-error-page',\n templateUrl: './error-page.component.html',\n styleUrls: ['./error-page.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ErrorPageComponent extends WithDestroy() implements OnInit {\n constructor(\n private stateProviderService: StateProviderService,\n private router: Router,\n private translate: TranslatePipe,\n @Inject(ERROR_PAGE_REFRESH_INTERVAL) private errorPageRefreshInterval: number\n ) {\n super();\n }\n\n public permission = ERRORS.permission;\n public notFound = ERRORS.notFound;\n public serviceUnavailable = ERRORS.serviceUnavailable;\n public requestsListLink = PAGES_CONFIG.REQUESTS;\n public errorType: string;\n\n ngOnInit(): void {\n this.errorType = this.stateProviderService.getParam('error');\n\n if (this.errorType === this.serviceUnavailable) {\n interval(this.errorPageRefreshInterval)\n .pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe(() => {\n const next: RouterStateSnapshot = this.stateProviderService.getParam('original');\n if (next?.url) {\n this.router.navigate([next.url]);\n } else {\n this.router.navigate(['/']);\n }\n });\n }\n }\n\n reload(){\n window.location.reload();\n }\n\n redirect(){\n window.open(this.translate.transform('common.label.service-now-link'), '_blank').focus();\n }\n}\n","import {Injectable} from '@angular/core';\nimport {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree} from '@angular/router';\nimport {Observable, of} from 'rxjs';\nimport {StateProviderService} from '../services/state-provider.service';\nimport {tap} from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HasParamGuard implements CanActivate {\n constructor(private stateProviderService: StateProviderService, private router: Router) {}\n\n canActivate(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable | Promise | boolean | UrlTree {\n const requiredParams = next.data.requiredParams as Array;\n if (!requiredParams || !requiredParams.length) {\n return true;\n }\n\n const hasAllRequiredParams = requiredParams.map(param => this.stateProviderService.getParam(param)).every(value => !!value);\n return of(hasAllRequiredParams).pipe(\n tap(skipRedirect => {\n if (!skipRedirect && next.data.navigateFallback) {\n this.router.navigate([next.data.navigateFallback]);\n }\n })\n );\n }\n}\n","

Versions

\n
\n

ProduceIT-UI-{{versions.ui}}

\n

ProduceIT-BE-{{versions.api}}

\n

ProduceIT-FN-{{versions.fn}}

\n

\n
\n\n

Loading versions...

\n
\n","import { Component, OnInit } from '@angular/core';\nimport {catchError, finalize} from 'rxjs/operators';\nimport {RequestsService} from '../../../requests/services/requests.service';\nimport {forkJoin, of} from 'rxjs';\nimport { EnvService } from '../../../env.service';\nimport { environment } from 'src/environments/environment';\n\n@Component({\n selector: 'app-version',\n templateUrl: './version.component.html'\n})\nexport class VersionComponent implements OnInit {\n\n constructor(private requestService: RequestsService, private envService: EnvService) { }\n\n readonly versions = {\n fn: '',\n api: '',\n ui: ''\n };\n\n public loading = false;\n\n ngOnInit(): void {\n this.updateVersions();\n }\n\n updateVersions(): void {\n this.loading = true;\n this.versions.ui = environment.appVersion + '-' + environment.commitId;\n forkJoin([\n this.requestService.getAPIversion().pipe(catchError(() => of(''))),\n this.requestService.getFnVersion().pipe(catchError(() => of(''))),\n // this.requestService.getUIversion().pipe(catchError(() => of(''))),\n ])\n .pipe(finalize(() => {\n this.loading = false;\n }))\n .subscribe(([apiVersion, fnVersion]) => {\n this.versions.api = apiVersion;\n this.versions.fn = fnVersion;\n // this.versions.ui = uiVersion;\n });\n }\n\n}\n","
\n
\n

\n

\n

\n {{'common.label.please'|translate}}\n \n \n {{'common.label.or'|translate}}\n \n \n

\n
\n
\n","import {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\nimport {StateProviderService} from '../../../shared/services/state-provider.service';\nimport {UserRoles} from '../../../shared/constants/user-roles.constant';\nimport {UserService} from '../../../shared/services/user.service';\nimport { PitMsalService } from '../../../shared/services/pit-msal.service';\n\n@Component({\n selector: 'app-error-auth',\n templateUrl: './error-auth.component.html',\n styleUrls: ['./error-auth.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ErrorAuthComponent implements OnInit {\n\n constructor(\n private stateProviderService: StateProviderService,\n private userService: UserService,\n private authService: PitMsalService\n ) {}\n\n public currentUser: string;\n public userRoles = UserRoles;\n public get isMimicMode(): boolean {\n const realUserEmail = this.authService.getAccount()?.username;\n return this.userService.isMimicMode(realUserEmail);\n }\n\n ngOnInit(): void {\n this.currentUser = this.stateProviderService.getParam('user');\n }\n\n logout() {\n this.userService.resetUser();\n this.authService.logout();\n }\n\n resetMimic() {\n const userName1 = this.authService.getAccount()?.username;\n this.userService.setCurrentUserName(userName1.substring(0, userName1.indexOf('@')));\n window.location.reload();\n }\n}\n","import {Injectable} from '@angular/core';\nimport {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree} from '@angular/router';\nimport {Observable, of} from 'rxjs';\nimport {UserService} from '../services/user.service';\nimport {catchError, map, tap} from 'rxjs/operators';\nimport {StateProviderService} from '../services/state-provider.service';\nimport {UserPermissionsService} from '../services/user-permissions.service';\nimport {ERRORS, PAGES_CONFIG} from '../constants/pages.constants';\nimport {UserRoles} from '../constants/user-roles.constant';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { PitMsalService } from '../services/pit-msal.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RootRedirectGuard implements CanActivate {\n constructor(\n public router: Router,\n private userService: UserService,\n private pitMsalService: PitMsalService,\n private stateProviderService: StateProviderService,\n private userPermissionService: UserPermissionsService\n ) {}\n\n private redirectRoute(roles): UrlTree {\n if (roles.find(ugr => UserRoles.APP.APPROVER.includes(ugr))) {\n return this.router.parseUrl(`/${PAGES_CONFIG.APPROVALS}`);\n }\n return this.router.parseUrl(`/${PAGES_CONFIG.REQUESTS}`);\n }\n\n //TODO\n // It looks like the function is identical to the one in src\\app\\shared\\guards\\auth.guard.ts\n // Duplicated code should be moved to a common place (component).\n canActivate(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable | Promise | boolean | UrlTree {\n if (this.userService.isLoggedInProduceit()) {\n return of(this.redirectRoute(this.userPermissionService.getUserRoles()));\n }\n\n return this.userService.login().pipe(\n map((userGroupRoles: string[]) => {\n this.userService.setLoggedInProduceit(true);\n this.userPermissionService.setUserRoles(userGroupRoles);\n return this.redirectRoute(userGroupRoles);\n }),\n tap(() => {\n this.userService.updateUserDetails();\n }),\n catchError(err => {\n if(err instanceof HttpErrorResponse) {\n // 500 status is not included into the condition because it may point to an isolated BE error\n if(err.status > 500 || err.status === 0) {\n this.stateProviderService.putParam('error', ERRORS.serviceUnavailable);\n this.stateProviderService.putParam('original', state);\n this.router.navigate([PAGES_CONFIG.ERROR]);\n return of(false);\n }\n // 400 status when user logins with invalid credentials/token\n if(err.status === 400) {\n this.userService.resetUser();\n this.pitMsalService.logout();\n return of(false);\n }\n }\n this.stateProviderService.putParam('user', this.userService.getCurrentUserName());\n return of(this.router.createUrlTree([PAGES_CONFIG.ERROR_AUTH]));\n })\n );\n }\n}\n","import {Component, ChangeDetectorRef, OnInit} from '@angular/core';\nimport {FormBuilder} from '@angular/forms';\nimport moment from 'moment';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {map, takeUntil} from 'rxjs/operators';\nimport {AssigneeService} from 'src/app/requests/services/assignee.service';\nimport {RequestsService} from 'src/app/requests/services/requests.service';\nimport {ItemListProvider, MultiSelectSearchDropdownOption} from 'src/app/shared/components/multiselect-search-dropdown/item-list.provider';\nimport {UserModel} from 'src/app/shared/models/user.model';\nimport {UtilsService} from 'src/app/shared/services/utils.service';\nimport {WithDestroy} from '../../../shared/components/with-destroy/with-destroy.mixin';\n\nclass ListDataSource extends ItemListProvider {\n constructor(private userService: AssigneeService) {\n super();\n }\n\n private makeLabel(user: UserModel) {\n return [user.firstName, user.lastName].filter(v => v).join(' ');\n }\n\n loadValues(values: string[]): Observable {\n return this.userService.loadValues(values).pipe(map(users => users.map(user => ({label: this.makeLabel(user), value: user.userName}))));\n }\n searchValues(query: string): Observable {\n return this.userService\n .searchValues(query)\n .pipe(map(users => users.map(user => ({label: this.makeLabel(user), value: user.userName}))));\n }\n searchUsers(query: string): Observable {\n return this.userService.searchValues(query).pipe(map(users => users));\n }\n}\n\n@Component({\n selector: 'app-features',\n templateUrl: './features.component.html',\n styleUrls: []\n})\nexport class FeaturesComponent extends WithDestroy() implements OnInit {\n form = this.fb.group({\n checkbox: this.fb.control(false),\n currency: this.fb.control(100.01),\n deliveryDate: this.fb.control(moment().subtract(10, 'days')),\n dateRange: this.fb.control({from: moment().subtract(10, 'days'), to: moment()}),\n textInput: this.fb.control('Text input'),\n numberInput: this.fb.control(321312),\n chips: this.fb.control(['1000', '2000']),\n httpSearchDropdown: this.fb.control(null),\n httpSearchDropdownMultiple: this.fb.control([]),\n dropdown: this.fb.control(null),\n dropdownMultiple: this.fb.control(null),\n percent: this.fb.control(0.05),\n richText: this.fb.control('Rich Text'),\n text: this.fb.control('Rich Text'),\n radioGroup: this.fb.control(true)\n });\n\n constructor(\n private fb: FormBuilder,\n private requestsService: RequestsService,\n private cd: ChangeDetectorRef,\n private utilsService: UtilsService,\n private assigneeService: AssigneeService\n ) {\n super();\n }\n ngOnInit(): void {\n this.form\n .get('text')\n .valueChanges.pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe(v => this.form.get('richText').setValue(v, {emitEvent: false}));\n this.form\n .get('richText')\n .valueChanges.pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe(v => this.form.get('text').setValue(v, {emitEvent: false}));\n }\n\n isLoading$ = new BehaviorSubject(false);\n merchantSearch = [];\n public getMerchants(name: string): void {\n this.isLoading$.next(true);\n this.requestsService.getMerchants(name).subscribe(\n (data: Array<{id: number; name: string}>) => {\n this.isLoading$.next(false);\n this.merchantSearch = [...data];\n this.cd.detectChanges();\n },\n error => {}\n );\n }\n public getMerchantLabel(option): string {\n return option.name;\n }\n\n public userListProvider = new ListDataSource(this.assigneeService);\n public userSearch: any = [];\n isUserLoading = new BehaviorSubject(false);\n\n public getUserLabel(user: UserModel): string {\n return [user.firstName, user.lastName].filter(v => v).join(' ');\n }\n\n public getUsers(name: string): void {\n this.isUserLoading.next(true);\n this.userListProvider.searchUsers(name).subscribe(\n data => {\n this.userSearch = data;\n this.cd.detectChanges();\n this.isUserLoading.next(false);\n },\n () => {\n this.isUserLoading.next(false);\n }\n );\n }\n}\n","import {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\n\nimport {DashboardComponent} from './dashboard/components/dashboard/dashboard.component';\nimport {HelpComponent} from './help/components/help/help.component';\n\nimport {PAGES_CONFIG} from './shared/constants/pages.constants';\nimport {AuthGuard} from './shared/guards/auth.guard';\nimport {ErrorPageComponent} from './error-page/components/error-page/error-page.component';\nimport {HasParamGuard} from './shared/guards/has-param.guard';\nimport {MsalGuard} from '@azure/msal-angular';\nimport {TranslationLoadedGuard} from './shared/guards/translation-loaded.guard';\nimport {VersionComponent} from './version/components/version/version.component';\nimport {ErrorAuthComponent} from './error-page/components/not-authorized/error-auth.component';\nimport { RootRedirectGuard } from './shared/guards/root-redirect.guard';\nimport {environment} from 'src/environments/environment';\nimport { FeaturesComponent } from './help/components/features/features.component';\n\nconst routes: Routes = [\n {\n path: PAGES_CONFIG.REQUESTS,\n loadChildren: () => import(/* webpackChunkName: \"requests\" */ './requests/requests.module').then(m => m.RequestsModule),\n canActivate: [MsalGuard, AuthGuard]\n },\n {\n path: PAGES_CONFIG.DASHBOARD,\n component: DashboardComponent,\n canActivate: [MsalGuard, AuthGuard]\n },\n {\n path: PAGES_CONFIG.REPORTS,\n loadChildren: () => import(/* webpackChunkName: \"reports\" */ './reports/reports.module').then(m => m.ReportsModule),\n canActivate: [MsalGuard, AuthGuard, TranslationLoadedGuard]\n },\n {\n path: PAGES_CONFIG.HELP,\n component: HelpComponent\n },\n {\n path: PAGES_CONFIG.VERSIONS,\n component: VersionComponent\n },\n {\n path: PAGES_CONFIG.ERROR,\n component: ErrorPageComponent,\n canActivate: [HasParamGuard],\n data: {\n requiredParams: ['error'],\n navigateFallback: `/`\n }\n },\n {\n path: PAGES_CONFIG.ERROR_AUTH,\n component: ErrorAuthComponent,\n canActivate: [HasParamGuard],\n data: {\n requiredParams: ['user'],\n navigateFallback: `/`\n }\n },\n {\n path: '',\n component: ErrorAuthComponent,\n canActivate: [\n MsalGuard,\n RootRedirectGuard\n ],\n pathMatch: 'full'\n },\n {\n path: PAGES_CONFIG.APPROVALS,\n loadChildren: () => import(/* webpackChunkName: \"approvals\" */ './approvals/approvals.module').then(m => m.ApprovalsModule),\n canActivate: [MsalGuard, AuthGuard, TranslationLoadedGuard]\n },\n ...(!environment.production\n ? [\n {\n path: 'features',\n component: FeaturesComponent\n }\n ]\n : [])\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, {relativeLinkResolution: 'legacy'})],\n exports: [RouterModule]\n})\nexport class AppRoutingModule {}\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
\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
{{ this.form.value | json }}
\n
\n
\n","import { Injectable } from '@angular/core';\nimport { ApplicationInsights, IExceptionTelemetry } from '@microsoft/applicationinsights-web';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { EnvService } from '../../env.service';\nimport { filter } from 'rxjs/operators';\nimport {UserService} from './user.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApplicationInsightsService {\n private appInsights: ApplicationInsights;\n\n constructor(private router: Router,\n private userService: UserService,\n private env: EnvService) {\n\n this.appInsights = new ApplicationInsights({\n config: {\n instrumentationKey: this.env.appInsightsKey\n }\n });\n\n this.appInsights.loadAppInsights();\n this.loadCustomTelemetryProperties();\n this.createRouterSubscription();\n\n this.setUserId(this.userService.getCurrentUserName());\n }\n\n setUserId(username: string) {\n this.appInsights.clearAuthenticatedUserContext();\n this.appInsights.setAuthenticatedUserContext(username);\n }\n\n clearUserId() {\n this.appInsights.clearAuthenticatedUserContext();\n }\n\n logPageView(name?: string, uri?: string) {\n this.appInsights.trackPageView({ name, uri});\n }\n\n logException(error: Error) {\n const exception: IExceptionTelemetry = {\n exception : error\n };\n this.appInsights.trackException(exception);\n }\n\n private loadCustomTelemetryProperties() {\n this.appInsights.addTelemetryInitializer(envelope => {\n const item = envelope.baseData;\n item.properties = item.properties || {};\n item.properties.ApplicationPlatform = 'WEB';\n item.properties.ApplicationName = 'ProduceIT-Fusion-UI';\n }\n );\n }\n\n private createRouterSubscription() {\n this.router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe((event: NavigationEnd) => {\n this.logPageView(null, event.urlAfterRedirects);\n });\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const VERSION_CHECK_POLLING_INTERVAL = new InjectionToken('POLLING_INTERVAL');\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport moment from 'moment';\nimport { EMPTY, Observable, Subject, timer } from 'rxjs';\nimport { catchError, map, shareReplay, switchMap, takeUntil } from 'rxjs/operators';\nimport { environment } from 'src/environments/environment';\nimport { VersionFileDto } from './new-version.types';\nimport { VERSION_CHECK_POLLING_INTERVAL } from './new-version.constants';\n\n@Injectable()\nexport class NewVersionService {\n private versionCheckTimer: Observable;\n private oldVersion: string = environment.appVersion;\n private unsubscribeSubject = new Subject();\n\n constructor(private httpClient: HttpClient, @Inject(VERSION_CHECK_POLLING_INTERVAL) private polingInterval: string) {}\n\n observe$(): Observable {\n const interval = moment.duration(this.polingInterval).as('millisecond');\n this.versionCheckTimer =\n this.versionCheckTimer ||\n timer(0, interval).pipe(\n switchMap(() => this.checkVersion(this.oldVersion).pipe(catchError(() => EMPTY))),\n takeUntil(this.unsubscribeSubject),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n return this.versionCheckTimer;\n }\n\n unobserve(): void {\n this.versionCheckTimer = null;\n this.unsubscribeSubject.next();\n }\n\n private checkVersion(oldVersion: string): Observable {\n return this.httpClient\n .get(`/version.json?t=${new Date().getTime()}`)\n .pipe(map(({ version }) => oldVersion !== version));\n }\n}\n","import {PAGES_CONFIG} from './pages.constants';\nimport { UserRoles } from './user-roles.constant';\n\nexport interface NavigationItem {\n value: string;\n route: string;\n permissions?: string[];\n excludePermissions?: string[];\n}\n\nexport const NAV_MENU: Array = [\n {\n value: 'dashboard',\n route: PAGES_CONFIG.DASHBOARD\n },\n {\n value: 'requests',\n route: PAGES_CONFIG.REQUESTS,\n },\n {\n value: 'reports',\n route: PAGES_CONFIG.REPORTS,\n },\n {\n value: 'approvals',\n route: PAGES_CONFIG.APPROVALS,\n permissions: UserRoles.APP.APPROVER\n },\n {\n value: 'help',\n route: PAGES_CONFIG.HELP\n }\n];\n","import { HttpClient } from '@angular/common/http';\n\nconst PROFILE_PICTURE_ENDPOINT = 'https://graph.microsoft.com/v1.0/me/photos/48x48/$value';\nexport interface ProfilePictureProviderInterface {\n getProfilePicture(): Promise;\n}\n\nexport class ProfilePictureProvider {\n constructor(private httpClient: HttpClient) {}\n\n async getProfilePicture(): Promise {\n /**\n * Important to use http client in order to catch errors\n */\n return this.httpClient\n .get(PROFILE_PICTURE_ENDPOINT, {\n responseType: 'blob'\n })\n .toPromise();\n }\n}\n\nfunction blobToBase64(blob) {\n return new Promise(resolve => {\n const reader = new FileReader();\n reader.onloadend = function() {\n resolve(this.result);\n };\n reader.readAsDataURL(blob);\n });\n}\nfunction base64ToBlob(base64) {\n if (!fetch) {\n return null;\n }\n return fetch(base64).then(res => res.blob());\n}\n\nexport class ProfilePictureCacheWrapper {\n static TTL = 18 * 60 * 60 * 1000; // 18 hours local cache for user pictures\n constructor(private profilePictureProvider: ProfilePictureProviderInterface) {}\n async getProfilePicture(accountName: string): Promise {\n const accountCacheKey = `PROFILE_CACHE_${accountName}`;\n try {\n const cachedItem = localStorage.getItem(accountCacheKey);\n if (cachedItem != null) {\n const itemValue = JSON.parse(cachedItem);\n if (Date.now() < itemValue[0]) {\n return Promise.resolve(await base64ToBlob(itemValue[1]));\n }\n }\n const profilePicture = await this.profilePictureProvider.getProfilePicture();\n const base64ProfilePicture = await blobToBase64(profilePicture);\n localStorage.setItem(accountCacheKey, JSON.stringify([Date.now() + ProfilePictureCacheWrapper.TTL, base64ProfilePicture]));\n return profilePicture;\n } catch (e) {\n return null;\n }\n }\n}\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit, SecurityContext} from '@angular/core';\nimport {DomSanitizer, SafeUrl} from '@angular/platform-browser';\nimport {Subject} from 'rxjs';\nimport {filter, take, takeUntil} from 'rxjs/operators';\nimport {UserService} from 'src/app/shared/services/user.service';\n\nimport {HttpClient} from '@angular/common/http';\nimport {ProfilePictureCacheWrapper, ProfilePictureProvider} from './profile-picture.provider';\n\n@Component({\n selector: 'app-nav-profile-picture',\n templateUrl: './nav-profile-picture.component.html',\n styleUrls: ['./nav-profile-picture.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NavProfilePictureComponent implements OnInit, OnDestroy {\n private ngUnsubscribe = new Subject();\n public userImage: SafeUrl;\n constructor(\n private sanitizer: DomSanitizer,\n private userService: UserService,\n private cd: ChangeDetectorRef,\n private httpClient: HttpClient\n ) {}\n\n ngOnInit(): void {\n this.userService\n .getLoggedInProduceit()\n .pipe(\n filter(l => !!l),\n take(1),\n takeUntil(this.ngUnsubscribe)\n )\n .subscribe(async () => {\n try {\n const cachedWrapper = new ProfilePictureCacheWrapper(new ProfilePictureProvider(this.httpClient));\n\n const userImage: Blob = await cachedWrapper.getProfilePicture(this.userService.getCurrentUserName());\n if (userImage) {\n this.userImage = this.sanitizer.bypassSecurityTrustUrl(\n this.sanitizer.sanitize(SecurityContext.NONE, URL.createObjectURL(userImage))\n );\n this.cd.markForCheck();\n }\n } catch (e) {\n console.log(e);\n }\n });\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n}\n","
\n \n \"Profile\n
\n","
\n
\n
\n \n \n \n
\n
\n Fusion apps\n
\n
\n
    \n
  • OPS Desk
  • \n
  • CreateIt
  • \n
  • LaunchIt
  • \n
  • PlanIt
  • \n
  • ProduceIt
  • \n
  • PromoteIt
  • \n
  • MerchandiseIt
  • \n
  • ShipIt
  • \n
\n
\n
\n
\n
\n \n
{{ 'module.nav-header.appName' | translate }}
\n \n
\n
\n UI - {{ version?.ui }}\n API - {{ version?.api }}\n
\n
\n \n \n \n \n  {{ 'common.button.create-request' | translate }}\n \n \n \n \n \n \n
\n \n
\n \n
\n \n
\n \n \n \n \n
\n \n
\n {{ getUserInfo() }}\n
\n

\n {{ 'common.label.dark-mode' | translate }}\n

\n

\n {{ 'common.label.reset-mimic-user' | translate }}\n

\n

\n {{ 'module.substitute.text.substitute-users' | translate }}\n

\n

\n {{ 'common.label.settings' | translate }}\n

\n

\n {{ 'common.label.log-out' | translate }}\n

\n
\n \n
\n
\n

\n {{ 'common.label.mimic-mode' | translate }}\n

\n
\n\n\n
\n
\n \n
{{ 'module.nav-header.appName' | translate }}
\n
\n
\n \n Login\n
\n \n
\n Sign out\n and sign in again with a different Azure Active Directory user account.\n
\n
\n
\n
\n","import {NAV_MENU, NavigationItem} from '../../../shared/constants/navigation.constants';\nimport {Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewEncapsulation} from '@angular/core';\nimport {of, Subscription, Subject} from 'rxjs';\nimport {ModalService} from '../../../shared/services/modal-service.service';\nimport {PAGES_CONFIG} from '../../../shared/constants/pages.constants';\nimport {Router} from '@angular/router';\nimport {RequestsService} from '../../../requests/services/requests.service';\nimport {UserService} from '../../../shared/services/user.service';\nimport {environment} from '../../../../environments/environment';\nimport {finalize, first, switchMap, takeUntil} from 'rxjs/operators';\nimport {UserRoles} from '../../../shared/constants/user-roles.constant';\nimport {EnvService} from '../../../env.service';\nimport {TranslateService} from '@ngx-translate/core';\nimport {FormGroup, FormControl} from '@angular/forms';\nimport {UserSettingsService} from 'src/app/shared/services/user-settings.service';\nimport {SystemUserModel, UserTheme} from 'src/app/shared/models/user.model';\nimport {UserPermissionsService} from 'src/app/shared/services/user-permissions.service';\n\n@Component({\n selector: 'app-nav-header-panel',\n templateUrl: './nav-header-panel.component.html',\n styleUrls: ['./nav-header-panel.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class NavHeaderPanelComponent implements OnInit, OnDestroy {\n private ngUnsubscribe = new Subject();\n @Input() public loggedIn: boolean;\n @Input() public allowAuthLogout: boolean;\n @Input() public displayName: string;\n @Input() public user: SystemUserModel;\n @Input() public isMimicMode: boolean;\n @Input() public authUserName: string;\n @Output() public loginClicked: EventEmitter = new EventEmitter();\n @Output() public logoutClicked: EventEmitter = new EventEmitter();\n @Output() public authLogout: EventEmitter = new EventEmitter();\n @Output() public resetMimicUser: EventEmitter = new EventEmitter();\n\n public isAppsMenuVisible = false;\n public navList: NavigationItem[] = NAV_MENU;\n public buttonLoader = false;\n public initialUserName: string;\n public userName: string;\n public loggedInProduceit: boolean;\n public version: {ui: string; api: string} = {ui: null, api: null};\n public userRoles = UserRoles;\n darkModeForm = new FormGroup({\n enableDarkMode: new FormControl(false)\n });\n\n private subscriptions: Array = [];\n public get substituteEnabled(): boolean {\n return this.env.substituteEnabled;\n }\n settingsVisible$: Promise;\n isPoApprovals = false;\n\n constructor(\n private modalService: ModalService,\n private router: Router,\n private requestService: RequestsService,\n public env: EnvService,\n private userService: UserService,\n private userSettingsService: UserSettingsService,\n private translateSerivce: TranslateService,\n private userPermissionsService: UserPermissionsService,\n ) {\n this.settingsVisible$ = Promise.all(\n Object.values({\n settings: this.userPermissionsService.isActionAvailable(this.userRoles.SETTINGS.EMAIL)\n })\n ).then(values => values.every(v => !!v));\n }\n\n ngOnInit(): void {\n this.version.ui = environment.appVersion + '-' + environment.commitId;\n this.initialUserName = this.userService.getCurrentUserName();\n this.userName = this.userService.getCurrentUserName();\n\n this.router.events.subscribe(event => {\n this.isPoApprovals = this.router.url.indexOf('approvals') !== -1;\n });\n\n this.userService\n .authAccount$()\n .pipe(switchMap(() => this.requestService.getAPIversion()))\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(apiVersion => {\n this.version.api = apiVersion || this.version.api;\n });\n\n this.subscriptions.push(\n this.userService.usernameChange().subscribe(value => {\n this.initialUserName = value;\n this.userName = value;\n }),\n this.userService.getLoggedInProduceit().subscribe(loggedIn => {\n this.loggedInProduceit = loggedIn;\n })\n );\n\n this.userSettingsService.userTheme$.subscribe(theme => {\n if (theme === UserTheme.DARK) {\n this.darkModeForm.get('enableDarkMode').setValue(true, {emitEvent: false});\n } else {\n this.darkModeForm.get('enableDarkMode').setValue(false, {emitEvent: false});\n }\n });\n this.darkModeForm.get('enableDarkMode').valueChanges.subscribe(darkModeEnabled => {\n this.userSettingsService.updateUserTheme(darkModeEnabled ? UserTheme.DARK : UserTheme.LIGHT);\n });\n }\n\n public createNewRequest(): void {\n this.buttonLoader = true;\n\n this.requestService\n .createRequest()\n .pipe(\n finalize(() => (this.buttonLoader = false)),\n switchMap(requestTypes => this.modalService.openNewRequestModal(requestTypes)),\n switchMap(({name, type, redirect}) => {\n if (redirect) {\n return of({id: null});\n }\n return this.requestService.postCreateNewRequest(name, type);\n }),\n first()\n )\n .subscribe(({id}) => {\n if (id) {\n this.router.navigate([`/${PAGES_CONFIG.REQUESTS}`, id]);\n }\n });\n }\n\n ngOnDestroy(): void {\n this.subscriptions?.forEach(sub => sub?.unsubscribe());\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n refreshUserName() {\n this.userService.setCurrentUserName(this.userName);\n window.location.reload();\n }\n\n logIn() {\n this.loginClicked.emit();\n }\n\n logOut() {\n this.logoutClicked.emit();\n }\n\n authLogOut() {\n this.authLogout.emit();\n }\n\n resetMimic() {\n this.resetMimicUser.emit();\n }\n\n substitute() {\n this.router.navigate([`/${PAGES_CONFIG.SUBSTITUTES}`]);\n }\n\n settings(): void {\n this.userSettingsService.openModal();\n }\n\n getUserInfo() {\n const substitutes = [...(this.user?.substitutedUsers || [])].join(', ');\n const mimicUser = this.initialUserName;\n\n return this.translateSerivce.instant(\n !substitutes.length\n ? `module.nav-header.user-title${mimicUser !== this.authUserName ? '-as' : ''}`\n : `module.nav-header.user-substituted${mimicUser !== this.authUserName ? '-as' : ''}`,\n {\n displayName: this.displayName,\n mimicUser,\n substitutes\n }\n );\n }\n}\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport WebViewer, {Core, WebViewerInstance, WebViewerOptions} from '@pdftron/webviewer';\nimport {Observable, Subject} from 'rxjs';\nimport {UserService} from '../../../services/user.service';\nimport {distinctUntilChanged, takeUntil} from 'rxjs/operators';\nimport {PdfViewerService} from '../../../services/pdf-viewer.service';\nimport {MessageService} from '../../../services/message-service.service';\nimport {FILE_SIZE_RESTRICTIONS} from '../../../models/upload-file-restrictions.model';\nimport {UtilsService} from '../../../services/utils.service';\nimport moment from 'moment';\nimport {TranslateService} from '@ngx-translate/core';\nimport {LoaderService} from '../../../services/loader.service';\nimport { UserTheme } from 'src/app/shared/models/user.model';\nimport { UserSettingsService } from 'src/app/shared/services/user-settings.service';\ninterface MenuItem {\n type: string;\n className?: string;\n img?: string;\n onClick?: () => void;\n dataElement?: string;\n label?: string;\n}\n\n@Component({\n selector: 'app-pdf-viewer',\n templateUrl: './pdf-viewer.component.html',\n styleUrls: ['./pdf-viewer.component.scss']\n})\nexport class PdfViewerComponent implements OnInit, AfterViewInit, OnDestroy {\n readonly timeoutForIE = 50;\n private readonly env = '__env';\n private readonly restrictionOptions = FILE_SIZE_RESTRICTIONS.GLOBAL;\n private licenseKey = window[this.env]?.pdftronLicenseKey;\n private readonly webViewerConfig: WebViewerOptions= {\n path: '../webviewer',\n fullAPI: true,\n licenseKey: this.licenseKey,\n enableAzureWorkaround: true,\n disabledElements: [\n 'toolbarGroup-Edit',\n ]\n };\n\n @ViewChild('viewer', {static: false}) viewer: ElementRef;\n wvInstance: WebViewerInstance;\n @ViewChild('compareViewer', {static: false}) compareViewer: ElementRef;\n compareWvInstance: WebViewerInstance;\n\n compareMode = false;\n WebViewerFunc = WebViewer;\n currentVersionObs: Observable;\n compareVersionObs: Observable;\n downloadWithAnnotObs: Observable;\n downloadAllWithAnnotObs: Observable;\n\n currentVersion: any;\n compareVersion: any;\n initialized = false;\n private originalScroller: any;\n private scrollTimeout: any;\n private isDownloadAllInProgress: boolean;\n private ngUnsubscribe = new Subject();\n\n constructor(private userService: UserService,\n private pdfViewerService: PdfViewerService,\n private messageService: MessageService,\n private translateService: TranslateService,\n private loaderService: LoaderService,\n private cd: ChangeDetectorRef,\n private userSettingsService: UserSettingsService) {\n this.currentVersionObs = this.pdfViewerService.selectedVersionChanged();\n this.compareVersionObs = this.pdfViewerService.compareVersionChanged();\n this.downloadWithAnnotObs = this.pdfViewerService.downloadClicked();\n this.downloadAllWithAnnotObs = this.pdfViewerService.getDownloadAllSubject();\n }\n\n ngOnInit(): void {\n this.pdfViewerService.compareModeChanged()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(value => this.compareMode = value);\n }\n\n ngAfterViewInit() {\n this.pdfViewerService.initializedChanged()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((value) => {\n if (value !== this.initialized && value === true) {\n this.initialized = true;\n this.cd.detectChanges();\n setTimeout(() => this.initializeViewers());\n }\n });\n }\n\n initializeViewers(): void {\n Promise.all([this.initMainViewer(), this.initCompareViewer()])\n .then(async () => {\n const vwInstances = [this.wvInstance, this.compareWvInstance];\n const viewers = [this.wvInstance.Core.documentViewer, this.compareWvInstance.Core.documentViewer];\n const docContainers = [\n this.viewer.nativeElement.querySelector('iframe').contentDocument.querySelector('.DocumentContainer'),\n this.compareViewer.nativeElement.querySelector('iframe').contentDocument.querySelector('.DocumentContainer')\n ];\n this.syncZoom(viewers, vwInstances);\n this.syncRotation(viewers);\n this.addScrollListener(docContainers);\n this.disableTools(vwInstances);\n this.initClips(vwInstances);\n this.initToolListeners(vwInstances);\n this.currentVersionObs\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((version) => {\n this.currentVersion = version;\n this.loadDoc(this.wvInstance, this.currentVersion);\n this.cd.detectChanges();\n });\n this.compareVersionObs\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((version) => {\n this.compareVersion = version;\n this.loadDoc(this.compareWvInstance, this.compareVersion);\n this.cd.detectChanges();\n });\n this.downloadWithAnnotObs\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((filename) => {\n this.downloadWithAnnotations(filename);\n });\n this.downloadAllWithAnnotObs\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((versions) => {\n this.downloadAllWithAnnotations(versions);\n });\n });\n }\n\n private initMainViewer(): Promise {\n return this.WebViewerFunc(this.webViewerConfig, this.viewer.nativeElement)\n .then(instance => {\n this.wvInstance = instance;\n this.userSettingsService.userTheme$.pipe(\n distinctUntilChanged(),\n takeUntil(this.ngUnsubscribe)\n ).subscribe((userTheme) => {\n if (userTheme === UserTheme.DARK) {\n instance.UI.setTheme('dark');\n } else {\n instance.UI.setTheme('light');\n }\n });\n\n instance.Core.annotationManager.addEventListener('annotationChanged',\n async (annotations: Core.Annotations.Annotation[], action: string, {imported}) => {\n if (imported) {\n return;\n }\n const canAdd = await this.verifyAnnotationCanBeAdded(action, annotations, instance);\n if (canAdd) {\n this.updateAnnotations(instance.Core.annotationManager, this.currentVersion);\n }\n });\n\n instance.Core.documentViewer.addEventListener('documentLoaded', async () => {\n await this.initAnnotationUser(instance);\n this.loadAnnot(instance, instance.Core.annotationManager, this.currentVersion);\n });\n\n }\n );\n }\n\n private initCompareViewer(): Promise {\n return this.WebViewerFunc(this.webViewerConfig, this.compareViewer.nativeElement)\n .then(instance => {\n this.compareWvInstance = instance;\n\n this.userSettingsService.userTheme$.pipe(\n distinctUntilChanged(),\n takeUntil(this.ngUnsubscribe)\n ).subscribe((userTheme) => {\n if (userTheme === UserTheme.DARK) {\n instance.UI.setTheme('dark');\n } else {\n instance.UI.setTheme('light');\n }\n });\n\n instance.Core.annotationManager.addEventListener('annotationChanged',\n async (annotations: Core.Annotations.Annotation[], action: string, {imported}) => {\n if (imported) {\n return;\n }\n const canAdd = await this.verifyAnnotationCanBeAdded(action, annotations, instance);\n if (canAdd) {\n this.updateAnnotations(instance.Core.annotationManager, this.compareVersion);\n }\n });\n\n instance.Core.documentViewer.addEventListener('documentLoaded', async () => {\n if (!this.isDownloadAllInProgress) {\n await this.initAnnotationUser(instance);\n\n this.loadAnnot(instance, instance.Core.annotationManager, this.compareVersion);\n }\n });\n }\n );\n }\n\n private async verifyAnnotationCanBeAdded(action: string, annotations: Core.Annotations.Annotation[], instance) {\n if (action === 'add') {\n const fileAnnotations = annotations\n .filter(annotation => annotation.Subject === 'File Attachment');\n const lobs = await Promise.all(fileAnnotations\n .map((annotation: Core.Annotations.FileAttachmentAnnotation) => annotation.getFileData()));\n if (lobs.some(lob => !UtilsService.isFileFitsBySize(lob.size, this.restrictionOptions))) {\n this.messageService.showSystemMessage(\n 'error',\n this.translateService.instant('common.errors.file-size-error'),\n this.translateService.instant('common.errors.file-size-limit',\n {sizeNumber: this.restrictionOptions.sizeNumber, sizeType: this.restrictionOptions.sizeType}));\n instance.Core.annotationManager.deleteAnnotations(fileAnnotations, false, true, false);\n return false;\n }\n }\n return true;\n }\n\n public downloadWithAnnotations(filename?: string) {\n this.wvInstance.UI.downloadPdf({\n filename\n });\n }\n\n public async downloadAllWithAnnotations(versions): Promise {\n const downloadFile = async (version) => {\n const loadedSubject = new Subject();\n\n const onDocumentLoaderCallback = async () => {\n try {\n this.compareWvInstance.Core.documentViewer.removeEventListener('documentLoaded', onDocumentLoaderCallback);\n\n const comments = await this.pdfViewerService.approvalManagerService.getComments(version).toPromise();\n await this.compareWvInstance.Core.annotationManager.importAnnotations(comments);\n\n this.compareWvInstance.UI.downloadPdf({\n filename: version.attachment?.fileName,\n });\n\n setTimeout(() => {\n loadedSubject.next(version);\n loadedSubject.complete();\n }, 1000);\n } catch (e) {\n console.error('Error importing annotations or downloading PDF:', e);\n loadedSubject.error(e);\n }\n };\n\n this.compareWvInstance.Core.documentViewer.addEventListener('documentLoaded', onDocumentLoaderCallback);\n await this.loadDoc(this.compareWvInstance, version);\n\n return loadedSubject.toPromise();\n };\n\n this.isDownloadAllInProgress = true;\n try {\n for (const version of versions) {\n await downloadFile(version);\n }\n } catch (e) {\n console.error('Error downloading files:', e);\n } finally {\n this.isDownloadAllInProgress = false;\n }\n }\n\n private async loadDoc(wvInstance: WebViewerInstance, version) {\n if (!version) {\n await this.closeDocument(wvInstance);\n return;\n }\n\n const downloadRequest = await this.pdfViewerService.approvalManagerService.getDownloadRequest(version);\n const extension = this.pdfViewerService.approvalManagerService.getVersionFileExtension(version);\n\n if (['tif', 'tiff'].indexOf((extension.toLowerCase() || ''.toLowerCase())) === -1) {\n wvInstance?.UI.loadDocument(downloadRequest.url, {\n extension,\n filename: version.attachment?.fileName,\n customHeaders: downloadRequest.customHeaders\n });\n return;\n }\n const PDFNet = wvInstance.Core.PDFNet;\n\n let newDoc;\n\n this.loaderService.showLoader();\n\n await PDFNet.runWithoutCleanup(() => PDFNet.PDFDoc.create()\n .then((doc) => {\n newDoc = doc;\n newDoc.initSecurityHandler();\n newDoc.lock();\n return PDFNet.Filter.createURLFilter(downloadRequest.url);\n })\n .then((tiffFile) => PDFNet.Convert.fromTiff(newDoc, tiffFile)).then(() => {\n newDoc.unlock();\n wvInstance.UI.loadDocument(newDoc, {\n customHeaders: downloadRequest.customHeaders\n });\n }), this.licenseKey);\n\n this.loaderService.hideLoader();\n }\n\n\n private async initAnnotationUser(instance: WebViewerInstance) {\n const userDetails = this.userService.getUserDetails();\n const userName = userDetails ? `${userDetails.firstName} ${userDetails.lastName}` : 'Guest';\n const menuItem: MenuItem[] = [{\n type: 'actionButton',\n className: 'row',\n img: 'icon-header-print-line',\n onClick: () => {\n instance.UI.print();\n },\n dataElement: 'alertButton',\n label: 'Print'\n },\n {\n type: 'actionButton',\n className: 'row',\n img: 'icon-download',\n onClick: () => {\n instance.UI.downloadPdf();\n },\n dataElement: 'alertButton',\n label: 'Download'\n }, {\n type: 'actionButton',\n className: 'row',\n img: 'icon-header-full-screen',\n onClick: () => {\n instance.UI.toggleFullScreen();\n },\n dataElement: 'alertButton',\n label: 'Full Screen'\n }];\n instance.Core.annotationManager.setCurrentUser(userName);\n /* await this.pdfViewerService.approvalManagerService.canAnnotate() ?\n instance.Core.annotationManager.enableReadOnlyMode() :\n instance.Core.annotationManager.disableReadOnlyMode(); */\n //instance.UI.disableElements(this.webViewerConfig.disabledElements);\n //instance.UI.settingsMenuOverlay.update(menuItem);\n }\n\n private async closeDocument(wvInstance: WebViewerInstance) {\n wvInstance?.Core.documentViewer.closeDocument();\n await wvInstance?.Core.documentViewer.closeDocument();\n }\n\n private updateAnnotations = async (annotManager, version) => {\n const xfdfString = await annotManager.exportAnnotations();\n this.pdfViewerService.approvalManagerService.saveComments(version, xfdfString)\n .subscribe(() => {\n console.log('comment saved!');\n });\n };\n\n private loadAnnot(instance: WebViewerInstance, annotManager: Core.AnnotationManager, version) {\n if (!version) {\n return;\n }\n\n return this.pdfViewerService.approvalManagerService.getComments(version)\n .subscribe((text: string) => {\n annotManager.importAnnotations(text)\n .then(() => {\n console.log('annotations updated');\n });\n }, () => {\n annotManager.importAnnotations('')\n .then(() => {\n console.log('annotations created');\n });\n }, () => {\n if (window.localStorage.getItem(this.getLocalStorageOpenNotesKey(instance)) === 'true') {\n instance.UI.openElements(['notesPanel']);\n }\n });\n }\n\n private getLocalStorageOpenNotesKey(instance: WebViewerInstance) {\n return instance.UI.iframeWindow.frameElement.id + '_open';\n }\n\n private syncZoom(viewers: Core.DocumentViewer[], vwInstances: WebViewerInstance[]) {\n viewers.forEach(viewer => {\n viewer.addEventListener('zoomUpdated', zoom => {\n vwInstances.forEach(instance => {\n if (instance.UI.getZoomLevel() !== zoom) {\n instance.UI.setZoomLevel(zoom);\n }\n });\n });\n });\n }\n\n private syncRotation(viewers: Core.DocumentViewer[]) {\n viewers.forEach(docViewer => {\n docViewer.addEventListener('rotationUpdated', rotation => {\n viewers.forEach(viewer => {\n if (viewer.getRotation() !== rotation) {\n viewer.setRotation(rotation);\n }\n });\n });\n });\n }\n\n private addScrollListener(docContainers) {\n docContainers.forEach(documentContainer => {\n documentContainer.onscroll = () => {\n if (!this.originalScroller || this.originalScroller === documentContainer) {\n this.originalScroller = documentContainer;\n this.syncScrolls(docContainers, documentContainer.scrollLeft, documentContainer.scrollTop);\n clearTimeout(this.scrollTimeout);\n this.scrollTimeout = setTimeout(() => {\n this.originalScroller = null;\n }, this.timeoutForIE);\n }\n };\n });\n }\n\n private syncScrolls(docContainers, scrollLeft, scrollTop) {\n docContainers.forEach(documentContainer => {\n\n if (documentContainer.scrollLeft !== scrollLeft) {\n documentContainer.scrollLeft = scrollLeft;\n }\n\n if (documentContainer.scrollTop !== scrollTop) {\n documentContainer.scrollTop = scrollTop;\n }\n });\n }\n\n private initFileClip(instance: WebViewerInstance) {\n instance.Core.documentViewer.addEventListener(\n 'annotationAdded', async (annotation: Core.Annotations.FileAttachmentAnnotation) => {\n instance.Core.annotationManager.selectAnnotation(annotation);\n instance.UI.focusNote(annotation.Id);\n });\n\n function formatDate(annotation, dateAndTime) {\n if (annotation.DateModified) {\n dateAndTime.innerHTML = moment(annotation.DateModified.toUTCString())\n .format('MM/DD/YYYY, hh:mm a')\n .toUpperCase();\n } else {\n dateAndTime.innerHTML = '';\n }\n }\n\n instance.UI.dangerouslySetNoteTransformFunction((wrapper, state, createElement) => {\n // Change the title of every note\n const annotation = state.annotation;\n if (annotation.Subject.toLowerCase() === 'file attachment') {\n const div = createElement('div');\n div.href = '#';\n div.style = 'line-height: 16px;' +\n 'display: flex;' +\n 'padding-top: 8px;' +\n 'align-items: center;';\n div.onclick = (e: MouseEvent) => {\n instance.Core.annotationManager.trigger('annotationDoubleClicked', state.annotation);\n e.preventDefault();\n };\n const fileMetadata = this.getMetadata(annotation);\n div.innerHTML = `${fileMetadata.filename}`;\n wrapper.querySelector('.author-and-date').append(div);\n }\n\n const dateAndTime = wrapper.querySelector('.date-and-time');\n formatDate(annotation, dateAndTime);\n\n if (annotation.getReplies() && annotation.getReplies().length) {\n annotation.getReplies().forEach((annotationReply, index) => {\n const replyDateContainer = wrapper.querySelector(`.replies .NoteContent:nth-child(${index + 1}) .date-and-time`);\n if (replyDateContainer) {\n formatDate(annotationReply, replyDateContainer);\n }\n });\n\n }\n\n });\n\n }\n\n private getMetadata(annotation: any) {\n return annotation.getFileMetadata();\n }\n\n private disableTools(viewers: Array) {\n viewers.forEach((viewer: WebViewerInstance) => {\n viewer.UI.disableElements(['thumbnailControl', 'documentControl', ...this.webViewerConfig.disabledElements]);\n });\n }\n\n private initClips(viewers: Array) {\n viewers.forEach((viewer: WebViewerInstance) => {\n this.initFileClip(viewer);\n });\n }\n\n private initToolListeners(viewers: Array) {\n viewers.forEach((viewer: WebViewerInstance, index) => {\n const notesButton = viewer.UI.iframeWindow.document.querySelector(`button[data-element='toggleNotesButton']`);\n notesButton.addEventListener('click', () => {\n setTimeout(() => window.localStorage.setItem(this.getLocalStorageOpenNotesKey(viewer),\n `${viewer.UI.isElementOpen('notesPanel')}`), 500);\n });\n });\n }\n\n async ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n await this.disposeViewer(this.wvInstance);\n await this.disposeViewer(this.compareWvInstance);\n }\n\n private async disposeViewer(wvInstance: WebViewerInstance) {\n await this.closeDocument(wvInstance);\n wvInstance?.UI.dispose();\n }\n\n}\n","
\n
\n\n
\n
\n","import {Component, ErrorHandler, Inject, OnDestroy, OnInit, Optional, Renderer2, SecurityContext} from '@angular/core';\nimport {ApplicationInsightsService} from './shared/services/application-insights.service';\nimport { MsalBroadcastService as BroadcastService, MsalGuardConfiguration, MSAL_GUARD_CONFIG } from '@azure/msal-angular';\nimport {Subscription, of, timer} from 'rxjs';\nimport {UserService} from './shared/services/user.service';\nimport {LoaderService} from './shared/services/loader.service';\nimport {EnvService} from './env.service';\nimport FontFaceObserver from 'fontfaceobserver';\nimport { UserModel } from './shared/models/user.model';\nimport moment from 'moment';\nimport { UserSettingsService } from './shared/services/user-settings.service';\nimport { distinctUntilChanged, filter, map, mapTo, switchMap } from 'rxjs/operators';\nimport { environment } from 'src/environments/environment';\nimport { UserTheme } from 'src/app/shared/models/user.model';\nimport { InteractionRequiredAuthError } from 'msal';\nimport { RedirectRequest } from '@azure/msal-browser';\nimport { PitMsalService } from './shared/services/pit-msal.service';\nimport memoize from 'lodash/memoize';\nimport { NewVersionService } from './version/new-version/service/new-version.service';\nimport { MessageService } from './shared/services/message-service.service';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss'],\n providers: [ApplicationInsightsService]\n})\nexport class AppComponent implements OnInit, OnDestroy {\n readonly REFRESH_MESSAGE = 30000;\n public loggedIn = false;\n public allowLogout = false;\n private loginSubscription: Subscription;\n private logoutSubscription: Subscription;\n public displayName: string;\n public authUserName: string;\n public user: UserModel;\n public isLoader = false;\n public isMimicMode: boolean;\n public userDetails$ = this.userService.getUserDetails$();\n public year = moment().format('YYYY');\n\n // tslint:disable-next-line:no-unused-variable\n constructor(private appInsightsService: ApplicationInsightsService,\n private broadcastService: BroadcastService,\n private authService: PitMsalService,\n private errorHandler: ErrorHandler,\n private userService: UserService,\n private userSettingsService: UserSettingsService,\n private loaderService: LoaderService,\n private envService: EnvService,\n private renderer: Renderer2,\n private newVersionService: NewVersionService,\n private messageService: MessageService,\n private sanitizer: DomSanitizer,\n private translate: TranslatePipe,\n @Optional() @Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration) {\n const materialIcons = new FontFaceObserver('Material Icons');\n materialIcons.load(null, 10000)\n .then(() => this.renderer.addClass(document.body, `material-icons-loaded`))\n .catch(() => this.renderer.addClass(document.body, `material-icons-error`));\n }\n\n getScrollbarWidth = memoize(() => {\n // Creating invisible container\n const outer = document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.overflow = 'scroll'; // forcing scrollbar to appear\n (outer.style as any).msOverflowStyle = 'scrollbar'; // needed for WinJS apps\n document.body.appendChild(outer);\n\n // Creating inner element and placing it in the container\n const inner = document.createElement('div');\n outer.appendChild(inner);\n\n // Calculating difference between container's full width and the child width\n const scrollbarWidth = outer.offsetWidth - inner.offsetWidth;\n\n // Removing temporary elements from the DOM\n outer.parentNode.removeChild(outer);\n\n return scrollbarWidth + 'px';\n });\n ngOnInit() {\n this.checkAccount();\n\n this.loginSubscription = this.broadcastService.msalSubject$.pipe(\n filter(e => e.eventType === 'msal:loginSuccess'),\n map(e => e.error)\n ).subscribe(() => {\n this.checkAccount();\n });\n let logoutErrorsCount = 0;\n this.logoutSubscription = this.broadcastService.msalSubject$.pipe(\n filter(e => e.eventType === 'msal:acquireTokenFailure'),\n map(e => e.error)\n ).subscribe((error) => {\n console.warn(error);\n if (error instanceof InteractionRequiredAuthError && logoutErrorsCount === 0) {\n logoutErrorsCount++;\n return;\n }\n this.logoutSubscription.unsubscribe();\n if (this.msalGuardConfig?.authRequest) {\n this.authService.loginRedirect({ ...this.msalGuardConfig.authRequest } as RedirectRequest);\n } else {\n this.authService.loginRedirect();\n }\n });\n\n this.authService.handleRedirectObservable(window.location.hash).subscribe({\n error: (authError) => {\n if (authError) {\n this.allowLogout = true;\n this.errorHandler.handleError(authError);\n }\n }\n });\n\n this.loaderService.spinnerStatus.subscribe(async state => {\n await Promise.resolve();\n this.isLoader = state;\n });\n\n this.checkMimic();\n this.trackNewVersionChanges();\n }\n\n login() {\n this.allowLogout = false;\n\n if (this.msalGuardConfig?.authRequest) {\n this.authService.loginRedirect({ ...this.msalGuardConfig.authRequest } as RedirectRequest);\n } else {\n this.authService.loginRedirect();\n }\n }\n\n logout() {\n this.userService.resetUser();\n this.authLogout();\n }\n\n authLogout() {\n this.authService.logout();\n }\n\n checkAccount() {\n this.loggedIn = !!this.authService.getAccount();\n if (!this.loggedIn) {\n return;\n }\n this.displayName = this.authService.getAccount()?.name;\n const currentUserName = this.userService.getCurrentUserName();\n if (!currentUserName) {\n this.setAuthUserName();\n } else {\n this.userService.setCurrentUserName(currentUserName);\n }\n\n this.userSettingsService.initiate();\n const userTheme$ = this.userSettingsService.userTheme$;\n userTheme$.pipe(\n distinctUntilChanged(),\n ).subscribe((userTheme) => {\n if (userTheme === UserTheme.DARK) {\n if (document.querySelector('[id=\"dark-mode-styles\"]') == null) {\n const link = document.createElement( 'link' );\n link.href = 'dark-mode.css?v=' + environment.appVersion;\n link.type = 'text/css';\n link.rel = 'stylesheet';\n link.media = 'screen';\n link.id = 'dark-mode-styles';\n\n const head = document.getElementsByTagName( 'head' )[0];\n const primaryStyles = head.querySelector('[href*=\"styles\"]');\n try {\n head.insertBefore(link, primaryStyles.nextSibling);\n } catch (e) {\n head.appendChild(link);\n }\n }\n } else if(document.querySelector('[id=\"dark-mode-styles\"]')) {\n document.querySelector('[id=\"dark-mode-styles\"]').remove();\n }\n document.body.setAttribute('data-theme', userTheme.toLowerCase());\n });\n\n const userName1 = this.authService.getAccount()?.username;\n if (userName1) {\n const authUserName = userName1.substring(0, userName1.indexOf('@'));\n this.authUserName = authUserName;\n }\n\n this.checkMimic();\n }\n\n resetMimicUser(): void {\n this.setAuthUserName();\n window.location.reload();\n }\n\n private checkMimic(): void {\n const realUserEmail = this.authService.getAccount()?.username;\n this.isMimicMode = this.userService.isMimicMode(realUserEmail);\n }\n\n private setAuthUserName(): void {\n const userName1 = this.authService.getAccount()?.username;\n this.userService.setCurrentUserName(userName1.substring(0, userName1.indexOf('@')));\n }\n\n private trackNewVersionChanges(): void {\n this.newVersionService\n .observe$()\n .pipe(\n switchMap(hasNewVersion =>\n hasNewVersion ? timer(0, this.REFRESH_MESSAGE).pipe(mapTo(hasNewVersion)) : of(hasNewVersion),\n ),\n )\n .subscribe(hasNewVersion => {\n if (hasNewVersion) {\n console.log('New version available.');\n this.messageService.showSystemMessage('warning',\n this.translate.transform('common.warning.version-update-header'),\n this.sanitizer.bypassSecurityTrustHtml(\n this.sanitizer.sanitize(SecurityContext.NONE, this.translate.transform('common.warning.version-update-desc'))\n ));\n }\n });\n }\n\n ngOnDestroy(): void {\n this.loginSubscription?.unsubscribe();\n this.logoutSubscription?.unsubscribe();\n }\n\n}\n","
\n \n\n
\n \n
\n
\n
Copyright © {{ year }} InComm. All Rights Reserved
\n
\n \n ADA\n accessibility statement\n \n
\n
\n\n
\n \n \n \n
\n
\n
\n \n
\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DashboardComponent } from './components/dashboard/dashboard.component';\nimport {SharedModule} from '../shared/shared.module';\n\n\n@NgModule({\n declarations: [DashboardComponent],\n imports: [\n CommonModule,\n SharedModule\n ]\n})\nexport class DashboardModule { }\n","import { EnvService } from './env.service';\n\nexport const EnvServiceFactory = () => {\n const env = new EnvService();\n\n const envKey = '__env';\n const browserWindow = window || {};\n const browserWindowEnv = browserWindow[envKey] || {};\n\n for (const key in browserWindowEnv) {\n // eslint-disable-next-line no-prototype-builtins\n if (browserWindowEnv.hasOwnProperty(key)) {\n env[key] = window[envKey][key];\n }\n }\n\n return env;\n};\n\nexport const EnvServiceProvider = {\n provide: EnvService,\n useFactory: EnvServiceFactory,\n deps: [],\n};\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ErrorPageComponent} from './components/error-page/error-page.component';\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {SharedModule} from '../shared/shared.module';\nimport {ErrorAuthComponent} from './components/not-authorized/error-auth.component';\n\n@NgModule({\n declarations: [ErrorPageComponent, ErrorAuthComponent],\n imports: [CommonModule, SharedModule],\n providers: [TranslatePipe]\n})\nexport class ErrorPageModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HelpComponent } from './components/help/help.component';\nimport {SharedModule} from '../shared/shared.module';\nimport { FeaturesComponent } from './components/features/features.component';\nimport { ChipsModule } from '../shared/components/app-chips/chips.module';\nimport { RichTextModule } from '../shared/components/rich-text/rich-text.module';\n\n\n\n@NgModule({\n declarations: [HelpComponent, FeaturesComponent],\n imports: [\n RichTextModule,\n ChipsModule,\n CommonModule,\n SharedModule,\n ]\n})\nexport class HelpModule { }\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {NavHeaderPanelComponent} from './components/nav-header-panel/nav-header-panel.component';\nimport {RouterModule} from '@angular/router';\n\nimport {SharedModule} from '../shared/shared.module';\nimport {MaterialModule} from '../material.module';\nimport {FormsModule} from '@angular/forms';\nimport { NavProfilePictureComponent } from './components/nav-profile-picture/nav-profile-picture.component';\nimport { SettingsModalComponent } from './components/settings-modal/settings-modal.component';\nimport {MatListModule} from '@angular/material/list';\nimport { RichTextModule } from '../shared/components/rich-text/rich-text.module';\n\n\n@NgModule({\n declarations: [NavHeaderPanelComponent, NavProfilePictureComponent, SettingsModalComponent],\n exports: [\n NavHeaderPanelComponent\n ],\n imports: [\n CommonModule,\n RouterModule,\n SharedModule,\n MaterialModule,\n FormsModule,\n MatListModule,\n RichTextModule,\n ]\n})\nexport class NavHeaderModule { }\n","import { createAction, props } from '@ngrx/store';\nimport { Substitute } from '../../shared/models/substitute.model';\nimport type { SubstituteScope } from './substitute.reducer';\n\nexport const SUBSTITUTE_ACTION_LOAD = '[Substitute] Load Substitutes';\nexport const SUBSTITUTE_ACTION_RELOAD = '[Substitute] Reload Substitutes';\nexport const SUBSTITUTE_ACTION_SUCCESS = '[Substitute] Load Substitutes Success';\nexport const SUBSTITUTE_ACTION_FAILURE = '[Substitute] Load Substitutes Failure';\nexport const SUBSTITUTE_ACTION_DELETE = '[Substitute] Delete Substitute';\n\nexport const loadSubstitutes = createAction(\n SUBSTITUTE_ACTION_LOAD,\n props<{ scope: SubstituteScope }>(),\n);\nexport const reloadSubstitutes = createAction(\n SUBSTITUTE_ACTION_RELOAD\n);\nexport const loadSubstitutesSuccess = createAction(\n SUBSTITUTE_ACTION_SUCCESS,\n props<{ data: Substitute[] }>(),\n);\nexport const loadSubstitutesFailure = createAction(\n SUBSTITUTE_ACTION_FAILURE,\n props<{ error: Error }>(),\n);\nexport const deleteSubstitute = createAction(\n SUBSTITUTE_ACTION_DELETE,\n props<{ userName?: string; substituteUserName: string; scope: SubstituteScope }>(),\n);\n\n\n\n\n","import {createReducer, on} from '@ngrx/store';\n\nimport {Substitute} from '../../shared/models/substitute.model';\nimport {deleteSubstitute, loadSubstitutes, loadSubstitutesFailure, loadSubstitutesSuccess, reloadSubstitutes} from './substitute.actions';\n\nexport const substituteFeatureKey = 'substitute';\n\nexport type SubstituteScope = 'my' | 'all';\n\nexport interface SubstituteState {\n data: Substitute[];\n loading: boolean;\n loaded: boolean;\n error: Error;\n scope: SubstituteScope;\n}\n\nexport const substituteInitialState: SubstituteState = {\n data: [],\n loading: false,\n loaded: false,\n error: null,\n scope: 'my'\n};\n\nexport const substituteReducer = createReducer(\n substituteInitialState,\n\n on(loadSubstitutes, (state, action) => ({\n ...state,\n data: null,\n loading: true,\n error: null,\n loaded: false,\n scope: action.scope\n })),\n on(reloadSubstitutes, state => ({...state, data: null, loading: true, error: null, loaded: false})),\n on(loadSubstitutesSuccess, (state, action) => ({\n ...state,\n data: action.data,\n loading: false,\n error: null,\n loaded: true\n })),\n on(loadSubstitutesFailure, (state, action) => ({\n ...state,\n data: null,\n loading: false,\n error: action.error,\n loaded: true\n })),\n on(deleteSubstitute, state => ({\n ...state,\n loading: true,\n loaded: true\n }))\n);\n","import { ActionReducerMap, MetaReducer } from '@ngrx/store';\n\nimport {\n refDataInitialState,\n refDataReducer,\n requestRefDataFeatureKey,\n RequestRefDataState,\n} from './ref-data/refdata.reducer';\nimport {\n substituteFeatureKey,\n substituteInitialState,\n substituteReducer,\n SubstituteState,\n} from './substitute/substitute.reducer';\nimport { userFeatureKey, userInitialState, userReducer, UserState } from './user/user.reducer';\n\n// tslint:disable-next-line:no-empty-interface\nexport interface State {\n [userFeatureKey]: UserState;\n [requestRefDataFeatureKey]: RequestRefDataState;\n [substituteFeatureKey]: SubstituteState;\n}\n\nexport const reducers: ActionReducerMap = {\n [userFeatureKey]: userReducer,\n [requestRefDataFeatureKey]: refDataReducer,\n [substituteFeatureKey]: substituteReducer\n};\n\nexport const initialState = {\n [userFeatureKey]: userInitialState,\n [requestRefDataFeatureKey]: refDataInitialState,\n [substituteFeatureKey]: substituteInitialState\n};\n\nexport const metaReducers: MetaReducer[] = [];\n","import {HttpParams} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {Actions, createEffect, ofType} from '@ngrx/effects';\nimport {select, Store} from '@ngrx/store';\nimport {EMPTY, of} from 'rxjs';\nimport {catchError, exhaustMap, map, tap, withLatestFrom} from 'rxjs/operators';\nimport {API} from 'src/app/shared/constants/api.constants';\nimport {ErrorHandlingHttpClient} from 'src/app/shared/services/error-handling-http-client.service';\n\nimport {PaymentType} from '../../requests/constants/request-details.constants';\nimport {PopItemTypeModel} from '../../requests/models/pop-design-request.model';\nimport {Warehouse} from '../../requests/models/warehouse.model';\nimport {CodeNameModel} from '../../shared/models/code-name.model';\nimport {UtilsService} from '../../shared/services/utils.service';\nimport {\n lazyLoadPaymentTypes,\n loadPaymentTypes,\n loadPaymentTypesFailure,\n loadPaymentTypesSuccess,\n loadFSPaymentTypes,\n loadFSPaymentTypesSuccess,\n loadFSPaymentTypesFailure,\n lazyLoadFSPaymentTypes,\n loadPopChannelTypes,\n loadPopChannelTypesSuccess,\n loadPopChannelTypesFailure,\n lazyLoadPopChannelTypes,\n loadPopProdUsageDurationTypes,\n loadPopProdUsageDurationTypesSuccess,\n loadPopProdUsageDurationTypesFailure,\n lazyLoadPopProdUsageDurationTypes,\n loadDielines,\n loadDielinesSuccess,\n loadDielinesFailure,\n lazyLoadDielines,\n loadDataPinFileTypes,\n loadDataPinFileTypesSuccess,\n loadDataPinFileTypesFailure,\n lazyLoadDataPinFileTypes,\n loadSubstrates,\n loadSubstratesSuccess,\n loadSubstratesFailure,\n lazyLoadSubstrates,\n loadRedemptionTypes,\n loadRedemptionTypesSuccess,\n loadRedemptionTypesFailure,\n lazyLoadRedemptionTypes,\n loadRequestItemTypes,\n loadRequestItemTypesSuccess,\n loadRequestItemTypesFailure,\n lazyLoadRequestItemTypes,\n loadRegions,\n loadRegionsSuccess,\n loadRegionsFailure,\n lazyLoadRegions,\n loadWarehouses,\n loadWarehousesSuccess,\n loadWarehousesFailure,\n lazyLoadWarehouses,\n loadCompanies,\n loadCompaniesSuccess,\n loadCompaniesFailure,\n lazyLoadCompanies,\n loadPartnerGroups,\n loadPartnerGroupsSuccess,\n loadPartnerGroupsFailure,\n lazyLoadPartnerGroups,\n loadDesignLineOfBusiness,\n loadDesignLineOfBusinessSuccess,\n loadDesignLineOfBusinessFailure,\n lazyLoadDesignLineOfBusiness,\n loadArtLocationsTypes,\n loadArtLocationsTypesSuccess,\n loadArtLocationsTypesFailure,\n lazyLoadArtLocationsTypes,\n loadDesignSourceTypes,\n loadDesignSourceTypesSuccess,\n loadDesignSourceTypesFailure,\n lazyLoadDesignSourceTypes,\n loadChannelTypes,\n loadChannelTypesSuccess,\n loadChannelTypesFailure,\n lazyLoadChannelTypes,\n loadInventoryTypes,\n loadInventoryTypesSuccess,\n loadInventoryTypesFailure,\n lazyLoadInventoryTypes,\n loadComponentTypes,\n loadComponentTypesSuccess,\n loadComponentTypesFailure,\n lazyLoadComponentTypes,\n loadPopItemTypes,\n loadPopItemTypesSuccess,\n loadPopItemTypesFailure,\n lazyLoadPopItemTypes,\n loadColorTypes,\n loadColorTypesSuccess,\n loadColorTypesFailure,\n lazyLoadColorTypes,\n loadDimensionTypes,\n loadDimensionTypesSuccess,\n loadDimensionTypesFailure,\n lazyLoadDimensionTypes,\n loadFinancialTypes,\n loadFinancialTypesSuccess,\n loadFinancialTypesFailure,\n lazyLoadFinancialTypes,\n loadPopProdEventTypes,\n loadPopProdEventTypesSuccess,\n loadPopProdEventTypesFailure,\n lazyLoadPopProdEventTypes,\n loadPopProdFundingTypes,\n loadPopProdFundingTypesSuccess,\n loadPopProdFundingTypesFailure,\n lazyLoadPopProdFundingTypes,\n loadPopProdItemTypes,\n loadPopProdItemTypesSuccess,\n loadPopProdItemTypesFailure,\n lazyLoadPopProdItemTypes,\n loadPopProdCuttingTypes,\n loadPopProdCuttingTypesSuccess,\n loadPopProdCuttingTypesFailure,\n lazyLoadPopProdCuttingTypes,\n loadPopProdMaterialTypes,\n loadPopProdMaterialTypesSuccess,\n loadPopProdMaterialTypesFailure,\n lazyLoadPopProdMaterialTypes,\n loadPopProdTapeTypes,\n loadPopProdTapeTypesSuccess,\n loadPopProdTapeTypesFailure,\n lazyLoadPopProdTapeTypes,\n loadPopProdInventoryTypes,\n loadPopProdInventoryTypesSuccess,\n loadPopProdInventoryTypesFailure,\n lazyLoadPopProdInventoryTypes,\n loadPrinters,\n loadPrintersSuccess,\n loadPrintersFailure,\n lazyLoadPrinters,\n loadBifComponentTypes,\n loadBifComponentTypesSuccess,\n loadBifComponentTypesFailure,\n lazyLoadBifComponentTypes,\n loadBifFulfillmentTypes,\n loadBifFulfillmentTypesSuccess,\n loadBifFulfillmentTypesFailure,\n lazyLoadBifFulfillmentTypes,\n loadThirdPartyOrderTypes,\n loadThirdPartyOrderTypesSuccess,\n loadThirdPartyOrderTypesFailure,\n lazyLoadThirdPartyOrderTypes,\n loadThirdPartyDataPinFileTypes,\n loadThirdPartyDataPinFileTypesSuccess,\n loadThirdPartyDataPinFileTypesFailure,\n lazyLoadThirdPartyDataPinFileTypes,\n loadThirdPartyPrintOwnerTypes,\n loadThirdPartyPrintOwnerTypesSuccess,\n loadThirdPartyPrintOwnerTypesFailure,\n lazyLoadThirdPartyPrintOwnerTypes,\n loadIhComponents,\n loadIhComponentsSuccess,\n loadIhComponentsFailure,\n lazyLoadIhComponents,\n loadIhHealthPlans,\n loadIhHealthPlansSuccess,\n loadIhHealthPlansFailure,\n lazyLoadIhHealthPlans,\n loadIhHealthPrograms,\n loadIhHealthProgramsSuccess,\n loadIhHealthProgramsFailure,\n lazyLoadIhHealthPrograms,\n loadIhPriorities,\n loadIhPrioritiesSuccess,\n loadIhPrioritiesFailure,\n lazyLoadIhPriorities,\n loadReturnFileTypes,\n loadReturnFileTypesSuccess,\n loadReturnFileTypesFailure,\n lazyLoadReturnFileTypes,\n loadImageFormatTypes,\n loadImageFormatTypesSuccess,\n loadImageFormatTypesFailure,\n lazyLoadImageFormatTypes,\n loadThirdPartyCompanies,\n lazyLoadThirdPartyCompanies,\n loadThirdPartyCompaniesSuccess,\n loadThirdPartyCompaniesFailure,\n loadRequestTypeInventoryTypes,\n loadRequestTypeInventoryTypesSuccess,\n loadRequestTypeInventoryTypesFailure,\n lazyLoadRequestTypeInventoryTypes\n} from './refdata.actions';\nimport {refDataInitialState as refdataInitialState} from './refdata.reducer';\nimport {\n selectArtLocationTypes,\n selectBifComponentTypes,\n selectBifFulfillmentTypes,\n selectChannelTypes,\n selectColorTypes,\n selectCompanies,\n selectComponentTypes,\n selectDataPinFileTypes,\n selectDesignLineOfBusiness,\n selectDesignSourceTypes,\n selectDielines,\n selectDimensionTypes,\n selectFinancialTypes,\n selectFSPaymentTypes,\n selectIhComponents,\n selectIhHealthPlans,\n selectIhHealthPrograms,\n selectIhPriorities,\n selectImageFormatTypes,\n selectInventoryTypes,\n selectPartnerGroups,\n selectPaymentTypes,\n selectPopChannelTypes,\n selectPopItemTypes,\n selectPopProdCuttingTypes,\n selectPopProdEventTypes,\n selectPopProdFundingTypes,\n selectPopProdInventoryTypes,\n selectPopProdItemTypes,\n selectPopProdMaterialTypes,\n selectPopProdTapeTypes,\n selectPopProdUsageDurationTypes,\n selectPrinters,\n selectRedemptionTypes,\n selectRegions,\n selectRequestItemTypes,\n selectRequestTypeInventoryTypes,\n selectReturnFileTypes,\n selectSubstrates,\n selectThirdPartyCompanies,\n selectThirdPartyDataPinFileTypes,\n selectThirdPartyOrderTypes,\n selectThirdPartyPrintOwnerTypes,\n selectWarehouses\n} from './refdata.selectors';\n\n@Injectable()\nexport class RequestRefDataEffects {\n constructor(\n private errorHandlingHttpClient: ErrorHandlingHttpClient,\n private actions$: Actions,\n private store: Store,\n private utilsService: UtilsService\n ) {}\n\n /**\n * PaymentTypes\n */\n loadPaymentTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadPaymentTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.paymentTypes}`).pipe(\n map(data => loadPaymentTypesSuccess({paymentTypes: data})),\n catchError(() => of(loadPaymentTypesFailure()))\n )\n )\n )\n );\n\n lazyLoadPaymentTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadPaymentTypes),\n withLatestFrom(this.store.select(selectPaymentTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.paymentTypes === storedData) {\n return of(loadPaymentTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * Financial Service PaymentTypes\n */\n loadFSPaymentTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadFSPaymentTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.fsPaymentTypes}`).pipe(\n map(data => loadFSPaymentTypesSuccess({fsPaymentTypes: data})),\n catchError(() => of(loadFSPaymentTypesFailure()))\n )\n )\n )\n );\n\n lazyLoadFSPaymentTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadFSPaymentTypes),\n withLatestFrom(this.store.select(selectFSPaymentTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.fsPaymentTypes === storedData) {\n return of(loadFSPaymentTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * Dielines\n */\n loadDielines$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadDielines),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.dielines}`).pipe(\n map(data => loadDielinesSuccess({dielines: data})),\n catchError(() => of(loadDielinesFailure()))\n )\n )\n )\n );\n\n lazyLoadDielines$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadDielines),\n withLatestFrom(this.store.select(selectDielines)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.dielines === storedData) {\n return of(loadDielines());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * DataPinFileTypes\n */\n loadDataPinFileTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadDataPinFileTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.dataPINfileTypes}`).pipe(\n map(data => loadDataPinFileTypesSuccess({dataPinFileTypes: data})),\n catchError(() => of(loadDataPinFileTypesFailure()))\n )\n )\n )\n );\n lazyLoadDataPinFileTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadDataPinFileTypes),\n withLatestFrom(this.store.select(selectDataPinFileTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.dataPinFileTypes === storedData) {\n return of(loadDataPinFileTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * Substrates\n */\n loadSubstrates$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadSubstrates),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.substrates}`).pipe(\n map(data => loadSubstratesSuccess({substrates: data})),\n catchError(() => of(loadSubstratesFailure()))\n )\n )\n )\n );\n lazyLoadSubstrates$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadSubstrates),\n withLatestFrom(this.store.select(selectSubstrates)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.substrates === storedData) {\n return of(loadSubstrates());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * RedemptionTypes\n */\n loadRedemptionTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadRedemptionTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.redemptionTypes}`).pipe(\n map(data => loadRedemptionTypesSuccess({redemptionTypes: data})),\n catchError(() => of(loadRedemptionTypesFailure()))\n )\n )\n )\n );\n lazyLoadRedemptionTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadRedemptionTypes),\n withLatestFrom(this.store.select(selectRedemptionTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.redemptionTypes === storedData) {\n return of(loadRedemptionTypes());\n }\n return EMPTY;\n })\n )\n );\n /**\n * RequestItemTypes\n */\n loadRequestItemTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadRequestItemTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.requestItemsTypes}`).pipe(\n map(data => loadRequestItemTypesSuccess({requestItemTypes: data})),\n catchError(() => of(loadRequestItemTypesFailure()))\n )\n )\n )\n );\n lazyLoadRequestItemTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadRequestItemTypes),\n withLatestFrom(this.store.select(selectRequestItemTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.requestItemTypes === storedData) {\n return of(loadRequestItemTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * Regions\n */\n loadRegions$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadRegions),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.regions}`).pipe(\n map(data => loadRegionsSuccess({regions: data})),\n catchError(() => of(loadRegionsFailure()))\n )\n )\n )\n );\n lazyLoadRegions$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadRegions),\n withLatestFrom(this.store.select(selectRegions)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.regions === storedData) {\n return of(loadRegions());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * Warehouses\n */\n loadWarehouses$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadWarehouses),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.warehouses}`).pipe(\n map(data =>\n loadWarehousesSuccess({\n warehouses: [...data].sort(this.utilsService.sortAZNames)\n })\n ),\n catchError(() => of(loadWarehousesFailure()))\n )\n )\n )\n );\n lazyLoadWarehouses$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadWarehouses),\n withLatestFrom(this.store.select(selectWarehouses)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.warehouses === storedData) {\n return of(loadWarehouses());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * Companies\n */\n loadCompanies$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadCompanies),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.companies}`).pipe(\n map(data => loadCompaniesSuccess({companies: data})),\n catchError(() => of(loadCompaniesFailure()))\n )\n )\n )\n );\n lazyLoadCompanies$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadCompanies),\n withLatestFrom(this.store.select(selectCompanies)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.companies === storedData) {\n return of(loadCompanies());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * PartnerGroups\n */\n loadPartnerGroups$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadPartnerGroups),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.lineOfBusinessTypes}`).pipe(\n map(data => loadPartnerGroupsSuccess({partnerGroups: data})),\n catchError(() => of(loadPartnerGroupsFailure()))\n )\n )\n )\n );\n lazyLoadPartnerGroups$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadPartnerGroups),\n withLatestFrom(this.store.select(selectPartnerGroups)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.partnerGroups === storedData) {\n return of(loadPartnerGroups());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * DesignLineOfBusiness\n */\n loadDesignLineOfBusiness$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadDesignLineOfBusiness),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.designLineOfBusinessTypes}`).pipe(\n map(data => loadDesignLineOfBusinessSuccess({designLineOfBusiness: data})),\n catchError(() => of(loadDesignLineOfBusinessFailure()))\n )\n )\n )\n );\n lazyLoadDesignLineOfBusiness$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadDesignLineOfBusiness),\n withLatestFrom(this.store.select(selectDesignLineOfBusiness)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.designLineOfBusiness === storedData) {\n return of(loadDesignLineOfBusiness());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * ArtLocationTypes\n */\n loadArtLocationTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadArtLocationsTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.artLocationTypes}`).pipe(\n map(data => loadArtLocationsTypesSuccess({artLocationTypes: data})),\n catchError(() => of(loadArtLocationsTypesFailure()))\n )\n )\n )\n );\n lazyLoadArtLocationTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadArtLocationsTypes),\n withLatestFrom(this.store.select(selectArtLocationTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.artLocationTypes === storedData) {\n return of(loadArtLocationsTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * DesignSourceTypes\n */\n loadDesignSourceTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadDesignSourceTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.designSourceTypes}`).pipe(\n map(data => loadDesignSourceTypesSuccess({designSourceTypes: data})),\n catchError(() => of(loadDesignSourceTypesFailure()))\n )\n )\n )\n );\n lazyLoadDesignSourceTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadDesignSourceTypes),\n withLatestFrom(this.store.select(selectDesignSourceTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.designSourceTypes === storedData) {\n return of(loadDesignSourceTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * ChannelTypes\n */\n loadChannelTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadChannelTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.chnTypes}`).pipe(\n map(data => loadChannelTypesSuccess({channelTypes: data})),\n catchError(() => of(loadChannelTypesFailure()))\n )\n )\n )\n );\n lazyLoadChannelTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadChannelTypes),\n withLatestFrom(this.store.select(selectChannelTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.channelTypes === storedData) {\n return of(loadChannelTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * PopChannelTypes\n */\n loadPopChannelTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadPopChannelTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.popChannelTypes}`).pipe(\n map(data => loadPopChannelTypesSuccess({popChannelTypes: data})),\n catchError(() => of(loadPopChannelTypesFailure()))\n )\n )\n )\n );\n lazyLoadPopChannelTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadPopChannelTypes),\n withLatestFrom(this.store.select(selectPopChannelTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.popChannelTypes === storedData) {\n return of(loadPopChannelTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * InventoryTypes\n */\n loadInventoryTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadInventoryTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.inventoryTypes}`).pipe(\n map(data => loadInventoryTypesSuccess({inventoryTypes: data})),\n catchError(() => of(loadInventoryTypesFailure()))\n )\n )\n )\n );\n lazyLoadInventoryTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadInventoryTypes),\n withLatestFrom(this.store.select(selectInventoryTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.inventoryTypes === storedData) {\n return of(loadInventoryTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * RequestTypeInventoryTypes\n */\n loadRequestTypeInventoryTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadRequestTypeInventoryTypes),\n exhaustMap(action =>\n this.errorHandlingHttpClient.get(`${API.requestTypeInventoryTypes(action.requestType)}`).pipe(\n map(data => loadRequestTypeInventoryTypesSuccess({requestTypeInventoryTypes: data})),\n catchError(() => of(loadRequestTypeInventoryTypesFailure()))\n )\n )\n )\n );\n lazyLoadRequestTypeInventoryTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadRequestTypeInventoryTypes),\n withLatestFrom(this.store.select(selectRequestTypeInventoryTypes)),\n exhaustMap(([{requestType}, storedData]) => {\n if (refdataInitialState.requestTypeInventoryTypes === storedData) {\n return of(loadRequestTypeInventoryTypes({requestType}));\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * ComponentTypes\n */\n loadComponentTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadComponentTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.fsComponentTypes}`).pipe(\n map(data => loadComponentTypesSuccess({componentTypes: data})),\n catchError(() => of(loadComponentTypesFailure()))\n )\n )\n )\n );\n lazyLoadComponentTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadComponentTypes),\n withLatestFrom(this.store.select(selectComponentTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.componentTypes === storedData) {\n return of(loadComponentTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * PopItemTypes\n */\n loadPopItemTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadPopItemTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.popItemTypes).pipe(\n map(data => loadPopItemTypesSuccess({popItemTypes: data})),\n catchError(() => of(loadPopItemTypesFailure()))\n )\n )\n )\n );\n lazyLoadPopItemTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadPopItemTypes),\n withLatestFrom(this.store.select(selectPopItemTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.popItemTypes === storedData) {\n return of(loadPopItemTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * ColorTypes\n */\n loadColorTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadColorTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.colorTypes).pipe(\n map(data => loadColorTypesSuccess({colorTypes: data})),\n catchError(() => of(loadColorTypesFailure()))\n )\n )\n )\n );\n lazyLoadColorTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadColorTypes),\n withLatestFrom(this.store.select(selectColorTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.colorTypes === storedData) {\n return of(loadColorTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * DimensionTypes\n */\n loadDimensionTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadDimensionTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.dimensionTypes).pipe(\n map(data => loadDimensionTypesSuccess({dimensionTypes: data})),\n catchError(() => of(loadDimensionTypesFailure()))\n )\n )\n )\n );\n lazyLoadDimensionTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadDimensionTypes),\n withLatestFrom(this.store.select(selectDimensionTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.dimensionTypes === storedData) {\n return of(loadDimensionTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * FinancialTypes\n */\n loadFinancialTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadFinancialTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.financialTypes).pipe(\n map(data => loadFinancialTypesSuccess({financialTypes: data})),\n catchError(() => of(loadFinancialTypesFailure()))\n )\n )\n )\n );\n lazyLoadFinancialTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadFinancialTypes),\n withLatestFrom(this.store.select(selectFinancialTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.financialTypes === storedData) {\n return of(loadFinancialTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * PopProdEventTypes\n */\n loadPopProdEventTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadPopProdEventTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.ppEventTypes).pipe(\n map(data => loadPopProdEventTypesSuccess({popProdEventTypes: data})),\n catchError(() => of(loadPopProdEventTypesFailure()))\n )\n )\n )\n );\n\n lazyLoadPopProdEventTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadPopProdEventTypes),\n withLatestFrom(this.store.select(selectPopProdEventTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.popProdEventTypes === storedData) {\n return of(loadPopProdEventTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * PopProdFundingTypes\n */\n loadPopProdFundingTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadPopProdFundingTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.ppFundingTypes).pipe(\n map(data => loadPopProdFundingTypesSuccess({popProdFundingTypes: data})),\n catchError(() => of(loadPopProdFundingTypesFailure()))\n )\n )\n )\n );\n\n lazyLoadPopProdFundingTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadPopProdFundingTypes),\n withLatestFrom(this.store.select(selectPopProdFundingTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.popProdFundingTypes === storedData) {\n return of(loadPopProdFundingTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * PopProdUsageDurationTypes\n */\n loadPopProdUsageDurationTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadPopProdFundingTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.ppUsageDurationTypes).pipe(\n map(data => loadPopProdUsageDurationTypesSuccess({popUsageDurationTypes: data})),\n catchError(() => of(loadPopProdUsageDurationTypesFailure()))\n )\n )\n )\n );\n\n lazyLoadPopProdUsageDurationTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadPopProdUsageDurationTypes),\n withLatestFrom(this.store.select(selectPopProdUsageDurationTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.popUsageDurationTypes === storedData) {\n return of(loadPopProdUsageDurationTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * PopProdItemTypes\n */\n loadPopProdItemTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadPopProdItemTypes),\n exhaustMap(() => {\n const params = new HttpParams().append('productionOnlyIncluded', 'true');\n return this.errorHandlingHttpClient.get(API.popItemTypes, {params}).pipe(\n map(data => loadPopProdItemTypesSuccess({popProdItemTypes: data})),\n catchError(() => of(loadPopProdItemTypesFailure()))\n );\n })\n )\n );\n\n lazyLoadPopProdItemTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadPopProdItemTypes),\n withLatestFrom(this.store.select(selectPopProdItemTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.popProdItemTypes === storedData) {\n return of(loadPopProdItemTypes());\n }\n return EMPTY;\n })\n )\n );\n /**\n * PopProdCuttingTypes\n */\n loadPopProdCuttingTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadPopProdCuttingTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.ppCuttingTypes).pipe(\n map(popProdCuttingTypes => loadPopProdCuttingTypesSuccess({popProdCuttingTypes})),\n catchError(() => of(loadPopProdCuttingTypesFailure()))\n )\n )\n )\n );\n\n lazyLoadPopProdCuttingTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadPopProdCuttingTypes),\n withLatestFrom(this.store.pipe(select(selectPopProdCuttingTypes))),\n exhaustMap(([, storedData]) => (refdataInitialState.popProdCuttingTypes === storedData ? of(loadPopProdCuttingTypes()) : EMPTY))\n )\n );\n /**\n * PopProdMaterialTypes\n */\n loadPopProdMaterialTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadPopProdMaterialTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.ppMaterialTypes).pipe(\n map(popProdMaterialTypes => loadPopProdMaterialTypesSuccess({popProdMaterialTypes})),\n catchError(() => of(loadPopProdMaterialTypesFailure()))\n )\n )\n )\n );\n\n lazyLoadPopProdMaterialTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadPopProdMaterialTypes),\n withLatestFrom(this.store.pipe(select(selectPopProdMaterialTypes))),\n exhaustMap(([, storedData]) => (refdataInitialState.popProdMaterialTypes === storedData ? of(loadPopProdMaterialTypes()) : EMPTY))\n )\n );\n /**\n * PopProdTapeTypes\n */\n loadPopProdTapeTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadPopProdTapeTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.ppTapeTypes).pipe(\n map(popProdTapeTypes => loadPopProdTapeTypesSuccess({popProdTapeTypes})),\n catchError(() => of(loadPopProdTapeTypesFailure()))\n )\n )\n )\n );\n\n lazyLoadPopProdTapeTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadPopProdTapeTypes),\n withLatestFrom(this.store.pipe(select(selectPopProdTapeTypes))),\n exhaustMap(([, storedData]) => (refdataInitialState.popProdTapeTypes === storedData ? of(loadPopProdTapeTypes()) : EMPTY))\n )\n );\n /**\n * PopProdInventoryTypes\n */\n loadPopProdInventoryTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadPopProdInventoryTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.ppInventoryTypes).pipe(\n map(data => loadPopProdInventoryTypesSuccess({popProdInventoryTypes: data})),\n catchError(() => of(loadPopProdInventoryTypesFailure()))\n )\n )\n )\n );\n lazyLoadPopProdInventoryTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadPopProdInventoryTypes),\n withLatestFrom(this.store.select(selectPopProdInventoryTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.popProdInventoryTypes === storedData) {\n return of(loadPopProdInventoryTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * Printers\n */\n loadPrinters$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadPrinters),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.printers).pipe(\n tap(data => this.utilsService.consoleListPrinters(data)),\n map(data =>\n loadPrintersSuccess({\n printers: [...data].sort(this.utilsService.sortAZNames)\n })\n ),\n catchError(() => of(loadPrintersFailure()))\n )\n )\n )\n );\n lazyLoadPrinters$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadPrinters),\n withLatestFrom(this.store.select(selectPrinters)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.printers === storedData) {\n return of(loadPrinters());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * BifComponentTypes\n */\n loadBifComponentTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadBifComponentTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.bifComponentTypes}`).pipe(\n map(data => loadBifComponentTypesSuccess({bifComponentTypes: data})),\n catchError(() => of(loadBifComponentTypesFailure()))\n )\n )\n )\n );\n lazyLoadBifComponentTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadBifComponentTypes),\n withLatestFrom(this.store.select(selectBifComponentTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.bifComponentTypes === storedData) {\n return of(loadBifComponentTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * BifFulfillmentTypes\n */\n loadBifFulfillmentTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadBifFulfillmentTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.bifFulfillmentTypes}`).pipe(\n map(data => loadBifFulfillmentTypesSuccess({bifFulfillmentTypes: data})),\n catchError(() => of(loadBifFulfillmentTypesFailure()))\n )\n )\n )\n );\n lazyLoadBifFulfillmentTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadBifFulfillmentTypes),\n withLatestFrom(this.store.select(selectBifFulfillmentTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.bifFulfillmentTypes === storedData) {\n return of(loadBifFulfillmentTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * ThirdPartyOrderTypes\n */\n loadThirdPartyOrderTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadThirdPartyOrderTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.thirdPartyOrderTypes}`).pipe(\n map(data => loadThirdPartyOrderTypesSuccess({thirdPartyOrderTypes: data})),\n catchError(() => of(loadThirdPartyOrderTypesFailure()))\n )\n )\n )\n );\n lazyThirdPartyOrderTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadThirdPartyOrderTypes),\n withLatestFrom(this.store.select(selectThirdPartyOrderTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.thirdPartyOrderTypes === storedData) {\n return of(loadThirdPartyOrderTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * ThirdPartyDataPinFileTypes\n */\n loadThirdPartyDataPinFileTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadThirdPartyDataPinFileTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.thirdPartyDataPinFileTypes}`).pipe(\n map(data => loadThirdPartyDataPinFileTypesSuccess({thirdPartyDataPinFileTypes: data})),\n catchError(() => of(loadThirdPartyDataPinFileTypesFailure()))\n )\n )\n )\n );\n lazyLoadThirdPartyDataPinFileTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadThirdPartyDataPinFileTypes),\n withLatestFrom(this.store.select(selectThirdPartyDataPinFileTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.thirdPartyDataPinFileTypes === storedData) {\n return of(loadThirdPartyDataPinFileTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * ThirdPartyPrintOwnerTypes\n */\n loadThirdPartyPrintOwnerTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadThirdPartyPrintOwnerTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get>(`${API.thirdPartyPrintOwnerTypes}`).pipe(\n map(data => loadThirdPartyPrintOwnerTypesSuccess({thirdPartyPrintOwnerTypes: data})),\n catchError(() => of(loadThirdPartyPrintOwnerTypesFailure()))\n )\n )\n )\n );\n lazyThirdPartyPrintOwnerTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadThirdPartyPrintOwnerTypes),\n withLatestFrom(this.store.select(selectThirdPartyPrintOwnerTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.thirdPartyPrintOwnerTypes === storedData) {\n return of(loadThirdPartyPrintOwnerTypes());\n }\n return EMPTY;\n })\n )\n );\n\n loadThirdPartyCompanies$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadThirdPartyCompanies),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(`${API.thirdPartyCompanies}`).pipe(\n map(data => loadThirdPartyCompaniesSuccess({thirdPartyCompanies: data})),\n catchError(() => of(loadThirdPartyCompaniesFailure()))\n )\n )\n )\n );\n lazyLoadThirdPartyCompanies$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadThirdPartyCompanies),\n withLatestFrom(this.store.select(selectThirdPartyCompanies)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.thirdPartyCompanies === storedData) {\n return of(loadThirdPartyCompanies());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * IhComponents\n */\n loadIhComponents$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadIhComponents),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.ihComponents).pipe(\n map(data => loadIhComponentsSuccess({ihComponents: data})),\n catchError(() => of(loadIhComponentsFailure()))\n )\n )\n )\n );\n lazyLoadIhComponents$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadIhComponents),\n withLatestFrom(this.store.select(selectIhComponents)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.ihComponents === storedData) {\n return of(loadIhComponents());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * IhHealthPlans\n */\n loadIhHealthPlans$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadIhHealthPlans),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.ihHealthPlans).pipe(\n map(data => loadIhHealthPlansSuccess({ihHealthPlans: data})),\n catchError(() => of(loadIhHealthPlansFailure()))\n )\n )\n )\n );\n lazyLoadIhHealthPlans$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadIhHealthPlans),\n withLatestFrom(this.store.select(selectIhHealthPlans)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.ihHealthPlans === storedData) {\n return of(loadIhHealthPlans());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * IhHealthPrograms\n */\n loadIhHealthPrograms$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadIhHealthPrograms),\n exhaustMap(action =>\n this.errorHandlingHttpClient.get(`${API.ihHealthPrograms}?healthPlanCode=${action.healthPlanCode}`).pipe(\n map(data => loadIhHealthProgramsSuccess({ihHealthPrograms: data})),\n catchError(() => of(loadIhHealthProgramsFailure()))\n )\n )\n )\n );\n lazyLoadIhHealthPrograms$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadIhHealthPrograms),\n withLatestFrom(this.store.select(selectIhHealthPrograms)),\n exhaustMap(([{healthPlanCode}, storedData]) => {\n if (refdataInitialState.ihHealthPrograms === storedData) {\n return of(loadIhHealthPrograms({healthPlanCode}));\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * IhPriorities\n */\n loadIhPriorities$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadIhPriorities),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get>(API.ihPriorities).pipe(\n map(data => loadIhPrioritiesSuccess({ihPriorities: data})),\n catchError(() => of(loadIhPrioritiesFailure()))\n )\n )\n )\n );\n lazyLoadIhPriorities$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadIhPriorities),\n withLatestFrom(this.store.select(selectIhPriorities)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.ihPriorities === storedData) {\n return of(loadIhPriorities());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * ReturnFileTypes\n */\n loadReturnFileTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadReturnFileTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.thirdPartyReturnFileTypes).pipe(\n map(data => loadReturnFileTypesSuccess({returnFileTypes: data})),\n catchError(() => of(loadReturnFileTypesFailure()))\n )\n )\n )\n );\n lazyLoadReturnFileTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadReturnFileTypes),\n withLatestFrom(this.store.select(selectReturnFileTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.returnFileTypes === storedData) {\n return of(loadReturnFileTypes());\n }\n return EMPTY;\n })\n )\n );\n\n /**\n * ImageFormatTypes\n */\n loadImageFormatTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadImageFormatTypes),\n exhaustMap(() =>\n this.errorHandlingHttpClient.get(API.imageFormatTypes).pipe(\n map(data => loadImageFormatTypesSuccess({imageFormatTypes: data})),\n catchError(() => of(loadImageFormatTypesFailure()))\n )\n )\n )\n );\n lazyLoadImageFormatTypes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(lazyLoadImageFormatTypes),\n withLatestFrom(this.store.select(selectImageFormatTypes)),\n exhaustMap(([, storedData]) => {\n if (refdataInitialState.imageFormatTypes === storedData) {\n return of(loadImageFormatTypes());\n }\n return EMPTY;\n })\n )\n );\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { EMPTY, Observable } from 'rxjs';\nimport { exhaustMap, map } from 'rxjs/operators';\n\nimport { API } from '../../shared/constants/api.constants';\nimport { Substitute, SubstituteData, SubstitutePaginatedResponse } from '../../shared/models/substitute.model';\nimport { ErrorHandlingHttpClient } from '../../shared/services/error-handling-http-client.service';\nimport {\n deleteSubstitute,\n loadSubstitutes,\n loadSubstitutesFailure,\n loadSubstitutesSuccess,\n reloadSubstitutes,\n} from './substitute.actions';\n\n\n@Injectable()\nexport class SubstituteEffects {\n private forwardData(item: SubstituteData): Substitute {\n return {\n ...item,\n startDate: item.startDate ? item.startDate : null,\n endDate: item.endDate ? item.endDate : null\n };\n }\n loadSubstitutes$ = createEffect(() =>\n this.actions$.pipe(\n ofType(loadSubstitutes),\n exhaustMap(({scope}) => {\n let dataProvider: Observable = EMPTY;\n if (scope === 'all') {\n dataProvider = this.errorHandlingHttpClient\n .get(API.adminSubstitutes(), {\n params: {\n ['page.number']: 0,\n ['page.size']: 2147483647,\n }\n });\n } else if (scope === 'my') {\n dataProvider = this.errorHandlingHttpClient.get(API.substitutes(), {\n params: {\n ['page.number']: 0,\n ['page.size']: 2147483647,\n }\n });\n }\n\n return dataProvider.pipe(\n map(\n data => loadSubstitutesSuccess({data: data.content.map(i => this.forwardData(i))}),\n error => loadSubstitutesFailure(error)\n )\n );\n })\n )\n );\n deleteSubstitute$ = createEffect(() =>\n this.actions$.pipe(\n ofType(deleteSubstitute),\n exhaustMap(({userName, substituteUserName, scope}) => {\n let dataProvider: Observable = EMPTY;\n if (scope === 'all') {\n dataProvider = this.errorHandlingHttpClient.delete(API.adminSubstitute(userName, substituteUserName));\n } else if (scope === 'my') {\n dataProvider = this.errorHandlingHttpClient.delete(API.substitute(substituteUserName));\n }\n\n return dataProvider.pipe(\n map(\n () => reloadSubstitutes(),\n () => reloadSubstitutes()\n )\n );\n })\n )\n );\n\n constructor(private actions$: Actions, private errorHandlingHttpClient: ErrorHandlingHttpClient) {}\n}\n","import { Injectable } from '@angular/core';\nimport { setUserTheme } from './user.actions';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { exhaustMap } from 'rxjs/operators';\nimport { Action } from '@ngrx/store';\nimport { UserSettingsService } from 'src/app/shared/services/user-settings.service';\nimport { EMPTY, Observable } from 'rxjs';\n\n@Injectable()\nexport class UserEffects {\n\n constructor(private actions$: Actions) {}\n userTheme$ = createEffect(() =>\n this.actions$.pipe(\n ofType(setUserTheme),\n exhaustMap(({theme}) => {\n UserSettingsService.setLocalUserTheme(theme);\n\n return EMPTY as Observable;\n })\n )\n );\n}\n","import { MissingTranslationHandler, MissingTranslationHandlerParams } from '@ngx-translate/core';\n\nexport class MissingTranslationService implements MissingTranslationHandler {\n handle(params: MissingTranslationHandlerParams) {\n return `${params.key}`;\n }\n}\n","import moment from 'moment-timezone';\n\nconst MomentSettingsInitializer = () => {\n moment.locale('en-US');\n moment.tz.setDefault('America/New_York');\n};\n\nexport default MomentSettingsInitializer;\n","import { MsalGuardConfiguration, MsalInterceptorConfiguration } from '@azure/msal-angular';\r\nimport { BrowserCacheLocation, InteractionType, PublicClientApplication } from '@azure/msal-browser';\r\n\r\nimport { BrowserService } from '../services/browser.service';\r\n\r\nconst env = '__env';\r\n\r\nconst isIe = BrowserService.isIE();\r\nconst msalApplicationScope = [`${window[env]?.adClientId}/.default`];\r\nconst msalPermissions = ['email', 'openid', 'profile'];\r\nexport const msalProtectedResourceMap = new Map()\r\n .set('https://graph.microsoft.com/v1.0/me/photos', ['user.read'])\r\n .set('/api/web/action-entries-en.json', null)\r\n .set('/api/', [...msalApplicationScope]);\r\n\r\nexport const msalUnprotectedResources = ['/assets/', '/api/web/'];\r\n\r\nexport const msalFactory = () => new PublicClientApplication({ // MSAL Configuration\r\n auth: {\r\n clientId: window[env]?.adClientId,\r\n authority: 'https://login.microsoftonline.com/' + window[env]?.tenantId,\r\n redirectUri: window.location.origin,\r\n postLogoutRedirectUri: window.location.origin,\r\n navigateToLoginRequestUrl: true\r\n },\r\n cache: {\r\n cacheLocation : BrowserCacheLocation.LocalStorage,\r\n storeAuthStateInCookie: isIe ? true : false, // set to true for IE 11\r\n },\r\n system: {\r\n loggerOptions: {\r\n loggerCallback: () => {},\r\n piiLoggingEnabled: false\r\n }\r\n },\r\n});\r\n\r\nexport const msalGuardConfig: MsalGuardConfiguration = {\r\n interactionType: InteractionType.Redirect, // MSAL Guard Configuration\r\n authRequest: {\r\n scopes: [...msalApplicationScope, ...msalPermissions],\r\n prompt: 'select_account',\r\n },\r\n loginFailedRoute: '/',\r\n};\r\n\r\nexport const msalInterceptorConfig: MsalInterceptorConfiguration = {\r\n interactionType: InteractionType.Redirect, // MSAL Interceptor Configuration\r\n protectedResourceMap: msalProtectedResourceMap,\r\n};\r\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BrowserService {\n\n static isIE() {\n return window.navigator.userAgent.indexOf('MSIE ') > -1 || window.navigator.userAgent.indexOf('Trident/') > -1;\n }\n}\n","import {HttpParameterCodec, HttpInterceptor, HttpParams} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\n\nexport class XWwwUrlEncodedParamEncoder implements HttpParameterCodec {\n encodeKey(key: string): string {\n return encodeURIComponent(key);\n }\n\n encodeValue(value: string): string {\n return encodeURIComponent(value);\n }\n\n decodeKey(key: string): string {\n return decodeURIComponent(key);\n }\n\n decodeValue(value: string): string {\n return decodeURIComponent(value);\n }\n}\n\n@Injectable()\nexport class EncodeHttpParamsInterceptor implements HttpInterceptor {\n intercept(req, next) {\n const params = new HttpParams({encoder: new XWwwUrlEncodedParamEncoder(), fromString: req.params.toString()});\n return next.handle(\n req.clone({\n params,\n url: req.url\n })\n );\n }\n}\n","import { ErrorHandler, Injector, Injectable } from '@angular/core';\nimport { ApplicationInsightsService } from './application-insights.service';\n\n@Injectable()\nexport class ApplicationInsightsErrorHandler implements ErrorHandler {\n\n constructor(private injector: Injector) {}\n\n handleError(error: any): void {\n this.injector.get(ApplicationInsightsService).logException(error);\n console.log(error);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { SharedModule } from '../shared/shared.module';\n\n@NgModule({\n imports: [\n CommonModule,\n SharedModule,\n ],\n exports: [\n CommonModule,\n SharedModule,\n ]\n})\nexport class SubstituteDepsModule { }\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { substituteFeatureKey, SubstituteState } from './substitute.reducer';\n\nexport const selectSubstituteState = createFeatureSelector(\n substituteFeatureKey\n);\n\nexport const selectSubstitutes = createSelector(\n selectSubstituteState,\n (state) => state.data\n);\n\nexport const selectSubstitutesLoaded = createSelector(\n selectSubstituteState,\n (state) => state.loaded\n);\n\nexport const selectSubstitutesLoading = createSelector(\n selectSubstituteState,\n (state) => state.loading\n);\n\nexport const selectSubstitutesScope = createSelector(\n selectSubstituteState,\n (state) => state.scope\n);\n","import {Injectable} from '@angular/core';\nimport {Store} from '@ngrx/store';\nimport {Observable, combineLatest} from 'rxjs';\nimport {share, switchMap} from 'rxjs/operators';\n\nimport {loadSubstitutes, reloadSubstitutes, deleteSubstitute} from '../../reducers/substitute/substitute.actions';\nimport {\n selectSubstitutes,\n selectSubstitutesLoaded,\n selectSubstitutesLoading,\n selectSubstitutesScope\n} from '../../reducers/substitute/substitute.selectors';\nimport {Substitute, CreteSubstitutePayload} from '../models/substitute.model';\nimport {ErrorHandlingHttpClient} from './error-handling-http-client.service';\nimport {API} from '../constants/api.constants';\nimport type {SubstituteScope} from '../../reducers/substitute/substitute.reducer';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SubstituteService {\n constructor(private store: Store, private errorHandlingHttpClient: ErrorHandlingHttpClient) {}\n\n load$(scope: SubstituteScope = 'my'): Observable {\n return combineLatest([this.store.select(selectSubstitutesLoaded), this.store.select(selectSubstitutesScope)]).pipe(\n switchMap(([loaded, oldScope]) => {\n if (!loaded || oldScope !== scope) {\n this.store.dispatch(loadSubstitutes({scope}));\n }\n\n return this.store.select(selectSubstitutes);\n }),\n share()\n );\n }\n\n select$(): Observable {\n return this.store.select(selectSubstitutes);\n }\n\n loading$(): Observable {\n return this.store.select(selectSubstitutesLoading);\n }\n\n reload(): void {\n this.store.dispatch(reloadSubstitutes());\n }\n\n add$(scope: SubstituteScope, userName: string, substituteUserName: string, substitute: CreteSubstitutePayload): Observable {\n if (scope === 'all') {\n return this.errorHandlingHttpClient.post(API.adminSubstitute(userName, substituteUserName), substitute, undefined, {\n duration: 0\n });\n }\n return this.errorHandlingHttpClient.post(API.substitute(substituteUserName), substitute, undefined, {\n duration: 0\n });\n }\n\n edit$(scope: SubstituteScope, userName: string, substituteUserName: string, substitute: CreteSubstitutePayload): Observable {\n if (scope === 'all') {\n return this.errorHandlingHttpClient.put(API.adminSubstitute(userName, substituteUserName), substitute);\n }\n\n return this.errorHandlingHttpClient.put(API.substitute(substituteUserName), substitute);\n }\n\n remove(scope: SubstituteScope, userName: string, substituteUserName: string): void {\n this.store.dispatch(deleteSubstitute({substituteUserName, userName, scope}));\n }\n}\n","
\n
\n \n
\n\n
\n \n \n
\n\n
\n \n \n \n \n
\n\n\n
\n Start date\n \n
\n\n
\n End Date\n\n \n\n
\n\n
\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, Input} from '@angular/core';\nimport {ControlContainer, FormGroup} from '@angular/forms';\n\nimport {UserModel} from '../../../shared/models/user.model';\nimport {UtilsService} from '../../../shared/services/utils.service';\nimport moment from 'moment';\nimport {ItemListProvider, MultiSelectSearchDropdownOption} from 'src/app/shared/components/multiselect-search-dropdown/item-list.provider';\nimport {AssigneeService} from 'src/app/requests/services/assignee.service';\nimport {Observable, BehaviorSubject} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nclass UserListDataSource extends ItemListProvider {\n constructor(private userService: AssigneeService) {\n super();\n }\n\n private makeLabel(user: UserModel) {\n return [user.firstName, user.lastName].filter(v => v).join(' ');\n }\n\n loadValues(values: string[]): Observable {\n return this.userService\n .loadValues(values)\n .pipe(map(users => users.map(user => ({label: this.makeLabel(user), value: user.userName}))));\n }\n searchValues(query: string): Observable {\n return this.userService\n .searchValues(query)\n .pipe(map(users => users.map(user => ({label: this.makeLabel(user), value: user.userName}))));\n }\n searchUsers(query: string): Observable {\n return this.userService\n .searchValues(query)\n .pipe(map(users => users));\n }\n}\n\n@Component({\n selector: 'app-edit-substitute-form',\n templateUrl: './edit-substitute-form.component.html',\n styleUrls: ['./edit-substitute-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EditSubstituteFormComponent {\n @Input() multipleDelegates = false;\n\n testId = 'substitute_form';\n get form(): FormGroup {\n return this.controlContainer.control as FormGroup;\n }\n today = moment().format('YYYY-MM-DD');\n\n compareUserFn = (o1: UserModel, o2: UserModel) => {\n if (o1?.userName && o2?.userName) {\n return o1.userName === o2.userName;\n }\n return false;\n };\n\n public userListProvider = new UserListDataSource(this.assigneeService);\n\n constructor(\n private controlContainer: ControlContainer,\n public utilsService: UtilsService,\n private assigneeService: AssigneeService,\n private cd: ChangeDetectorRef\n ) {}\n\n public userSearch: any = [];\n isUserLoading = new BehaviorSubject(false);\n\n public getUserLabel(user: UserModel): string {\n return [user.firstName, user.lastName].filter(v => v).join(' ');\n }\n\n public getUsers(name: string): void {\n this.isUserLoading.next(true);\n this.userListProvider.searchUsers(name).subscribe(\n data => {\n this.userSearch = data;\n this.cd.detectChanges();\n this.isUserLoading.next(false);\n },\n () => {\n this.isUserLoading.next(false);\n }\n );\n }\n}\n","
\n \n\n

\n {{ 'module.substitute.text.add-substitution' | translate }}\n

\n\n
\n \n
\n\n \n
\n
\n \n
\n \n
\n {{ 'common.button.add' | translate }}\n \n
\n
\n \n
\n
\n
\n\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { AbstractControl, FormBuilder, Validators } from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { BehaviorSubject, combineLatest, of, Subject } from 'rxjs';\nimport { catchError, distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { RequestsService } from '../../../requests/services/requests.service';\nimport { SubstituteService } from '../../../shared/services/substitute.service';\nimport { UserService } from '../../../shared/services/user.service';\nimport { UtilsService } from '../../../shared/services/utils.service';\nimport { AddSubstituteData } from './add-substitute.types';\n\n@Component({\n selector: 'app-add-substitute',\n templateUrl: './add-substitute.component.html',\n styleUrls: ['./add-substitute.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AddSubstituteComponent implements OnInit, OnDestroy {\n private ngUnsubscribe = new Subject();\n private loadingSubject = new BehaviorSubject(false);\n private errorSubject = new BehaviorSubject(null);\n\n form = this.fb.group({\n is_permanent: this.fb.control(false, []),\n startDate: this.fb.control(null, [Validators.required]),\n endDate: this.fb.control(null, [\n (ac: AbstractControl) => {\n if (!ac.parent?.get('is_permanent')?.value) {\n return Validators.required(ac);\n }\n\n return null;\n }\n ]),\n substituteUser: this.fb.control([], [Validators.required]),\n user: this.fb.control(null, [Validators.required])\n });\n\n loading$ = this.loadingSubject.asObservable();\n error$ = this.errorSubject.asObservable().pipe(distinctUntilChanged());\n canEditUser = Promise.resolve(this.data.scope === 'all');\n\n constructor(\n private fb: FormBuilder,\n private requestService: RequestsService,\n private dialogRef: MatDialogRef,\n private substituteService: SubstituteService,\n private userService: UserService,\n private utilsService: UtilsService,\n @Inject(MAT_DIALOG_DATA) public data: AddSubstituteData\n ) {}\n\n ngOnInit(): void {\n const user = this.form.get('user');\n user.setValue(this.userService.getUserDetails());\n user.disable();\n\n this.canEditUser.then(result => {\n if (result) {\n this.form.get('user').enable();\n }\n });\n\n this.form\n .get('is_permanent')\n .valueChanges.pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(isPermanent => {\n if (isPermanent) {\n this.form.get('endDate').reset();\n this.form.get('endDate').disable();\n } else {\n this.form.get('endDate').enable();\n }\n });\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n onSubmit(): void {\n this.loadingSubject.next(true);\n combineLatest([\n ...this.form.get('substituteUser').value.map(substituteUser =>\n this.substituteService.add$(this.data.scope, this.form.get('user').value?.userName, substituteUser, {\n endDate: this.form.get('endDate').value,\n startDate: this.form.get('startDate').value\n }).pipe(catchError(e => of(e)))\n )\n ])\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(\n (responses) => {\n // we should close the form in case of one successful response\n const hasSuccessResponse = responses.some(r => !(r instanceof HttpErrorResponse));\n this.loadingSubject.next(false);\n if(hasSuccessResponse) {\n this.dialogRef.close(true);\n }\n },\n error => {\n this.loadingSubject.next(false);\n this.errorSubject.next(error.error.message);\n }\n );\n }\n\n onClose(): void {\n this.dialogRef.close();\n }\n}\n","
\n \n\n

\n {{ 'module.substitute.text.edit-substitution' | translate }}\n

\n\n
\n \n
\n\n \n
\n
\n \n
\n \n
\n {{ 'common.button.edit' | translate }}\n \n
\n
\n \n
\n
\n
\n\n","import { ChangeDetectionStrategy, Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { AbstractControl, FormBuilder, Validators } from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { BehaviorSubject, merge, of, Subject } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { RequestsService } from '../../../requests/services/requests.service';\nimport { SubstituteService } from '../../../shared/services/substitute.service';\nimport { UserService } from '../../../shared/services/user.service';\nimport { UtilsService } from '../../../shared/services/utils.service';\nimport { EditSubstituteData } from './edit-substitute.types';\n\n@Component({\n selector: 'app-edit-substitute',\n templateUrl: './edit-substitute.component.html',\n styleUrls: ['./edit-substitute.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EditSubstituteComponent implements OnInit, OnDestroy {\n private ngUnsubscribe = new Subject();\n private loadingSubject = new BehaviorSubject(false);\n private errorSubject = new BehaviorSubject(null);\n\n form = (substitute => {\n const form = this.fb.group({\n is_permanent: this.fb.control(substitute.endDate === null, []),\n startDate: this.fb.control(substitute.startDate, [Validators.required]),\n endDate: this.fb.control(substitute.endDate, [\n (ac: AbstractControl) => {\n if (!ac.parent?.get('is_permanent')?.value) {\n return Validators.required(ac);\n }\n\n return null;\n }\n ]),\n user: this.fb.control(substitute.user, [Validators.required]),\n substituteUser: this.fb.control(substitute.substituteUser, [Validators.required])\n });\n form.get('user').disable();\n form.get('substituteUser').disable();\n\n return form;\n })(this.data.substitute);\n\n loading$ = this.loadingSubject.asObservable();\n error$ = this.errorSubject.asObservable().pipe(distinctUntilChanged());\n\n constructor(\n private fb: FormBuilder,\n private requestService: RequestsService,\n private dialogRef: MatDialogRef,\n private substituteService: SubstituteService,\n private userService: UserService,\n private utilsService: UtilsService,\n @Inject(MAT_DIALOG_DATA) public data: EditSubstituteData\n ) {}\n\n ngOnInit(): void {\n const user = this.form.get('user');\n user.disable();\n\n merge(this.form.get('is_permanent').valueChanges, of(this.form.get('is_permanent').value))\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(isPermanent => {\n if (isPermanent) {\n this.form.get('endDate').reset();\n this.form.get('endDate').disable();\n } else {\n this.form.get('endDate').enable();\n }\n });\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n onSubmit(): void {\n this.loadingSubject.next(true);\n this.substituteService\n .edit$(this.data.scope, this.form.get('user').value?.userName, this.form.get('substituteUser').value?.userName, {\n endDate: this.form.get('endDate').value,\n startDate: this.form.get('startDate').value\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(\n response => {\n this.loadingSubject.next(false);\n this.dialogRef.close(response);\n },\n error => {\n this.loadingSubject.next(false);\n this.errorSubject.next(error.error.message);\n }\n );\n }\n\n onClose(): void {\n this.dialogRef.close();\n }\n}\n","\nSubstitute table\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 \n \n
{{ 'module.substitute.substitute-list.affected-user' | translate }}\n {{ utilsService.getFullUserName(element.user) }}\n {{ 'module.substitute.substitute-list.delegate' | translate }}\n {{ utilsService.getFullUserName(element.substituteUser) }}\n {{ 'module.substitute.substitute-list.requestor' | translate }}\n {{ utilsService.getFullUserName(element.requestor) }}\n {{ 'module.substitute.substitute-list.start-date' | translate }}\n {{ element.startDate | date: 'MM/dd/yyyy':null }}\n {{ 'module.substitute.substitute-list.end-date' | translate }}\n {{ element.endDate | date: 'MM/dd/yyyy':null }}\n \n \n\n \n
\n\n \n
\n","import {ChangeDetectionStrategy, Component, Input, OnDestroy} from '@angular/core';\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {SubstituteScope} from '../../../reducers/substitute/substitute.reducer';\nimport {Substitute} from '../../../shared/models/substitute.model';\nimport {ModalService} from '../../../shared/services/modal-service.service';\nimport {SubstituteService} from '../../../shared/services/substitute.service';\nimport {UtilsService} from '../../../shared/services/utils.service';\nimport {AddSubstituteComponent} from '../../modals/add-substitute/add-substitute.component';\nimport {AddSubstituteData, AddSubstituteResponse} from '../../modals/add-substitute/add-substitute.types';\nimport {EditSubstituteComponent} from '../../modals/edit-substitute/edit-substitute.component';\nimport {EditSubstituteData, EditSubstituteResponse} from '../../modals/edit-substitute/edit-substitute.types';\n\n@Component({\n selector: 'app-substitute-list',\n templateUrl: './substitute-list.component.html',\n styleUrls: ['./substitute-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SubstituteListComponent implements OnDestroy {\n private ngUnsubscribe = new Subject();\n displayedColumns = ['user', 'substituteUser', 'requestor', 'startDate', 'endDate', 'actions'];\n\n @Input() scope: SubstituteScope = 'my';\n @Input() testId = 'substitutes';\n @Input() substitutes: Substitute[] = [];\n\n constructor(\n private modalService: ModalService,\n private substituteService: SubstituteService,\n private translatePipe: TranslatePipe,\n public utilsService: UtilsService\n ) {}\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n addSubstitute(): void {\n this.modalService\n .openModal(\n AddSubstituteComponent,\n {\n scope: this.scope\n },\n undefined,\n false\n )\n .afterClosed()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(dialogResponse => this.handleAfterClosed(dialogResponse));\n }\n\n private handleAfterClosed(value: AddSubstituteResponse) {\n if (value) {\n this.substituteService.reload();\n }\n }\n\n removeSubstitute(substitute: Substitute): void {\n this.modalService\n .openConfirmationModal(this.translatePipe.transform('module.substitute.substitute.remove-substitute'), '')\n .afterClosed()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(confirm => {\n if (confirm) {\n this.substituteService.remove(this.scope, substitute?.user?.userName, substitute?.substituteUser?.userName);\n }\n });\n }\n\n editSubstitute(substitute: Substitute): void {\n this.modalService\n .openModal(\n EditSubstituteComponent,\n {\n substitute,\n scope: this.scope\n },\n undefined,\n false\n )\n .afterClosed()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(dialogResponse => this.handleAfterClosed(dialogResponse));\n }\n}\n","
\n \n \n \n {{ 'module.substitute.text.my-substitutes' | translate }}\n {{ 'module.substitute.text.all-substitutes' | translate }}\n \n \n \n \n \n \n \n \n
\n\n\n \n \n
\n
\n \n {{ 'common.statuses.loading' | translate }}\n
\n
\n
\n
\n
\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { MsalGuard } from '@azure/msal-angular';\n\nimport { PAGES_CONFIG } from '../shared/constants/pages.constants';\nimport { AuthGuard } from '../shared/guards/auth.guard';\nimport { SubstitesComponent } from './pages/substites/substitutes.component';\n\nconst routes: Routes = [\n {\n path: PAGES_CONFIG.SUBSTITUTES,\n component: SubstitesComponent,\n canActivate: [MsalGuard, AuthGuard]\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class SubstituteRoutingModule { }\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { UserRoles } from '../../../shared/constants/user-roles.constant';\nimport { SubstituteService } from '../../../shared/services/substitute.service';\n\nimport type {SubstituteScope} from '../../../reducers/substitute/substitute.reducer';\n@Component({\n selector: 'app-substitutes',\n templateUrl: './substitutes.component.html',\n styleUrls: ['./substitutes.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SubstitesComponent implements OnDestroy {\n private ngUnsubscribe = new Subject();\n private scopeSubject = new BehaviorSubject('my');\n displayedColumns = ['substituteUser', 'user', 'startDate', 'endDate', 'actions'];\n testId = 'substitutes';\n\n substitutes$ = this.scopeSubject.asObservable().pipe(\n distinctUntilChanged(),\n switchMap(scope =>\n this.substituteService.load$(scope).pipe(\n filter(i => !!i),\n takeUntil(this.ngUnsubscribe)\n )\n )\n );\n loading$ = this.substituteService.loading$();\n get scope(): SubstituteScope {\n return this.scopeSubject.value;\n }\n set scope(scope: SubstituteScope) {\n this.scopeSubject.next(scope);\n this.cd.detectChanges();\n }\n UserRoles = UserRoles;\n\n constructor(private substituteService: SubstituteService, public cd: ChangeDetectorRef) {}\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { AddSubstituteComponent } from './modals/add-substitute/add-substitute.component';\nimport { SubstitesComponent } from './pages/substites/substitutes.component';\nimport { SubstituteDepsModule } from './substitute-deps.module';\nimport { SubstituteRoutingModule } from './substitute-routing.module';\nimport { EditSubstituteFormComponent } from './common/edit-substitute-form/edit-substitute-form.component';\nimport { EditSubstituteComponent } from './modals/edit-substitute/edit-substitute.component';\nimport { SubstituteListComponent } from './common/substitute-list/substitute-list.component';\n\n\n@NgModule({\n declarations: [\n SubstitesComponent,\n EditSubstituteFormComponent,\n EditSubstituteComponent,\n AddSubstituteComponent,\n SubstituteListComponent\n ],\n imports: [\n SubstituteRoutingModule,\n SubstituteDepsModule,\n ]\n})\nexport class SubstituteModule { }\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {VersionComponent} from './components/version/version.component';\n\n@NgModule({\n declarations: [VersionComponent],\n imports: [\n CommonModule\n ]\n})\nexport class VersionModule {\n}\n","import { HttpClientModule } from '@angular/common/http';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { VERSION_CHECK_POLLING_INTERVAL } from './service/new-version.constants';\nimport { NewVersionService } from './service/new-version.service';\n\n@NgModule({\n imports: [HttpClientModule],\n providers: [NewVersionService],\n})\nexport class NewVersionModule {\n static forRoot(polingInterval: string): ModuleWithProviders {\n return {\n ngModule: NewVersionModule,\n providers: [\n {\n provide: VERSION_CHECK_POLLING_INTERVAL,\n useValue: polingInterval,\n },\n ],\n };\n }\n}\n","import { APP_INITIALIZER, CUSTOM_ELEMENTS_SCHEMA, ErrorHandler, NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\n\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\n\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\nimport { MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular/material-moment-adapter';\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\nimport {\n MsalInterceptor,\n MsalModule\n} from '@azure/msal-angular';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport { StoreDevtoolsModule } from '@ngrx/store-devtools';\nimport { MissingTranslationHandler, TranslateLoader, TranslateModule } from '@ngx-translate/core';\nimport { environment } from '../environments/environment';\nimport { DashboardModule } from './dashboard/dashboard.module';\nimport { EnvServiceProvider } from './env.service.provider';\nimport { ErrorPageModule } from './error-page/error-page.module';\nimport { HelpModule } from './help/help.module';\nimport { MaterialModule } from './material.module';\nimport { NavHeaderModule } from './nav-header/nav-header.module';\nimport { metaReducers, reducers } from './reducers';\nimport { RequestRefDataEffects } from './reducers/ref-data/refdata.effects';\nimport { SubstituteEffects } from './reducers/substitute/substitute.effects';\nimport { UserEffects } from './reducers/user/user.effects';\nimport { MissingTranslationService } from './services/missing-translation.service';\nimport MomentSettingsInitializer from './services/moment-settings.initializer';\nimport { msalFactory, msalGuardConfig, msalInterceptorConfig } from './shared/constants/msal.constants';\nimport { EncodeHttpParamsInterceptor } from './shared/interceptors/encode-http-params.interceptor';\nimport { UsernameHeaderInterceptor } from './shared/interceptors/username-header.interceptor';\nimport { ApplicationInsightsErrorHandler } from './shared/services/application-insights-error-handler';\nimport { PitMsalService } from './shared/services/pit-msal.service';\nimport { PitTranslateLoader } from './shared/services/pit-translate-loader.service';\nimport { SharedModule } from './shared/shared.module';\nimport { SubstituteModule } from './substitute/substitute.module';\nimport { VersionModule } from './version/version.module';\nimport { NewVersionModule } from './version/new-version/new-version.module';\n\nconst disableAnimations =\n !('animate' in document.documentElement)\n || (navigator && /iPhone OS (8|9|10|11|12|13)_/.test(navigator.userAgent));\n\n\n@NgModule({\n declarations: [\n AppComponent,\n ],\n imports: [\n HttpClientModule,\n BrowserModule,\n AppRoutingModule,\n BrowserAnimationsModule.withConfig({ disableAnimations }),\n SharedModule,\n MaterialModule,\n NavHeaderModule,\n DashboardModule,\n HelpModule,\n VersionModule,\n ErrorPageModule,\n MsalModule.forRoot(msalFactory(), msalGuardConfig, msalInterceptorConfig),\n StoreModule.forRoot(reducers, { metaReducers }),\n NewVersionModule.forRoot(environment.newVersionPolingInterval),\n SubstituteModule,\n EffectsModule.forRoot([\n RequestRefDataEffects,\n SubstituteEffects,\n UserEffects,\n ]),\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useExisting: PitTranslateLoader,\n },\n missingTranslationHandler: {provide: MissingTranslationHandler, useClass: MissingTranslationService},\n defaultLanguage: 'en'\n }),\n !environment.production ? StoreDevtoolsModule.instrument() : []\n ],\n providers: [\n EnvServiceProvider,\n PitMsalService,\n {\n provide: ErrorHandler,\n useClass: ApplicationInsightsErrorHandler\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: MsalInterceptor,\n multi: true\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: UsernameHeaderInterceptor,\n multi: true\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: EncodeHttpParamsInterceptor,\n multi: true,\n },\n {\n provide: APP_INITIALIZER,\n useFactory: () => MomentSettingsInitializer,\n multi: true\n },\n { provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: false } },\n {\n provide: MAT_FORM_FIELD_DEFAULT_OPTIONS,\n useValue: {\n hideRequiredMarker: true\n }\n }\n ], // send all dates in EST\n schemas: [ CUSTOM_ELEMENTS_SCHEMA ],\n bootstrap: [ AppComponent ]\n})\nexport class AppModule {\n constructor() {\n MomentSettingsInitializer();\n }\n}\n","import { 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 enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n","var map = {\n\t\"./af\": 58685,\n\t\"./af.js\": 58685,\n\t\"./ar\": 254,\n\t\"./ar-dz\": 4312,\n\t\"./ar-dz.js\": 4312,\n\t\"./ar-kw\": 32614,\n\t\"./ar-kw.js\": 32614,\n\t\"./ar-ly\": 18630,\n\t\"./ar-ly.js\": 18630,\n\t\"./ar-ma\": 28674,\n\t\"./ar-ma.js\": 28674,\n\t\"./ar-sa\": 49032,\n\t\"./ar-sa.js\": 49032,\n\t\"./ar-tn\": 24730,\n\t\"./ar-tn.js\": 24730,\n\t\"./ar.js\": 254,\n\t\"./az\": 53052,\n\t\"./az.js\": 53052,\n\t\"./be\": 60150,\n\t\"./be.js\": 60150,\n\t\"./bg\": 63069,\n\t\"./bg.js\": 63069,\n\t\"./bm\": 13466,\n\t\"./bm.js\": 13466,\n\t\"./bn\": 18516,\n\t\"./bn-bd\": 90557,\n\t\"./bn-bd.js\": 90557,\n\t\"./bn.js\": 18516,\n\t\"./bo\": 26273,\n\t\"./bo.js\": 26273,\n\t\"./br\": 9588,\n\t\"./br.js\": 9588,\n\t\"./bs\": 19815,\n\t\"./bs.js\": 19815,\n\t\"./ca\": 83331,\n\t\"./ca.js\": 83331,\n\t\"./cs\": 21320,\n\t\"./cs.js\": 21320,\n\t\"./cv\": 72219,\n\t\"./cv.js\": 72219,\n\t\"./cy\": 68266,\n\t\"./cy.js\": 68266,\n\t\"./da\": 66427,\n\t\"./da.js\": 66427,\n\t\"./de\": 67435,\n\t\"./de-at\": 52871,\n\t\"./de-at.js\": 52871,\n\t\"./de-ch\": 12994,\n\t\"./de-ch.js\": 12994,\n\t\"./de.js\": 67435,\n\t\"./dv\": 82357,\n\t\"./dv.js\": 82357,\n\t\"./el\": 95649,\n\t\"./el.js\": 95649,\n\t\"./en-au\": 59961,\n\t\"./en-au.js\": 59961,\n\t\"./en-ca\": 19878,\n\t\"./en-ca.js\": 19878,\n\t\"./en-gb\": 3924,\n\t\"./en-gb.js\": 3924,\n\t\"./en-ie\": 70864,\n\t\"./en-ie.js\": 70864,\n\t\"./en-il\": 91579,\n\t\"./en-il.js\": 91579,\n\t\"./en-in\": 30940,\n\t\"./en-in.js\": 30940,\n\t\"./en-nz\": 16181,\n\t\"./en-nz.js\": 16181,\n\t\"./en-sg\": 44301,\n\t\"./en-sg.js\": 44301,\n\t\"./eo\": 85291,\n\t\"./eo.js\": 85291,\n\t\"./es\": 54529,\n\t\"./es-do\": 53764,\n\t\"./es-do.js\": 53764,\n\t\"./es-mx\": 12584,\n\t\"./es-mx.js\": 12584,\n\t\"./es-us\": 63425,\n\t\"./es-us.js\": 63425,\n\t\"./es.js\": 54529,\n\t\"./et\": 35203,\n\t\"./et.js\": 35203,\n\t\"./eu\": 70678,\n\t\"./eu.js\": 70678,\n\t\"./fa\": 83483,\n\t\"./fa.js\": 83483,\n\t\"./fi\": 96262,\n\t\"./fi.js\": 96262,\n\t\"./fil\": 52521,\n\t\"./fil.js\": 52521,\n\t\"./fo\": 34555,\n\t\"./fo.js\": 34555,\n\t\"./fr\": 63131,\n\t\"./fr-ca\": 88239,\n\t\"./fr-ca.js\": 88239,\n\t\"./fr-ch\": 21702,\n\t\"./fr-ch.js\": 21702,\n\t\"./fr.js\": 63131,\n\t\"./fy\": 267,\n\t\"./fy.js\": 267,\n\t\"./ga\": 23821,\n\t\"./ga.js\": 23821,\n\t\"./gd\": 71753,\n\t\"./gd.js\": 71753,\n\t\"./gl\": 13870,\n\t\"./gl.js\": 13870,\n\t\"./gom-deva\": 92762,\n\t\"./gom-deva.js\": 92762,\n\t\"./gom-latn\": 5969,\n\t\"./gom-latn.js\": 5969,\n\t\"./gu\": 82809,\n\t\"./gu.js\": 82809,\n\t\"./he\": 45402,\n\t\"./he.js\": 45402,\n\t\"./hi\": 315,\n\t\"./hi.js\": 315,\n\t\"./hr\": 10410,\n\t\"./hr.js\": 10410,\n\t\"./hu\": 38288,\n\t\"./hu.js\": 38288,\n\t\"./hy-am\": 67928,\n\t\"./hy-am.js\": 67928,\n\t\"./id\": 71334,\n\t\"./id.js\": 71334,\n\t\"./is\": 86959,\n\t\"./is.js\": 86959,\n\t\"./it\": 34864,\n\t\"./it-ch\": 51124,\n\t\"./it-ch.js\": 51124,\n\t\"./it.js\": 34864,\n\t\"./ja\": 36141,\n\t\"./ja.js\": 36141,\n\t\"./jv\": 29187,\n\t\"./jv.js\": 29187,\n\t\"./ka\": 42136,\n\t\"./ka.js\": 42136,\n\t\"./kk\": 94332,\n\t\"./kk.js\": 94332,\n\t\"./km\": 18607,\n\t\"./km.js\": 18607,\n\t\"./kn\": 84305,\n\t\"./kn.js\": 84305,\n\t\"./ko\": 70234,\n\t\"./ko.js\": 70234,\n\t\"./ku\": 16003,\n\t\"./ku.js\": 16003,\n\t\"./ky\": 75061,\n\t\"./ky.js\": 75061,\n\t\"./lb\": 32786,\n\t\"./lb.js\": 32786,\n\t\"./lo\": 66183,\n\t\"./lo.js\": 66183,\n\t\"./lt\": 50029,\n\t\"./lt.js\": 50029,\n\t\"./lv\": 24169,\n\t\"./lv.js\": 24169,\n\t\"./me\": 68577,\n\t\"./me.js\": 68577,\n\t\"./mi\": 68177,\n\t\"./mi.js\": 68177,\n\t\"./mk\": 50337,\n\t\"./mk.js\": 50337,\n\t\"./ml\": 65260,\n\t\"./ml.js\": 65260,\n\t\"./mn\": 52325,\n\t\"./mn.js\": 52325,\n\t\"./mr\": 14695,\n\t\"./mr.js\": 14695,\n\t\"./ms\": 75334,\n\t\"./ms-my\": 37151,\n\t\"./ms-my.js\": 37151,\n\t\"./ms.js\": 75334,\n\t\"./mt\": 63570,\n\t\"./mt.js\": 63570,\n\t\"./my\": 97963,\n\t\"./my.js\": 97963,\n\t\"./nb\": 88028,\n\t\"./nb.js\": 88028,\n\t\"./ne\": 86638,\n\t\"./ne.js\": 86638,\n\t\"./nl\": 50302,\n\t\"./nl-be\": 66782,\n\t\"./nl-be.js\": 66782,\n\t\"./nl.js\": 50302,\n\t\"./nn\": 33501,\n\t\"./nn.js\": 33501,\n\t\"./oc-lnc\": 50563,\n\t\"./oc-lnc.js\": 50563,\n\t\"./pa-in\": 50869,\n\t\"./pa-in.js\": 50869,\n\t\"./pl\": 65302,\n\t\"./pl.js\": 65302,\n\t\"./pt\": 49687,\n\t\"./pt-br\": 74884,\n\t\"./pt-br.js\": 74884,\n\t\"./pt.js\": 49687,\n\t\"./ro\": 79107,\n\t\"./ro.js\": 79107,\n\t\"./ru\": 33627,\n\t\"./ru.js\": 33627,\n\t\"./sd\": 30355,\n\t\"./sd.js\": 30355,\n\t\"./se\": 83427,\n\t\"./se.js\": 83427,\n\t\"./si\": 11848,\n\t\"./si.js\": 11848,\n\t\"./sk\": 54590,\n\t\"./sk.js\": 54590,\n\t\"./sl\": 20184,\n\t\"./sl.js\": 20184,\n\t\"./sq\": 56361,\n\t\"./sq.js\": 56361,\n\t\"./sr\": 78965,\n\t\"./sr-cyrl\": 81287,\n\t\"./sr-cyrl.js\": 81287,\n\t\"./sr.js\": 78965,\n\t\"./ss\": 25456,\n\t\"./ss.js\": 25456,\n\t\"./sv\": 70451,\n\t\"./sv.js\": 70451,\n\t\"./sw\": 77558,\n\t\"./sw.js\": 77558,\n\t\"./ta\": 51356,\n\t\"./ta.js\": 51356,\n\t\"./te\": 73693,\n\t\"./te.js\": 73693,\n\t\"./tet\": 21243,\n\t\"./tet.js\": 21243,\n\t\"./tg\": 42500,\n\t\"./tg.js\": 42500,\n\t\"./th\": 55768,\n\t\"./th.js\": 55768,\n\t\"./tk\": 77761,\n\t\"./tk.js\": 77761,\n\t\"./tl-ph\": 35780,\n\t\"./tl-ph.js\": 35780,\n\t\"./tlh\": 29590,\n\t\"./tlh.js\": 29590,\n\t\"./tr\": 33807,\n\t\"./tr.js\": 33807,\n\t\"./tzl\": 93857,\n\t\"./tzl.js\": 93857,\n\t\"./tzm\": 60654,\n\t\"./tzm-latn\": 8806,\n\t\"./tzm-latn.js\": 8806,\n\t\"./tzm.js\": 60654,\n\t\"./ug-cn\": 30845,\n\t\"./ug-cn.js\": 30845,\n\t\"./uk\": 19232,\n\t\"./uk.js\": 19232,\n\t\"./ur\": 47052,\n\t\"./ur.js\": 47052,\n\t\"./uz\": 77967,\n\t\"./uz-latn\": 32233,\n\t\"./uz-latn.js\": 32233,\n\t\"./uz.js\": 77967,\n\t\"./vi\": 98615,\n\t\"./vi.js\": 98615,\n\t\"./x-pseudo\": 12320,\n\t\"./x-pseudo.js\": 12320,\n\t\"./yo\": 31313,\n\t\"./yo.js\": 31313,\n\t\"./zh-cn\": 64490,\n\t\"./zh-cn.js\": 64490,\n\t\"./zh-hk\": 55910,\n\t\"./zh-hk.js\": 55910,\n\t\"./zh-mo\": 98262,\n\t\"./zh-mo.js\": 98262,\n\t\"./zh-tw\": 44223,\n\t\"./zh-tw.js\": 44223\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;"]}