{"version":3,"file":"main.c03e9d3dfe5728ba.js","mappings":"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","names":["i0","ctx_r13","counter","isNil","value","DatepickerComponent","constructor","elementRef","this","scrollOptions","SlimScrollOptions","barBackground","gridBackground","barBorderRadius","gridBorderRadius","barWidth","gridWidth","barMargin","gridMargin","setDisabledState","isDisabled","disabled","innerValue","val","onChangeCallback","ngOnInit","view","date","Date","setOptions","initDayNames","initYears","positions","indexOf","position","TypeError","join","ngOnChanges","changes","init","defaultFieldId","Object","defineProperty","today","minYear","options","getYear","maxYear","displayFormat","barTitleFormat","dayNamesFormat","barTitleIfEmpty","firstCalendarDay","locale","placeholder","addClass","addStyle","fieldId","useEmptyBarTitle","nextMonth","addMonths","prevMonth","subMonths","setDate","i","days","close","setYear","years","year","isDateSelectable","minDateSet","minDate","maxDateSet","maxDate","timestamp","valueOf","actualDate","start","startOfMonth","end","endOfMonth","eachDayOfInterval","map","day","getDate","month","getMonth","inThisMonth","isToday","isSelected","isSameDay","isSameMonth","isSameYear","isSelectable","tmp","getDay","prevDays","subDays","unshift","displayValue","format","setToday","barTitle","Array","from","x","isThisYear","dayNames","setDay","push","toggleView","toggle","isOpened","dateIsToday","reset","fireValueChangeEvent","writeValue","registerOnChange","fn","registerOnTouched","onTouchedCallback","onBlur","e","input","nativeElement","querySelector","target","contains","container","classList","selectors","ctx","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","SlimScrollState","obj","scrollPosition","isScrollAtStart","isScrollAtEnd","SLIMSCROLL_DEFAULTS","InjectionToken","barOpacity","gridOpacity","alwaysVisible","visibleTimeout","alwaysPreventDefaultScroll","merge","result","CustomHttpUrlEncodingCodec","HttpUrlEncodingCodec","encodeKey","k","super","replace","encodeValue","v","BASE_PATH","Configuration","configurationParameters","apiKeys","username","password","accessToken","basePath","withCredentials","selectHeaderContentType","contentTypes","length","type","find","isJsonMime","undefined","selectHeaderAccept","accepts","mime","jsonMime","RegExp","test","toLowerCase","DirectTranslationService","httpClient","configuration","HttpHeaders","canConsumeForm","consumes","consume","apiV1DirectTranslationHostLanguageGet","language","hostName","apiVersion","observe","reportProgress","Error","queryParameters","HttpParams","encoder","set","headers","defaultHeaders","httpHeaderAcceptSelected","get","encodeURIComponent","String","params","apiV1DirectTranslationPortalLanguageGet","apiV1DirectTranslationLangsAllGet","loadUrl","apiV1TranslationLanguageLanguagePost","requestBody","httpContentTypeSelected","post","apiV1TranslationLangsSavePortalPost","apiV1TranslationLangsDefallGet","getStatuses","apiV1TranslationLangsRefreshPost","factory","TranslationService","apiV1TranslationBulkupdateLangPost","lang","wordTranslate","apiV1TranslationDocumentLangGet","includeEmpty","apiV1TranslationDocumentmodelsLangGet","apiV1TranslationHostLanguageGet","apiV1TranslationLangLanguageGet","apiV1TranslationLangsAllGet","apiV1TranslationLangsCurrentcountryGet","apiV1TranslationLangsSaveteamPost","apiV1TranslationLangsTeamallGet","apiV1TranslationLanguageHostHostLanguageGet","hostLanguage","apiV1TranslationLanguageLanguageTeamPost","team","apiV1TranslationPercentLangGet","apiV1TranslationPercentsLangsGet","langs","apiV1TranslationScannerLanguageGet","token","apiV1TranslationWordWordLanguageLanguagePost","word","apiV1TranslationWordWordSearchKeySearchKeyGet","searchKey","ApiModule","parentModule","http","static","configurationFactory","ngModule","providers","useFactory","SaveHostLanguagesModel","languages","AuthGuardMain","authService","canActivate","authorized","pipe","b","window","history","back","canActivateChild","AuthGuard","router","CanComponentDeactivateComponent","navigationService","activatedRoute","url","unloadNotification","$event","compareWithOld","returnValue","resetChanges","comparableTabId","component","beforeChanges","getComparableArr","canDeactivate","fromBack","allowRefresh","confirm","r","User","routeUrl","navigateWithCompareMessage","destroy","CanDeactivateGuard","currentRoute","currentState","nextState","RedirectAdminGuard","resolve","route","state","navigate","queryParams","redirectUrl","PartnerTranslationDataService","translationService","getAuthLanguages","saveAuthLanguages","getWordByKey","keys","SaveHostLanguagesCommand","DirectTranslationDataService","SanitizerModule","XssSanitizerService","imports","CommonModule","ENTITIES_REGEX","createDOMPurify","require","domSanitizer","_domSanitizer","_domPurify","setHttpClient","_http","getHtmlDecodedText","text","environment","operationName","query","variables","res","data","htmlentitytext","HtmlEntityDecodedModel","getHtmlentitytextdecodedfields","HtmlEntityDecodedTextInfo","entityText","match","requestText","existAll","key","index","loadedHtmlEntities","findIndex","originValue","entities","setValue","decodedValue","response","htmlentitytextdecodedfields","forEach","entity","err","getFromLoadedEntities","filter","dti","customDecoder","s","custom","_customDecoder","clean","sanitize","safeValue","bypassSecurityTrustHtml","changingThisBreaksApplicationSecurity","escaped","_replaceLoop","stringToReplace","replaceMask","replaceWith","replacedString","includes","AuthService","storageService","appInsightsService","errorService","myStorage","BehaviorSubject","checkTokenValidation","error","subscribe","code","HttpStatusCode","authError","setEndpointToken","access_token","getStoredItem","expires_in","isAuthorized","parseInt","now","refresh_token","endpoint","startsWith","endpointToken","getEndpointToken","saveItemToStorage","authUrl","wellknown","token_endpoint","console","log","refreshToken","form","FormData","append","requestAndSaveToken","getAccessToken","name","pass","_clientScopes","respJson","decoded","jwt_decode","roles","isArray","role","saveTokenInfo","signalr_token","authorizedMessage","next","setAuthenticatedUserContext","sub","date_exp","exp","toString","store","retrieve","logout","clearStorageKeys","clearAuthenticatedUserContext","errorMessage","allowUseEmail","email","encoded_email","allowUsePhone","phone","phoneCode","encoded_phone","encoded_phone_code","CompanyTypeSubscriptionsService","companyTypeSelected","companyTypesChanged","saveClicked","setItemTypes","itemType","items","oldItems","item","updateItemTypes","resetItemTypes","clearItemTypes","selectCompanyType","id","companyTypeId","changeCompanyTypes","companyTypes","saveChanges","existChanges","CompanyTypeService","getAll","CompanyTypeDataService","companyTypeService","_apiVersion","_companyTypes","ConfigService","config","load","Promise","reject","tap","envResponse","catch","IconService","apiVapiVersionIconGetIconsGet","searchText","pageIndex","pageSize","ImageCloudDataService","iconService","_pageSize","getIcons","loadMoreIcons","LoaderService","Subject","loaderSubject","asObservable","show","isPost","loaderStateModel","hide","MarketPlaceService","getAllDeliveryApplications","getActiveDeliveryApplicationsBySalePortal","getActiveDeliveryApplications","userId","getActiveFeedbackByTeam","getActiveFeedbackBySalePortal","getDeliveryApplications","ApplicationReadModel","applicationId","getDisplayName","applicationName","SignalRNotificationClient","toastr","translateService","configService","EventEmitter","connectionExists","_hubConnection","stop","then","off","NotificationReadModel","authorize","muteNotificationSound","volumeOn","user","HubConnectionBuilder","configureLogging","LogLevel","withUrl","skipNegotiation","logger","logMessageContent","transport","HttpTransportType","build","registerOnServerEvents","startConnection","self","onclose","setTimeout","connectionEstablished","emit","on","setNotification","unknown","model","dataModel","hotActionData","JSON","parse","title","actionTypeDisplayName","substr","hotAction","portionData","status","ENotificatoinOrderStatus","temporaryPortionNotifications","checkoutId","checked","count","notify","portion","pickupData","pickup","deliveryData","delivery","reservationData","reservation","withoutMenuData","withoutMenu","uniqueQRData","uniqueQr","kioskData","kiosk","newNotification","playAudio","info","message","t","audio","Audio","src","play","muted","toPushNotificationModel","actionType","PaymentSystemsService","apiV1PaymentSystemsPartnerSystemsGet","apiV1PaymentSystemsSalePortalSystemsGet","StorageService","storage","localStorage","withAuthPrefix","storeKey","getAuthPrefix","getItem","useAuthPrefix","setItem","stringify","remove","removeItem","StorageKeys","TranslationLanguageService","directtranslationService","languages$","authLanguages$","mainPanelLanguageChanged$","subLanguageChanged$","mainLanguageManualChanged","authLanguagesArr","_wordWriteModels","loadLanguages","reqLang","languagesArr","_loadUrl","trim","setDefaultLang","use","mainPanelLangChanged","loadAuthLanguages","_baseTranslationDataService","SubadminTranslationDataService","selected","selectedLangIndex","saveLanguages","mainLanguageKey","selectedLangs","y","splice","authIndex","assign","changeSubLang","keyIndex","translateParams","param","changeSubLangFromExist","currentLang","NOT_EXIST_TRANSLATION","setInExist","mustMatchGuid","checkWords","matchToGuid","UUID","existDefault","tp","translateParam","translateObj","setTranslation","guid","autoChange","DropListService","saved","deleted","dropListTranslatesChanged","save","success","delete","setTranslates","translates","TreeOpenState","GroupPosition","DropTreeSubscriptionsService","dropTreeItemSelectClicked","dropTreeItemAddClicked","dropTreeItemEditClicked","dropTreeItemDeleteClicked","loadChildrensClicked","dropTreeItemMoved","dropTreeItemFromParentDeleted","dropTreeItemCloneToHovered","openLoadedTrees","selectDropTreeItem","dropTreeItem","hoveredQr","selectedQrId","moveDropTreeItem","sourceDropTreeItem","source","positionType","deleteParentOfDropTreeItem","loadChildrens","addDropTreeItem","editDropTreeItem","deleteDropTreeItem","openTrees","openState","copyInHoveredQr","MessageService","messageSubject","showmessage","body","messageType","successMessage","confirmmessage","backmessage","MessageType","Default","showconfirm","noIcon","approveMessage","rejectMessage","dialogConfirmation","dialogRejection","showconfirmedmessage","showbackdmessage","NavigationModel","tabId","selfFeatures","profileFeatures","activationUrls","extraParams","parentId","opened","hovered","activationUrl","routeWithId","activeUrl","extraParam","childs","exist","selfFeature","_canShow","_opened","closeAllChilds","canShow","canShowChilds","hasChild","resetShow","isActive","aUrl","NavigationType","NavigationMenuService","auth","_navigations","_panelNavigations","navigations","panelNavigations","generateNavigations","navigationItemsService","_navigationItemsService","subscribeToEvents","getNavigations","getPanelNavigations","findById","_findById","openParents","navigation","_openParents","array","navigationSaved","_saveMainNavigation","_savePanelNavigation","navigationModel","arr","parent","TimePickerModel","hourModel","TimePickerItemModel","minuteModel","getCompareValue","Number","valueString","getValueString","maxValue","firstClicked","DataEvent","Day","FacilityType","OrderStatus","OrderStatusCommon","ExecutorTypeCommon","PaymentMethod","CheckoutTypeName","DisplayType","ActiveThemeType","ThemePropertyType","ECheckoutType","PictureSize","NotificationType","QrTemplateRenderMode","QrTemplateMode","DistanceType","CalculateDistanceType","Refund","EValueType","SalePortalGroupType","SalePortalGroupSubType","SalePortalGroupMode","CatalogGroupType","EmployeeType","VehicleType","DragState","FeedbackStatus","CouponValueType","CouponStatus","CouponUserType","CouponType","PartnerSubscriptionStatus","OrderItemStatus","ServiceFeeType","DiningOptionType","RoundServiceFeeType","SharedEnums","enums","keyString","objKeys","LazyFakeMissingTranslationHandler","handle","USED_LANGUAGES","TranslationLoader","directTranslationService","getTranslation","host","tslib__WEBPACK_IMPORTED_MODULE_5__","__param","decodedToken","userName","Role","ClientToken","ClientTokens","SalePortalAdmin","Partner","Admin","Subadmin","SalePortal","currentRole","currencies","Currencies","countryCode","CountryCode","referenceKey","ReferenceKey","salePortalKey","OriginSalePortalKey","notificationEmail","NotificationEmail","AdminHostName","_routerUrl","snapshot","routeParams","routerUrl","paramValue","ComparableModel","Unknown","HotAction","Portion","Pickup","Delivery","Reservation","UniqueQR","WithoutMenu","TeamRegistration","Kiosk","New","Viewed","Closed","IPushNotificationModel","ConstantService","ErrorsService","error$","addError","errorCode","GlobalizationService","getAllCurrencies","allCurrencies","response_","getCountriesFullInfo","allCountries","countries","getCountryInfo","_loadedCountriesInfo","country","cca2","c","getSymbolByCode","currencyCode","currency","numericCode","alphabeticCode","getSymbolByCountryCode","getCountryCodeByNumericCode","getCountryPhoneCodes","getCurrentCountry","currentCountry","responseType","CountryInfoModel","CountryName","YoutubeVideoURLFormats","HelperService","Watch","prefix","Be","Embed","b64toBlob","b64Data","contentType","sliceSize","byteCharacters","atob","byteArrays","offset","slice","byteNumbers","charCodeAt","byteArray","Uint8Array","Blob","getdateformat","dtformat","gettimeformat","printCanvas","cnv","transformDateStart","transformDateEnd","printContents","popupWin","toDataURL","open","document","write","getTranslateNameByCountry","countryName","checkIfYoutubeUrl","None","youtubeVideoURLFormats","getYoutubeEmbedUrl","newUrl","embedModel","substring","toUniqueStr","guidString","btoa","getParamValue","results","exec","decodeURIComponent","getStandartFormat","startDate","navigator","userAgent","search","dateSafari","getFullYear","UrlType","ImageStoreDataService","imageStoreService","helperService","upload","imageSrc","pictureId","urlType","uploadOrigin","block","split","realData","blob","uploadImage","uploadFile","fileId","ImageStoreService","apiVapiVersionImageStoreCloneGet","oldId","newId","fileSize","apiVapiVersionImageStoreDeleteImageDelete","filename","apiVapiVersionImageStoreDownloadImageAsBase64Get","apiVapiVersionImageStoreDownloadResizedOrOriginalImageGet","uploadTargetId","file","formParams","useForm","TemporaryImagesService","apiV1TemporaryImagesAddTemporaryImagesToFileStoreAsyncPost","apiV1TemporaryImagesDeleteTemporaryImagesAsyncPost","filesIds","element","apiV1TemporaryImagesGetTemporaryImagesByOwnerAsyncKeyItemKeyGet","itemKey","StoreMarketPlaceOrderService","marketPlaceService","_marketPlaceService","models","deliveryApplications","_this","toPromise","d","teamState","logo","isActiveServiceFeeFix","isEqual","NavigationService","location","messageService","isRouted$","canShowMainQr$","cacheClicked$","refreshClicked$","_beforeChanges","showMainQr","canShowMain","cache","refreshData","navigateTo","refresh","warning","backMessage","exet","afterChangesArr","cloneObject","realObj","hasOwnProperty","getOrdered","unordered","sort","reduce","_validateDefaultValue","_fillComparableArr","prototype","call","ordered","orderedJson","orderedObj","parseNum","parseFloat","OrderStatusInfoService","currentStatus","nextStatuses","applications","locations","showEstimationTime","showUserTime","ChangeStatusWriteModel","statusId","locationId","selectedLocation","selectedApplication","estimationDateTime","hour","getHours","minute","getMinutes","second","getSeconds","estimationTime","udate","userDateTime","uday","umonth","uyear","uhour","uminute","usecond","userTime","confirmed","orderId","editable","description","setEstimationTime","getTime","getTimezoneOffset","hours","minutes","setHours","estimationTimeHM","estimationTimePickerModel","setUserTime","userTimeHM","userTimePickerModel","getEstimationString","setZ","PaginationInfoService","webStorageService","_name","_paginatioModels","_currentModel","PaginationModel","getInfo","getKey","addPage","page","pageRowSize","pageRow","pageRowIndex","resetPage","addScroll","scrollTo","resetScroll","addPageSize","addTotalCount","totalCount","addItemHeightAndWidth","itemHeight","itemWidth","addKey","savePaginationInfo","scrollToTheEnd","scrollToTheTop","getPaginationInfo","removePaginationInfo","clear","p","LOCAL_STORAGE","PaginationTitleService","titleService","_setTitle","_defaultTitle","_setImage","setTitle","setImage","image","link","createElement","rel","href","_defautlIcon","getElementsByTagName","appendChild","setjivosite","jivosite","async","DOCUMENT","SalePortalInfoService","partners","filters","checkoutTypes","nextPagesCount","endDate","f","partnersByKeys","teamKeys","SalePortalInfoDataService","salePortalInfoService","partnerPaginatedItemsReadModel","SecurityService","changeTeamPassword","UserLocationService","configurationService","_currentCountry","_httpClient","_baseUrl","_apiKey","loadPosition","geolocation","getCurrentPosition","onSuccessCallback","latitude","coords","logitude","longitude","onFailCallback","getCountry","getGeocodeInfo","shortName","types","address_components","short_name","easing","linear","inQuad","outQuad","inOutQuad","inCubic","outCubic","inOutCubic","inQuart","outQuart","inOutQuart","inQuint","outQuint","inOutQuint","SlimScrollDirective","viewContainer","renderer","optionsDefaults","el","mutationThrottleTimeout","interactionSubscriptions","enabled","setup","ngOnDestroy","Subscription","setStyle","wrapContainer","initGrid","initBar","getBarHeight","initWheel","initDrag","hideBarAndGrid","MutationObserver","mutationObserver","disconnect","clearTimeout","onMutation","bind","subtree","childList","scrollEvents","scrollSubscription","event","handleEvent","add","scrollHeight","clientHeight","duration","percent","Math","round","max","setBarTop","wrapper","getComputedStyle","margin","height","insertBefore","parentNode","grid","bar","barVisibilityChange","elHeight","offsetHeight","barHeight","display","easingFunc","scrollTop","paddingTop","style","paddingBottom","scroll","currentTime","time","min","easedTime","fromY","saveCurrent","updateScrollState","requestAnimationFrame","scrollContent","isWheel","isJump","delta","maxTop","hiddenContent","percentScroll","over","top","ceil","floor","showBarAndGrid","scrollState","scrollChanged","dommousescroll","fromEvent","mousewheel","wheelSubscription","wheelDelta","detail","preventDefault","mousemove","documentElement","touchmove","mousedown","touchstart","mouseup","touchend","mousedrag","mergeMap","pageY","emove","takeUntil","touchdrag","targetTouches","tmove","dragSubscription","addEventListener","preventDefaultEvent","dragEndSubscription","removeEventListener","maxScrollTop","current","stopPropagation","parentElement","removeChild","unwrap","unsubscribe","docFrag","createDocumentFragment","firstChild","child","replaceChild","onResize","ViewContainerRef","Renderer2","DatepickerModule","FormsModule","common","CredentialsInterceptor","intercept","request","originSalePortalKey","teamReferer","adminReferer","saleportalkey","teamreferer","autoDecode","CompanyTypeKey","clientToken","clienttoken","clone","setHeaders","JwtInterceptor","Authorization","LoaderInterceptor","loaderService","errorsService","req","method","_ignoreApis","api","showLoader","catchError","onCatch","HttpResponse","onSuccess","onError","finalize","onEnd","caught","observableThrowError","hideLoader","allowAnimate","CustomMapsAPILoader","MapsAPILoader","translationLanguageService","manifestConfigurationService","_config","_translateService","_translationLanguageService","_manifestConfigurationService","mainPanelLanguageChanged","w","google","maps","getElementById","_scriptLoadingPromise","_script","googleName","callbackName","defer","_getScriptSrc","onerror","protocol","GoogleMapsScriptProtocol","protocolType","hostAndPath","callback","_getKey","client","clientId","channel","libraries","region","entry","apiKey","LAZY_MAPS_API_CONFIG","TranslateService","HttpLoaderFactory","SharedModule","HTTP_INTERCEPTORS","useClass","MissingTranslationHandler","ReactiveFormsModule","RouterModule","ImageCropperModule","ColorPickerModule","InfiniteScrollModule","TextEditorModule","AgmCoreModule","TranslateModule","loader","TranslateLoader","deps","HttpClientModule","apiUrl","production","googleApiKey","googleLocationUrl","appInsightsInstrumentationKey","originURL","identityUrl","catalogServicesUrl","basket","clientaggregator","translationUrl","filestoreUrl","globalizationUrl","userproviderUrl","feedback","partnerUrl","employeeUrl","orderUrl","paymentUrl","hotactions","dataprocessing","marketplace","webhook","smartTranslate","imageCloud","subscriptionsUrl","signalRUrl","ordering","talkUrl","loyaltyServicesUrl","templateGeneratorUrl","cardUrl","advertisementUrl","clientUrl","integration","salePortalUrl","externalIntegration","theme","webhookDocumentation","companyType","couponUrl","posUrl","rmsUrl","rmsPrefix","defaultdata","noneimageurl","AppComponent","translationlanguageService","paginationTitleService","documentTitle","documentIcon","appThemes","themeWrapper","setProperty","jivosites","defaultLangsLoaded","unAuthData","authData","events","NavigationStart","isinit","paramLang","AppInsights","envelope","tags","screen","width","AuthGuardHome","routes","path","redirectTo","pathMatch","HomeComponent","loadChildren","m","AuthModule","AdminModule","PartnerModule","SalePortalModule","EmployeeTrackingModule","SubadminModule","AppRoutingModule","relativeLinkResolution","UnAuthGuard","initializeApp","appConfig","promise","appInsights","downloadAndSetup","instrumentationKey","enableCorsCorrelation","disableTelemetry","AppModule","bootstrap","API_TRANSLATION_URL","useValue","LocationStrategy","HashLocationStrategy","APP_INITIALIZER","BrowserModule","BrowserAnimationsModule","TranslationApiModule","ToastrModule","closeButton","progressBar","ApplicationInsightsModule","enableProdMode","__NgCli_bootstrap_1","bootstrapModule"],"sourceRoot":"webpack:///","sources":["./src/applazy/datepicker/datepicker.component.html","./src/applazy/datepicker/datepicker.component.ts","./src/applazy/datepicker/slimscroll.ts","./src/applazy/generatedmodules/translation/api/encoder.ts","./src/applazy/generatedmodules/translation/api/variables.ts","./src/applazy/generatedmodules/translation/api/configuration.ts","./src/applazy/generatedmodules/translation/api/api/directTranslation.service.ts","./src/applazy/generatedmodules/translation/api/api/translation.service.ts","./src/applazy/generatedmodules/translation/api/api.module.ts","./src/applazy/generatedmodules/translation/api/model/saveHostLanguagesModel.ts","./src/applazy/guards/auth-guard-main.service.ts","./src/applazy/guards/auth-guard.service.ts","./src/applazy/guards/can-deactivate-guard.service.ts","./src/applazy/guards/redirect-admin.guard.ts","./src/applazy/partner/services/partnertranslationdata.service.ts","./src/applazy/saleportal/models/translation/saveHostLanguages.model.ts","./src/applazy/saleportal/services/directtranslationdata.service.ts","./src/applazy/sanitizer/sanitizer.module.ts","./src/applazy/sanitizer/services/xssSanitizer.service.ts","./src/applazy/services/auth.service.ts","./src/applazy/services/companytype.subscriptions.service.ts","./src/applazy/services/companytype/companytype.service.ts","./src/applazy/services/companytype/companytypedata.service.ts","./src/applazy/services/config.service.ts","./src/applazy/services/icon.service.ts","./src/applazy/services/imageclouddata.service.ts","./src/applazy/services/loader.service.ts","./src/applazy/services/marketplace.service.ts","./src/applazy/services/notification.signalR.service.ts","./src/applazy/services/paymentSystems.service.ts","./src/applazy/services/storage.service.ts","./src/applazy/services/translationlanguage.service.ts","./src/applazy/shared/components/droplist/services/droplist.service.ts","./src/applazy/shared/components/droptree/models/droptree.models.ts","./src/applazy/shared/components/droptree/services/droptreeSubscriptions.service.ts","./src/applazy/shared/components/messagebox/services/message.service.ts","./src/applazy/shared/components/navigation/models/navigation.models.ts","./src/applazy/shared/components/navigation/services/navigation-menu.service.ts","./src/applazy/shared/components/times/models/TimesModels.ts","./src/applazy/shared/enums/sharedenums.options.ts","./src/applazy/shared/handlers/lazyFakeMissingTranslationHandler.ts","./src/applazy/shared/loaders/translationloader.ts","./src/applazy/shared/models/User.ts","./src/applazy/shared/models/compare/comparable.model.ts","./src/applazy/shared/models/configuration.ts","./src/applazy/shared/models/encoder.ts","./src/applazy/shared/models/notificationmodels.ts","./src/applazy/shared/services/constant.service.ts","./src/applazy/shared/services/errors.service.ts","./src/applazy/shared/services/globalization.service.ts","./src/applazy/shared/services/helper.service.ts","./src/applazy/shared/services/imageStoreData.service.ts","./src/applazy/shared/services/imagestore/imageStore.service.ts","./src/applazy/shared/services/imagestore/temporaryImages.service.ts","./src/applazy/shared/services/marketplace/storeMarketPlaceOrder.service.ts","./src/applazy/shared/services/navigation.service.ts","./src/applazy/shared/services/order/orderstatusinfo.service.ts","./src/applazy/shared/services/paginationinfo.service.ts","./src/applazy/shared/services/paginationtitle.service.ts","./src/applazy/shared/services/salePortalInfo.service.ts","./src/applazy/shared/services/saleportalinfodata.service.ts","./src/applazy/shared/services/security.service.ts","./src/applazy/shared/services/userlocation.service.ts","./src/applazy/datepicker/slimscroll.directive.ts","./src/applazy/datepicker/datepicker.module.ts","./src/applazy/services/credentials.iterceptor.ts","./src/applazy/services/jwt.interceptor.ts","./src/applazy/services/loader.interceptor.ts","./src/applazy/shared/components/google-map/loader/customMapsApiLoader.ts","./src/applazy/shared/shared.module.ts","./src/applazy/subadmin/services/subadminTranslationData.service.ts","./src/applazy/textEditor/textEditor.module.ts","./src/environments/environment.prod.ts","./src/applazy/app.component.html","./src/applazy/app.component.ts","./src/applazy/guards/auth-guard-home.service.ts","./src/applazy/approuting.module.ts","./src/applazy/main/home/home.component.ts","./src/applazy/guards/unauth-guard.service.ts","./src/applazy/app.module.ts","./src/main.ts"],"sourcesContent":["
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ barTitle }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n {{ name }}\r\n
\r\n
\r\n \r\n {{ day.day }}\r\n \r\n
\r\n
\r\n
\r\n
\r\n {{ year.year }}\r\n
\r\n
\r\n
\r\n
","import { Component, OnInit, Input, OnChanges, SimpleChanges, ElementRef, HostListener, forwardRef } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\nimport { addMonths, eachDayOfInterval, endOfMonth, format, getDate, getDay, getMonth, getYear, isSameDay, isSameMonth, isSameYear, isToday, setDay, setYear, startOfMonth, subDays, subMonths } from 'date-fns';\r\n// import {\r\n// startOfMonth,\r\n// endOfMonth,\r\n// addMonths,\r\n// subMonths,\r\n// setYear,\r\n// eachDay,\r\n// getDate,\r\n// getMonth,\r\n// getYear,\r\n// isToday,\r\n// isSameDay,\r\n// isSameMonth,\r\n// isSameYear,\r\n// format,\r\n// getDay,\r\n// subDays,\r\n// setDay\r\n// } from 'date-fns';\r\nimport { ISlimScrollOptions, SlimScrollOptions } from './slimscroll';\r\n\r\nexport type AddClass = string | string[] | { [k: string]: boolean } | null;\r\n\r\nexport interface DatepickerOptions {\r\n minYear?: number; // default: current year - 30\r\n maxYear?: number; // default: current year + 30\r\n displayFormat?: string; // default: 'MMM D[,] YYYY'\r\n barTitleFormat?: string; // default: 'MMMM YYYY'\r\n dayNamesFormat?: string; // default 'ddd'\r\n barTitleIfEmpty?: string;\r\n firstCalendarDay?: number; // 0 = Sunday (default), 1 = Monday, ..\r\n locale?: object;\r\n minDate?: Date;\r\n maxDate?: Date;\r\n /** Placeholder for the input field */\r\n placeholder?: string;\r\n /** [ngClass] to add to the input field */\r\n addClass?: AddClass;\r\n /** [ngStyle] to add to the input field */\r\n addStyle?: { [k: string]: any } | null;\r\n /** ID to assign to the input field */\r\n fieldId?: string;\r\n /** If false, barTitleIfEmpty will be disregarded and a date will always be shown. Default: true */\r\n useEmptyBarTitle?: boolean;\r\n}\r\n\r\n// Counter for calculating the auto-incrementing field ID\r\nlet counter = 0;\r\n\r\n/**\r\n * Internal library helper that helps to check if value is empty\r\n * @param value\r\n */\r\nconst isNil = (value: Date | DatepickerOptions) => {\r\n return (typeof value === 'undefined') || (value === null);\r\n};\r\n\r\n@Component({\r\n selector: 'app-datepicker',\r\n templateUrl: './datepicker.component.html',\r\n styleUrls: ['./datepicker.component.sass'],\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DatepickerComponent), multi: true }\r\n ]\r\n})\r\nexport class DatepickerComponent implements ControlValueAccessor, OnInit, OnChanges {\r\n @Input() options: DatepickerOptions;\r\n @Input() calendarIcon = false;\r\n /**\r\n * Disable datepicker's input\r\n */\r\n @Input() headless = false;\r\n\r\n /**\r\n * Set datepicker's visibility state\r\n */\r\n @Input() isOpened = false;\r\n\r\n /**\r\n * Datepicker dropdown position\r\n */\r\n @Input() position = 'bottom-left';\r\n\r\n private positions = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];\r\n\r\n innerValue: Date;\r\n displayValue: string;\r\n displayFormat: string;\r\n date: Date;\r\n barTitle: string;\r\n barTitleFormat: string;\r\n barTitleIfEmpty: string;\r\n minYear: number;\r\n maxYear: number;\r\n firstCalendarDay: number;\r\n view: string;\r\n years: { year: number; isThisYear: boolean }[];\r\n dayNames: string[];\r\n dayNamesFormat: string;\r\n scrollOptions: SlimScrollOptions;\r\n days: {\r\n date: Date;\r\n day: number;\r\n month: number;\r\n year: number;\r\n inThisMonth: boolean;\r\n isToday: boolean;\r\n isSelected: boolean;\r\n isSelectable: boolean;\r\n }[];\r\n locale: object;\r\n placeholder: string;\r\n addClass: AddClass;\r\n addStyle: { [k: string]: any } | null;\r\n fieldId: string;\r\n useEmptyBarTitle: boolean;\r\n disabled: boolean;\r\n\r\n private onTouchedCallback: () => void = () => { };\r\n private onChangeCallback: (_: any) => void = () => { };\r\n\r\n public setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n get value(): Date {\r\n return this.innerValue;\r\n }\r\n\r\n set value(val: Date) {\r\n this.innerValue = val;\r\n this.onChangeCallback(this.innerValue);\r\n }\r\n\r\n constructor(private elementRef: ElementRef) {\r\n this.scrollOptions = new SlimScrollOptions();\r\n this.scrollOptions.barBackground = '#DFE3E9';\r\n this.scrollOptions.gridBackground = '#FFFFFF';\r\n this.scrollOptions.barBorderRadius = '3';\r\n this.scrollOptions.gridBorderRadius = '3';\r\n this.scrollOptions.barWidth = '6';\r\n this.scrollOptions.gridWidth = '6';\r\n this.scrollOptions.barMargin = '0';\r\n this.scrollOptions.gridMargin = '0';\r\n }\r\n\r\n ngOnInit() {\r\n this.view = 'days';\r\n this.date = new Date();\r\n this.setOptions();\r\n this.initDayNames();\r\n this.initYears();\r\n\r\n // Check if 'position' property is correct\r\n if (this.positions.indexOf(this.position) === -1) {\r\n throw new TypeError(`app-datepicker: invalid position property value '${this.position}' (expected: ${this.positions.join(', ')})`);\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if ('options' in changes) {\r\n this.setOptions();\r\n this.initDayNames();\r\n this.init();\r\n this.initYears();\r\n }\r\n }\r\n\r\n get defaultFieldId(): string {\r\n // Only evaluate and increment if required\r\n const value = `datepicker-${counter++}`;\r\n Object.defineProperty(this, 'defaultFieldId', { value });\r\n\r\n return value;\r\n }\r\n\r\n setOptions(): void {\r\n const today = new Date(); // this const was added because during my tests, I noticed that at this level this.date is undefined\r\n this.minYear = this.options && this.options.minYear || getYear(today) - 30;\r\n this.maxYear = this.options && this.options.maxYear || getYear(today) + 30;\r\n this.displayFormat = this.options && this.options.displayFormat || 'MMM D[,] YYYY';\r\n this.barTitleFormat = this.options && this.options.barTitleFormat || 'MMMM YYYY';\r\n this.dayNamesFormat = this.options && this.options.dayNamesFormat || 'ddd';\r\n this.barTitleIfEmpty = this.options && this.options.barTitleIfEmpty || 'Click to select a date';\r\n this.firstCalendarDay = this.options && this.options.firstCalendarDay || 0;\r\n this.locale = this.options && { locale: this.options.locale } || {};\r\n this.placeholder = this.options && this.options.placeholder || '';\r\n this.addClass = this.options && this.options.addClass || {};\r\n this.addStyle = this.options && this.options.addStyle || {};\r\n this.fieldId = this.options && this.options.fieldId || this.defaultFieldId;\r\n this.useEmptyBarTitle = this.options && 'useEmptyBarTitle' in this.options ? this.options.useEmptyBarTitle : true;\r\n }\r\n\r\n nextMonth(): void {\r\n this.date = addMonths(this.date, 1);\r\n this.init();\r\n }\r\n\r\n prevMonth(): void {\r\n this.date = subMonths(this.date, 1);\r\n this.init();\r\n }\r\n\r\n setDate(i: number): void {\r\n this.date = this.days[i].date;\r\n this.value = this.date;\r\n this.init();\r\n this.close();\r\n }\r\n\r\n setYear(i: number): void {\r\n this.date = setYear(this.date, this.years[i].year);\r\n this.init();\r\n this.initYears();\r\n this.view = 'days';\r\n }\r\n\r\n /**\r\n * Checks if specified date is in range of min and max dates\r\n * @param date\r\n */\r\n private isDateSelectable(date: Date): boolean {\r\n if (isNil(this.options)) {\r\n return true;\r\n }\r\n\r\n const minDateSet = !isNil(this.options.minDate);\r\n const maxDateSet = !isNil(this.options.maxDate);\r\n const timestamp = date.valueOf();\r\n\r\n if (minDateSet && (timestamp < this.options.minDate.valueOf())) {\r\n return false;\r\n }\r\n\r\n if (maxDateSet && (timestamp > this.options.maxDate.valueOf())) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n init(): void {\r\n // this.date may be null after .reset(); fall back to current date.\r\n const actualDate = this.date || new Date();\r\n const start = startOfMonth(actualDate);\r\n const end = endOfMonth(actualDate);\r\n this.days = eachDayOfInterval(\r\n { start: start, end: end }\r\n ).map(date => {\r\n return {\r\n date: date,\r\n day: getDate(date),\r\n month: getMonth(date),\r\n year: getYear(date),\r\n inThisMonth: true,\r\n isToday: isToday(date),\r\n isSelected: isSameDay(date, this.innerValue) && isSameMonth(date, this.innerValue) && isSameYear(date, this.innerValue),\r\n isSelectable: this.isDateSelectable(date)\r\n };\r\n });\r\n\r\n const tmp = getDay(start) - this.firstCalendarDay;\r\n const prevDays = tmp < 0 ? 7 - this.firstCalendarDay : tmp;\r\n\r\n for (let i = 1; i <= prevDays; i++) {\r\n const date = subDays(start, i);\r\n this.days.unshift({\r\n date: date,\r\n day: getDate(date),\r\n month: getMonth(date),\r\n year: getYear(date),\r\n inThisMonth: false,\r\n isToday: isToday(date),\r\n isSelected: isSameDay(date, this.innerValue) && isSameMonth(date, this.innerValue) && isSameYear(date, this.innerValue),\r\n isSelectable: this.isDateSelectable(date)\r\n });\r\n }\r\n\r\n if (this.innerValue) {\r\n this.displayValue = format(this.innerValue, this.displayFormat, this.locale);\r\n this.setToday();\r\n this.barTitle = format(start, this.barTitleFormat, this.locale);\r\n } else {\r\n this.displayValue = '';\r\n this.barTitle = this.useEmptyBarTitle ? this.barTitleIfEmpty : format(start, this.barTitleFormat, this.locale);\r\n }\r\n }\r\n\r\n initYears(): void {\r\n const range = this.maxYear - this.minYear;\r\n this.years = Array.from(new Array(range), (x, i) => i + this.minYear).map(year => {\r\n return { year: year, isThisYear: year === getYear(this.date) };\r\n });\r\n }\r\n\r\n initDayNames(): void {\r\n this.dayNames = [];\r\n const start = this.firstCalendarDay;\r\n for (let i = start; i <= 6 + start; i++) {\r\n const date = setDay(new Date(), i);\r\n this.dayNames.push(format(date, this.dayNamesFormat, this.locale));\r\n }\r\n }\r\n\r\n toggleView(): void {\r\n this.view = this.view === 'days' ? 'years' : 'days';\r\n }\r\n\r\n toggle(): void {\r\n this.isOpened = !this.isOpened;\r\n\r\n if (!this.isOpened && this.view === 'years') {\r\n this.toggleView();\r\n }\r\n }\r\n\r\n setToday(): void {\r\n if (isToday(this.innerValue)) {\r\n this.displayValue = 'Today';\r\n } else {\r\n this.displayValue = format(this.innerValue, this.displayFormat, this.locale);\r\n }\r\n }\r\n\r\n dateIsToday(): boolean {\r\n return isToday(this.innerValue);\r\n }\r\n\r\n close(): void {\r\n this.isOpened = false;\r\n\r\n if (this.view === 'years') {\r\n this.toggleView();\r\n }\r\n }\r\n\r\n reset(fireValueChangeEvent = false): void {\r\n this.date = null;\r\n this.innerValue = null;\r\n this.init();\r\n if (fireValueChangeEvent && this.onChangeCallback) {\r\n this.onChangeCallback(this.innerValue);\r\n }\r\n }\r\n\r\n writeValue(val: Date) {\r\n if (val) {\r\n this.date = val;\r\n this.innerValue = val;\r\n this.init();\r\n this.displayValue = format(this.innerValue, this.displayFormat, this.locale);\r\n this.barTitle = format(startOfMonth(val), this.barTitleFormat, this.locale);\r\n }\r\n }\r\n\r\n registerOnChange(fn: any) {\r\n this.onChangeCallback = fn;\r\n }\r\n\r\n registerOnTouched(fn: any) {\r\n this.onTouchedCallback = fn;\r\n }\r\n\r\n @HostListener('document:click', ['$event']) onBlur(e: MouseEvent) {\r\n if (!this.isOpened) {\r\n return;\r\n }\r\n\r\n const input = this.elementRef.nativeElement.querySelector('.ngx-datepicker-input');\r\n\r\n if (input == null) {\r\n return;\r\n }\r\n\r\n if (e.target === input || input.contains(e.target)) {\r\n return;\r\n }\r\n\r\n const container = this.elementRef.nativeElement.querySelector('.ngx-datepicker-calendar-container');\r\n if (container && container !== e.target && !container.contains(e.target) && !(e.target).classList.contains('year-unit')) {\r\n this.close();\r\n }\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport interface ISlimScrollState {\r\n scrollPosition: number;\r\n isScrollAtStart: boolean;\r\n isScrollAtEnd: boolean;\r\n }\r\n \r\n export class SlimScrollState implements ISlimScrollState {\r\n scrollPosition: number;\r\n isScrollAtStart: boolean;\r\n isScrollAtEnd: boolean;\r\n constructor(obj?: ISlimScrollState) {\r\n this.scrollPosition = obj && obj.scrollPosition ? obj.scrollPosition : 0;\r\n this.isScrollAtStart = obj && typeof obj.isScrollAtStart !== 'undefined' ? obj.isScrollAtStart : true;\r\n this.isScrollAtEnd = obj && typeof obj.isScrollAtEnd !== 'undefined' ? obj.isScrollAtEnd : false;\r\n }\r\n }\r\n\r\n\r\nexport interface ISlimScrollOptions {\r\n position?: 'left' | 'right';\r\n barBackground?: string;\r\n barOpacity?: string;\r\n barWidth?: string;\r\n barBorderRadius?: string;\r\n barMargin?: string;\r\n gridBackground?: string;\r\n gridOpacity?: string;\r\n gridWidth?: string;\r\n gridBorderRadius?: string;\r\n gridMargin?: string;\r\n alwaysVisible?: boolean;\r\n visibleTimeout?: number;\r\n alwaysPreventDefaultScroll?: boolean;\r\n}\r\n\r\nexport const SLIMSCROLL_DEFAULTS: InjectionToken = new InjectionToken('NGX_SLIMSCROLL_DEFAULTS');\r\n\r\nexport class SlimScrollOptions implements ISlimScrollOptions {\r\n position?: 'left' | 'right';\r\n barBackground?: string;\r\n barOpacity?: string;\r\n barWidth?: string;\r\n barBorderRadius?: string;\r\n barMargin?: string;\r\n gridBackground?: string;\r\n gridOpacity?: string;\r\n gridWidth?: string;\r\n gridBorderRadius?: string;\r\n gridMargin?: string;\r\n alwaysVisible?: boolean;\r\n visibleTimeout?: number;\r\n alwaysPreventDefaultScroll?: boolean;\r\n\r\n constructor(obj?: ISlimScrollOptions) {\r\n this.position = obj && obj.position ? obj.position : 'right';\r\n this.barBackground = obj && obj.barBackground ? obj.barBackground : '#343a40';\r\n this.barOpacity = obj && obj.barOpacity ? obj.barOpacity : '1';\r\n this.barWidth = obj && obj.barWidth ? obj.barWidth : '12';\r\n this.barBorderRadius = obj && obj.barBorderRadius ? obj.barBorderRadius : '5';\r\n this.barMargin = obj && obj.barMargin ? obj.barMargin : '0 0 0 0';\r\n this.gridBackground = obj && obj.gridBackground ? obj.gridBackground : '#adb5bd';\r\n this.gridOpacity = obj && obj.gridOpacity ? obj.gridOpacity : '1';\r\n this.gridWidth = obj && obj.gridWidth ? obj.gridWidth : '8';\r\n this.gridBorderRadius = obj && obj.gridBorderRadius ? obj.gridBorderRadius : '10';\r\n this.gridMargin = obj && obj.gridMargin ? obj.gridMargin : '0 0 0 0';\r\n this.alwaysVisible = obj && typeof obj.alwaysVisible !== 'undefined' ? obj.alwaysVisible : true;\r\n this.visibleTimeout = obj && obj.visibleTimeout ? obj.visibleTimeout : 1000;\r\n this.alwaysPreventDefaultScroll =\r\n obj && typeof obj.alwaysPreventDefaultScroll !== 'undefined' ? obj.alwaysPreventDefaultScroll : true;\r\n }\r\n\r\n public merge(obj?: ISlimScrollOptions): SlimScrollOptions {\r\n const result = new SlimScrollOptions();\r\n\r\n result.position = obj && obj.position ? obj.position : this.position;\r\n result.barBackground = obj && obj.barBackground ? obj.barBackground : this.barBackground;\r\n result.barOpacity = obj && obj.barOpacity ? obj.barOpacity : this.barOpacity;\r\n result.barWidth = obj && obj.barWidth ? obj.barWidth : this.barWidth;\r\n result.barBorderRadius = obj && obj.barBorderRadius ? obj.barBorderRadius : this.barBorderRadius;\r\n result.barMargin = obj && obj.barMargin ? obj.barMargin : this.barMargin;\r\n result.gridBackground = obj && obj.gridBackground ? obj.gridBackground : this.gridBackground;\r\n result.gridOpacity = obj && obj.gridOpacity ? obj.gridOpacity : this.gridOpacity;\r\n result.gridWidth = obj && obj.gridWidth ? obj.gridWidth : this.gridWidth;\r\n result.gridBorderRadius = obj && obj.gridBorderRadius ? obj.gridBorderRadius : this.gridBorderRadius;\r\n result.gridMargin = obj && obj.gridMargin ? obj.gridMargin : this.gridMargin;\r\n result.alwaysVisible = obj && typeof obj.alwaysVisible !== 'undefined' ? obj.alwaysVisible : this.alwaysVisible;\r\n result.visibleTimeout = obj && obj.visibleTimeout ? obj.visibleTimeout : this.visibleTimeout;\r\n result.alwaysPreventDefaultScroll =\r\n obj && typeof obj.alwaysPreventDefaultScroll !== 'undefined' ? obj.alwaysPreventDefaultScroll : true;\r\n\r\n return result;\r\n }\r\n}\r\n\r\nexport interface ISlimScrollEvent {\r\n type: 'scrollToBottom' | 'scrollToTop' | 'scrollToPercent' | 'scrollTo' | 'recalculate';\r\n y?: number;\r\n percent?: number;\r\n duration?: number;\r\n easing?: 'linear' | 'inQuad' | 'outQuad' | 'inOutQuad' | 'inCubic' |\r\n 'outCubic' | 'inOutCubic' | 'inQuart' | 'outQuart' | 'inOutQuart' |\r\n 'inQuint' | 'outQuint' | 'inOutQuint';\r\n }\r\n \r\n export class SlimScrollEvent implements ISlimScrollEvent {\r\n type: 'scrollToBottom' | 'scrollToTop' | 'scrollToPercent' | 'scrollTo' | 'recalculate';\r\n y?: number;\r\n percent?: number;\r\n duration?: number;\r\n easing: 'linear' | 'inQuad' | 'outQuad' | 'inOutQuad' | 'inCubic' |\r\n 'outCubic' | 'inOutCubic' | 'inQuart' | 'outQuart' | 'inOutQuart' |\r\n 'inQuint' | 'outQuint' | 'inOutQuint';\r\n \r\n constructor(obj?: ISlimScrollEvent) {\r\n this.type = obj.type;\r\n this.y = obj && obj.y ? obj.y : 0;\r\n this.percent = obj && obj.percent ? obj.percent : 0;\r\n this.duration = obj && obj.duration ? obj.duration : 0;\r\n this.easing = obj && obj.easing ? obj.easing : 'linear';\r\n }\r\n }"," import { HttpUrlEncodingCodec } from '@angular/common/http';\r\n\r\n/**\r\n* CustomHttpUrlEncodingCodec\r\n* Fix plus sign (+) not encoding, so sent as blank space\r\n* See: https://github.com/angular/angular/issues/11058#issuecomment-247367318\r\n*/\r\nexport class CustomHttpUrlEncodingCodec extends HttpUrlEncodingCodec {\r\n encodeKey(k: string): string {\r\n k = super.encodeKey(k);\r\n return k.replace(/\\+/gi, '%2B');\r\n }\r\n encodeValue(v: string): string {\r\n v = super.encodeValue(v);\r\n return v.replace(/\\+/gi, '%2B');\r\n }\r\n}\r\n\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const BASE_PATH = new InjectionToken('basePath');\r\nexport const COLLECTION_FORMATS = {\r\n 'csv': ',',\r\n 'tsv': ' ',\r\n 'ssv': ' ',\r\n 'pipes': '|'\r\n}\r\n","export interface ConfigurationParameters {\r\n apiKeys?: {[ key: string ]: string};\r\n username?: string;\r\n password?: string;\r\n accessToken?: string | (() => string);\r\n basePath?: string;\r\n withCredentials?: boolean;\r\n}\r\n\r\nexport class Configuration {\r\n apiKeys?: {[ key: string ]: string};\r\n username?: string;\r\n password?: string;\r\n accessToken?: string | (() => string);\r\n basePath?: string;\r\n withCredentials?: boolean;\r\n\r\n constructor(configurationParameters: ConfigurationParameters = {}) {\r\n this.apiKeys = configurationParameters.apiKeys;\r\n this.username = configurationParameters.username;\r\n this.password = configurationParameters.password;\r\n this.accessToken = configurationParameters.accessToken;\r\n this.basePath = configurationParameters.basePath;\r\n this.withCredentials = configurationParameters.withCredentials;\r\n }\r\n\r\n /**\r\n * Select the correct content-type to use for a request.\r\n * Uses {@link Configuration#isJsonMime} to determine the correct content-type.\r\n * If no content type is found return the first found type if the contentTypes is not empty\r\n * @param contentTypes - the array of content types that are available for selection\r\n * @returns the selected content-type or undefined if no selection could be made.\r\n */\r\n public selectHeaderContentType (contentTypes: string[]): string | undefined {\r\n if (contentTypes.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const type = contentTypes.find((x: string) => this.isJsonMime(x));\r\n if (type === undefined) {\r\n return contentTypes[0];\r\n }\r\n return type;\r\n }\r\n\r\n /**\r\n * Select the correct accept content-type to use for a request.\r\n * Uses {@link Configuration#isJsonMime} to determine the correct accept content-type.\r\n * If no content type is found return the first found type if the contentTypes is not empty\r\n * @param accepts - the array of content types that are available for selection.\r\n * @returns the selected content-type or undefined if no selection could be made.\r\n */\r\n public selectHeaderAccept(accepts: string[]): string | undefined {\r\n if (accepts.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const type = accepts.find((x: string) => this.isJsonMime(x));\r\n if (type === undefined) {\r\n return accepts[0];\r\n }\r\n return type;\r\n }\r\n\r\n /**\r\n * Check if the given MIME is a JSON MIME.\r\n * JSON MIME examples:\r\n * application/json\r\n * application/json; charset=UTF8\r\n * APPLICATION/JSON\r\n * application/vnd.company+json\r\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\r\n * @return True if the given MIME is JSON, false otherwise.\r\n */\r\n public isJsonMime(mime: string): boolean {\r\n const jsonMime: RegExp = new RegExp('^(application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(;.*)?$', 'i');\r\n return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json');\r\n }\r\n}\r\n","\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport {\r\n HttpClient, HttpHeaders, HttpParams,\r\n HttpResponse, HttpEvent\r\n} from '@angular/common/http';\r\nimport { CustomHttpUrlEncodingCodec } from '../encoder';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { LanguageReadModel } from '../model/languageReadModel';\r\nimport { WordTranslate } from '../model/wordTranslate';\r\n\r\nimport { BASE_PATH, COLLECTION_FORMATS } from '../variables';\r\nimport { Configuration } from '../configuration';\r\nimport { WordViewModel } from '../model/wordViewModel';\r\nimport { SaveHostLanguagesCommand } from 'src/applazy/saleportal/models/translation/saveHostLanguages.model';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DirectTranslationService {\r\n\r\n protected basePath = 'http://localhost';\r\n public defaultHeaders = new HttpHeaders();\r\n public configuration = new Configuration();\r\n\r\n constructor(protected httpClient: HttpClient, @Optional() @Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\r\n\r\n if (configuration) {\r\n this.configuration = configuration;\r\n this.configuration.basePath = configuration.basePath || basePath || this.basePath;\r\n\r\n } else {\r\n this.configuration.basePath = basePath || this.basePath;\r\n }\r\n }\r\n\r\n /**\r\n * @param consumes string[] mime-types\r\n * @return true: consumes contains 'multipart/form-data', false: otherwise\r\n */\r\n private canConsumeForm(consumes: string[]): boolean {\r\n const form = 'multipart/form-data';\r\n for (const consume of consumes) {\r\n if (form === consume) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public apiV1DirectTranslationHostLanguageGet(language: string, hostName?: string, apiVersion?: string, observe?: 'body', reportProgress?: boolean): Observable<{ [key: string]: string; }>;\r\n public apiV1DirectTranslationHostLanguageGet(language: string, hostName?: string, apiVersion?: string, observe?: 'response', reportProgress?: boolean): Observable>;\r\n public apiV1DirectTranslationHostLanguageGet(language: string, hostName?: string, apiVersion?: string, observe?: 'events', reportProgress?: boolean): Observable>;\r\n public apiV1DirectTranslationHostLanguageGet(language: string, hostName?: string, apiVersion?: string, observe: any = 'body', reportProgress: boolean = false): Observable {\r\n if (language === null || language === undefined) {\r\n throw new Error('Required parameter language was null or undefined when calling apiV1DirectTranslationHostLanguageGet.');\r\n }\r\n\r\n let queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() });\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get<{ [key: string]: string; }>(`${this.configuration.basePath}/api/v1/DirectTranslation/host/${hostName}/${encodeURIComponent(String(language))}`,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n public apiV1DirectTranslationPortalLanguageGet(language: string, apiVersion?: string, observe?: 'body', reportProgress?: boolean): Observable<{ [key: string]: string; }>;\r\n public apiV1DirectTranslationPortalLanguageGet(language: string, apiVersion?: string, observe?: 'response', reportProgress?: boolean): Observable>;\r\n public apiV1DirectTranslationPortalLanguageGet(language: string, apiVersion?: string, observe?: 'events', reportProgress?: boolean): Observable>;\r\n public apiV1DirectTranslationPortalLanguageGet(language: string, apiVersion?: string, observe: any = 'body', reportProgress: boolean = false): Observable {\r\n if (language === null || language === undefined) {\r\n throw new Error('Required parameter language was null or undefined when calling apiV1DirectTranslationPortalLanguageGet.');\r\n }\r\n\r\n let queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() });\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get<{ [key: string]: string; }>(`${this.configuration.basePath}/api/v1/DirectTranslation/portal/${encodeURIComponent(String(language))}`,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n public apiV1DirectTranslationLangsAllGet(apiVersion?: string, loadUrl?: boolean, observe?: 'body', reportProgress?: boolean): Observable>;\r\n public apiV1DirectTranslationLangsAllGet(apiVersion?: string, loadUrl?: boolean, observe?: 'response', reportProgress?: boolean): Observable>>;\r\n public apiV1DirectTranslationLangsAllGet(apiVersion?: string, loadUrl?: boolean, observe?: 'events', reportProgress?: boolean): Observable>>;\r\n public apiV1DirectTranslationLangsAllGet(apiVersion?: string, loadUrl?: boolean, observe: any = 'body', reportProgress: boolean = false): Observable {\r\n\r\n let queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() });\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n if (loadUrl !== undefined && loadUrl !== null) {\r\n queryParameters = queryParameters.set('loadUrl', loadUrl);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get>(`${this.configuration.basePath}/api/v1/DirectTranslation/langs/portalall`,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n public apiV1TranslationLanguageLanguagePost(language: string, apiVersion: string, requestBody?: Array, observe?: 'body', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationLanguageLanguagePost(language: string, apiVersion: string, requestBody?: Array, observe?: 'response', reportProgress?: boolean): Observable>>;\r\n public apiV1TranslationLanguageLanguagePost(language: string, apiVersion: string, requestBody?: Array, observe?: 'events', reportProgress?: boolean): Observable>>;\r\n public apiV1TranslationLanguageLanguagePost(language: string, apiVersion: string, requestBody?: Array, observe: any = 'body', reportProgress: boolean = false ): Observable {\r\n if (language === null || language === undefined) {\r\n throw new Error('Required parameter language was null or undefined when calling apiV1TranslationLanguageLanguagePost.');\r\n }\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiV1TranslationLanguageLanguagePost.');\r\n }\r\n\r\n let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'application/json-patch+json',\r\n 'application/json',\r\n 'text/json',\r\n 'application/_*+json'\r\n ];\r\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected !== undefined) {\r\n headers = headers.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n return this.httpClient.post>(`${this.configuration.basePath}/api/v1/DirectTranslation/language/${encodeURIComponent(String(language))}`,\r\n requestBody,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n public apiV1TranslationLangsSavePortalPost(apiVersion: string, requestBody?: SaveHostLanguagesCommand, observe?: 'body', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationLangsSavePortalPost(apiVersion: string, requestBody?: SaveHostLanguagesCommand, observe?: 'response', reportProgress?: boolean): Observable>>;\r\n public apiV1TranslationLangsSavePortalPost(apiVersion: string, requestBody?: SaveHostLanguagesCommand, observe?: 'events', reportProgress?: boolean): Observable>>;\r\n public apiV1TranslationLangsSavePortalPost(apiVersion: string, requestBody?: SaveHostLanguagesCommand, observe: any = 'body', reportProgress: boolean = false ): Observable {\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiV1TranslationLangsSavePortalPost.');\r\n }\r\n\r\n let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'application/json-patch+json',\r\n 'application/json',\r\n 'text/json',\r\n 'application/_*+json'\r\n ];\r\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected !== undefined) {\r\n headers = headers.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n return this.httpClient.post>(`${this.configuration.basePath}/api/v1/DirectTranslation/langs/saveportal`,\r\n requestBody,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n public apiV1TranslationLangsDefallGet(apiVersion: string, loadUrl: boolean, observe?: 'body', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationLangsDefallGet(apiVersion: string, loadUrl: boolean, observe?: 'response', reportProgress?: boolean): Observable>>;\r\n public apiV1TranslationLangsDefallGet(apiVersion: string, loadUrl: boolean, observe?: 'events', reportProgress?: boolean): Observable>>;\r\n public apiV1TranslationLangsDefallGet(apiVersion: string, loadUrl: boolean, observe: any = 'body', reportProgress: boolean = false ): Observable {\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiV1TranslationLangsDefallGet.');\r\n }\r\n\r\n let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n if (loadUrl !== undefined && loadUrl !== null) {\r\n queryParameters = queryParameters.set('loadUrl', loadUrl);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get>(`${this.configuration.basePath}/api/v1/DirectTranslation/langs/defall`,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n public getStatuses(apiVersion: string, language: string, requestBody?: Array, observe?: 'body', reportProgress?: boolean): Observable>;\r\n public getStatuses(apiVersion: string, language: string, requestBody?: Array, observe?: 'response', reportProgress?: boolean): Observable>>;\r\n public getStatuses(apiVersion: string, language: string, requestBody?: Array, observe?: 'events', reportProgress?: boolean): Observable>>;\r\n public getStatuses(apiVersion: string, language: string, requestBody?: Array, observe: any = 'body', reportProgress: boolean = false): Observable {\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling getStatuses.');\r\n }\r\n\r\n if (language === null || language === undefined) {\r\n throw new Error('Required parameter language was null or undefined when calling getStatuses.');\r\n }\r\n\r\n let queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() });\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'application/json-patch+json',\r\n 'application/json',\r\n 'text/json',\r\n 'application/_*+json'\r\n ];\r\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected !== undefined) {\r\n headers = headers.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n return this.httpClient.post>(`${this.configuration.basePath}/api/v1/DirectTranslation/statuses/${language}`,\r\n requestBody,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n public apiV1TranslationLangsRefreshPost(apiVersion: string, observe?: 'body', reportProgress?: boolean): Observable;\r\n public apiV1TranslationLangsRefreshPost(apiVersion: string, observe?: 'response', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationLangsRefreshPost(apiVersion: string, observe?: 'events', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationLangsRefreshPost(apiVersion: string, observe: any = 'body', reportProgress: boolean = false ): Observable {\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiV1TranslationLangsRefreshPost.');\r\n }\r\n\r\n let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.post(`${this.configuration.basePath}/api/v1/DirectTranslation/langs/refresh`,\r\n null,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n}\r\n","/**\r\n * Translations API\r\n * Stores and manages catalog items translations\r\n *\r\n * OpenAPI spec version: 1.0\r\n * Contact: info@mersoft.am\r\n *\r\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\r\n * https://openapi-generator.tech\r\n * Do not edit the class manually.\r\n */\r\n/* tslint:disable:no-unused-variable member-ordering */\r\n\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams,\r\n HttpResponse, HttpEvent } from '@angular/common/http';\r\nimport { CustomHttpUrlEncodingCodec } from '../encoder';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { LanguageReadModel } from '../model/languageReadModel';\r\nimport { ValueTupleOfInt32OfInt32 } from '../model/valueTupleOfInt32OfInt32';\r\nimport { WordTranslate } from '../model/wordTranslate';\r\n\r\nimport { BASE_PATH, COLLECTION_FORMATS } from '../variables';\r\nimport { Configuration } from '../configuration';\r\nimport { SaveHostLanguagesModel } from '../model/saveHostLanguagesModel';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TranslationService {\r\n\r\n protected basePath = 'http://localhost';\r\n public defaultHeaders = new HttpHeaders();\r\n public configuration = new Configuration();\r\n\r\n constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\r\n\r\n if (configuration) {\r\n this.configuration = configuration;\r\n this.configuration.basePath = configuration.basePath || basePath || this.basePath;\r\n\r\n } else {\r\n this.configuration.basePath = basePath || this.basePath;\r\n }\r\n }\r\n\r\n /**\r\n * @param consumes string[] mime-types\r\n * @return true: consumes contains 'multipart/form-data', false: otherwise\r\n */\r\n private canConsumeForm(consumes: string[]): boolean {\r\n const form = 'multipart/form-data';\r\n for (const consume of consumes) {\r\n if (form === consume) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n\r\n /**\r\n * \r\n * \r\n * @param lang \r\n * @param apiVersion The requested API version\r\n * @param wordTranslate \r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public apiV1TranslationBulkupdateLangPost(lang: string, apiVersion: string, wordTranslate?: Array, observe?: 'body', reportProgress?: boolean): Observable;\r\n public apiV1TranslationBulkupdateLangPost(lang: string, apiVersion: string, wordTranslate?: Array, observe?: 'response', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationBulkupdateLangPost(lang: string, apiVersion: string, wordTranslate?: Array, observe?: 'events', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationBulkupdateLangPost(lang: string, apiVersion: string, wordTranslate?: Array, observe: any = 'body', reportProgress: boolean = false ): Observable {\r\n if (lang === null || lang === undefined) {\r\n throw new Error('Required parameter lang was null or undefined when calling apiV1TranslationBulkupdateLangPost.');\r\n }\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiV1TranslationBulkupdateLangPost.');\r\n }\r\n\r\n let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'application/json-patch+json',\r\n 'application/json',\r\n 'text/json',\r\n 'application/_*+json'\r\n ];\r\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected !== undefined) {\r\n headers = headers.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n return this.httpClient.post(`${this.configuration.basePath}/api/v1/Translation/bulkupdate/${encodeURIComponent(String(lang))}`,\r\n wordTranslate,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * \r\n * \r\n * @param lang \r\n * @param apiVersion The requested API version\r\n * @param includeEmpty \r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public apiV1TranslationDocumentLangGet(lang: string, apiVersion: string, includeEmpty?: boolean, observe?: 'body', reportProgress?: boolean): Observable<{ [key: string]: string; }>;\r\n public apiV1TranslationDocumentLangGet(lang: string, apiVersion: string, includeEmpty?: boolean, observe?: 'response', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationDocumentLangGet(lang: string, apiVersion: string, includeEmpty?: boolean, observe?: 'events', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationDocumentLangGet(lang: string, apiVersion: string, includeEmpty?: boolean, observe: any = 'body', reportProgress: boolean = false ): Observable {\r\n if (lang === null || lang === undefined) {\r\n throw new Error('Required parameter lang was null or undefined when calling apiV1TranslationDocumentLangGet.');\r\n }\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiV1TranslationDocumentLangGet.');\r\n }\r\n\r\n let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});\r\n if (includeEmpty !== undefined && includeEmpty !== null) {\r\n queryParameters = queryParameters.set('includeEmpty', includeEmpty);\r\n }\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get<{ [key: string]: string; }>(`${this.configuration.basePath}/api/v1/Translation/document/${encodeURIComponent(String(lang))}`,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * \r\n * \r\n * @param lang \r\n * @param apiVersion The requested API version\r\n * @param includeEmpty \r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public apiV1TranslationDocumentmodelsLangGet(lang: string, apiVersion: string, includeEmpty?: boolean, observe?: 'body', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationDocumentmodelsLangGet(lang: string, apiVersion: string, includeEmpty?: boolean, observe?: 'response', reportProgress?: boolean): Observable>>;\r\n public apiV1TranslationDocumentmodelsLangGet(lang: string, apiVersion: string, includeEmpty?: boolean, observe?: 'events', reportProgress?: boolean): Observable>>;\r\n public apiV1TranslationDocumentmodelsLangGet(lang: string, apiVersion: string, includeEmpty?: boolean, observe: any = 'body', reportProgress: boolean = false ): Observable {\r\n if (lang === null || lang === undefined) {\r\n throw new Error('Required parameter lang was null or undefined when calling apiV1TranslationDocumentmodelsLangGet.');\r\n }\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiV1TranslationDocumentmodelsLangGet.');\r\n }\r\n\r\n let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});\r\n if (includeEmpty !== undefined && includeEmpty !== null) {\r\n queryParameters = queryParameters.set('includeEmpty', includeEmpty);\r\n }\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get>(`${this.configuration.basePath}/api/v1/Translation/documentmodels/${encodeURIComponent(String(lang))}`,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Get translated file by host and choosed language\r\n * \r\n * @param language translation language\r\n * @param apiVersion The requested API version\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public apiV1TranslationHostLanguageGet(language: string, apiVersion: string, observe?: 'body', reportProgress?: boolean): Observable<{ [key: string]: string; }>;\r\n public apiV1TranslationHostLanguageGet(language: string, apiVersion: string, observe?: 'response', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationHostLanguageGet(language: string, apiVersion: string, observe?: 'events', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationHostLanguageGet(language: string, apiVersion: string, observe: any = 'body', reportProgress: boolean = false ): Observable {\r\n if (language === null || language === undefined) {\r\n throw new Error('Required parameter language was null or undefined when calling apiV1TranslationHostLanguageGet.');\r\n }\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiV1TranslationHostLanguageGet.');\r\n }\r\n\r\n let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get<{ [key: string]: string; }>(`${this.configuration.basePath}/api/v1/Translation/host/${encodeURIComponent(String(language))}`,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * returns tranlation file by specified language(without items and groups translations)\r\n * \r\n * @param language translation language\r\n * @param apiVersion The requested API version\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public apiV1TranslationLangLanguageGet(language: string, apiVersion: string, observe?: 'body', reportProgress?: boolean): Observable<{ [key: string]: string; }>;\r\n public apiV1TranslationLangLanguageGet(language: string, apiVersion: string, observe?: 'response', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationLangLanguageGet(language: string, apiVersion: string, observe?: 'events', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationLangLanguageGet(language: string, apiVersion: string, observe: any = 'body', reportProgress: boolean = false ): Observable {\r\n if (language === null || language === undefined) {\r\n throw new Error('Required parameter language was null or undefined when calling apiV1TranslationLangLanguageGet.');\r\n }\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiV1TranslationLangLanguageGet.');\r\n }\r\n\r\n let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get<{ [key: string]: string; }>(`${this.configuration.basePath}/api/v1/Translation/lang/${encodeURIComponent(String(language))}`,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Returns team choosen language flags and names(used in client) selected = 'false'?\r\n * \r\n * @param apiVersion The requested API version\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public apiV1TranslationLangsAllGet(apiVersion: string, observe?: 'body', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationLangsAllGet(apiVersion: string, observe?: 'response', reportProgress?: boolean): Observable>>;\r\n public apiV1TranslationLangsAllGet(apiVersion: string, observe?: 'events', reportProgress?: boolean): Observable>>;\r\n public apiV1TranslationLangsAllGet(apiVersion: string, observe: any = 'body', reportProgress: boolean = false ): Observable {\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiV1TranslationLangsAllGet.');\r\n }\r\n\r\n let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get>(`${this.configuration.basePath}/api/v1/Translation/langs/all`,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * \r\n * \r\n * @param apiVersion The requested API version\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public apiV1TranslationLangsCurrentcountryGet(apiVersion: string, observe?: 'body', reportProgress?: boolean): Observable;\r\n public apiV1TranslationLangsCurrentcountryGet(apiVersion: string, observe?: 'response', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationLangsCurrentcountryGet(apiVersion: string, observe?: 'events', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationLangsCurrentcountryGet(apiVersion: string, observe: any = 'body', reportProgress: boolean = false ): Observable {\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiV1TranslationLangsCurrentcountryGet.');\r\n }\r\n\r\n let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get(`${this.configuration.basePath}/api/v1/Translation/langs/currentcountry`,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Retruns factory language flags and flags short name(by default set eng)\r\n * \r\n * @param apiVersion The requested API version\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public apiV1TranslationLangsDefallGet(apiVersion: string, loadUrl: boolean, observe?: 'body', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationLangsDefallGet(apiVersion: string, loadUrl: boolean, observe?: 'response', reportProgress?: boolean): Observable>>;\r\n public apiV1TranslationLangsDefallGet(apiVersion: string, loadUrl: boolean, observe?: 'events', reportProgress?: boolean): Observable>>;\r\n public apiV1TranslationLangsDefallGet(apiVersion: string, loadUrl: boolean, observe: any = 'body', reportProgress: boolean = false ): Observable {\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiV1TranslationLangsDefallGet.');\r\n }\r\n\r\n let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n if (loadUrl !== undefined && loadUrl !== null) {\r\n queryParameters = queryParameters.set('loadUrl', loadUrl);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get>(`${this.configuration.basePath}/api/v1/Translation/langs/defall`,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * \r\n * \r\n * @param apiVersion The requested API version\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public apiV1TranslationLangsRefreshPost(apiVersion: string, observe?: 'body', reportProgress?: boolean): Observable;\r\n public apiV1TranslationLangsRefreshPost(apiVersion: string, observe?: 'response', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationLangsRefreshPost(apiVersion: string, observe?: 'events', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationLangsRefreshPost(apiVersion: string, observe: any = 'body', reportProgress: boolean = false ): Observable {\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiV1TranslationLangsRefreshPost.');\r\n }\r\n\r\n let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.post(`${this.configuration.basePath}/api/v1/Translation/langs/refresh`,\r\n null,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Saves team choosed languages and returns list of choosed language short names\r\n * \r\n * @param apiVersion The requested API version\r\n * @param requestBody \r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public apiV1TranslationLangsSaveteamPost(apiVersion: string, requestBody?: SaveHostLanguagesModel, observe?: 'body', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationLangsSaveteamPost(apiVersion: string, requestBody?: SaveHostLanguagesModel, observe?: 'response', reportProgress?: boolean): Observable>>;\r\n public apiV1TranslationLangsSaveteamPost(apiVersion: string, requestBody?: SaveHostLanguagesModel, observe?: 'events', reportProgress?: boolean): Observable>>;\r\n public apiV1TranslationLangsSaveteamPost(apiVersion: string, requestBody?: SaveHostLanguagesModel, observe: any = 'body', reportProgress: boolean = false ): Observable {\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiV1TranslationLangsSaveteamPost.');\r\n }\r\n\r\n let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'application/json-patch+json',\r\n 'application/json',\r\n 'text/json',\r\n 'application/_*+json'\r\n ];\r\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected !== undefined) {\r\n headers = headers.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n return this.httpClient.post>(`${this.configuration.basePath}/api/v1/Translation/langs/saveteam`,\r\n requestBody,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Returns all language flags and short names, for choosed languages sets \\"selected = true\\" otherwise false\r\n * \r\n * @param apiVersion The requested API version\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public apiV1TranslationLangsTeamallGet(apiVersion: string, loadUrl: boolean, observe?: 'body', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationLangsTeamallGet(apiVersion: string, loadUrl: boolean, observe?: 'response', reportProgress?: boolean): Observable>>;\r\n public apiV1TranslationLangsTeamallGet(apiVersion: string, loadUrl: boolean, observe?: 'events', reportProgress?: boolean): Observable>>;\r\n public apiV1TranslationLangsTeamallGet(apiVersion: string, loadUrl: boolean, observe: any = 'body', reportProgress: boolean = false ): Observable {\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiV1TranslationLangsTeamallGet.');\r\n }\r\n\r\n let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n if (loadUrl !== undefined && loadUrl !== null) {\r\n queryParameters = queryParameters.set('loadUrl', loadUrl);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get>(`${this.configuration.basePath}/api/v1/Translation/langs/teamall`,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Returns team translation file by choosed language\r\n * \r\n * @param hostLanguage translate language\r\n * @param apiVersion The requested API version\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public apiV1TranslationLanguageHostHostLanguageGet(hostLanguage: string, apiVersion: string, observe?: 'body', reportProgress?: boolean): Observable<{ [key: string]: string; }>;\r\n public apiV1TranslationLanguageHostHostLanguageGet(hostLanguage: string, apiVersion: string, observe?: 'response', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationLanguageHostHostLanguageGet(hostLanguage: string, apiVersion: string, observe?: 'events', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationLanguageHostHostLanguageGet(hostLanguage: string, apiVersion: string, observe: any = 'body', reportProgress: boolean = false ): Observable {\r\n if (hostLanguage === null || hostLanguage === undefined) {\r\n throw new Error('Required parameter hostLanguage was null or undefined when calling apiV1TranslationLanguageHostHostLanguageGet.');\r\n }\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiV1TranslationLanguageHostHostLanguageGet.');\r\n }\r\n\r\n let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get<{ [key: string]: string; }>(`${this.configuration.basePath}/api/v1/Translation/language/host/${encodeURIComponent(String(hostLanguage))}`,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Returns list of WordTranslate model (with keys and values) by sepcified language\r\n * \r\n * @param language \r\n * @param apiVersion The requested API version\r\n * @param requestBody \r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public apiV1TranslationLanguageLanguagePost(language: string, apiVersion: string, requestBody?: Array, observe?: 'body', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationLanguageLanguagePost(language: string, apiVersion: string, requestBody?: Array, observe?: 'response', reportProgress?: boolean): Observable>>;\r\n public apiV1TranslationLanguageLanguagePost(language: string, apiVersion: string, requestBody?: Array, observe?: 'events', reportProgress?: boolean): Observable>>;\r\n public apiV1TranslationLanguageLanguagePost(language: string, apiVersion: string, requestBody?: Array, observe: any = 'body', reportProgress: boolean = false ): Observable {\r\n if (language === null || language === undefined) {\r\n throw new Error('Required parameter language was null or undefined when calling apiV1TranslationLanguageLanguagePost.');\r\n }\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiV1TranslationLanguageLanguagePost.');\r\n }\r\n\r\n let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'application/json-patch+json',\r\n 'application/json',\r\n 'text/json',\r\n 'application/_*+json'\r\n ];\r\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected !== undefined) {\r\n headers = headers.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n return this.httpClient.post>(`${this.configuration.basePath}/api/v1/Translation/language/${encodeURIComponent(String(language))}`,\r\n requestBody,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * \r\n * \r\n * @param language \r\n * @param team \r\n * @param apiVersion The requested API version\r\n * @param requestBody \r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public apiV1TranslationLanguageLanguageTeamPost(language: string, team: string, apiVersion: string, requestBody?: Array, observe?: 'body', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationLanguageLanguageTeamPost(language: string, team: string, apiVersion: string, requestBody?: Array, observe?: 'response', reportProgress?: boolean): Observable>>;\r\n public apiV1TranslationLanguageLanguageTeamPost(language: string, team: string, apiVersion: string, requestBody?: Array, observe?: 'events', reportProgress?: boolean): Observable>>;\r\n public apiV1TranslationLanguageLanguageTeamPost(language: string, team: string, apiVersion: string, requestBody?: Array, observe: any = 'body', reportProgress: boolean = false ): Observable {\r\n if (language === null || language === undefined) {\r\n throw new Error('Required parameter language was null or undefined when calling apiV1TranslationLanguageLanguageTeamPost.');\r\n }\r\n if (team === null || team === undefined) {\r\n throw new Error('Required parameter team was null or undefined when calling apiV1TranslationLanguageLanguageTeamPost.');\r\n }\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiV1TranslationLanguageLanguageTeamPost.');\r\n }\r\n\r\n let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'application/json-patch+json',\r\n 'application/json',\r\n 'text/json',\r\n 'application/_*+json'\r\n ];\r\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected !== undefined) {\r\n headers = headers.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n return this.httpClient.post>(`${this.configuration.basePath}/api/v1/Translation/language/${encodeURIComponent(String(language))}/${encodeURIComponent(String(team))}`,\r\n requestBody,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * \r\n * \r\n * @param lang \r\n * @param apiVersion The requested API version\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public apiV1TranslationPercentLangGet(lang: string, apiVersion: string, observe?: 'body', reportProgress?: boolean): Observable;\r\n public apiV1TranslationPercentLangGet(lang: string, apiVersion: string, observe?: 'response', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationPercentLangGet(lang: string, apiVersion: string, observe?: 'events', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationPercentLangGet(lang: string, apiVersion: string, observe: any = 'body', reportProgress: boolean = false ): Observable {\r\n if (lang === null || lang === undefined) {\r\n throw new Error('Required parameter lang was null or undefined when calling apiV1TranslationPercentLangGet.');\r\n }\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiV1TranslationPercentLangGet.');\r\n }\r\n\r\n let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get(`${this.configuration.basePath}/api/v1/Translation/percent/${encodeURIComponent(String(lang))}`,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * \r\n * \r\n * @param langs \r\n * @param apiVersion The requested API version\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public apiV1TranslationPercentsLangsGet(langs: string, apiVersion: string, observe?: 'body', reportProgress?: boolean): Observable;\r\n public apiV1TranslationPercentsLangsGet(langs: string, apiVersion: string, observe?: 'response', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationPercentsLangsGet(langs: string, apiVersion: string, observe?: 'events', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationPercentsLangsGet(langs: string, apiVersion: string, observe: any = 'body', reportProgress: boolean = false ): Observable {\r\n if (langs === null || langs === undefined) {\r\n throw new Error('Required parameter langs was null or undefined when calling apiV1TranslationPercentsLangsGet.');\r\n }\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiV1TranslationPercentsLangsGet.');\r\n }\r\n\r\n let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get(`${this.configuration.basePath}/api/v1/Translation/percents/${encodeURIComponent(String(langs))}`,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * \r\n * \r\n * @param language \r\n * @param apiVersion The requested API version\r\n * @param token \r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public apiV1TranslationScannerLanguageGet(language: string, apiVersion: string, token?: string, observe?: 'body', reportProgress?: boolean): Observable<{ [key: string]: string; }>;\r\n public apiV1TranslationScannerLanguageGet(language: string, apiVersion: string, token?: string, observe?: 'response', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationScannerLanguageGet(language: string, apiVersion: string, token?: string, observe?: 'events', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationScannerLanguageGet(language: string, apiVersion: string, token?: string, observe: any = 'body', reportProgress: boolean = false ): Observable {\r\n if (language === null || language === undefined) {\r\n throw new Error('Required parameter language was null or undefined when calling apiV1TranslationScannerLanguageGet.');\r\n }\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiV1TranslationScannerLanguageGet.');\r\n }\r\n\r\n let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});\r\n if (token !== undefined && token !== null) {\r\n queryParameters = queryParameters.set('token', token);\r\n }\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get<{ [key: string]: string; }>(`${this.configuration.basePath}/api/v1/Translation/scanner/${encodeURIComponent(String(language))}`,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Returns searched words(by partner selected language) keys\r\n * \r\n * @param word \r\n * @param language \r\n * @param apiVersion The requested API version\r\n * @param requestBody \r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public apiV1TranslationWordWordLanguageLanguagePost(word: string, language: string, apiVersion: string, requestBody?: Array, observe?: 'body', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationWordWordLanguageLanguagePost(word: string, language: string, apiVersion: string, requestBody?: Array, observe?: 'response', reportProgress?: boolean): Observable>>;\r\n public apiV1TranslationWordWordLanguageLanguagePost(word: string, language: string, apiVersion: string, requestBody?: Array, observe?: 'events', reportProgress?: boolean): Observable>>;\r\n public apiV1TranslationWordWordLanguageLanguagePost(word: string, language: string, apiVersion: string, requestBody?: Array, observe: any = 'body', reportProgress: boolean = false ): Observable {\r\n if (word === null || word === undefined) {\r\n throw new Error('Required parameter word was null or undefined when calling apiV1TranslationWordWordLanguageLanguagePost.');\r\n }\r\n if (language === null || language === undefined) {\r\n throw new Error('Required parameter language was null or undefined when calling apiV1TranslationWordWordLanguageLanguagePost.');\r\n }\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiV1TranslationWordWordLanguageLanguagePost.');\r\n }\r\n\r\n let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'application/json-patch+json',\r\n 'application/json',\r\n 'text/json',\r\n 'application/_*+json'\r\n ];\r\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected !== undefined) {\r\n headers = headers.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n return this.httpClient.post>(`${this.configuration.basePath}/api/v1/Translation/word/${encodeURIComponent(String(word))}/language/${encodeURIComponent(String(language))}`,\r\n requestBody,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * \r\n * \r\n * @param word \r\n * @param searchKey \r\n * @param apiVersion The requested API version\r\n * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\r\n * @param reportProgress flag to report request and response progress.\r\n */\r\n public apiV1TranslationWordWordSearchKeySearchKeyGet(word: string, searchKey: string, apiVersion: string, observe?: 'body', reportProgress?: boolean): Observable>;\r\n public apiV1TranslationWordWordSearchKeySearchKeyGet(word: string, searchKey: string, apiVersion: string, observe?: 'response', reportProgress?: boolean): Observable>>;\r\n public apiV1TranslationWordWordSearchKeySearchKeyGet(word: string, searchKey: string, apiVersion: string, observe?: 'events', reportProgress?: boolean): Observable>>;\r\n public apiV1TranslationWordWordSearchKeySearchKeyGet(word: string, searchKey: string, apiVersion: string, observe: any = 'body', reportProgress: boolean = false ): Observable {\r\n if (word === null || word === undefined) {\r\n throw new Error('Required parameter word was null or undefined when calling apiV1TranslationWordWordSearchKeySearchKeyGet.');\r\n }\r\n if (searchKey === null || searchKey === undefined) {\r\n throw new Error('Required parameter searchKey was null or undefined when calling apiV1TranslationWordWordSearchKeySearchKeyGet.');\r\n }\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiV1TranslationWordWordSearchKeySearchKeyGet.');\r\n }\r\n\r\n let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get>(`${this.configuration.basePath}/api/v1/Translation/word/${encodeURIComponent(String(word))}/searchKey/${encodeURIComponent(String(searchKey))}`,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n}\r\n","import { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';\r\nimport { Configuration } from './configuration';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\n\r\nimport { DirectTranslationService } from './api/directTranslation.service';\r\nimport { TranslationService } from './api/translation.service';\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [],\r\n exports: [],\r\n providers: [\r\n DirectTranslationService,\r\n TranslationService ]\r\n})\r\nexport class ApiModule {\r\n public static forRoot(configurationFactory: () => Configuration): ModuleWithProviders {\r\n return {\r\n ngModule: ApiModule,\r\n providers: [ { provide: Configuration, useFactory: configurationFactory } ]\r\n };\r\n }\r\n\r\n constructor( @Optional() @SkipSelf() parentModule: ApiModule,\r\n @Optional() http: HttpClient) {\r\n if (parentModule) {\r\n throw new Error('ApiModule is already loaded. Import in your base AppModule only.');\r\n }\r\n if (!http) {\r\n throw new Error('You need to import the HttpClientModule in your AppModule! \\n' +\r\n 'See also https://github.com/angular/angular/issues/20575');\r\n }\r\n }\r\n}\r\n","export class SaveHostLanguagesModel {\r\n languages: string[];\r\n constructor(languages: string[]) {\r\n this.languages = languages;\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { CanActivate, CanActivateChild } from '@angular/router';\r\nimport { Observable, from as _observableFrom, throwError as _observableThrow, of as _observableOf } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { AuthService } from '../services/auth.service';\r\n\r\n@Injectable()\r\nexport class AuthGuardMain implements CanActivate, CanActivateChild {\r\n\r\n constructor(\r\n private authService: AuthService\r\n ) {\r\n }\r\n canActivate(): Observable | boolean {\r\n\r\n return this.authService.authorized.pipe(map(b => {\r\n if (b === true) {\r\n return true;\r\n } else {\r\n window.history.back();\r\n return false;\r\n }\r\n }));\r\n }\r\n\r\n canActivateChild() {\r\n return this.authService.authorized;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CanActivate, CanActivateChild, Router } from '@angular/router';\r\nimport { Observable, from as _observableFrom, throwError as _observableThrow, of as _observableOf, BehaviorSubject } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { AuthService } from '../services/auth.service';\r\n\r\n@Injectable()\r\nexport class AuthGuard implements CanActivate, CanActivateChild {\r\n\r\n constructor(private authService: AuthService, private router: Router) {\r\n\r\n }\r\n canActivate(): Observable | boolean {\r\n\r\n return this.authService.authorized.pipe(map(b => {\r\n if (b === true) {\r\n return true;\r\n } else {\r\n window.history.back();\r\n return false;\r\n }\r\n }));\r\n }\r\n\r\n canActivateChild() {\r\n return this.authService.authorized;\r\n }\r\n}\r\n","import { Observable } from 'rxjs';\r\nimport { Injectable, HostListener, OnDestroy, Component, Inject, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, CanDeactivate } from '@angular/router';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@angular/router';\r\nimport { NavigationService } from '../shared/services/navigation.service';\r\nimport { User } from '../shared/models/User';\r\nimport { ComparableModel } from '../shared/models/compare/comparable.model';\r\nexport interface ICanComponentDeactivate {\r\n canDeactivate: () => Observable | Promise | boolean;\r\n back: (navigationService: NavigationService, url: string) => void;\r\n}\r\n\r\n@Component({\r\n template: ''\r\n})\r\nexport class CanComponentDeactivateComponent implements OnInit, ICanComponentDeactivate {\r\n fromBack = false;\r\n comparableTabId = '';\r\n\r\n @HostListener('window:beforeunload', ['$event'])\r\n unloadNotification($event: BeforeUnloadEvent) {\r\n if (!this.navigationService.compareWithOld(this)) {\r\n $event.returnValue = true;\r\n }\r\n }\r\n constructor(\r\n public navigationService: NavigationService,\r\n public activatedRoute: ActivatedRoute,\r\n @Inject('url') public url: string\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.resetChanges();\r\n }\r\n\r\n resetChanges(): void {\r\n this.comparableTabId = '';\r\n this.navigationService.component = null;\r\n this.navigationService.beforeChanges = [];\r\n this.navigationService.beforeChanges = this.navigationService.getComparableArr(this);\r\n }\r\n\r\n canDeactivate(): boolean | Observable | Promise {\r\n if (this.fromBack) {\r\n this.fromBack = false;\r\n return true;\r\n }\r\n if (this.comparableTabId) {\r\n this.comparableTabId = '';\r\n return false;\r\n }\r\n if (!this.navigationService.compareWithOld(this)) {\r\n const allowRefresh = confirm('Changes you made may not be saved.');\r\n if (allowRefresh) {\r\n this.resetChanges();\r\n }\r\n return allowRefresh;\r\n } else {\r\n return true;\r\n }\r\n }\r\n back() {\r\n this.fromBack = true;\r\n let r = '';\r\n if (this.url !== '/home') {\r\n r = User.currentRole;\r\n }\r\n const routeUrl = User.routerUrl(this.activatedRoute);\r\n const url = r + routeUrl + this.url;\r\n const a = this.navigationService.navigateWithCompareMessage(url);\r\n }\r\n\r\n destroy() {\r\n this.navigationService.beforeChanges = [];\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class CanDeactivateGuard implements CanDeactivate {\r\n canDeactivate(\r\n component: ICanComponentDeactivate,\r\n currentRoute: ActivatedRouteSnapshot,\r\n currentState: RouterStateSnapshot,\r\n nextState?: RouterStateSnapshot): boolean | UrlTree | Observable | Promise {\r\n return component.canDeactivate ? component.canDeactivate() : true;\r\n }\r\n} \r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot } from '@angular/router';\r\nimport { Observable, from as _observableFrom, throwError as _observableThrow, of as _observableOf, from } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { User } from '../shared/models/User';\r\n\r\n@Injectable()\r\nexport class RedirectAdminGuard implements Resolve> {\r\n\r\n constructor(private router: Router) {\r\n\r\n }\r\n resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Observable> | Promise> {\r\n const url = state.url;\r\n if (User.currentRole === 'admin') {\r\n this.router.navigate(['/admin'], { queryParams: { redirectUrl: url } });\r\n return from([false]);\r\n }\r\n return from([true]);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { LanguageReadModel, TranslationService } from 'src/applazy/generatedmodules/translation/api';\r\nimport { SaveHostLanguagesModel } from 'src/applazy/generatedmodules/translation/api/model/saveHostLanguagesModel';\r\nimport { BaseTranslationDataService } from 'src/applazy/services/basetranslationdata.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PartnerTranslationDataService implements BaseTranslationDataService {\r\n constructor(\r\n private translationService: TranslationService\r\n ) {\r\n }\r\n getAuthLanguages(loadUrl: boolean): Observable {\r\n return this.translationService.apiV1TranslationLangsTeamallGet('1.0', loadUrl);\r\n }\r\n saveAuthLanguages(languages: string[]) {\r\n return this.translationService.apiV1TranslationLangsSaveteamPost('1.0', new SaveHostLanguagesModel(languages));\r\n }\r\n getWordByKey(keys: string[], language: string) {\r\n return this.translationService.apiV1TranslationLanguageLanguagePost(language, '1.0', keys);\r\n }\r\n}\r\n","export class SaveHostLanguagesCommand {\r\n languages: string[];\r\n constructor(languages: string[]) {\r\n this.languages = languages;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { DirectTranslationService, LanguageReadModel } from 'src/applazy/generatedmodules/translation/api';\r\nimport { BaseTranslationDataService } from 'src/applazy/services/basetranslationdata.service';\r\nimport { SaveHostLanguagesCommand } from '../models/translation/saveHostLanguages.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DirectTranslationDataService implements BaseTranslationDataService {\r\n constructor(\r\n private translationService: DirectTranslationService\r\n ) {\r\n\r\n }\r\n getAuthLanguages(loadUrl: boolean): Observable {\r\n return this.translationService.apiV1DirectTranslationLangsAllGet('1.0', loadUrl);\r\n }\r\n saveAuthLanguages(languages: string[]) {\r\n return this.translationService.apiV1TranslationLangsSavePortalPost('1.0', new SaveHostLanguagesCommand(languages));\r\n }\r\n getWordByKey(keys: string[], language: string) {\r\n return this.translationService.apiV1TranslationLanguageLanguagePost(language, '1.0', keys);\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { DomSanitizerDirective } from './directives/domSanitizer.directive';\r\nimport { XssSanitizerPipe } from './pipes/xssSanitizer.pipe';\r\nimport { XssSanitizerService } from './services/xssSanitizer.service';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [\r\n DomSanitizerDirective,\r\n XssSanitizerPipe\r\n ],\r\n exports: [\r\n DomSanitizerDirective,\r\n XssSanitizerPipe\r\n ],\r\n providers: [\r\n XssSanitizerService\r\n ]\r\n})\r\nexport class SanitizerModule { }\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DomSanitizer, SafeValue } from '@angular/platform-browser';\r\nimport { from, Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { environment } from 'src/environments/environment';\r\nexport const ENTITIES_REGEX = /&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-fA-F]{1,6});/ig;\r\nconst createDOMPurify = require('dompurify');\r\n\r\n@Injectable()\r\nexport class XssSanitizerService {\r\n private readonly _domSanitizer: DomSanitizer;\r\n private readonly _domPurify: any;\r\n private _http: HttpClient;\r\n loadedHtmlEntities: Array = [];\r\n constructor(domSanitizer: DomSanitizer) {\r\n this._domSanitizer = domSanitizer;\r\n this._domPurify = createDOMPurify(window);\r\n }\r\n\r\n setHttpClient(http: HttpClient): XssSanitizerService {\r\n this._http = http;\r\n return this;\r\n }\r\n\r\n getHtmlDecodedText(text: string): Observable {\r\n const url = environment.globalizationUrl + '/graphql';\r\n const postbody = {\r\n operationName: null,\r\n query: `{htmlentitytext(text:\"${text}\"){originValue,decodedValue}}`,\r\n variables: null\r\n };\r\n return this._http.post(url, postbody).pipe(map(res => {\r\n return res.data.htmlentitytext;\r\n }, () => {\r\n return new HtmlEntityDecodedModel();\r\n }\r\n ));\r\n }\r\n getHtmlentitytextdecodedfields(text: string): Observable {\r\n let res = new HtmlEntityDecodedTextInfo();\r\n res.entityText = text;\r\n const keys: string[] = text.match(ENTITIES_REGEX);\r\n if (!keys || keys.length === 0) {\r\n return from([res]);\r\n }\r\n const requestText = keys.join('');\r\n let existAll = true;\r\n for (let i = 0; i < keys.length; i++) {\r\n const key = keys[i];\r\n const index = this.loadedHtmlEntities.findIndex(x => x.originValue === key);\r\n if (index === -1) {\r\n existAll = false;\r\n break;\r\n } else {\r\n res.entities.push(new HtmlEntityDecodedModel().setValue(key, this.loadedHtmlEntities[index].decodedValue));\r\n }\r\n }\r\n if (existAll) {\r\n return from([res]);\r\n }\r\n\r\n const url = environment.globalizationUrl + '/graphql';\r\n const postbody = {\r\n operationName: null,\r\n query: `{htmlentitytextdecodedfields(text:\"${requestText}\"){entityText,entities{originValue,decodedValue,}}}`,\r\n variables: null\r\n };\r\n return this._http.post(url, postbody).pipe(map(response => {\r\n res = response.data.htmlentitytextdecodedfields;\r\n if (res && res.entities.length > 0) {\r\n res.entities.forEach(entity => this.loadedHtmlEntities.push(entity));\r\n }\r\n return res;\r\n },\r\n err => {\r\n return res;\r\n }\r\n ));\r\n }\r\n public getFromLoadedEntities(text: string): string {\r\n const keys: string[] = text.match(ENTITIES_REGEX);\r\n if (!keys || keys.length === 0) {\r\n return text;\r\n }\r\n while (\r\n this.loadedHtmlEntities.filter(x => text.indexOf(x.originValue) !== -1) &&\r\n this.loadedHtmlEntities.filter(x => text.indexOf(x.originValue) !== -1).length > 0) {\r\n this.loadedHtmlEntities.forEach(dti => text = text.replace(dti.originValue, dti.decodedValue));\r\n }\r\n while (\r\n keys.filter(x => text.indexOf(x) !== -1) &&\r\n keys.filter(x => text.indexOf(x) !== -1).length > 0) {\r\n keys.forEach(x => text = text.replace(x, ''));\r\n }\r\n return text;\r\n }\r\n\r\n public customDecoder(s: string): string {\r\n const custom = this._customDecoder(s);\r\n const clean = this._domPurify.sanitize(custom);\r\n const trustedClean = this._domSanitizer.bypassSecurityTrustHtml(clean);\r\n const safeValue = trustedClean as SafeValue;\r\n if (safeValue) {\r\n return (safeValue).changingThisBreaksApplicationSecurity;\r\n }\r\n return clean;\r\n }\r\n\r\n private _customDecoder(s: string): string {\r\n let escaped = s;\r\n escaped = this._replaceLoop(escaped, '|PLS|', '+');\r\n escaped = this._replaceLoop(escaped, '|EQLS|', '=');\r\n escaped = this._replaceLoop(escaped, '|MNS|', '-');\r\n escaped = this._replaceLoop(escaped, '|STR|', '*');\r\n escaped = this._replaceLoop(escaped, '|SHRP|', '#');\r\n escaped = this._replaceLoop(escaped, '|DLR|', '$');\r\n escaped = this._replaceLoop(escaped, '|AT|', '@');\r\n escaped = this._replaceLoop(escaped, '|LSCP|', '(');\r\n escaped = this._replaceLoop(escaped, '|RSCP|', ')');\r\n escaped = this._replaceLoop(escaped, '|LBRC|', '{');\r\n escaped = this._replaceLoop(escaped, '|RBRC|', '}');\r\n escaped = this._replaceLoop(escaped, '|LSBRC|', '[');\r\n escaped = this._replaceLoop(escaped, '|RSBRC|', ']');\r\n escaped = this._replaceLoop(escaped, '|LRRW|', '<');\r\n escaped = this._replaceLoop(escaped, '|RRRW|', '>');\r\n escaped = this._replaceLoop(escaped, '|QWT|', '\"');\r\n escaped = this._replaceLoop(escaped, '|SQWT|', '\\'');\r\n escaped = this._replaceLoop(escaped, '|ND|', '&');\r\n escaped = this._replaceLoop(escaped, '|SMCLN|', ';');\r\n escaped = this._replaceLoop(escaped, '|CLN|', ',');\r\n escaped = this._replaceLoop(escaped, '|NDRLN|', '_');\r\n escaped = this._replaceLoop(escaped, '|PRSNT|', '%');\r\n escaped = this._replaceLoop(escaped, '|XCLM|', '!');\r\n escaped = this._replaceLoop(escaped, '|GRVS|', '`');\r\n escaped = this._replaceLoop(escaped, '|CRT|', '^');\r\n escaped = this._replaceLoop(escaped, '|PCTSH|', ':');\r\n return escaped;\r\n }\r\n\r\n private _replaceLoop(stringToReplace: string, replaceMask: string, replaceWith: string): string {\r\n let replacedString = stringToReplace;\r\n if (replacedString === undefined) {\r\n return;\r\n }\r\n while (replacedString.includes(replaceMask)) {\r\n replacedString = replacedString.replace(replaceMask, replaceWith);\r\n }\r\n return replacedString;\r\n }\r\n}\r\nexport class HtmlEntityDecodedModel {\r\n originValue: string;\r\n decodedValue: string;\r\n constructor() {\r\n this.originValue = '';\r\n this.decodedValue = '';\r\n }\r\n\r\n setValue(\r\n originValue: string,\r\n decodedValue: string\r\n ): HtmlEntityDecodedModel {\r\n this.originValue = originValue;\r\n this.decodedValue = decodedValue;\r\n return this;\r\n }\r\n}\r\nexport class HtmlEntityDecodedTextInfo {\r\n entityText: string;\r\n entities: HtmlEntityDecodedModel[];\r\n constructor() {\r\n this.entityText = '';\r\n this.entities = [];\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { BehaviorSubject, from, Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport * as jwt_decode from 'jwt-decode';\r\nimport { AppInsightsService } from '@markpieszak/ng-application-insights';\r\nimport { Router } from '@angular/router';\r\nimport { environment } from 'src/environments/environment';\r\nimport { HttpStatusCode } from '../shared/enums/sharedenums.options';\r\nimport { ErrorsService } from '../shared/services/errors.service';\r\nimport { StorageService } from './storage.service';\r\n\r\nexport enum UserType {\r\n Unknown = 0,\r\n Admin = 1,\r\n Partner = 2,\r\n Scanner = 3,\r\n Person = 4,\r\n Franchise = 5,\r\n TemporaryPerson = 6,\r\n SalePortal = 7,\r\n Operator = 8,\r\n Customer = 9,\r\n OrderReciver = 11,\r\n Developer = 12,\r\n Subadmin = 13\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n authUrl: string = environment.identityUrl;\r\n wellknown: string = environment.wellknown;\r\n endpointToken: string;\r\n authorized: BehaviorSubject;\r\n authorizedMessage: string;\r\n isAuthorized = false;\r\n\r\n myStorage: StorageService;\r\n private readonly _clientScopes: string[] = [\r\n 'openid',\r\n 'profile',\r\n 'accounting',\r\n 'offline_access',\r\n 'virtualcard',\r\n 'client',\r\n 'partner',\r\n 'employee',\r\n 'locations',\r\n 'filestore',\r\n 'userprovider',\r\n 'cardgenerator',\r\n 'advertisement',\r\n 'loyaltyservices',\r\n 'catalog',\r\n 'translation',\r\n 'talkurl',\r\n 'orders',\r\n 'feedback',\r\n 'basket',\r\n 'orders.signalrhub',\r\n 'hotactions',\r\n 'subscriptions',\r\n 'imagecloud',\r\n 'smarttranslate',\r\n 'payment',\r\n 'webhook',\r\n 'webboneeagg',\r\n 'udefsettings',\r\n 'appintegrationsscope',\r\n 'saleportal',\r\n 'dataprocessing',\r\n 'theme',\r\n 'externalintegration',\r\n 'pos',\r\n 'iikocloud',\r\n 'triosoft'\r\n ];\r\n\r\n constructor(\r\n private httpClient: HttpClient,\r\n storageService: StorageService,\r\n private appInsightsService: AppInsightsService,\r\n private errorService: ErrorsService,\r\n private router: Router\r\n ) {\r\n this.myStorage = storageService;\r\n this.authorized = new BehaviorSubject(this.checkTokenValidation());\r\n this.errorService.error.subscribe(error => {\r\n if (error.code === HttpStatusCode.Unauthorized) {\r\n this.authError('sessionEndError');\r\n }\r\n });\r\n this.setEndpointToken();\r\n }\r\n\r\n checkTokenValidation(): boolean {\r\n const access_token = this.getStoredItem('access_token');\r\n const expires_in = this.getStoredItem('expires_in');\r\n if (typeof access_token === 'undefined' || access_token === null || access_token === '') {\r\n this.isAuthorized = false;\r\n return false;\r\n }\r\n\r\n if (typeof expires_in === 'undefined' || expires_in === null) {\r\n this.isAuthorized = false;\r\n return false;\r\n }\r\n\r\n if (parseInt(expires_in, 10) > Date.now()) {\r\n this.isAuthorized = true;\r\n // this.authorized.next(true);\r\n return true;\r\n }\r\n\r\n const refresh_token = this.getStoredItem('refresh_token');\r\n if (typeof refresh_token === 'undefined' || refresh_token === null || refresh_token === '') {\r\n this.isAuthorized = false;\r\n return false;\r\n }\r\n return false;\r\n }\r\n\r\n setEndpointToken() {\r\n const endpoint = this.getStoredItem('endpointToken');\r\n if (\r\n typeof endpoint !== 'undefined' &&\r\n endpoint !== null &&\r\n endpoint.startsWith(environment.identityUrl)\r\n ) {\r\n this.endpointToken = endpoint;\r\n } else {\r\n this.getEndpointToken().subscribe(data => {\r\n this.endpointToken = data[0];\r\n this.saveItemToStorage('endpointToken', this.endpointToken);\r\n });\r\n }\r\n }\r\n\r\n getEndpointToken(): Observable> {\r\n return this.httpClient.get(this.authUrl + this.wellknown).pipe(\r\n map(res => [res['token_endpoint']],\r\n err => {\r\n console.log('Error receiving endpoint:' + err);\r\n }));\r\n }\r\n\r\n refreshToken(refreshToken: string) {\r\n const form = new FormData();\r\n form.append('grant_type', 'refresh_token');\r\n form.append('client_id', 'vcmclient');\r\n form.append('refresh_token', refreshToken);\r\n\r\n this.requestAndSaveToken(form);\r\n }\r\n\r\n getAccessToken(name: string, pass: string) {\r\n const form = new FormData();\r\n form.append('grant_type', 'password');\r\n form.append('scope', this._clientScopes.join(' '));\r\n form.append('client_id', 'vcmclient');\r\n form.append('username', name);\r\n form.append('password', pass);\r\n\r\n this.requestAndSaveToken(form);\r\n\r\n }\r\n\r\n requestAndSaveToken(data: FormData) {\r\n this.httpClient.post(this.endpointToken, data)\r\n .subscribe(res => {\r\n const respJson = res;\r\n let authorized = true;\r\n let decoded: any;\r\n try {\r\n decoded = jwt_decode(respJson.access_token);\r\n let roles: string[] = [];\r\n if (Array.isArray(decoded.role)) {\r\n roles = decoded.role as string[];\r\n } else {\r\n roles = [(decoded.role as string)];\r\n }\r\n authorized = \r\n roles.includes('Partner') || \r\n roles.includes('Admin') || \r\n roles.includes('SalePortal') ||\r\n roles.includes('Subadmin');\r\n } catch (error) {\r\n authorized = false;\r\n }\r\n if (authorized) {\r\n this.saveTokenInfo(\r\n respJson.access_token,\r\n respJson.refresh_token,\r\n respJson.signalr_token,\r\n respJson.expires_in);\r\n this.authorizedMessage = '';\r\n this.isAuthorized = true;\r\n this.authorized.next(true);\r\n this.appInsightsService.setAuthenticatedUserContext(decoded.sub);\r\n } else {\r\n this.authError('authorizefailed');\r\n }\r\n },\r\n err => {\r\n this.authError('authorizefailed');\r\n });\r\n }\r\n\r\n saveTokenInfo(access_token: string, refresh_token: string, signalr_token: string, date_exp: number) {\r\n this.saveItemToStorage('access_token', access_token);\r\n this.saveItemToStorage('refresh_token', refresh_token);\r\n this.saveItemToStorage('signalr_token', signalr_token);\r\n // gap before token will expire\r\n const trustedInterval = 100;\r\n let exp = -1;\r\n if (date_exp > trustedInterval) {\r\n exp = (Date.now() + (date_exp - trustedInterval) * 1000);\r\n } else {\r\n exp = date_exp;\r\n }\r\n\r\n // store expire date in miliseconds\r\n this.saveItemToStorage('expires_in', exp.toString());\r\n }\r\n\r\n saveItemToStorage(key: string, token: string) {\r\n this.myStorage.store(key, token);\r\n }\r\n\r\n getStoredItem(key: string): string {\r\n return this.myStorage.retrieve(key);\r\n }\r\n\r\n logout() {\r\n if (this.checkTokenValidation()) {\r\n this.myStorage.clearStorageKeys();\r\n this.saveTokenInfo('', '', '', -1);\r\n this.isAuthorized = false;\r\n return;\r\n }\r\n this.isAuthorized = false;\r\n this.authorized.next(false);\r\n this.appInsightsService.clearAuthenticatedUserContext();\r\n }\r\n\r\n private authError(errorMessage: any) {\r\n if (this.router.url === '/profile/registration') {\r\n this.myStorage.clearStorageKeys();\r\n this.saveTokenInfo('', '', '', -1);\r\n return;\r\n }\r\n this.authorizedMessage = errorMessage;\r\n this.logout();\r\n this.router.navigate(['/profile/login']);\r\n console.log('error recieving token: ' + errorMessage);\r\n }\r\n\r\n allowUseEmail(email: string): Observable {\r\n const encoded_email = encodeURIComponent(email);\r\n const res = this.httpClient.get(this.authUrl + '/account/allowuseemail?email=' + encoded_email);\r\n return res;\r\n }\r\n allowUsePhone(phone: string, phoneCode: string): Observable {\r\n if (!phone) {\r\n return from([false]);\r\n }\r\n if (!phoneCode) {\r\n return from([false]);\r\n }\r\n phoneCode = phoneCode?.replace('+', '') ?? '';\r\n const encoded_phone = encodeURIComponent(phone);\r\n const encoded_phone_code = encodeURIComponent(phoneCode);\r\n const url = `${this.authUrl}/account/allowusephone?phone=${encoded_phone}&phoneCode=${encoded_phone_code}`;\r\n console.log(url);\r\n const res = this.httpClient.get(url);\r\n return res;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { BehaviorSubject, Subject } from \"rxjs\";\r\nimport { CompanyTypeInfoModel } from \"../shared/models/companytype.models\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CompanyTypeSubscriptionsService {\r\n companyTypeSelected: BehaviorSubject;\r\n companyTypesChanged: BehaviorSubject>;\r\n saveClicked: BehaviorSubject;\r\n companyTypeId: string;\r\n itemType: string;\r\n oldItems: Array = [];\r\n items: Array = [];\r\n constructor() {\r\n this.companyTypeSelected = new BehaviorSubject(null);\r\n this.companyTypesChanged = new BehaviorSubject>([]);\r\n this.saveClicked = new BehaviorSubject(false);\r\n }\r\n\r\n setItemTypes(itemType: string, items: Array) {\r\n this.itemType = itemType;\r\n if (!items) {\r\n items = [];\r\n }\r\n this.items = [];\r\n this.oldItems = [];\r\n items.forEach(item => {\r\n this.items.push(item);\r\n this.oldItems.push(item);\r\n })\r\n this.items = items || [];\r\n }\r\n\r\n updateItemTypes() {\r\n this.setItemTypes(this.itemType, this.items);\r\n }\r\n resetItemTypes() {\r\n this.setItemTypes(this.itemType, this.oldItems);\r\n }\r\n\r\n clearItemTypes() {\r\n this.setItemTypes('', []);\r\n }\r\n\r\n selectCompanyType(id: string): void {\r\n this.companyTypeId = id;\r\n this.companyTypeSelected.next(id);\r\n }\r\n changeCompanyTypes(companyTypes: Array): void {\r\n this.companyTypesChanged.next(companyTypes);\r\n }\r\n saveChanges() {\r\n this.saveClicked.next(true);\r\n }\r\n existChanges(): boolean {\r\n if (this.items.length !== this.oldItems.length) {\r\n return true;\r\n }\r\n this.items.forEach(item => {\r\n if (this.oldItems.indexOf(item) === -1) {\r\n return true;\r\n }\r\n });\r\n return false;\r\n }\r\n}\r\n","import { Injectable, Optional } from '@angular/core';\r\nimport {\r\n HttpClient, HttpHeaders,\r\n HttpResponse, HttpEvent, HttpParams\r\n} from '@angular/common/http';\r\n\r\nimport { Observable } from 'rxjs';\r\nimport { environment } from 'src/environments/environment';\r\nimport { Configuration } from 'src/applazy/shared/models/configuration';\r\nimport { CompanyTypeInfoModel } from 'src/applazy/shared/models/companytype.models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CompanyTypeService {\r\n\r\n protected basePath = environment.companyType;\r\n public defaultHeaders = new HttpHeaders();\r\n public configuration = new Configuration();\r\n\r\n constructor(protected httpClient: HttpClient, @Optional() configuration: Configuration) {\r\n\r\n if (configuration) {\r\n this.configuration = configuration;\r\n this.configuration.basePath = configuration.basePath || this.basePath;\r\n\r\n } else {\r\n this.configuration.basePath = this.basePath;\r\n }\r\n }\r\n\r\n public getAll(apiVersion: string, observe?: 'body', reportProgress?: boolean): Observable>;\r\n public getAll(apiVersion: string, observe?: 'response', reportProgress?: boolean): Observable>>;\r\n public getAll(apiVersion: string, observe?: 'events', reportProgress?: boolean): Observable>>;\r\n public getAll(apiVersion: string, observe: any = 'body', reportProgress: boolean = false): Observable {\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling create.');\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'application/json-patch+json',\r\n 'application/json',\r\n 'text/json',\r\n 'application/_*+json'\r\n ];\r\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected !== undefined) {\r\n headers = headers.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n return this.httpClient.get>(`${this.configuration.basePath}/api/v1/companytype/active/all`,\r\n {\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\nimport { CompanyTypeInfoModel } from \"src/applazy/shared/models/companytype.models\";\r\nimport { CompanyTypeService } from \"./companytype.service\";\r\n\r\n@Injectable()\r\nexport class CompanyTypeDataService {\r\n private _apiVersion = '1.0';\r\n private _companyTypes: Array = []\r\n constructor(private companyTypeService: CompanyTypeService) {\r\n\r\n }\r\n\r\n getAll(): Observable> {\r\n return this.companyTypeService.getAll(this._apiVersion).pipe(map(companyTypes => {\r\n this._companyTypes = companyTypes || [];\r\n return this._companyTypes;\r\n }, err => {\r\n return [];\r\n }));\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { tap } from 'rxjs/internal/operators/tap';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ConfigService {\r\n private config: Object = null;\r\n constructor(private http: HttpClient) { }\r\n\r\n public get(key: any) {\r\n return this.config[key];\r\n }\r\n\r\n public load(): Promise {\r\n return new Promise((resolve, reject) => {\r\n this.http.get('manifest.json').pipe(\r\n tap(\r\n (res) => resolve(true),\r\n (err) => console.error(err)\r\n )\r\n ).subscribe((envResponse) => {\r\n this.config = envResponse;\r\n });\r\n }).catch(err => {});\r\n }\r\n}\r\n","\r\nimport { Injectable, Optional } from '@angular/core';\r\nimport {\r\n HttpClient, HttpHeaders, HttpParams,\r\n HttpResponse, HttpEvent\r\n} from '@angular/common/http';\r\n\r\nimport { Observable } from 'rxjs';\r\nimport { environment } from 'src/environments/environment';\r\nimport { Configuration } from 'src/applazy/shared/models/configuration';\r\nimport { CustomHttpUrlEncodingCodec } from 'src/applazy/shared/models/encoder';\r\nimport { PaginatedItemsReadModelOfIconReadModel } from './imageclouddata.service';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class IconService {\r\n\r\n protected basePath = environment.imageCloud;\r\n public defaultHeaders = new HttpHeaders();\r\n public configuration = new Configuration();\r\n\r\n constructor(protected httpClient: HttpClient, @Optional() configuration: Configuration) {\r\n\r\n if (configuration) {\r\n this.configuration = configuration;\r\n this.configuration.basePath = configuration.basePath || this.basePath;\r\n\r\n } else {\r\n this.configuration.basePath = this.basePath;\r\n }\r\n }\r\n\r\n public apiVapiVersionIconGetIconsGet(apiVersion: string, searchText?: string, pageIndex?: number, pageSize?: number, observe?: 'body', reportProgress?: boolean): Observable;\r\n public apiVapiVersionIconGetIconsGet(apiVersion: string, searchText?: string, pageIndex?: number, pageSize?: number, observe?: 'response', reportProgress?: boolean): Observable>;\r\n public apiVapiVersionIconGetIconsGet(apiVersion: string, searchText?: string, pageIndex?: number, pageSize?: number, observe?: 'events', reportProgress?: boolean): Observable>;\r\n public apiVapiVersionIconGetIconsGet(apiVersion: string, searchText?: string, pageIndex?: number, pageSize?: number, observe: any = 'body', reportProgress: boolean = false): Observable {\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiVapiVersionIconGetIconsGet.');\r\n }\r\n\r\n let queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() });\r\n if (searchText !== undefined && searchText !== null) {\r\n queryParameters = queryParameters.set('searchText', searchText);\r\n }\r\n if (pageIndex !== undefined && pageIndex !== null) {\r\n queryParameters = queryParameters.set('pageIndex', pageIndex);\r\n }\r\n if (pageSize !== undefined && pageSize !== null) {\r\n queryParameters = queryParameters.set('pageSize', pageSize);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get(`${this.configuration.basePath}/api/v${encodeURIComponent(String(apiVersion))}/Icon/GetIcons`,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { IconService } from './icon.service';\r\n\r\n@Injectable()\r\nexport class ImageCloudDataService {\r\n private _apiVersion = '1.0';\r\n private _pageSize = 30;\r\n\r\n get pageSize() {\r\n return this._pageSize;\r\n }\r\n\r\n constructor(\r\n private iconService: IconService\r\n ) {\r\n\r\n }\r\n\r\n getIcons(searchText: string) {\r\n return this.iconService.apiVapiVersionIconGetIconsGet(this._apiVersion, searchText, 0, this._pageSize);\r\n }\r\n\r\n loadMoreIcons(searchText: string, pageIndex: number) {\r\n return this.iconService.apiVapiVersionIconGetIconsGet(this._apiVersion, searchText, pageIndex, this._pageSize);\r\n }\r\n}\r\nexport interface PaginatedItemsReadModelOfIconReadModel {\r\n pageIndex?: number;\r\n pageSize?: number;\r\n count?: number;\r\n data?: Array;\r\n}\r\n\r\nexport interface IconReadModel {\r\n id?: number;\r\n url?: string;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { LoaderState } from '../shared/components/loader/loader';\r\n\r\n@Injectable()\r\nexport class LoaderService {\r\n\r\n private loaderSubject = new Subject();\r\n loaderStateModel: boolean;\r\n isPost: boolean;\r\n loaderState = this.loaderSubject.asObservable();\r\n\r\n constructor() { }\r\n\r\n show(isPost: boolean) {\r\n this.isPost = isPost;\r\n this.loaderStateModel = true;\r\n this.loaderSubject.next({show: true});\r\n\r\n }\r\n\r\n hide() {\r\n this.loaderStateModel = false;\r\n this.loaderSubject.next({show: false});\r\n }\r\n}\r\n","\r\nimport { Injectable, Optional } from '@angular/core';\r\nimport {\r\n HttpClient, HttpHeaders, HttpParams,\r\n HttpResponse, HttpEvent\r\n} from '@angular/common/http';\r\n\r\nimport { Observable } from 'rxjs';\r\nimport { environment } from 'src/environments/environment';\r\nimport { Configuration } from 'src/applazy/shared/models/configuration';\r\nimport { CustomHttpUrlEncodingCodec } from 'src/applazy/shared/models/encoder';\r\nimport { IFilterData } from '../shared/components/tables/tables.component';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MarketPlaceService {\r\n\r\n protected basePath = environment.marketplace;\r\n public defaultHeaders = new HttpHeaders();\r\n public configuration = new Configuration();\r\n\r\n constructor(protected httpClient: HttpClient, @Optional() configuration: Configuration) {\r\n\r\n if (configuration) {\r\n this.configuration = configuration;\r\n this.configuration.basePath = configuration.basePath || this.basePath;\r\n\r\n } else {\r\n this.configuration.basePath = this.basePath;\r\n }\r\n }\r\n\r\n public getAllDeliveryApplications(apiVersion: string, observe?: 'body', reportProgress?: boolean): Observable>;\r\n public getAllDeliveryApplications(apiVersion: string, observe?: 'response', reportProgress?: boolean): Observable>>;\r\n public getAllDeliveryApplications(apiVersion: string, observe?: 'events', reportProgress?: boolean): Observable>>;\r\n public getAllDeliveryApplications(apiVersion: string, observe: any = 'body', reportProgress: boolean = false): Observable {\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling getActiveDeliveryApplications.');\r\n }\r\n const queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() });\r\n let headers = this.defaultHeaders;\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get(`${this.configuration.basePath}/api/v${encodeURIComponent(String(apiVersion))}/ApplicationPortal/GetDeliveryApplications`,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n public getActiveDeliveryApplicationsBySalePortal(apiVersion: string, observe?: 'body', reportProgress?: boolean): Observable>;\r\n public getActiveDeliveryApplicationsBySalePortal(apiVersion: string, observe?: 'response', reportProgress?: boolean): Observable>>;\r\n public getActiveDeliveryApplicationsBySalePortal(apiVersion: string, observe?: 'events', reportProgress?: boolean): Observable>>;\r\n public getActiveDeliveryApplicationsBySalePortal(apiVersion: string, observe: any = 'body', reportProgress: boolean = false): Observable {\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling getActiveDeliveryApplications.');\r\n }\r\n const queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() });\r\n let headers = this.defaultHeaders;\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get(`${this.configuration.basePath}/api/v${encodeURIComponent(String(apiVersion))}/ApplicationPortal/GetActiveDelivery`,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n public getActiveDeliveryApplications(apiVersion: string, userId: string, observe?: 'body', reportProgress?: boolean): Observable>;\r\n public getActiveDeliveryApplications(apiVersion: string, userId: string, observe?: 'response', reportProgress?: boolean): Observable>>;\r\n public getActiveDeliveryApplications(apiVersion: string, userId: string, observe?: 'events', reportProgress?: boolean): Observable>>;\r\n public getActiveDeliveryApplications(apiVersion: string, userId: string, observe: any = 'body', reportProgress: boolean = false): Observable {\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling getActiveDeliveryApplications.');\r\n }\r\n let queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() });\r\n let headers = this.defaultHeaders;\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n if (userId) {\r\n queryParameters = queryParameters.set('userId', userId);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get(`${this.configuration.basePath}/api/v${encodeURIComponent(String(apiVersion))}/ApplicationTeam/GetActiveDeliveryByTeam`,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n public getActiveFeedbackByTeam(apiVersion: string, observe?: 'body', reportProgress?: boolean): Observable>;\r\n public getActiveFeedbackByTeam(apiVersion: string, observe?: 'response', reportProgress?: boolean): Observable>>;\r\n public getActiveFeedbackByTeam(apiVersion: string, observe?: 'events', reportProgress?: boolean): Observable>>;\r\n public getActiveFeedbackByTeam(apiVersion: string, observe: any = 'body', reportProgress: boolean = false): Observable {\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling getActiveFeedbackByTeam.');\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get(`${this.configuration.basePath}/api/v${encodeURIComponent(String(apiVersion))}/ApplicationTeam/GetActiveFeedbackByTeam`,\r\n {\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n public getActiveFeedbackBySalePortal(apiVersion: string, observe?: 'body', reportProgress?: boolean): Observable>;\r\n public getActiveFeedbackBySalePortal(apiVersion: string, observe?: 'response', reportProgress?: boolean): Observable>>;\r\n public getActiveFeedbackBySalePortal(apiVersion: string, observe?: 'events', reportProgress?: boolean): Observable>>;\r\n public getActiveFeedbackBySalePortal(apiVersion: string, observe: any = 'body', reportProgress: boolean = false): Observable {\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling getActiveFeedbackBySalePortal.');\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get(`${this.configuration.basePath}/api/v${encodeURIComponent(String(apiVersion))}/applicationportal/GetActiveFeedback`,\r\n {\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n public getDeliveryApplications(apiVersion: string, observe?: 'body', reportProgress?: boolean): Observable>;\r\n public getDeliveryApplications(apiVersion: string, observe?: 'response', reportProgress?: boolean): Observable>>;\r\n public getDeliveryApplications(apiVersion: string, observe?: 'events', reportProgress?: boolean): Observable>>;\r\n public getDeliveryApplications(apiVersion: string, observe: any = 'body', reportProgress: boolean = false): Observable {\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling getActiveDeliveryApplications.');\r\n }\r\n const queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() });\r\n let headers = this.defaultHeaders;\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get>(`${this.configuration.basePath}/api/v${encodeURIComponent(String(apiVersion))}/app/delivery/applications`,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n}\r\nexport interface ApplicationDeliveryReadModel {\r\n id: string;\r\n name: string;\r\n logo: string;\r\n state: string;\r\n teamState: string;\r\n}\r\nexport class ApplicationReadModel implements IFilterData {\r\n applicationId: string;\r\n applicationName: string;\r\n applicationLogo: string;\r\n \r\n public get id() : string {\r\n return this.applicationId;\r\n }\r\n getDisplayName(language: string): string {\r\n return this.applicationName;\r\n }\r\n}\r\n","import { EventEmitter, Injectable } from '@angular/core';\r\nimport { HttpTransportType, HubConnection, HubConnectionBuilder, LogLevel } from '@aspnet/signalr';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { AuthService } from 'src/applazy/services/auth.service';\r\nimport { environment } from 'src/environments/environment';\r\nimport {\r\n DefaultPushNotificationModel,\r\n HotActionPushNotificationModel,\r\n PortionPushNotificationModel,\r\n PickupPushNotificationModel,\r\n DeliveryPushNotificationModel,\r\n ReservationPushNotificationModel,\r\n WithoutMenuPushNotificationModel,\r\n UniqueQRPushNotificationModel,\r\n KioskPushNotificationModel,\r\n NotificationReadModel,\r\n IPushNotificationModel,\r\n ENotificatoinOrderStatus\r\n} from 'src/applazy/shared/models/notificationmodels';\r\nimport { User } from '../shared/models/User';\r\nimport { ConfigService } from './config.service';\r\n\r\n@Injectable()\r\nexport class SignalRNotificationClient {\r\n unknown = new EventEmitter<{ model: DefaultPushNotificationModel, date: Date }>();\r\n hotAction = new EventEmitter<{ model: HotActionPushNotificationModel, date: Date }>();\r\n portion = new EventEmitter<{ model: PortionPushNotificationModel, date: Date }>();\r\n pickup = new EventEmitter<{ model: PickupPushNotificationModel, date: Date }>();\r\n delivery = new EventEmitter<{ model: DeliveryPushNotificationModel, date: Date }>();\r\n reservation = new EventEmitter<{ model: ReservationPushNotificationModel, date: Date }>();\r\n withoutMenu = new EventEmitter<{ model: WithoutMenuPushNotificationModel, date: Date }>();\r\n uniqueQr = new EventEmitter<{ model: UniqueQRPushNotificationModel, date: Date }>();\r\n kiosk = new EventEmitter<{ model: KioskPushNotificationModel, date: Date }>();\r\n newNotification = new EventEmitter<{ data: NotificationReadModel, notify: boolean }>();\r\n connectionEstablished = new EventEmitter();\r\n connectionExists = false;\r\n volumeOn = true;\r\n temporaryPortionNotifications: { checkoutId: string, count: number, checked: boolean }[] = [];\r\n\r\n private _hubConnection: HubConnection;\r\n\r\n constructor(\r\n private authService: AuthService,\r\n private toastr: ToastrService,\r\n private translateService: TranslateService,\r\n private configService: ConfigService\r\n ) {\r\n this.authService.authorized.subscribe(val => {\r\n if (val === false && this.connectionExists) {\r\n this._hubConnection.stop().then(() => {\r\n this.connectionExists = false;\r\n });\r\n this._hubConnection.off(NotificationReadModel.ActionTypeEnum.Unknown);\r\n this._hubConnection.off(NotificationReadModel.ActionTypeEnum.HotAction);\r\n this._hubConnection.off(NotificationReadModel.ActionTypeEnum.Portion);\r\n this._hubConnection.off(NotificationReadModel.ActionTypeEnum.Pickup);\r\n this._hubConnection.off(NotificationReadModel.ActionTypeEnum.Delivery);\r\n this._hubConnection.off(NotificationReadModel.ActionTypeEnum.Reservation);\r\n this._hubConnection.off(NotificationReadModel.ActionTypeEnum.WithoutMenu);\r\n this._hubConnection.off(NotificationReadModel.ActionTypeEnum.UniqueQR);\r\n this._hubConnection.off(NotificationReadModel.ActionTypeEnum.Kiosk);\r\n }\r\n if (val === true && !this.connectionExists) {\r\n this.authorize();\r\n }\r\n });\r\n }\r\n\r\n muteNotificationSound(volumeOn: boolean) {\r\n this.volumeOn = volumeOn;\r\n }\r\n\r\n private authorize() {\r\n let user = User.sub;\r\n if (User.Role === 'SalePortal') {\r\n user = this.configService.get('host');\r\n }\r\n if (User.Role === 'Subadmin') {\r\n user = User.team;\r\n }\r\n const url = environment.signalRUrl + '/notificationhub/?userId=' + user.toLowerCase();\r\n this._hubConnection = new HubConnectionBuilder()\r\n .configureLogging(LogLevel.None)\r\n .withUrl(url, {\r\n skipNegotiation: true,\r\n logger: LogLevel.None,\r\n logMessageContent: false,\r\n transport: HttpTransportType.WebSockets\r\n })\r\n .configureLogging(LogLevel.None)\r\n .build();\r\n // transport: HttpTransportType.LongPolling,\r\n this.registerOnServerEvents();\r\n\r\n this.startConnection();\r\n const self = this;\r\n this._hubConnection.onclose(() => {\r\n setTimeout(function () {\r\n self.startConnection();\r\n }, 5000);\r\n });\r\n\r\n // }\r\n // });\r\n }\r\n\r\n private startConnection(): void {\r\n this._hubConnection\r\n .start()\r\n .then(() => {\r\n this.connectionExists = true;\r\n this.connectionEstablished.emit(true);\r\n })\r\n .catch(err => {\r\n });\r\n }\r\n\r\n private registerOnServerEvents(): void {\r\n\r\n this._hubConnection.on(NotificationReadModel.ActionTypeEnum.Unknown, (data: NotificationReadModel) => {\r\n this.setNotification(data);\r\n this.unknown.emit({ model: data.data, date: data.date });\r\n });\r\n this._hubConnection.on(NotificationReadModel.ActionTypeEnum.HotAction, (data: NotificationReadModel) => {\r\n if (data.dataModel) {\r\n const hotActionData = JSON.parse(data.dataModel) as HotActionPushNotificationModel;\r\n data.data = hotActionData;\r\n }\r\n data.title = data.actionTypeDisplayName.toLowerCase() + data.actionTypeDisplayName.substr(1);\r\n // data.message = hotActionData.groupNameKey;\r\n this.setNotification(data);\r\n this.hotAction.emit({ model: data.data, date: data.date });\r\n\r\n });\r\n this._hubConnection.on(NotificationReadModel.ActionTypeEnum.Portion, (data: NotificationReadModel) => {\r\n let portionData: PortionPushNotificationModel;\r\n if (data.dataModel) {\r\n portionData = JSON.parse(data.dataModel) as PortionPushNotificationModel;\r\n data.data = portionData;\r\n }\r\n if (portionData && portionData.status === ENotificatoinOrderStatus.ActiveOrderCheckout) {\r\n let index = this.temporaryPortionNotifications.findIndex(x => x.checkoutId === portionData.checkoutId);\r\n if (index === -1) {\r\n const n = {\r\n checkoutId: portionData.checkoutId,\r\n checked: false,\r\n count: 0\r\n };\r\n index = this.temporaryPortionNotifications.length;\r\n this.temporaryPortionNotifications.push(n);\r\n }\r\n this.temporaryPortionNotifications[index].count++;\r\n this.setNotification(data, this.temporaryPortionNotifications[index].count !== 1);\r\n } else {\r\n let notify = false;\r\n if (portionData && portionData.status === ENotificatoinOrderStatus.Completed) {\r\n notify = true;\r\n }\r\n this.setNotification(data, notify);\r\n }\r\n this.portion.emit({ model: data.data, date: data.date });\r\n\r\n });\r\n this._hubConnection.on(NotificationReadModel.ActionTypeEnum.Pickup, (data: NotificationReadModel) => {\r\n if (data.dataModel) {\r\n const pickupData = JSON.parse(data.dataModel) as PickupPushNotificationModel;\r\n data.data = pickupData;\r\n }\r\n this.setNotification(data);\r\n this.pickup.emit({ model: data.data, date: data.date });\r\n\r\n });\r\n this._hubConnection.on(NotificationReadModel.ActionTypeEnum.Delivery, (data: NotificationReadModel) => {\r\n if (data.dataModel) {\r\n const deliveryData = JSON.parse(data.dataModel) as DeliveryPushNotificationModel;\r\n data.data = deliveryData;\r\n }\r\n this.setNotification(data);\r\n this.delivery.emit({ model: data.data, date: data.date });\r\n });\r\n this._hubConnection.on(NotificationReadModel.ActionTypeEnum.Reservation, (data: NotificationReadModel) => {\r\n if (data.dataModel) {\r\n const reservationData = JSON.parse(data.dataModel) as ReservationPushNotificationModel;\r\n data.data = reservationData;\r\n }\r\n this.setNotification(data);\r\n this.reservation.emit({ model: data.data, date: data.date });\r\n });\r\n this._hubConnection.on(NotificationReadModel.ActionTypeEnum.WithoutMenu, (data: NotificationReadModel) => {\r\n if (data.dataModel) {\r\n const withoutMenuData = JSON.parse(data.dataModel) as WithoutMenuPushNotificationModel;\r\n data.data = withoutMenuData;\r\n }\r\n this.setNotification(data);\r\n this.withoutMenu.emit({ model: data.data, date: data.date });\r\n });\r\n this._hubConnection.on(NotificationReadModel.ActionTypeEnum.UniqueQR, (data: NotificationReadModel) => {\r\n if (data.dataModel) {\r\n const uniqueQRData = JSON.parse(data.dataModel) as UniqueQRPushNotificationModel;\r\n data.data = uniqueQRData;\r\n }\r\n this.setNotification(data);\r\n this.uniqueQr.emit({ model: data.data, date: data.date });\r\n });\r\n this._hubConnection.on(NotificationReadModel.ActionTypeEnum.Kiosk, (data: NotificationReadModel) => {\r\n if (data.dataModel) {\r\n const kioskData = JSON.parse(data.dataModel) as KioskPushNotificationModel;\r\n data.data = kioskData;\r\n }\r\n this.setNotification(data);\r\n this.kiosk.emit({ model: data.data, date: data.date });\r\n });\r\n }\r\n\r\n private setNotification(data: NotificationReadModel, notify = true) {\r\n if (!notify) {\r\n this.newNotification.emit({ data: data, notify: false });\r\n return;\r\n }\r\n const title = data.actionTypeDisplayName;\r\n this.playAudio();\r\n if (!title) {\r\n this.toastr.info(data.message, data.title);\r\n this.newNotification.emit({ data: data, notify: true });\r\n return;\r\n }\r\n this.translateService.get(title).subscribe(t => {\r\n this.toastr.info('', title);\r\n });\r\n this.newNotification.emit({ data: data, notify: true });\r\n }\r\n\r\n private playAudio() {\r\n const audio = new Audio();\r\n audio.src = './../../../assets/audio/sound.mp3';\r\n audio.load();\r\n audio.play();\r\n\r\n audio.muted = !this.volumeOn;\r\n }\r\n\r\n public toPushNotificationModel(data: IPushNotificationModel) {\r\n switch (data.actionType) {\r\n case NotificationReadModel.ActionTypeEnum.Unknown:\r\n return data;\r\n case NotificationReadModel.ActionTypeEnum.Portion:\r\n return data;\r\n case NotificationReadModel.ActionTypeEnum.Pickup:\r\n return data;\r\n case NotificationReadModel.ActionTypeEnum.Delivery:\r\n return data;\r\n case NotificationReadModel.ActionTypeEnum.Reservation:\r\n return data;\r\n case NotificationReadModel.ActionTypeEnum.WithoutMenu:\r\n return data;\r\n case NotificationReadModel.ActionTypeEnum.UniqueQR:\r\n return data;\r\n case NotificationReadModel.ActionTypeEnum.Kiosk:\r\n return data;\r\n default:\r\n break;\r\n }\r\n }\r\n}\r\n","import { Injectable, Optional } from '@angular/core';\r\nimport {\r\n HttpClient, HttpHeaders, HttpParams,\r\n HttpResponse, HttpEvent\r\n} from '@angular/common/http';\r\n\r\nimport { Observable } from 'rxjs';\r\nimport { environment } from 'src/environments/environment';\r\nimport { Configuration } from 'src/applazy/shared/models/configuration';\r\nimport { CustomHttpUrlEncodingCodec } from 'src/applazy/shared/models/encoder';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PaymentSystemsService {\r\n\r\n protected basePath = environment.paymentUrl;\r\n public defaultHeaders = new HttpHeaders();\r\n public configuration = new Configuration();\r\n\r\n constructor(protected httpClient: HttpClient, @Optional() configuration: Configuration) {\r\n\r\n if (configuration) {\r\n this.configuration = configuration;\r\n this.configuration.basePath = configuration.basePath || this.basePath;\r\n\r\n } else {\r\n this.configuration.basePath = this.basePath;\r\n }\r\n }\r\n\r\n public apiV1PaymentSystemsPartnerSystemsGet(apiVersion: string, userId: string, observe?: 'body', reportProgress?: boolean): Observable>;\r\n public apiV1PaymentSystemsPartnerSystemsGet(apiVersion: string, userId: string, observe?: 'response', reportProgress?: boolean): Observable>>;\r\n public apiV1PaymentSystemsPartnerSystemsGet(apiVersion: string, userId: string, observe?: 'events', reportProgress?: boolean): Observable>>;\r\n public apiV1PaymentSystemsPartnerSystemsGet(apiVersion: string, userId: string, observe: any = 'body', reportProgress: boolean = false): Observable {\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiV1PaymentSystemsPartnerSystemsGet.');\r\n }\r\n\r\n let queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() });\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n\r\n if (userId) {\r\n queryParameters = queryParameters.set('userId', userId);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n return this.httpClient.get>(`${this.configuration.basePath}/api/v1/PaymentSystems/team/systems`,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n public apiV1PaymentSystemsSalePortalSystemsGet(apiVersion: string, observe?: 'body', reportProgress?: boolean): Observable>;\r\n public apiV1PaymentSystemsSalePortalSystemsGet(apiVersion: string, observe?: 'response', reportProgress?: boolean): Observable>>;\r\n public apiV1PaymentSystemsSalePortalSystemsGet(apiVersion: string, observe?: 'events', reportProgress?: boolean): Observable>>;\r\n public apiV1PaymentSystemsSalePortalSystemsGet(apiVersion: string, observe: any = 'body', reportProgress: boolean = false): Observable {\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiV1PaymentSystemsSalePortalSystemsGet.');\r\n }\r\n\r\n let queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() });\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n return this.httpClient.get>(`${this.configuration.basePath}/api/v1/PaymentSystems/saleportal/systems`,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n}\r\n\r\nexport interface PaymentGroupReadModel {\r\n paymentSystem?: string;\r\n pictureUri?: string;\r\n paymentReadModels?: Array;\r\n}\r\nexport interface PaymentReadModel {\r\n paymentMethod?: string;\r\n autoRenew?: boolean;\r\n pictureUri?: string;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as jwt_decode from 'jwt-decode';\r\nimport { StorageKeys } from '../shared/services/constant.service';\r\n@Injectable()\r\nexport class StorageService {\r\n private storage: any;\r\n public refreshToken = false;\r\n constructor() {\r\n this.storage = localStorage;\r\n }\r\n\r\n public retrieve(key: string, withAuthPrefix = false): any {\r\n let storeKey = key;\r\n if (withAuthPrefix) {\r\n storeKey = this.getAuthPrefix() + '_' + key;\r\n }\r\n const item = this.storage.getItem(storeKey);\r\n if (item && item !== 'undefined') {\r\n return JSON.parse(this.storage.getItem(storeKey));\r\n }\r\n return;\r\n }\r\n\r\n public store(key: string, value: any, useAuthPrefix = false) {\r\n let storeKey = key;\r\n if (useAuthPrefix) {\r\n storeKey = this.getAuthPrefix() + '_' + key;\r\n }\r\n this.storage.setItem(storeKey, JSON.stringify(value));\r\n }\r\n\r\n public remove(key: string, withAuthPrefix = false) {\r\n let storeKey = key;\r\n if (withAuthPrefix) {\r\n storeKey = this.getAuthPrefix() + '_' + key;\r\n }\r\n const item = this.storage.getItem(storeKey);\r\n if (item && item !== 'undefined') {\r\n this.storage.removeItem(storeKey);\r\n }\r\n }\r\n\r\n private getAuthPrefix() {\r\n const token = this.retrieve('access_token');\r\n if (!token) {\r\n return '';\r\n }\r\n const decoded = jwt_decode(token);\r\n return decoded.sub;\r\n }\r\n\r\n public clearStorageKeys() {\r\n this.remove(StorageKeys.FEEDBACK_DATE_INTERVAL_KEY + '_start', true);\r\n this.remove(StorageKeys.FEEDBACK_DATE_INTERVAL_KEY + '_end', true);\r\n this.remove(StorageKeys.HOT_ACTIONS_HISTORY_DATE_INTERVAL_KEY + '_start', true);\r\n this.remove(StorageKeys.HOT_ACTIONS_HISTORY_DATE_INTERVAL_KEY + '_end', true);\r\n this.remove(StorageKeys.CATALOG_ITEM_GROUP_KEY, true);\r\n this.remove(StorageKeys.ORDERING_DATE_INTERVAL_KEY + '_start', true);\r\n this.remove(StorageKeys.ORDERING_DATE_INTERVAL_KEY + '_end', true);\r\n this.remove('pos_' + StorageKeys.ORDERING_DATE_INTERVAL_KEY + '_start', true);\r\n this.remove('pos_' + StorageKeys.ORDERING_DATE_INTERVAL_KEY + '_end', true);\r\n this.remove(StorageKeys.ORDERING_PRODUCT_REPORT_DATE_INTERVAL_KEY + '_start', true);\r\n this.remove(StorageKeys.ORDERING_PRODUCT_REPORT_DATE_INTERVAL_KEY + '_end', true);\r\n this.remove(StorageKeys.ORDERING_ACTIVE_CHECKOUT_DATE__INTERVAL_KEY + '_start', true);\r\n this.remove(StorageKeys.ORDERING_ACTIVE_CHECKOUT_DATE__INTERVAL_KEY + '_end', true);\r\n this.remove(StorageKeys.CLIENT_DATE_INTERVAL_KEY + '_start', true);\r\n this.remove(StorageKeys.CLIENT_DATE_INTERVAL_KEY + '_end', true);\r\n this.remove(StorageKeys.USERDATACHECKED_KEY, true);\r\n this.remove(StorageKeys.SCROLL_DATA_NAME, true);\r\n this.remove(StorageKeys.SMART_TRANSLATE_DATA_NAME, true);\r\n this.remove(StorageKeys.NOTIFICATION_DATE_INTERVAL_KEY + '_start', true);\r\n this.remove(StorageKeys.NOTIFICATION_DATE_INTERVAL_KEY + '_end', true);\r\n this.remove(StorageKeys.SALE_PORTAL_COMPANY_TYPE_KEY);\r\n this.remove(StorageKeys.FROM_SALE_PORTAL, true);\r\n this.remove(StorageKeys.SALE_PORTAL_SELECTED_PARTNER);\r\n this.remove(StorageKeys.SALE_PORTAL_SELECTED_PARTNER_FILTER);\r\n this.remove(StorageKeys.SALE_PORTAL_TRANSLATE_HOST);\r\n this.remove(StorageKeys.SALE_PORTAL_RESTAURANT_FILTER, true);\r\n this.remove(StorageKeys.SALE_PORTAL_RESTAURANT_DATE_INTERVAL_KEY + '_start', true);\r\n this.remove(StorageKeys.SALE_PORTAL_RESTAURANT_DATE_INTERVAL_KEY + '_end', true);\r\n this.remove(StorageKeys.SALE_PORTAL_RESTAURANT_DATE_INTERVAL_KEY + '_use', true);\r\n this.remove(StorageKeys.QR_URLTYPE, true);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { UUID } from 'angular2-uuid';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { DirectTranslationService, LanguageReadModel, TranslationService, WordLengWriteModel, WordWriteModel } from 'src/applazy/generatedmodules/translation/api';\r\nimport { WordTranslate } from 'src/applazy/generatedmodules/translation/api';\r\nimport { PartnerTranslationDataService } from '../partner/services/partnertranslationdata.service';\r\nimport { DirectTranslationDataService } from '../saleportal/services/directtranslationdata.service';\r\nimport { NOT_EXIST_TRANSLATION } from '../shared/handlers/lazyFakeMissingTranslationHandler';\r\nimport { User } from '../shared/models/User';\r\nimport { StorageKeys } from '../shared/services/constant.service';\r\nimport { AuthService } from './auth.service';\r\nimport { BaseTranslationDataService } from './basetranslationdata.service';\r\nimport { StorageService } from './storage.service';\r\nimport { SubadminTranslationDataService } from '../subadmin/services/subadminTranslationData.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TranslationLanguageService {\r\n private _wordWriteModels: WordWriteModel[] = [];\r\n public mainLanguageManualChanged: boolean;\r\n languagesArr: Array = [];\r\n authLanguagesArr: Array;\r\n languages$ = new Subject>();\r\n authLanguages$ = new Subject>();\r\n languages = this.languages$.asObservable();\r\n authLanguages = this.authLanguages$.asObservable();\r\n private mainPanelLanguageChanged$ = new Subject();\r\n mainPanelLanguageChanged = this.mainPanelLanguageChanged$.asObservable();\r\n private subLanguageChanged$ = new Subject();\r\n subLanguageChanged = this.subLanguageChanged$.asObservable();\r\n private _baseTranslationDataService: BaseTranslationDataService;\r\n private readonly _loadUrl = true;\r\n constructor(\r\n private authService: AuthService,\r\n private translateService: TranslateService,\r\n private storageService: StorageService,\r\n private translationService: TranslationService,\r\n private directtranslationService: DirectTranslationService\r\n ) {\r\n this.authService.authorized.subscribe(val => {\r\n if (!val) {\r\n this.mainLanguageManualChanged = false;\r\n }\r\n if (!val && this.authLanguagesArr && this.authLanguagesArr.length > 0) {\r\n this.authLanguagesArr = [];\r\n this._wordWriteModels = [];\r\n }\r\n });\r\n }\r\n loadLanguages(reqLang?: string) {\r\n if (this.authService.isAuthorized) {\r\n return;\r\n }\r\n if (!this.languagesArr || this.languagesArr.length === 0) {\r\n this.translationService.apiV1TranslationLangsDefallGet('1.0', this._loadUrl).subscribe(res => {\r\n if (res && res.length > 0) {\r\n let language = this.storageService.retrieve(StorageKeys.TranslationLanguageKey);\r\n if (reqLang && res.findIndex(x => x.name === reqLang) > -1) {\r\n language = reqLang;\r\n }\r\n if (!language || !language.trim()) {\r\n language = res[0].name;\r\n }\r\n this.storageService.store(StorageKeys.TranslationLanguageKey, language);\r\n this.translateService.setDefaultLang(language);\r\n this.translateService.use(language).subscribe(t => {\r\n this.languagesArr = res;\r\n this.languages$.next(res);\r\n const lang = res.find(x => x.name === language);\r\n this.mainPanelLangChanged(lang, true);\r\n });\r\n }\r\n }, err => { });\r\n } else {\r\n this.languages$.next(this.languagesArr);\r\n }\r\n }\r\n\r\n loadAuthLanguages() {\r\n if (User.currentRole) {\r\n if (User.currentRole === 'saleportal') {\r\n this._baseTranslationDataService = new DirectTranslationDataService(this.directtranslationService);\r\n } else {\r\n if (User.currentRole === 'subadmin') {\r\n this._baseTranslationDataService = new SubadminTranslationDataService(this.translationService);\r\n } else {\r\n this._baseTranslationDataService = new PartnerTranslationDataService(this.translationService);\r\n }\r\n }\r\n }\r\n if (!this.authLanguagesArr || this.authLanguagesArr.length === 0) {\r\n this._baseTranslationDataService.getAuthLanguages(this._loadUrl).subscribe(res => {\r\n if (res && res.length > 0) {\r\n let language = this.storageService.retrieve(StorageKeys.TranslationLanguageKey);\r\n if (!language || !language.trim() || res.filter(x => x.selected).findIndex(x => x.name === language) === -1) {\r\n const selectedLangIndex = res.findIndex(x => x.selected);\r\n if (selectedLangIndex === -1) {\r\n res[0].selected = true;\r\n language = res[0].name;\r\n } else {\r\n language = res[selectedLangIndex].name;\r\n }\r\n this.storageService.store(StorageKeys.TranslationLanguageKey, language);\r\n }\r\n this.translateService.setDefaultLang(language);\r\n this.translateService.use(language).subscribe(t => {\r\n this.authLanguagesArr = res;\r\n this.authLanguages$.next(res);\r\n const lang = res.find(x => x.name === language);\r\n this.mainPanelLangChanged(lang, true);\r\n });\r\n }\r\n }, err => { });\r\n } else {\r\n this.authLanguages$.next(this.authLanguagesArr);\r\n }\r\n }\r\n\r\n saveLanguages(langs: Array, mainLanguageKey: string) {\r\n const selectedLangs = langs.filter(x => x.selected).map(y => y.name);\r\n const index = selectedLangs.findIndex(x => x === mainLanguageKey);\r\n selectedLangs.splice(index, 1);\r\n selectedLangs.splice(0, 0, mainLanguageKey);\r\n this.authLanguagesArr = langs;\r\n const authIndex = this.authLanguagesArr.findIndex(x => x.name === mainLanguageKey);\r\n const item = Object.assign({}, this.authLanguagesArr[authIndex]);\r\n this.authLanguagesArr.splice(authIndex, 1);\r\n this.authLanguagesArr.splice(0, 0, item);\r\n let language = this.storageService.retrieve(StorageKeys.TranslationLanguageKey);\r\n if (!language || !language.trim() || selectedLangs.findIndex(x => x === language) === -1) {\r\n language = selectedLangs[0];\r\n this.storageService.store(StorageKeys.TranslationLanguageKey, language);\r\n }\r\n this.translateService.setDefaultLang(language);\r\n this.translateService.use(language).subscribe(set => {\r\n this.authLanguages$.next(this.authLanguagesArr);\r\n this._baseTranslationDataService.saveAuthLanguages(selectedLangs).subscribe(res => {\r\n }, err => { });\r\n });\r\n }\r\n\r\n changeSubLang(data: LanguageReadModel, items: Array): Observable {\r\n return this._baseTranslationDataService.getWordByKey(items.filter(i => i && i.key).map(x => x.key), data.name).pipe(map((t: WordTranslate[]) => {\r\n items.forEach(item => {\r\n if (item && item.key) {\r\n let value = '';\r\n const keyIndex = t.findIndex((x) => x.key === item.key);\r\n if (keyIndex !== -1) {\r\n if (!t[keyIndex].value || t[keyIndex].value === item.key || t[keyIndex].value.trim() === '') {\r\n t[keyIndex].value = '';\r\n }\r\n value = t[keyIndex].value;\r\n }\r\n let index = item.translateParams.findIndex((param) => param.language === data.name);\r\n if (index === -1) {\r\n const param = {\r\n language: data.name,\r\n value: ' '\r\n };\r\n item.translateParams.push(param);\r\n index = item.translateParams.length - 1;\r\n }\r\n item.translateParams[index].value = value;\r\n }\r\n });\r\n this.subLanguageChanged$.next(data);\r\n return true;\r\n }, err => { }));\r\n }\r\n\r\n changeSubLangFromExist(items: Array): Observable {\r\n return this.translateService.get(items.filter(i => i && i.key).map(x => x.key)).pipe(map((t) => {\r\n items.forEach(item => {\r\n if (item && item.key) {\r\n let index = item.translateParams.findIndex((param) => param.language === this.translateService.currentLang);\r\n if (index === -1) {\r\n const param = {\r\n language: this.translateService.currentLang,\r\n value: ' '\r\n };\r\n item.translateParams.push(param);\r\n index = item.translateParams.length - 1;\r\n }\r\n let text;\r\n if (!t[item.key] || t[item.key] === item.key || t[item.key].trim() === '' || t[item.key] === NOT_EXIST_TRANSLATION) {\r\n text = '';\r\n } else {\r\n text = t[item.key];\r\n }\r\n item.translateParams[index].value = text;\r\n }\r\n });\r\n this.subLanguageChanged$.next(this.authLanguagesArr.find(x => x.name === this.translateService.currentLang));\r\n return true;\r\n }, err => { }));\r\n }\r\n\r\n setInExist(items: Array, mustMatchGuid = false, checkWords = true) {\r\n items.forEach(item => {\r\n if (!item.key || (mustMatchGuid && !this.matchToGuid(item.key))) {\r\n item.key = UUID.UUID();\r\n }\r\n let existDefault = item.translateParams.findIndex(tp => tp.language === this.translateService.currentLang) > -1;\r\n item.translateParams.forEach(translateParam => {\r\n const translateObj = {};\r\n translateObj[item.key] = translateParam.value;\r\n if (!translateParam.language && !existDefault) {\r\n existDefault = true;\r\n translateParam.language = this.translateService.currentLang;\r\n }\r\n if (translateParam.language) {\r\n this.translateService.setTranslation(translateParam.language, translateObj, true);\r\n }\r\n });\r\n if (checkWords) {\r\n const index = this._wordWriteModels.findIndex(x => x.key === item.key);\r\n if (index > -1) {\r\n this._wordWriteModels.splice(index, 1);\r\n }\r\n this._wordWriteModels.push(item);\r\n }\r\n });\r\n }\r\n\r\n private matchToGuid(guid: string): boolean {\r\n if (!guid || !guid.match('[0-9a-fA-F]{8}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{12}')) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n mainPanelLangChanged(lang: LanguageReadModel, autoChange = false) {\r\n if (!this._wordWriteModels) {\r\n this._wordWriteModels = [];\r\n }\r\n if (!autoChange) {\r\n this.mainLanguageManualChanged = true;\r\n }\r\n this.setInExist(this._wordWriteModels, true, false);\r\n this.mainPanelLanguageChanged$.next(lang);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { WordWriteModel } from 'src/applazy/generatedmodules/translation/api';\r\nimport { DropListModel } from '../models/droplist.models';\r\n\r\n@Injectable()\r\nexport class DropListService {\r\n\r\n private saved = new Subject<{ model: DropListModel, success: boolean }>();\r\n saved$ = this.saved.asObservable();\r\n\r\n private deleted = new Subject();\r\n deleted$ = this.deleted.asObservable();\r\n\r\n private dropListTranslatesChanged = new Subject>();\r\n dropListTranslatesChanged$ = this.dropListTranslatesChanged.asObservable();\r\n\r\n constructor() {\r\n\r\n }\r\n\r\n save(model: DropListModel, success: boolean) {\r\n this.saved.next({ model: model, success: success });\r\n }\r\n\r\n delete(model: DropListModel) {\r\n this.deleted.next(model);\r\n }\r\n\r\n setTranslates(translates: Array<{ id: string, translate: WordWriteModel }>) {\r\n this.dropListTranslatesChanged.next(translates);\r\n }\r\n}\r\n","export enum TreeOpenState {\r\n None = 0,\r\n Pending = 1,\r\n Opened = 2\r\n}\r\n\r\nexport enum GroupPosition {\r\n Insert = 0,\r\n Up = 1,\r\n Down = 2\r\n}\r\n\r\nexport interface IDropTreeItemModel {\r\n id: string;\r\n parentId?: string;\r\n dropTreeName: string;\r\n dropTreePicture: string;\r\n hasChild: boolean;\r\n depth: number;\r\n isActive: boolean;\r\n canSelect: boolean;\r\n alreadyOpened: TreeOpenState;\r\n newChilds: Array;\r\n additionalInfo: any;\r\n showAdditionalInfo: boolean;\r\n}\r\n\r\nexport class DropTreeItemModel implements IDropTreeItemModel {\r\n additionalInfo: string;\r\n alreadyOpened: TreeOpenState;\r\n dropTreeName: string;\r\n dropTreePicture: string;\r\n hasChild: boolean;\r\n depth: number;\r\n isActive: boolean;\r\n canSelect: boolean;\r\n id: any;\r\n newChilds: IDropTreeItemModel[];\r\n parentId: string;\r\n showAdditionalInfo: boolean;\r\n\r\n constructor() {\r\n this.additionalInfo = '';\r\n this.alreadyOpened = TreeOpenState.None;\r\n this.dropTreeName = '';\r\n this.dropTreePicture = '';\r\n this.hasChild = false;\r\n this.isActive = true;\r\n this.id = undefined;\r\n this.newChilds = [];\r\n this.parentId = undefined;\r\n this.showAdditionalInfo = false;\r\n }\r\n}\r\n","import { Subject } from 'rxjs';\r\nimport { Injectable } from '@angular/core';\r\nimport { IDropTreeItemModel, GroupPosition } from '../models/droptree.models';\r\n\r\n@Injectable()\r\nexport class DropTreeSubscriptionsService {\r\n selectedQrId: string;\r\n hoveredQr: IDropTreeItemModel;\r\n moveByParent = false;\r\n positionType = GroupPosition.Insert;\r\n dragStarted = false;\r\n private dropTreeItemSelectClicked = new Subject();\r\n dropTreeItemSelectClicked$ = this.dropTreeItemSelectClicked.asObservable();\r\n private dropTreeItemAddClicked = new Subject();\r\n dropTreeItemAddClicked$ = this.dropTreeItemAddClicked.asObservable();\r\n private dropTreeItemEditClicked = new Subject();\r\n dropTreeItemEditClicked$ = this.dropTreeItemEditClicked.asObservable();\r\n private dropTreeItemDeleteClicked = new Subject();\r\n dropTreeItemDeleteClicked$ = this.dropTreeItemDeleteClicked.asObservable();\r\n private loadChildrensClicked = new Subject();\r\n loadChildrensClicked$ = this.loadChildrensClicked.asObservable();\r\n private dropTreeItemMoved = new Subject<{ source: IDropTreeItemModel, target: IDropTreeItemModel, positionType: GroupPosition }>();\r\n dropTreeItemMoved$ = this.dropTreeItemMoved.asObservable();\r\n private dropTreeItemFromParentDeleted = new Subject();\r\n dropTreeItemFromParentDeleted$ = this.dropTreeItemFromParentDeleted.asObservable();\r\n private dropTreeItemCloneToHovered = new Subject();\r\n dropTreeItemCloneToHovered$ = this.dropTreeItemCloneToHovered.asObservable();\r\n\r\n private openLoadedTrees = new Subject();\r\n openLoadedTrees$ = this.openLoadedTrees.asObservable();\r\n constructor() {\r\n\r\n }\r\n\r\n selectDropTreeItem(dropTreeItem: IDropTreeItemModel) {\r\n this.hoveredQr = undefined;\r\n this.selectedQrId = dropTreeItem.id;\r\n this.dropTreeItemSelectClicked.next(dropTreeItem);\r\n }\r\n\r\n moveDropTreeItem(sourceDropTreeItem: IDropTreeItemModel) {\r\n this.dropTreeItemMoved.next({ source: sourceDropTreeItem, target: this.hoveredQr, positionType: this.positionType });\r\n }\r\n\r\n deleteParentOfDropTreeItem(dropTreeItem: IDropTreeItemModel) {\r\n this.dropTreeItemFromParentDeleted.next(dropTreeItem);\r\n }\r\n\r\n loadChildrens(dropTreeItem: IDropTreeItemModel) {\r\n this.loadChildrensClicked.next(dropTreeItem);\r\n }\r\n\r\n addDropTreeItem(dropTreeItem: IDropTreeItemModel) {\r\n this.dropTreeItemAddClicked.next(dropTreeItem);\r\n }\r\n\r\n editDropTreeItem(dropTreeItem: IDropTreeItemModel) {\r\n this.dropTreeItemEditClicked.next(dropTreeItem);\r\n }\r\n\r\n deleteDropTreeItem(dropTreeItem: IDropTreeItemModel) {\r\n this.dropTreeItemDeleteClicked.next(dropTreeItem);\r\n }\r\n\r\n openTrees(openState = true) {\r\n this.openLoadedTrees.next(openState);\r\n }\r\n\r\n copyInHoveredQr(dropTreeItem: IDropTreeItemModel) {\r\n this.dropTreeItemCloneToHovered.next(dropTreeItem);\r\n }\r\n}\r\n","import { Subject } from 'rxjs';\r\nexport class MessageService {\r\n private showconfirmedmessage = false;\r\n private showbackdmessage = false;\r\n public confirmmessage = false;\r\n public backmessage = false;\r\n public title: string;\r\n public noIcon = false;\r\n public body: string;\r\n public approveMessage = 'yes';\r\n public rejectMessage = 'no';\r\n public successMessage = 'ok';\r\n public messageType: MessageType;\r\n public confirmedresult = false;\r\n public backresult = false;\r\n private messageSubject = new Subject();\r\n public dialogConfirmation: () => void;\r\n public dialogRejection: () => void;\r\n\r\n messageState = this.messageSubject.asObservable();\r\n\r\n public showmessage(title: string, body: string, messageType?: MessageType, successMessage?: string) {\r\n this.confirmmessage = false;\r\n this.backmessage = false;\r\n this.title = title;\r\n this.body = body;\r\n if (!messageType) {\r\n messageType = MessageType.Default;\r\n }\r\n if (successMessage) {\r\n this.successMessage = successMessage;\r\n } else {\r\n this.successMessage = 'ok';\r\n }\r\n this.messageType = messageType;\r\n this.show();\r\n }\r\n\r\n public showconfirm(title: string, body: string, noIcon?: boolean, approveMessage?: string, rejectMessage?: string) {\r\n this.messageType = MessageType.Default;\r\n this.confirmmessage = true;\r\n this.backmessage = true;\r\n this.title = title;\r\n this.body = body;\r\n if (!noIcon) {\r\n noIcon = false;\r\n }\r\n if (approveMessage) {\r\n this.approveMessage = approveMessage;\r\n } else {\r\n this.approveMessage = 'yes';\r\n }\r\n if (rejectMessage) {\r\n this.rejectMessage = rejectMessage;\r\n } else {\r\n this.rejectMessage = 'no';\r\n }\r\n this.noIcon = noIcon;\r\n return new Promise((resolve, reject) => {\r\n\r\n this.dialogConfirmation = () => resolve(true);\r\n this.dialogRejection = () => resolve(false);\r\n this.show();\r\n }).catch(err => {});\r\n }\r\n\r\n\r\n private show() {\r\n this.messageSubject.next({ show: true });\r\n this.showconfirmedmessage = false;\r\n this.showbackdmessage = false;\r\n }\r\n\r\n hide() {\r\n this.messageSubject.next({ show: false });\r\n this.showconfirmedmessage = true;\r\n this.showbackdmessage = true;\r\n\r\n }\r\n}\r\n\r\nexport interface MessageState {\r\n show: boolean;\r\n}\r\n\r\nexport enum MessageType {\r\n Default = 0,\r\n Attention = 1\r\n}\r\n","import { ActivatedRoute } from '@angular/router';\r\n\r\nexport class NavigationModel {\r\n readonly id: string;\r\n readonly tabId: string;\r\n readonly routeWithId: boolean;\r\n readonly url: string;\r\n parentId: string;\r\n name: string;\r\n picture: string;\r\n hovered: boolean;\r\n readonly helpUrl = 'https://help.bonee.net';\r\n showHelp = true;\r\n target = '_self';\r\n activationUrls: string[];\r\n extraParams: string[];\r\n private _opened: boolean;\r\n public set opened(value: boolean) {\r\n this._opened = value;\r\n if (!this._opened) {\r\n this.closeAllChilds();\r\n }\r\n }\r\n public get opened(): boolean {\r\n return this._opened;\r\n }\r\n\r\n childs: Array;\r\n private _canShow: boolean;\r\n\r\n public get canShow(): boolean {\r\n return this._canShow;\r\n }\r\n\r\n get canShowChilds(): boolean {\r\n if (!this.childs || this.childs.length === 0) {\r\n return true;\r\n }\r\n const existShowChild = this.childs.findIndex(x => x.canShow);\r\n return existShowChild > -1;\r\n }\r\n\r\n get hasChild(): boolean {\r\n return this.childs && this.childs.length > 0;\r\n }\r\n\r\n constructor(id: string, tabId: string, url: string, selfFeatures: string[], profileFeatures: string[], activationUrls: string[], extraParams: string[] = []) {\r\n this.id = id;\r\n this.tabId = tabId;\r\n this.parentId = '';\r\n this.opened = false;\r\n this.hovered = false;\r\n this.url = url;\r\n this.activationUrls = [];\r\n this.extraParams = [];\r\n let activationUrl = url;\r\n if (this.tabId) {\r\n this.routeWithId = true;\r\n activationUrl += '/' + this.id;\r\n }\r\n if (this.url) {\r\n this.activationUrls.push(activationUrl);\r\n }\r\n activationUrls.forEach(activeUrl => {\r\n this.activationUrls.push(activeUrl);\r\n });\r\n extraParams.forEach(extraParam => {\r\n this.extraParams.push(extraParam);\r\n });\r\n this.childs = [];\r\n if (!selfFeatures || selfFeatures.length === 0) {\r\n selfFeatures = [];\r\n this._canShow = true;\r\n } else {\r\n const exist = selfFeatures.filter(selfFeature => profileFeatures.includes(selfFeature));\r\n if (!exist || exist.length === 0) {\r\n this._canShow = false;\r\n } else {\r\n this._canShow = true;\r\n }\r\n }\r\n }\r\n\r\n closeAllChilds() {\r\n if (this.hasChild) {\r\n this.childs.forEach(x => x.opened = false);\r\n }\r\n }\r\n\r\n resetShow(show: boolean) {\r\n this._canShow = show;\r\n }\r\n\r\n isActive(url: string, route: ActivatedRoute): boolean {\r\n if (!this.activationUrls || this.activationUrls.length === 0) {\r\n return false;\r\n }\r\n if (!route) {\r\n return false;\r\n }\r\n if (!this.extraParams || this.extraParams.length === 0) {\r\n return this.activationUrls.findIndex(activeUrl => url.startsWith(activeUrl)) !== -1;\r\n }\r\n this.activationUrls.forEach(activeUrl => {\r\n let aUrl = activeUrl;\r\n this.extraParams.forEach(extraParam => {\r\n const value = route.params[extraParam] || '';\r\n aUrl = aUrl.replace('#' + extraParam, value);\r\n });\r\n if (url.startsWith(aUrl)) {\r\n return true;\r\n }\r\n });\r\n return false;\r\n }\r\n}\r\n\r\nexport enum NavigationType {\r\n MainNavigation = 0,\r\n PanelNavigation = 2\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { features } from 'src/applazy/shared/models/profilemodels';\r\nimport { AuthService } from 'src/applazy/services/auth.service';\r\nimport { NavigationModel, NavigationType } from '../models/navigation.models';\r\nimport { INavigationItemsService } from './iNavigationItemsService';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NavigationMenuService {\r\n\r\n private _navigationItemsService: INavigationItemsService;\r\n private _navigations: Array = [];\r\n public get navigations(): Array {\r\n return this._navigations;\r\n }\r\n private _panelNavigations: Array = [];\r\n public get panelNavigations(): Array {\r\n return this._panelNavigations;\r\n }\r\n constructor(\r\n private auth: AuthService\r\n ) {\r\n this.auth.authorized.subscribe(res => {\r\n if (!res && (this._navigations || this._panelNavigations)) {\r\n this._navigations = [];\r\n this._panelNavigations = [];\r\n }\r\n });\r\n }\r\n\r\n generateNavigations(navigationItemsService: INavigationItemsService): void {\r\n if (!this._navigationItemsService) {\r\n this._navigationItemsService = navigationItemsService;\r\n this.subscribeToEvents();\r\n this._navigations = navigationItemsService.getNavigations() || [];\r\n this._panelNavigations = navigationItemsService.getPanelNavigations() || [];\r\n }\r\n }\r\n\r\n findById(id: string): NavigationModel {\r\n return this._findById(id, this._navigations);\r\n }\r\n\r\n openParents(navigation: NavigationModel) {\r\n this._openParents(navigation);\r\n }\r\n\r\n private _openParents(navigation: NavigationModel) {\r\n if (!navigation.parentId) {\r\n return;\r\n }\r\n const model = this.findById(navigation.parentId);\r\n if (model.opened) {\r\n return;\r\n }\r\n model.opened = true;\r\n this._openParents(model);\r\n }\r\n\r\n private _findById(id: string, array: NavigationModel[]): NavigationModel {\r\n let item = array.find(x => x.id === id);\r\n if (item) {\r\n return item;\r\n }\r\n for (let i = 0; i < array.length; i++) {\r\n if (array[i].childs && array[i].childs.length > 0) {\r\n item = this._findById(id, array[i].childs);\r\n if (item) {\r\n break;\r\n }\r\n }\r\n }\r\n return item;\r\n }\r\n\r\n private subscribeToEvents() {\r\n this._navigationItemsService.navigationSaved.subscribe((res: { model: NavigationModel, type: NavigationType, position: number }) => {\r\n switch (res.type) {\r\n case NavigationType.MainNavigation:\r\n this._saveMainNavigation(res.model, res.position);\r\n break;\r\n case NavigationType.PanelNavigation:\r\n this._savePanelNavigation(res.model, res.position);\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n }\r\n\r\n private _saveMainNavigation(model: NavigationModel, position: number): void {\r\n let navigationModel: NavigationModel;\r\n let arr: NavigationModel[];\r\n let index = -1;\r\n if (model.parentId) {\r\n const parent = this._findById(model.parentId, this._navigations);\r\n if (!parent) {\r\n return;\r\n }\r\n navigationModel = parent.childs.find(x => x.id === model.id);\r\n arr = parent.childs;\r\n } else {\r\n navigationModel = this._navigations.find(x => x.id === model.id);\r\n arr = this._navigations;\r\n }\r\n if (!navigationModel) {\r\n if (position >= 0) {\r\n arr.splice(position, 0, model);\r\n } else {\r\n arr.push(model);\r\n }\r\n } else {\r\n index = arr.indexOf(navigationModel);\r\n arr[index] = model;\r\n }\r\n }\r\n\r\n private _savePanelNavigation(model: NavigationModel, position: number): void {\r\n }\r\n}\r\n","export class TimePickerModel {\r\n hourModel: TimePickerItemModel;\r\n minuteModel: TimePickerItemModel;\r\n\r\n constructor() {\r\n this.hourModel = new TimePickerItemModel();\r\n this.minuteModel = new TimePickerItemModel();\r\n }\r\n\r\n getCompareValue(): number {\r\n return Number(this.hourModel.valueString + this.minuteModel.valueString);\r\n }\r\n\r\n getValueString() {\r\n return this.hourModel.valueString + ':' + this.minuteModel.valueString;\r\n }\r\n}\r\n\r\nexport class TimePickerItemModel {\r\n value: number;\r\n maxValue: number;\r\n firstClicked: boolean;\r\n selected: boolean;\r\n public get valueString(): string {\r\n return this.value < 10 ? '0' + this.value.toString() : this.value.toString();\r\n }\r\n\r\n constructor(value: number = 0, maxValue = 0) {\r\n this.value = value;\r\n this.maxValue = maxValue;\r\n this.firstClicked = false;\r\n this.selected = false;\r\n if (value >= maxValue) {\r\n this.value = 0;\r\n }\r\n }\r\n}\r\n","export enum HttpStatusCode {\r\n OK = 200,\r\n Created = 201,\r\n BadRequest = 400,\r\n NotFound = 404,\r\n Unauthorized = 401\r\n}\r\n\r\nexport enum DataEvent {\r\n Saved = 0,\r\n Deleted = 1\r\n}\r\n\r\nexport enum Day {\r\n Sunday = 1,\r\n Monday = 2,\r\n Tuesday = 3,\r\n Wednesday = 4,\r\n Thursday = 5,\r\n Friday = 6,\r\n Saturday = 7,\r\n}\r\n\r\nexport enum CatalogItemState {\r\n None = 0,\r\n New = 1,\r\n Discount = 2\r\n}\r\n\r\nexport enum FacilityType {\r\n None = 0,\r\n AlcoholicDrinks = 1,\r\n LunchandDinner = 2,\r\n FreeWifi = 3,\r\n WheelchairAccessible = 4,\r\n ParkingAvailable = 5,\r\n VeganOptions = 6,\r\n Delivery = 7,\r\n CreditCards = 8,\r\n Pickup = 9\r\n}\r\nexport enum OrderStatus {\r\n // submitted = 'submitted',\r\n awaitingvalidation = 'awaitingvalidation',\r\n // stockconfirmed = 'stockconfirmed',\r\n // paid = 'paid',\r\n // shipped = 'shipped',\r\n cancelled = 'cancelled',\r\n completed = 'completed',\r\n inprocess = 'inprocess'\r\n}\r\n\r\nexport enum OrderStatusCommon {\r\n AwaitingValidation = 2,\r\n StockConfirmed = 3,\r\n Shipped = 5,\r\n Cancelled = 6,\r\n Completed = 7,\r\n InProcess = 8,\r\n Ready = 9,\r\n StartShip = 10\r\n}\r\n\r\nexport enum ExecutorTypeCommon {\r\n Courier = 2,\r\n Person = 3,\r\n System = 5,\r\n Partner = 6,\r\n SalePortal = 7,\r\n}\r\n\r\nexport enum ExecutorTypeDisplayProperty {\r\n courier = 'courier',\r\n person = 'person',\r\n system = 'system',\r\n partner = 'partner',\r\n salePortal = 'salePortal',\r\n}\r\n\r\nexport enum PaymentMethod {\r\n cash = 'isCash',\r\n paid = 'Paid',\r\n online = 'isOnline',\r\n pos = 'posTerminal'\r\n}\r\n\r\nexport enum CheckoutTypeName {\r\n Unknown = 'unknown',\r\n Portion = 'portion',\r\n Pickup = 'pickUp',\r\n Delivery = 'delivery',\r\n Reservation = 'reservation',\r\n WithoutMenu = 'withoutMenu',\r\n UniqueQR = 'uniqueQr',\r\n Kiosk = 'kiosk'\r\n}\r\n\r\nexport enum DisplayType {\r\n Text = 0,\r\n Image = 1,\r\n Date = 2\r\n}\r\n\r\nexport enum ActiveThemeType {\r\n Template_1 = 0,\r\n Template_2 = 1,\r\n Template_3 = 2,\r\n Template_4 = 3,\r\n Template_5 = 4,\r\n Template_6 = 5\r\n}\r\n\r\nexport enum ThemePropertyType {\r\n Default = 0,\r\n Color = 1,\r\n Position = 2,\r\n FontSize = 3,\r\n FontWeight = 4,\r\n}\r\nexport enum ECheckoutType {\r\n Unknown = 0,\r\n Portion = 1,\r\n Pickup = 2,\r\n Delivery = 3,\r\n Reservation = 4,\r\n UniqueQR = 5,\r\n WithoutMenu = 6,\r\n Kiosk = 7\r\n}\r\n\r\nexport enum PictureSize {\r\n Small = 1,\r\n Medium = 2,\r\n Big = 3,\r\n Origin = 4\r\n}\r\nexport enum NotificationType {\r\n OrderView = 0,\r\n DirectoryView = 1\r\n}\r\n\r\nexport enum QrTemplateRenderMode {\r\n Image = 0,\r\n Canvas = 1\r\n}\r\n\r\nexport enum QrTemplateMode {\r\n Plain = 0,\r\n Label = 1,\r\n Image = 2,\r\n}\r\n\r\nexport enum DistanceType {\r\n None = 'None',\r\n Auto = 'Auto',\r\n Manual = 'Manual'\r\n}\r\nexport enum CalculateDistanceType {\r\n Air = 'Air',\r\n Route = 'Route'\r\n}\r\n\r\nexport enum Refund {\r\n None = 0,\r\n Full = 1,\r\n Partial = 2,\r\n Both = 3,\r\n}\r\n\r\nexport enum Verification {\r\n Email = 'Email',\r\n Sms = 'Sms',\r\n Call = 'Call'\r\n}\r\n\r\nexport enum ThemeView {\r\n BoxMenu = 'BoxMenu',\r\n ListMenu = 'ListMenu'\r\n}\r\n\r\nexport enum ThemeColors {\r\n MainBackground = 'mainBackground',\r\n MainColorOne = 'mainColorOne',\r\n TitleColor = 'titleColor',\r\n MainColorTwo = 'mainColorTwo',\r\n ItemBorderColor = 'itemBorderColor',\r\n BorderColor = 'borderColor',\r\n ProductTextColor = 'productTextColor',\r\n ProductLightTextColor = 'productLightTextColor',\r\n IconColor = 'iconColor',\r\n}\r\nexport enum EValueType {\r\n Text = 'Text',\r\n Number = 'Number',\r\n Range = 'Range',\r\n}\r\n\r\nexport enum SalePortalGroupType {\r\n None = 'None',\r\n Filter = 'Filter',\r\n Value = 'Value',\r\n Select = 'Select',\r\n QrGroup = 'QrGroup'\r\n}\r\nexport enum SalePortalGroupSubType {\r\n Restaurants = 'restaurants',\r\n Cuisines = 'cuisines',\r\n Locations = 'locations',\r\n Prices = 'prices',\r\n SeatingAreas = 'seatingareas',\r\n Tags = 'tags',\r\n Populars = 'populars',\r\n Discounts = 'discounts',\r\n Other = 'other'\r\n}\r\nexport enum SalePortalGroupMode {\r\n Filter = 'Filter',\r\n Group = 'Group'\r\n}\r\nexport enum CatalogGroupType {\r\n Default = 'Default',\r\n Filter = 'Filter',\r\n}\r\nexport enum EmployeeType {\r\n Unknown = 'Unknown',\r\n Scanner = 'Scanner',\r\n OrderReceiver = 'OrderReceiver',\r\n Courier = 'Courier',\r\n Operator = 'Operator'\r\n}\r\n\r\n\r\nexport enum VehicleType {\r\n Unknown = 0,\r\n Scooter = 1,\r\n Car = 2\r\n}\r\n\r\nexport enum DragState {\r\n Moving = 0,\r\n Dropped = 1,\r\n Started = 2\r\n}\r\n\r\nexport enum FeedbackStatus {\r\n Pending = 'Pending',\r\n Rejected = 'Rejected',\r\n Approved = 'Approved'\r\n}\r\n\r\nexport enum CouponValueType {\r\n Percent = 'Percent',\r\n FixedDiscount = 'FixedDiscount'\r\n}\r\n\r\nexport enum CouponStatus {\r\n New = 'New',\r\n Pending = 'Pending',\r\n Active = 'Active',\r\n Blocked = 'Blocked',\r\n Expired = 'Expired'\r\n}\r\n\r\nexport enum CouponUserType {\r\n None = 'None',\r\n Partner = 'Partner',\r\n Employee = 'Employee',\r\n Customer = 'Customer',\r\n}\r\nexport enum CouponType {\r\n Main = 'Main',\r\n Subscription = 'Subscription',\r\n}\r\n\r\nexport enum PartnerSubscriptionStatus {\r\n Active = 'Active',\r\n Expired = 'Expired',\r\n Cancelled = 'Cancelled'\r\n}\r\nexport enum OrderItemStatus {\r\n Pending = 1,\r\n Reject = 2,\r\n Approved = 3,\r\n Cancelled = 4\r\n}\r\nexport enum ServiceFeeType {\r\n None = 'None',\r\n Fixed = 'Fixed',\r\n Percent = 'Percent'\r\n}\r\n\r\nexport enum DiningOptionType {\r\n All = 'All',\r\n EatIn = 'EatIn',\r\n Takeaway = 'Takeaway'\r\n}\r\n\r\nexport enum RoundServiceFeeType {\r\n None = 'None',\r\n Up = 'Up',\r\n Down = 'Down',\r\n Nearest = 'Nearest',\r\n}\r\n\r\n\r\nexport class SharedEnums {\r\n static getString(enums, keyString?: boolean): Array<{ key: any, value: any }> {\r\n let objKeys;\r\n if (!keyString) {\r\n objKeys = Object.keys(enums).map(x => Number.parseInt(x));\r\n } else {\r\n objKeys = Object.keys(enums).map(x => x.toString());\r\n }\r\n const keys: { key: any, value: any }[] = [];\r\n objKeys.forEach(x => {\r\n if (enums[x]) {\r\n keys.push({ key: x, value: enums[x] });\r\n }\r\n });\r\n return keys;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MissingTranslationHandler, MissingTranslationHandlerParams } from '@ngx-translate/core';\r\nexport const NOT_EXIST_TRANSLATION = '...';\r\n@Injectable()\r\nexport class LazyFakeMissingTranslationHandler implements MissingTranslationHandler {\r\n handle(params: MissingTranslationHandlerParams): string {\r\n return params.key;\r\n }\r\n}\r\n","import { Inject } from '@angular/core';\r\nimport { TranslateLoader } from '@ngx-translate/core';\r\nimport { Observable } from 'rxjs';\r\nimport { DirectTranslationService, TranslationService } from 'src/applazy/generatedmodules/translation/api';\r\nimport { StorageService } from 'src/applazy/services/storage.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { User } from '../models/User';\r\nimport { StorageKeys } from '../services/constant.service';\r\n\r\nexport const USED_LANGUAGES: Array = [];\r\nexport class TranslationLoader implements TranslateLoader {\r\n constructor(\r\n @Inject(StorageService) private storageService: StorageService,\r\n @Inject(TranslationService) private translationService: TranslationService,\r\n @Inject(DirectTranslationService) private directTranslationService: DirectTranslationService,\r\n @Inject(AuthService) private authService: AuthService\r\n ) {\r\n }\r\n\r\n getTranslation(lang: string): Observable {\r\n if (USED_LANGUAGES.indexOf(lang) === -1) {\r\n USED_LANGUAGES.push(lang);\r\n }\r\n const host = this.storageService.retrieve(StorageKeys.SALE_PORTAL_TRANSLATE_HOST, true);\r\n if (this.authService.isAuthorized) {\r\n if (User.Role === 'SalePortal') {\r\n if (!host) {\r\n return this.directTranslationService.apiV1DirectTranslationPortalLanguageGet(lang, '1.0');\r\n }\r\n return this.directTranslationService.apiV1DirectTranslationHostLanguageGet(lang, host, '1.0');\r\n } else {\r\n return this.translationService.apiV1TranslationLanguageHostHostLanguageGet(lang, '1.0');\r\n }\r\n }\r\n return this.translationService.apiV1TranslationLangLanguageGet(lang, '1.0');\r\n }\r\n}\r\n","import { ActivatedRoute } from \"@angular/router\";\r\n\r\nexport class User {\r\n public static sub: string;\r\n public static team: string;\r\n public static ClientToken: string;\r\n public static userName: string;\r\n public static roles: string[];\r\n public static currentRole: string;\r\n public static Role: string;\r\n public static Currencies: string[];\r\n public static CountryCode: string;\r\n public static ReferenceKey: string;\r\n public static OriginSalePortalKey: string;\r\n public static NotificationEmail: string;\r\n public static AdminHostName: string;\r\n\r\n public static create(decodedToken: any) {\r\n User.sub = decodedToken.sub;\r\n User.team = decodedToken.team;\r\n User.userName = decodedToken.email;\r\n User.roles = [];\r\n // 'Admin'\r\n // 'Partner'\r\n // 'SalePortal'\r\n if (Array.isArray(decodedToken.role)) {\r\n User.roles = decodedToken.role as string[];\r\n } else {\r\n User.roles = [(decodedToken.role as string)];\r\n }\r\n if (User.roles.includes('SalePortal')) {\r\n User.Role = 'SalePortal';\r\n User.ClientToken = ClientTokens.SalePortalAdmin;\r\n } else {\r\n if (User.roles.includes('Partner')) {\r\n User.Role = 'Partner';\r\n User.ClientToken = ClientTokens.Partner;\r\n } else {\r\n if (User.roles.includes('Admin')) {\r\n User.Role = 'Admin';\r\n User.ClientToken = ClientTokens.Admin;\r\n } else {\r\n if (User.roles.includes('Subadmin')) {\r\n User.Role = 'Subadmin';\r\n User.ClientToken = ClientTokens.Subadmin;\r\n }\r\n }\r\n }\r\n }\r\n if (!User.ClientToken) {\r\n User.ClientToken = ClientTokens.SalePortal;\r\n }\r\n User.currentRole = User.Role.toLowerCase();\r\n }\r\n\r\n public static setCurrencies(currencies: string[]) {\r\n User.Currencies = currencies;\r\n }\r\n public static setCountryCode(countryCode: string) {\r\n User.CountryCode = countryCode;\r\n }\r\n\r\n public static setReferenceKey(referenceKey: string) {\r\n User.ReferenceKey = referenceKey;\r\n }\r\n public static setOriginSalePortalKey(salePortalKey: string) {\r\n User.OriginSalePortalKey = salePortalKey;\r\n }\r\n public static setNotificationEmail(notificationEmail: string) {\r\n User.NotificationEmail = notificationEmail;\r\n }\r\n\r\n public static setAdminHostName(hostName: string) {\r\n User.AdminHostName = hostName;\r\n }\r\n\r\n public static clear() {\r\n User.sub = '';\r\n User.team = '';\r\n User.ClientToken = '';\r\n User.userName = '';\r\n User.roles = [];\r\n User.currentRole = '';\r\n User.Role = '';\r\n User.Currencies = [];\r\n User.ReferenceKey = '';\r\n User.OriginSalePortalKey = '';\r\n User.NotificationEmail = '';\r\n User.AdminHostName = '';\r\n }\r\n\r\n public static routerUrl(activatedRoute: ActivatedRoute): string {\r\n const data = activatedRoute.snapshot.data;\r\n const params = activatedRoute.snapshot.params;\r\n return this._routerUrl(data, params);\r\n }\r\n\r\n private static _routerUrl(data: any, routeParams: any): string {\r\n let routerUrl = '';\r\n if (data) {\r\n let name = data.name as string;\r\n const params = data.params as string[];\r\n if (name) {\r\n routerUrl = '/' + name;\r\n }\r\n if (params && params.length > 0) {\r\n params.forEach(param => {\r\n const paramValue = routeParams[param];\r\n if (paramValue) {\r\n const index = routerUrl.indexOf('#' + param);\r\n if (index === -1) {\r\n routerUrl += '/' + paramValue;\r\n }\r\n }\r\n while (routerUrl.indexOf('#' + param) !== -1) {\r\n routerUrl = routerUrl.replace('#' + param, paramValue);\r\n }\r\n });\r\n }\r\n }\r\n return routerUrl;\r\n }\r\n}\r\n\r\nexport const ClientTokens = {\r\n Admin: 'ut0Jg5XF2UTJ/d6E8IZ5U8VUHCTNzrjQKNyjEmtwtk4udqqTAEepxhf27ggNk3jwYjIzYjIwYTJjODMzNDA4NQ==',\r\n Partner: '0vsBCKW8wdw1bzBG2hbs0zjzXOVwYV9xwSpuW9lN0tQUXXgERBFouc8Rgt/glGEdYjIzYjIwYTJjODMzNDA4NQ==',\r\n SalePortalAdmin: '+DCkBa3bMz7uvcZfGmnHHXmpGfQpn0r0romgSsZD/4TjmSshqjnUW0A5iSvH342aYjIzYjIwYTJjODMzNDA4NQ==',\r\n SalePortal: 'Zu8QaW8fLRoDLYJc5wVq/Tmc5u3BdnfR/sQ7LSgG7HTI48zQgmpHYkUEjr3/bPg6YjIzYjIwYTJjODMzNDA4NQ==',\r\n Subadmin: 'fs46WpWvphSV76uYbnDjm6DScpheu2QOfEUcDEX7UqwUn544HMs9p8ipoVygeYURYjIzYjIwYTJjODMzNDA4NQ=='\r\n};\r\n","export class ComparableModel {\r\n}\r\n","export interface ConfigurationParameters {\r\n apiKeys?: {[ key: string ]: string};\r\n username?: string;\r\n password?: string;\r\n accessToken?: string | (() => string);\r\n basePath?: string;\r\n withCredentials?: boolean;\r\n}\r\n\r\nexport class Configuration {\r\n apiKeys?: {[ key: string ]: string};\r\n username?: string;\r\n password?: string;\r\n accessToken?: string | (() => string);\r\n basePath?: string;\r\n withCredentials?: boolean;\r\n\r\n constructor(configurationParameters: ConfigurationParameters = {}) {\r\n this.apiKeys = configurationParameters.apiKeys;\r\n this.username = configurationParameters.username;\r\n this.password = configurationParameters.password;\r\n this.accessToken = configurationParameters.accessToken;\r\n this.basePath = configurationParameters.basePath;\r\n this.withCredentials = configurationParameters.withCredentials;\r\n }\r\n\r\n /**\r\n * Select the correct content-type to use for a request.\r\n * Uses {@link Configuration#isJsonMime} to determine the correct content-type.\r\n * If no content type is found return the first found type if the contentTypes is not empty\r\n * @param contentTypes - the array of content types that are available for selection\r\n * @returns the selected content-type or undefined if no selection could be made.\r\n */\r\n public selectHeaderContentType (contentTypes: string[]): string | undefined {\r\n if (contentTypes.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const type = contentTypes.find((x: string) => this.isJsonMime(x));\r\n if (type === undefined) {\r\n return contentTypes[0];\r\n }\r\n return type;\r\n }\r\n\r\n /**\r\n * Select the correct accept content-type to use for a request.\r\n * Uses {@link Configuration#isJsonMime} to determine the correct accept content-type.\r\n * If no content type is found return the first found type if the contentTypes is not empty\r\n * @param accepts - the array of content types that are available for selection.\r\n * @returns the selected content-type or undefined if no selection could be made.\r\n */\r\n public selectHeaderAccept(accepts: string[]): string | undefined {\r\n if (accepts.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const type = accepts.find((x: string) => this.isJsonMime(x));\r\n if (type === undefined) {\r\n return accepts[0];\r\n }\r\n return type;\r\n }\r\n\r\n /**\r\n * Check if the given MIME is a JSON MIME.\r\n * JSON MIME examples:\r\n * application/json\r\n * application/json; charset=UTF8\r\n * APPLICATION/JSON\r\n * application/vnd.company+json\r\n * @param mime - MIME (Multipurpose Internet Mail Extensions)\r\n * @return True if the given MIME is JSON, false otherwise.\r\n */\r\n public isJsonMime(mime: string): boolean {\r\n const jsonMime: RegExp = new RegExp('^(application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(;.*)?$', 'i');\r\n return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json');\r\n }\r\n}\r\n"," import { HttpUrlEncodingCodec } from '@angular/common/http';\r\n\r\n/**\r\n* CustomHttpUrlEncodingCodec\r\n* Fix plus sign (+) not encoding, so sent as blank space\r\n* See: https://github.com/angular/angular/issues/11058#issuecomment-247367318\r\n*/\r\nexport class CustomHttpUrlEncodingCodec extends HttpUrlEncodingCodec {\r\n encodeKey(k: string): string {\r\n k = super.encodeKey(k);\r\n return k.replace(/\\+/gi, '%2B');\r\n }\r\n encodeValue(v: string): string {\r\n v = super.encodeValue(v);\r\n return v.replace(/\\+/gi, '%2B');\r\n }\r\n}\r\n\r\n","import { UUID } from 'angular2-uuid';\r\n\r\nexport class NotificationReadModel {\r\n id?: string;\r\n actionType?: NotificationReadModel.ActionTypeEnum;\r\n actionTypeDisplayName?: string;\r\n title?: string;\r\n message?: string;\r\n status?: NotificationReadModel.StatusEnum;\r\n statusDisplayName?: string;\r\n date?: Date;\r\n data?: IPushNotificationModel;\r\n dataModel?: string;\r\n}\r\nexport namespace NotificationReadModel {\r\n export type ActionTypeEnum = 'Unknown' | 'HotAction' | 'Portion' | 'Pickup' | 'Delivery' | 'Reservation' | 'UniqueQR' | 'WithoutMenu' | 'TeamRegistration' | 'Kiosk';\r\n export const ActionTypeEnum = {\r\n Unknown: 'Unknown' as ActionTypeEnum,\r\n HotAction: 'HotAction' as ActionTypeEnum,\r\n Portion: 'Portion' as ActionTypeEnum,\r\n Pickup: 'Pickup' as ActionTypeEnum,\r\n Delivery: 'Delivery' as ActionTypeEnum,\r\n Reservation: 'Reservation' as ActionTypeEnum,\r\n UniqueQR: 'UniqueQR' as ActionTypeEnum,\r\n WithoutMenu: 'WithoutMenu' as ActionTypeEnum,\r\n TeamRegistration: 'TeamRegistration' as ActionTypeEnum,\r\n Kiosk: 'Kiosk' as ActionTypeEnum\r\n };\r\n export type StatusEnum = 'New' | 'Viewed' | 'Closed';\r\n export const StatusEnum = {\r\n New: 'New' as StatusEnum,\r\n Viewed: 'Viewed' as StatusEnum,\r\n Closed: 'Closed' as StatusEnum\r\n };\r\n}\r\n\r\n\r\nexport interface IPushNotificationModel {\r\n readonly actionType?: IPushNotificationModel.ActionTypeEnum;\r\n buyerId?: string;\r\n checkoutId?: string;\r\n orderNumber?: string;\r\n getActionId(): string;\r\n}\r\nexport namespace IPushNotificationModel {\r\n export type ActionTypeEnum = 'Unknown' | 'HotAction' | 'Portion' | 'Pickup' | 'Delivery' | 'Reservation' | 'UniqueQR' | 'WithoutMenu' | 'TeamRegistration' | 'Kiosk';\r\n export const ActionTypeEnum = {\r\n Unknown: 'Unknown' as ActionTypeEnum,\r\n HotAction: 'HotAction' as ActionTypeEnum,\r\n Portion: 'Portion' as ActionTypeEnum,\r\n Pickup: 'Pickup' as ActionTypeEnum,\r\n Delivery: 'Delivery' as ActionTypeEnum,\r\n Reservation: 'Reservation' as ActionTypeEnum,\r\n UniqueQR: 'UniqueQR' as ActionTypeEnum,\r\n WithoutMenu: 'WithoutMenu' as ActionTypeEnum,\r\n TeamRegistration: 'TeamRegistration' as ActionTypeEnum,\r\n Kiosk: 'Kiosk' as ActionTypeEnum\r\n };\r\n}\r\n\r\nexport enum ENotificatoinOrderStatus {\r\n Unknown = 'Unknown',\r\n ActiveOrderCheckout = 'ActiveOrderCheckout',\r\n ExpireCheckout = 'ExpireCheckout',\r\n ActivOrderRemovedCheckout = 'ActivOrderRemovedCheckout',\r\n ActivOrderCanceledCheckout = 'ActivOrderCanceledCheckout',\r\n ActivOrderApprovedCheckout = 'ActivOrderApprovedCheckout',\r\n Paid = 'Paid',\r\n Created = 'Created',\r\n AwaitingValidation = 'AwaitingValidation',\r\n StockConfirmed = 'StockConfirmed',\r\n Cancelled = 'Cancelled',\r\n Shipped = 'Shipped',\r\n Completed = 'Completed',\r\n HotActionStatusSended = 'HotActionStatusSended',\r\n HotActionStatusApproved = 'HotActionStatusApproved',\r\n HotActionStatusCancelled = 'HotActionStatusCancelled',\r\n HotActionStatusDenied = 'HotActionStatusDenied',\r\n StatusChanged = 'StatusChanged'\r\n}\r\n\r\nexport enum ENotificatoinHotActionStatus {\r\n Unknown = 'Unknown',\r\n Sended = 'Sended',\r\n Approved = 'Approved',\r\n Cancelled = 'Cancelled'\r\n}\r\n\r\n\r\nexport class PortionPushNotificationModel implements IPushNotificationModel {\r\n readonly actionType?: IPushNotificationModel.ActionTypeEnum = IPushNotificationModel.ActionTypeEnum.Portion;\r\n checkoutId: string;\r\n groupId: string;\r\n groupName: string;\r\n qrId: string;\r\n buyerId: string;\r\n orderNumber: string;\r\n status: ENotificatoinOrderStatus;\r\n getActionId(): string {\r\n if (this.orderNumber) {\r\n return this.orderNumber;\r\n }\r\n if (this.checkoutId) {\r\n return this.checkoutId;\r\n }\r\n return UUID.UUID();\r\n }\r\n}\r\nexport class PickupPushNotificationModel implements IPushNotificationModel {\r\n readonly actionType?: IPushNotificationModel.ActionTypeEnum = IPushNotificationModel.ActionTypeEnum.Pickup;\r\n checkoutId: string;\r\n buyerId: string;\r\n orderNumber: string;\r\n status: ENotificatoinOrderStatus;\r\n getActionId(): string {\r\n if (this.orderNumber) {\r\n return this.orderNumber;\r\n }\r\n if (this.checkoutId) {\r\n return this.checkoutId;\r\n }\r\n return UUID.UUID();\r\n }\r\n}\r\nexport class DeliveryPushNotificationModel implements IPushNotificationModel {\r\n readonly actionType?: IPushNotificationModel.ActionTypeEnum = IPushNotificationModel.ActionTypeEnum.Delivery;\r\n checkoutId: string;\r\n buyerId: string;\r\n orderNumber: string;\r\n status: ENotificatoinOrderStatus;\r\n getActionId(): string {\r\n if (this.orderNumber) {\r\n return this.orderNumber;\r\n }\r\n if (this.checkoutId) {\r\n return this.checkoutId;\r\n }\r\n return UUID.UUID();\r\n }\r\n}\r\nexport class ReservationPushNotificationModel implements IPushNotificationModel {\r\n readonly actionType?: IPushNotificationModel.ActionTypeEnum = IPushNotificationModel.ActionTypeEnum.Reservation;\r\n checkoutId: string;\r\n buyerId: string;\r\n orderNumber: string;\r\n reservationDate?: Date;\r\n status: ENotificatoinOrderStatus;\r\n getActionId(): string {\r\n if (this.orderNumber) {\r\n return this.orderNumber;\r\n }\r\n if (this.checkoutId) {\r\n return this.checkoutId;\r\n }\r\n return UUID.UUID();\r\n }\r\n}\r\nexport class WithoutMenuPushNotificationModel implements IPushNotificationModel {\r\n readonly actionType?: IPushNotificationModel.ActionTypeEnum = IPushNotificationModel.ActionTypeEnum.WithoutMenu;\r\n checkoutId: string;\r\n buyerId: string;\r\n orderNumber: string;\r\n reservationDate?: Date;\r\n status: ENotificatoinOrderStatus;\r\n getActionId(): string {\r\n if (this.orderNumber) {\r\n return this.orderNumber;\r\n }\r\n if (this.checkoutId) {\r\n return this.checkoutId;\r\n }\r\n return UUID.UUID();\r\n }\r\n}\r\nexport class UniqueQRPushNotificationModel implements IPushNotificationModel {\r\n readonly actionType?: IPushNotificationModel.ActionTypeEnum = IPushNotificationModel.ActionTypeEnum.UniqueQR;\r\n checkoutId: string;\r\n buyerId: string;\r\n orderNumber: string;\r\n status: ENotificatoinOrderStatus;\r\n getActionId(): string {\r\n if (this.orderNumber) {\r\n return this.orderNumber;\r\n }\r\n if (this.checkoutId) {\r\n return this.checkoutId;\r\n }\r\n return UUID.UUID();\r\n }\r\n}\r\nexport class KioskPushNotificationModel implements IPushNotificationModel {\r\n readonly actionType?: IPushNotificationModel.ActionTypeEnum = IPushNotificationModel.ActionTypeEnum.Kiosk;\r\n checkoutId: string;\r\n buyerId: string;\r\n orderNumber: string;\r\n receiptNumber: string;\r\n status: ENotificatoinOrderStatus;\r\n getActionId(): string {\r\n if (this.orderNumber) {\r\n return this.orderNumber;\r\n }\r\n if (this.checkoutId) {\r\n return this.checkoutId;\r\n }\r\n return UUID.UUID();\r\n }\r\n}\r\nexport class DefaultPushNotificationModel implements IPushNotificationModel {\r\n readonly actionType?: IPushNotificationModel.ActionTypeEnum = IPushNotificationModel.ActionTypeEnum.Unknown;\r\n getActionId(): string {\r\n return UUID.UUID();\r\n }\r\n}\r\nexport class HotActionPushNotificationModel implements IPushNotificationModel {\r\n header: string;\r\n groupId: string;\r\n qrId: string;\r\n groupName: string;\r\n groupNameKey: string;\r\n pictureUrl: string;\r\n actionType: any;\r\n status: ENotificatoinHotActionStatus;\r\n getActionId(): string {\r\n return UUID.UUID();\r\n }\r\n}\r\n\r\nexport class TeamRegistrationPushNotificationModel implements IPushNotificationModel {\r\n readonly actionType?: IPushNotificationModel.ActionTypeEnum = IPushNotificationModel.ActionTypeEnum.TeamRegistration;\r\n buyerId: string;\r\n teamId: string;\r\n email: string;\r\n host: string;\r\n fullHost: string;\r\n teamName: string;\r\n phoneNumber: string;\r\n countryCode: string;\r\n companyTypeId: string;\r\n registrationDate: Date;\r\n getActionId(): string {\r\n return this.teamId;\r\n }\r\n}\r\n","export class ConstantService {\r\n\r\n public static isInitialStart: boolean;\r\n public static RefreshTokenCall: boolean;\r\n\r\n public static EmptyGuid = '00000000-0000-0000-0000-000000000000';\r\n public static IsExternalRequest: boolean;\r\n}\r\n\r\nexport class StorageKeys {\r\n public static TranslationLanguageKey = 'PORTAL_BONEE_TRANSLATE';\r\n public static FEEDBACK_DATE_INTERVAL_KEY = 'PORTAL_BONEE_FEEDBACK';\r\n public static HOT_ACTIONS_HISTORY_DATE_INTERVAL_KEY = 'PORTAL_BONEE_HOT_ACTIONS_HISTORY';\r\n public static CATALOG_ITEM_GROUP_KEY = 'PORTAL_BONEE_CATALOG_ITEM_GROUP';\r\n public static CATALOG_ITEM_GROUP_TYPE = 'CATALOG_ITEM_GROUP_TYPE';\r\n public static ORDERING_DATE_INTERVAL_KEY = 'PORTAL_BONEE_ORDERING_DATE';\r\n public static ORDERING_PRODUCT_REPORT_DATE_INTERVAL_KEY = 'PORTAL_BONEE_ORDERING_PRODUCT_REPORT_DATE';\r\n public static CLIENT_DATE_INTERVAL_KEY = 'PORTAL_BONEE_CLIENT_DATE';\r\n public static COURIER_DATE_INTERVAL_KEY = 'PORTAL_BONEE_COURIER_DATE';\r\n public static USERDATACHECKED_KEY = 'PORTAL_BONEE_USERDATACHECKED';\r\n public static SCROLL_DATA_NAME = 'PORTAL_BONEE_ITEMS_SCROLL';\r\n public static SMART_TRANSLATE_DATA_NAME = 'PORTAL_BONEE_SMART_TRANSLATE_CHECKED';\r\n public static QR_MENU_GROUP_KEY = 'PORTAL_BONEE_QR_MENU_GROUP';\r\n public static ORDERING_ACTIVE_CHECKOUT_DATE__INTERVAL_KEY = 'PORTAL_BONEE_ORDERING_ACTIVE_CHECKOUT';\r\n public static NOTIFICATION_DATE_INTERVAL_KEY = 'PORTAL_BONEE_NOTIFICATION_DATE';\r\n public static SALE_PORTAL_KEY = 'SALE_PORTAL_KEY';\r\n public static FROM_SALE_PORTAL = 'FROM_SALE_PORTAL';\r\n public static SALE_PORTAL_SELECTED_PARTNER = 'SALE_PORTAL_SELECTED_PARTNER';\r\n public static SALE_PORTAL_SELECTED_PARTNER_FILTER = 'SALE_PORTAL_SELECTED_PARTNER_FILTER';\r\n public static SALE_PORTAL_TRANSLATE_HOST = 'SALE_PORTAL_TRANSLATE_HOST';\r\n public static SALE_PORTAL_RESTAURANT_FILTER = 'SALE_PORTAL_RESTAURANT_FILTER';\r\n public static SALE_PORTAL_RESTAURANT_DATE_INTERVAL_KEY = 'SALE_PORTAL_RESTAURANT_DATE_INTERVAL_KEY';\r\n public static DIRECTORY_FILTER_GROUP_KEY = 'DIRECTORY_FILTER_GROUP_KEY';\r\n public static SALE_PORTAL_COMPANY_SELECTED_PARTNER = 'SALE_PORTAL_COMPANY_SELECTED_PARTNER';\r\n public static SALE_PORTAL_COMPANY_TYPE_KEY = 'SALE_PORTAL_COMPANY_TYPE_KEY';\r\n public static QR_URLTYPE = 'QR_URLTYPE';\r\n}\r\n","import { Subject } from 'rxjs';\r\nexport class ErrorsService {\r\n errorCode: { code: number, message?: string };\r\n private error$ = new Subject<{ code: number, message?: string }>();\r\n error = this.error$.asObservable();\r\n constructor(\r\n\r\n ) {\r\n }\r\n\r\n addError(error: { code: number, message?: string }) {\r\n this.errorCode = error;\r\n this.error$.next(error);\r\n }\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { from, Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable()\r\nexport class GlobalizationService {\r\n allCurrencies: Array = [];\r\n allCountries: Array = [];\r\n currentCountry = '';\r\n private _loadedCountriesInfo: Array<{ code: string, country: CountryInfoModel }> = [];\r\n\r\n constructor(\r\n private http: HttpClient\r\n ) {\r\n }\r\n\r\n getAllCurrencies(): Observable {\r\n if (this.allCurrencies && this.allCurrencies.length > 0) {\r\n return from([true]);\r\n }\r\n const url = environment.globalizationUrl + '/graphql';\r\n const postbody = {\r\n operationName: null,\r\n query: '{ currencies(first:300) { items{ alphabeticCode, numericCode, countryCode, currencyName }}}',\r\n variables: null\r\n };\r\n if (this.allCurrencies && this.allCurrencies.length > 0) {\r\n return from([true]);\r\n }\r\n return this.http.post(url, postbody).pipe(map((response_: any) => {\r\n this.allCurrencies = response_.data.currencies.items;\r\n return true;\r\n }, err => {\r\n return false;\r\n }));\r\n }\r\n\r\n getCountriesFullInfo(): Observable {\r\n const url = environment.globalizationUrl + '/graphql';\r\n const postbody = {\r\n operationName: null,\r\n query: '{countries(first: 300) {items { name{common}, callingCode, cca2, currencies{ alphabeticCode, numericCode, countryCode }}}}',\r\n variables: null\r\n };\r\n if (this.allCountries && this.allCountries.length > 0) {\r\n return from([this.allCountries]);\r\n }\r\n return this.http.post(url, postbody).pipe(map(res => {\r\n this.allCountries = res.data.countries.items;\r\n return this.allCountries;\r\n }, err => {\r\n return [];\r\n }));\r\n }\r\n\r\n getCountryInfo(countryCode: string): Observable {\r\n if (this._loadedCountriesInfo.findIndex(x => x.code.toLowerCase() === countryCode.toLowerCase()) !== -1) {\r\n return from([this._loadedCountriesInfo.find(x => x.code.toLowerCase() === countryCode.toLowerCase()).country]);\r\n }\r\n if (this.allCountries && this.allCountries.length > 0) {\r\n if (this.allCountries.findIndex(x => x.cca2.toLowerCase() === countryCode.toLowerCase()) !== -1) {\r\n const c = this.allCountries.find(x => x.cca2.toLowerCase() === countryCode.toLowerCase());\r\n this._loadedCountriesInfo.push({ code: countryCode.toLowerCase(), country: c });\r\n return from([c]);\r\n }\r\n }\r\n const url = environment.globalizationUrl + '/graphql';\r\n const postbody = {\r\n operationName: null,\r\n query: `{ country(cca2: \"${countryCode}\") { cca2, callingCode, name{ common }, currencies { numericCode, alphabeticCode, minorUnit } languages { iso639_1 }, timezones{id, text, offset, }}}`,\r\n variables: null\r\n };\r\n return this.http.post(url, postbody).pipe(map(res => {\r\n const country = res.data.country;\r\n this._loadedCountriesInfo.push({ code: countryCode, country: country });\r\n return country;\r\n },\r\n err => {\r\n return {};\r\n }\r\n ));\r\n }\r\n\r\n getSymbolByCode(currencyCode: string): string {\r\n const currency = this.allCurrencies.find(x => x.numericCode === currencyCode);\r\n return currency ? currency.alphabeticCode : '';\r\n }\r\n\r\n getSymbolByCountryCode(countryCode: string): string {\r\n const currency = this.allCurrencies.find(x => x.countryCode.toLowerCase() === countryCode.toLowerCase());\r\n return currency ? currency.alphabeticCode : '';\r\n }\r\n\r\n getCountryCodeByNumericCode(numericCode: string) {\r\n const currency = this.allCurrencies.find(x => x.numericCode === numericCode);\r\n return currency ? currency.countryCode : '';\r\n }\r\n\r\n getCountryPhoneCodes(): Observable {\r\n const url = environment.globalizationUrl + '/graphql';\r\n const postbody = {\r\n operationName: null,\r\n query: '{countries(first: 300){items{ name{common}, callingCode,cca2}}}',\r\n variables: null\r\n };\r\n return this.http.post(url, postbody);\r\n }\r\n\r\n getCurrentCountry(): Observable {\r\n if (this.currentCountry) {\r\n return from([this.currentCountry]);\r\n }\r\n const url = environment.globalizationUrl + '/api/location/CurrentCountry';\r\n const headers = new HttpHeaders().set('Content-Type', 'text/plain; charset=utf-8');\r\n const requestOptions: Object = {\r\n /* other options here */\r\n responseType: 'text'\r\n };\r\n return this.http.get(url, requestOptions).pipe(map(res => {\r\n this.currentCountry = res;\r\n return this.currentCountry;\r\n }, err => {\r\n return '';\r\n }));\r\n }\r\n\r\n}\r\nexport class CountryInfoModel {\r\n name: CountryName;\r\n callingCode: string[];\r\n cca2: string;\r\n currencies: Currency[];\r\n timezones: TimeZone[];\r\n}\r\nexport class CountryName {\r\n common: string;\r\n}\r\nexport class Currency {\r\n alphabeticCode: string;\r\n numericCode: string;\r\n countryCode: string;\r\n currencyName: string;\r\n}\r\n\r\nexport class TimeZone {\r\n id: string;\r\n abbreviation: string;\r\n offset: number;\r\n daylightSavingTime: boolean;\r\n text: string;\r\n uTC: string;\r\n}\r\n","export enum YoutubeVideoURLFormats {\r\n None = 0,\r\n Watch = 1,\r\n Be = 2,\r\n Embed = 3\r\n}\r\nexport class HelperService {\r\n youtubeVideoURLFormats: { type: YoutubeVideoURLFormats, prefix: string }[] = [\r\n { type: YoutubeVideoURLFormats.Watch, prefix: 'https://www.youtube.com/watch?v=' },\r\n { type: YoutubeVideoURLFormats.Be, prefix: 'https://youtu.be/' },\r\n { type: YoutubeVideoURLFormats.Embed, prefix: 'https://www.youtube.com/embed/' },\r\n ];\r\n b64toBlob(b64Data, contentType, sliceSize): Blob {\r\n contentType = contentType || '';\r\n sliceSize = sliceSize || 512;\r\n\r\n const byteCharacters = atob(b64Data);\r\n const byteArrays = [];\r\n\r\n for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\r\n const slice = byteCharacters.slice(offset, offset + sliceSize);\r\n\r\n const byteNumbers = new Array(slice.length);\r\n for (let i = 0; i < slice.length; i++) {\r\n byteNumbers[i] = slice.charCodeAt(i);\r\n }\r\n\r\n const byteArray = new Uint8Array(byteNumbers);\r\n\r\n byteArrays.push(byteArray);\r\n }\r\n\r\n const blob = new Blob(byteArrays, { type: contentType });\r\n return blob;\r\n }\r\n\r\n getdateformat(format: string): any {\r\n let dtformat = 'MM/dd/yyyy';\r\n\r\n if (format === 'PKDateStyleNone') {\r\n dtformat = '';\r\n }\r\n /// \r\n /// Specifies a short style, typically numeric only, such as \"11/23/37\" or \"3:30 PM\".\r\n /// \r\n if (format === 'PKDateStyleShort') {\r\n dtformat = 'MM/dd/yy';\r\n }\r\n /// \r\n /// Specifies a medium style, typically with abbreviated text, such as \"Nov 23, 1937\" or \"3:30:32 PM\".\r\n /// \r\n if (format === 'PKDateStyleMedium') {\r\n dtformat = 'MMM/dd/yyyy';\r\n }\r\n /// \r\n /// Specifies a long style, typically with full text, such as \"November 23, 1937\" or \"3:30:32 PM PST\".\r\n /// \r\n if (format === 'PKDateStyleLong') {\r\n dtformat = 'MMMM d, y';\r\n }\r\n\r\n /// \r\n /// Specifies a full style with complete details, such as \"Tuesday, April 12, 1952 AD\" or \"3:30:42 PM Pacific Standard Time\".\r\n /// \r\n\r\n if (format === 'PKDateStyleFull') {\r\n dtformat = 'EEEE, MMMM d, y';\r\n }\r\n\r\n\r\n return dtformat;\r\n }\r\n\r\n gettimeformat(format: string): any {\r\n let dtformat = '';\r\n if (format === 'PKDateStyleNone') {\r\n dtformat = '';\r\n }\r\n /// \r\n /// Specifies a short style, typically numeric only, such as \"11/23/37\" or \"3:30 PM\".\r\n /// \r\n if (format === 'PKDateStyleShort') {\r\n dtformat = ' h:mm';\r\n }\r\n /// \r\n /// Specifies a medium style, typically with abbreviated text, such as \"Nov 23, 1937\" or \"3:30:32 PM\".\r\n /// \r\n if (format === 'PKDateStyleMedium') {\r\n dtformat = ' h:mm:s';\r\n }\r\n /// \r\n /// Specifies a long style, typically with full text, such as \"November 23, 1937\" or \"3:30:32 PM PST\".\r\n /// \r\n if (format === 'PKDateStyleLong') {\r\n dtformat = ' h:mm:ss';\r\n }\r\n\r\n /// \r\n /// Specifies a full style with complete details, such as \"Tuesday, April 12, 1952 AD\" or \"3:30:42 PM Pacific Standard Time\".\r\n /// \r\n\r\n if (format === 'PKDateStyleFull') {\r\n dtformat = ' h:mm:sss';\r\n }\r\n\r\n return dtformat;\r\n }\r\n\r\n printCanvas(cnv: any, title: string, transformDateStart: string, transformDateEnd: string): void {\r\n let printContents, popupWin;\r\n const img = cnv.toDataURL();\r\n printContents = '
';\r\n popupWin = window.open('', '_blank', 'top=0,left=0,height=100%,width=auto');\r\n popupWin.document.open();\r\n popupWin.document.write(`\r\n \r\n \r\n ${title}\r\n \r\n \r\n \r\n ${transformDateStart} - ${transformDateEnd} \r\n
${printContents}
\r\n `\r\n );\r\n popupWin.document.close();\r\n }\r\n\r\n getTranslateNameByCountry(countryName: string): string {\r\n switch (countryName) {\r\n case 'Armenia':\r\n return 'arm';\r\n case 'Belarus':\r\n return 'by';\r\n case 'Georgia':\r\n return 'ka';\r\n case 'Germany':\r\n return 'de';\r\n case 'Iran':\r\n return 'ir';\r\n case 'Italy':\r\n return 'itl';\r\n case 'Russia':\r\n return 'ru';\r\n case 'United Kingdom':\r\n case 'United States':\r\n return 'en';\r\n default:\r\n return 'en';\r\n }\r\n }\r\n\r\n\r\n private checkIfYoutubeUrl(url: string): YoutubeVideoURLFormats {\r\n if (!url || !url.trim()) {\r\n return YoutubeVideoURLFormats.None;\r\n }\r\n let exist = YoutubeVideoURLFormats.None;\r\n for (let i = 0; i < this.youtubeVideoURLFormats.length; i++) {\r\n if (url.toLowerCase().indexOf(this.youtubeVideoURLFormats[i].prefix.toLowerCase()) === 0) {\r\n exist = this.youtubeVideoURLFormats[i].type;\r\n break;\r\n }\r\n }\r\n return exist;\r\n }\r\n\r\n getYoutubeEmbedUrl(url: string): string {\r\n const type = this.checkIfYoutubeUrl(url);\r\n if (type === YoutubeVideoURLFormats.None) {\r\n return url;\r\n }\r\n let newUrl: string = url;\r\n if (newUrl.indexOf('&') === -1) {\r\n newUrl += '&';\r\n }\r\n const embedModel = this.youtubeVideoURLFormats.find(x => x.type === YoutubeVideoURLFormats.Embed);\r\n let model: { type: YoutubeVideoURLFormats, prefix: string };\r\n switch (type) {\r\n case YoutubeVideoURLFormats.Watch:\r\n model = this.youtubeVideoURLFormats.find(x => x.type === type);\r\n break;\r\n case YoutubeVideoURLFormats.Be:\r\n model = this.youtubeVideoURLFormats.find(x => x.type === type);\r\n break;\r\n case YoutubeVideoURLFormats.Embed:\r\n return url;\r\n default:\r\n return url;\r\n }\r\n\r\n newUrl = newUrl.replace(model.prefix, '');\r\n newUrl = newUrl.substring(0, newUrl.indexOf('&'));\r\n return embedModel.prefix + newUrl;\r\n }\r\n\r\n toUniqueStr(val: string): string {\r\n let guidString = btoa(val);\r\n guidString = guidString.replace('=', '');\r\n guidString = guidString.replace('+', '');\r\n guidString = guidString.replace('/', '');\r\n\r\n return guidString;\r\n }\r\n\r\n getParamValue(url: string, key: string): string {\r\n let val = '';\r\n const regex = new RegExp('[?&]' + key + '(=([^&#]*)|&|#|$)');\r\n const results = regex.exec(url);\r\n if (results && results[2]) {\r\n val = decodeURIComponent(results[2].replace(/\\+/g, ' '));\r\n }\r\n\r\n return val;\r\n }\r\n\r\n getStandartFormat(startDate: Date, end: boolean): Date {\r\n if (navigator.userAgent.search('Safari') >= 0 && navigator.userAgent.search('Chrome') < 0) {\r\n let dateSafari = (startDate.getMonth() + 1) + '/' + startDate.getDate() + '/' + startDate.getFullYear();\r\n if (end) {\r\n dateSafari = '23:59:59 ' + dateSafari;\r\n }\r\n return new Date(dateSafari.replace(/-/g, '/'));\r\n }\r\n let date = '' + (startDate.getMonth() + 1) + '/' + startDate.getDate() + '/' + startDate.getFullYear() + 'Z';\r\n if (end) {\r\n date = '23:59:59 ' + date;\r\n }\r\n return new Date(date);\r\n\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { map } from 'rxjs/operators';\r\nimport { Observable } from 'rxjs';\r\nimport { HelperService } from 'src/applazy/shared/services/helper.service';\r\nimport { ImageStoreService } from './imagestore/imageStore.service';\r\nexport enum UrlType {\r\n DownloadUrl = 'DownloadUrl',\r\n BlobUrl = 'BlobUrl'\r\n}\r\nexport enum ImageType {\r\n Logo = 'Logo',\r\n Background = 'Background'\r\n}\r\n\r\n@Injectable()\r\nexport class ImageStoreDataService {\r\n private _apiVersion = '1.0';\r\n constructor(\r\n private imageStoreService: ImageStoreService,\r\n private helperService: HelperService\r\n ) {\r\n }\r\n\r\n upload(\r\n imageSrc: string,\r\n pictureId: string,\r\n urlType: any,\r\n uploadOrigin = false\r\n ): Observable {\r\n const block = imageSrc.split(';');\r\n const contentType = block[0].split(':')[1];\r\n const realData = block[1].split(',')[1];\r\n const blob = this.helperService.b64toBlob(realData, contentType, 100);\r\n return this.imageStoreService.uploadImage(this._apiVersion, pictureId, urlType, blob, uploadOrigin).pipe(map(res => {\r\n return res;\r\n }, err => {\r\n return undefined;\r\n }));\r\n }\r\n uploadFile(\r\n imageSrc: any,\r\n fileId: string,\r\n ): Observable {\r\n return this.imageStoreService.uploadFile(this._apiVersion, fileId, imageSrc).pipe(map(res => {\r\n return res;\r\n }, err => {\r\n return undefined;\r\n }));\r\n }\r\n}\r\n","\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport {\r\n HttpClient, HttpHeaders, HttpParams,\r\n HttpResponse, HttpEvent\r\n} from '@angular/common/http';\r\n\r\nimport { Observable } from 'rxjs';\r\nimport { environment } from 'src/environments/environment';\r\nimport { Configuration } from '../../models/configuration';\r\nimport { CustomHttpUrlEncodingCodec } from '../../models/encoder';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ImageStoreService {\r\n\r\n protected basePath = environment.filestoreUrl;\r\n public defaultHeaders = new HttpHeaders();\r\n public configuration = new Configuration();\r\n\r\n constructor(protected httpClient: HttpClient, @Optional() configuration: Configuration) {\r\n\r\n if (configuration) {\r\n this.configuration = configuration;\r\n this.configuration.basePath = configuration.basePath || this.basePath;\r\n\r\n } else {\r\n this.configuration.basePath = this.basePath;\r\n }\r\n }\r\n\r\n private canConsumeForm(consumes: string[]): boolean {\r\n const form = 'multipart/form-data';\r\n for (const consume of consumes) {\r\n if (form === consume) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public apiVapiVersionImageStoreCloneGet(apiVersion: string, oldId?: string, newId?: string, fileSize?: number, observe?: 'body', reportProgress?: boolean): Observable;\r\n public apiVapiVersionImageStoreCloneGet(apiVersion: string, oldId?: string, newId?: string, fileSize?: number, observe?: 'response', reportProgress?: boolean): Observable>;\r\n public apiVapiVersionImageStoreCloneGet(apiVersion: string, oldId?: string, newId?: string, fileSize?: number, observe?: 'events', reportProgress?: boolean): Observable>;\r\n public apiVapiVersionImageStoreCloneGet(apiVersion: string, oldId?: string, newId?: string, fileSize?: number, observe: any = 'body', reportProgress: boolean = false): Observable {\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiVapiVersionImageStoreCloneGet.');\r\n }\r\n\r\n let queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() });\r\n if (oldId !== undefined && oldId !== null) {\r\n queryParameters = queryParameters.set('oldId', oldId);\r\n }\r\n if (newId !== undefined && newId !== null) {\r\n queryParameters = queryParameters.set('newId', newId);\r\n }\r\n if (fileSize !== undefined && fileSize !== null) {\r\n queryParameters = queryParameters.set('fileSize', fileSize);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get(`${this.configuration.basePath}/api/v${encodeURIComponent(String(apiVersion))}/ImageStore/Clone`,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n public apiVapiVersionImageStoreDeleteImageDelete(apiVersion: string, filename?: string, observe?: 'body', reportProgress?: boolean): Observable;\r\n public apiVapiVersionImageStoreDeleteImageDelete(apiVersion: string, filename?: string, observe?: 'response', reportProgress?: boolean): Observable>;\r\n public apiVapiVersionImageStoreDeleteImageDelete(apiVersion: string, filename?: string, observe?: 'events', reportProgress?: boolean): Observable>;\r\n public apiVapiVersionImageStoreDeleteImageDelete(apiVersion: string, filename?: string, observe: any = 'body', reportProgress: boolean = false): Observable {\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiVapiVersionImageStoreDeleteImageDelete.');\r\n }\r\n\r\n let queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() });\r\n if (filename !== undefined && filename !== null) {\r\n queryParameters = queryParameters.set('filename', filename);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.delete(`${this.configuration.basePath}/api/v${encodeURIComponent(String(apiVersion))}/ImageStore/DeleteImage`,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n public apiVapiVersionImageStoreDownloadImageAsBase64Get(apiVersion: string, fileId?: string, fileSize?: string, observe?: 'body', reportProgress?: boolean): Observable;\r\n public apiVapiVersionImageStoreDownloadImageAsBase64Get(apiVersion: string, fileId?: string, fileSize?: string, observe?: 'response', reportProgress?: boolean): Observable>;\r\n public apiVapiVersionImageStoreDownloadImageAsBase64Get(apiVersion: string, fileId?: string, fileSize?: string, observe?: 'events', reportProgress?: boolean): Observable>;\r\n public apiVapiVersionImageStoreDownloadImageAsBase64Get(apiVersion: string, fileId?: string, fileSize?: string, observe: any = 'body', reportProgress: boolean = false): Observable {\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiVapiVersionImageStoreDownloadImageAsBase64Get.');\r\n }\r\n\r\n let queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() });\r\n if (fileId !== undefined && fileId !== null) {\r\n queryParameters = queryParameters.set('fileId', fileId);\r\n }\r\n if (fileSize !== undefined && fileSize !== null) {\r\n queryParameters = queryParameters.set('fileSize', fileSize);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get(`${this.configuration.basePath}/api/v${encodeURIComponent(String(apiVersion))}/ImageStore/DownloadImageAsBase64`,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n public apiVapiVersionImageStoreDownloadResizedOrOriginalImageGet(apiVersion: string, fileId?: string, fileSize?: string, observe?: 'body', reportProgress?: boolean): Observable;\r\n public apiVapiVersionImageStoreDownloadResizedOrOriginalImageGet(apiVersion: string, fileId?: string, fileSize?: string, observe?: 'response', reportProgress?: boolean): Observable>;\r\n public apiVapiVersionImageStoreDownloadResizedOrOriginalImageGet(apiVersion: string, fileId?: string, fileSize?: string, observe?: 'events', reportProgress?: boolean): Observable>;\r\n public apiVapiVersionImageStoreDownloadResizedOrOriginalImageGet(apiVersion: string, fileId?: string, fileSize?: string, observe: any = 'body', reportProgress: boolean = false): Observable {\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiVapiVersionImageStoreDownloadResizedOrOriginalImageGet.');\r\n }\r\n\r\n let queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() });\r\n if (fileId !== undefined && fileId !== null) {\r\n queryParameters = queryParameters.set('fileId', fileId);\r\n }\r\n if (fileSize !== undefined && fileSize !== null) {\r\n queryParameters = queryParameters.set('fileSize', fileSize);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'application/octet-stream'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get(`${this.configuration.basePath}/api/v${encodeURIComponent(String(apiVersion))}/ImageStore/DownloadResizedOrOriginalImage`,\r\n {\r\n params: queryParameters,\r\n responseType: 'blob',\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n public uploadImage(apiVersion: string, uploadTargetId?: string, urlType?: 'DownloadUrl' | 'BlobUrl', file?: Blob, uploadOrigin?: boolean, observe?: 'body', reportProgress?: boolean): Observable;\r\n public uploadImage(apiVersion: string, uploadTargetId?: string, urlType?: 'DownloadUrl' | 'BlobUrl', file?: Blob, uploadOrigin?: boolean, observe?: 'response', reportProgress?: boolean): Observable>;\r\n public uploadImage(apiVersion: string, uploadTargetId?: string, urlType?: 'DownloadUrl' | 'BlobUrl', file?: Blob, uploadOrigin?: boolean, observe?: 'events', reportProgress?: boolean): Observable>;\r\n public uploadImage(apiVersion: string, uploadTargetId?: string, urlType?: 'DownloadUrl' | 'BlobUrl', file?: Blob, uploadOrigin?: boolean, observe: any = 'body', reportProgress: boolean = false): Observable {\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling uploadImage.');\r\n }\r\n\r\n let queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() });\r\n if (uploadTargetId !== undefined && uploadTargetId !== null) {\r\n queryParameters = queryParameters.set('uploadTargetId', uploadTargetId);\r\n }\r\n if (urlType !== undefined && urlType !== null) {\r\n queryParameters = queryParameters.set('urlType', urlType);\r\n }\r\n if (uploadOrigin !== undefined && uploadOrigin !== null) {\r\n queryParameters = queryParameters.set('uploadOrigin', uploadOrigin);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'multipart/form-data'\r\n ];\r\n\r\n const canConsumeForm = this.canConsumeForm(consumes);\r\n\r\n let formParams: { append(param: string, value: any): any; };\r\n let useForm = false;\r\n const convertFormParamsToString = false;\r\n useForm = canConsumeForm;\r\n if (useForm) {\r\n formParams = new FormData();\r\n } else {\r\n formParams = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() });\r\n }\r\n\r\n if (file !== undefined) {\r\n formParams = formParams.append('file', file) || formParams;\r\n }\r\n\r\n return this.httpClient.post(`${this.configuration.basePath}/api/v${encodeURIComponent(String(apiVersion))}/ImageStore/Upload`,\r\n convertFormParamsToString ? formParams.toString() : formParams,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n\r\n\r\n public uploadFile(apiVersion: string, uploadTargetId?: string, file?: any, observe?: 'body', reportProgress?: boolean): Observable;\r\n public uploadFile(apiVersion: string, uploadTargetId?: string, file?: any, observe?: 'response', reportProgress?: boolean): Observable>;\r\n public uploadFile(apiVersion: string, uploadTargetId?: string, file?: any, observe?: 'events', reportProgress?: boolean): Observable>;\r\n public uploadFile(apiVersion: string, uploadTargetId?: string, file?: any, observe: any = 'body', reportProgress: boolean = false): Observable {\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling uploadFile.');\r\n }\r\n\r\n let queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() });\r\n if (uploadTargetId !== undefined && uploadTargetId !== null) {\r\n queryParameters = queryParameters.set('uploadTargetId', uploadTargetId);\r\n }\r\n\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'multipart/form-data'\r\n ];\r\n\r\n const canConsumeForm = this.canConsumeForm(consumes);\r\n\r\n let formParams: { append(param: string, value: any): any; };\r\n let useForm = false;\r\n const convertFormParamsToString = false;\r\n useForm = canConsumeForm;\r\n if (useForm) {\r\n formParams = new FormData();\r\n } else {\r\n formParams = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() });\r\n }\r\n\r\n if (file !== undefined) {\r\n formParams = formParams.append('file', file) || formParams;\r\n }\r\n\r\n return this.httpClient.post(`${this.configuration.basePath}/api/v${encodeURIComponent(String(apiVersion))}/ImageStore/UploadFile`,\r\n convertFormParamsToString ? formParams.toString() : formParams,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n}\r\n","\r\nimport { Injectable, Optional } from '@angular/core';\r\nimport {\r\n HttpClient, HttpHeaders, HttpParams,\r\n HttpResponse, HttpEvent\r\n} from '@angular/common/http';\r\n\r\nimport { Observable } from 'rxjs';\r\nimport { environment } from 'src/environments/environment';\r\nimport { Configuration } from '../../models/configuration';\r\nimport { CustomHttpUrlEncodingCodec } from '../../models/encoder';\r\nimport { TemporaryFileReadModel } from '../../models/imagestore/temporaryFileReadModel';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TemporaryImagesService {\r\n\r\n protected basePath = environment.filestoreUrl;\r\n public defaultHeaders = new HttpHeaders();\r\n public configuration = new Configuration();\r\n\r\n constructor(protected httpClient: HttpClient, @Optional() configuration: Configuration) {\r\n\r\n if (configuration) {\r\n this.configuration = configuration;\r\n this.configuration.basePath = configuration.basePath || this.basePath;\r\n\r\n } else {\r\n this.configuration.basePath = this.basePath;\r\n }\r\n }\r\n\r\n public apiV1TemporaryImagesAddTemporaryImagesToFileStoreAsyncPost(apiVersion: string, requestBody?: Array, observe?: 'body', reportProgress?: boolean): Observable;\r\n public apiV1TemporaryImagesAddTemporaryImagesToFileStoreAsyncPost(apiVersion: string, requestBody?: Array, observe?: 'response', reportProgress?: boolean): Observable>;\r\n public apiV1TemporaryImagesAddTemporaryImagesToFileStoreAsyncPost(apiVersion: string, requestBody?: Array, observe?: 'events', reportProgress?: boolean): Observable>;\r\n public apiV1TemporaryImagesAddTemporaryImagesToFileStoreAsyncPost(apiVersion: string, requestBody?: Array, observe: any = 'body', reportProgress: boolean = false): Observable {\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiV1TemporaryImagesAddTemporaryImagesToFileStoreAsyncPost.');\r\n }\r\n\r\n let queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() });\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n 'application/json-patch+json',\r\n 'application/json',\r\n 'text/json',\r\n 'application/_*+json'\r\n ];\r\n const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\r\n if (httpContentTypeSelected !== undefined) {\r\n headers = headers.set('Content-Type', httpContentTypeSelected);\r\n }\r\n\r\n return this.httpClient.post(`${this.configuration.basePath}/api/v1/TemporaryImages/AddTemporaryImagesToFileStoreAsync`,\r\n requestBody,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n public apiV1TemporaryImagesDeleteTemporaryImagesAsyncPost(apiVersion: string, filesIds?: Array, observe?: 'body', reportProgress?: boolean): Observable;\r\n public apiV1TemporaryImagesDeleteTemporaryImagesAsyncPost(apiVersion: string, filesIds?: Array, observe?: 'response', reportProgress?: boolean): Observable>;\r\n public apiV1TemporaryImagesDeleteTemporaryImagesAsyncPost(apiVersion: string, filesIds?: Array, observe?: 'events', reportProgress?: boolean): Observable>;\r\n public apiV1TemporaryImagesDeleteTemporaryImagesAsyncPost(apiVersion: string, filesIds?: Array, observe: any = 'body', reportProgress: boolean = false): Observable {\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiV1TemporaryImagesDeleteTemporaryImagesAsyncPost.');\r\n }\r\n\r\n let queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() });\r\n if (filesIds) {\r\n filesIds.forEach((element) => {\r\n queryParameters = queryParameters.append('filesIds', element);\r\n });\r\n }\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.post(`${this.configuration.basePath}/api/v1/TemporaryImages/DeleteTemporaryImagesAsync`,\r\n null,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n public apiV1TemporaryImagesGetTemporaryImagesByOwnerAsyncKeyItemKeyGet(itemKey: string, apiVersion: string, observe?: 'body', reportProgress?: boolean): Observable>;\r\n public apiV1TemporaryImagesGetTemporaryImagesByOwnerAsyncKeyItemKeyGet(itemKey: string, apiVersion: string, observe?: 'response', reportProgress?: boolean): Observable>>;\r\n public apiV1TemporaryImagesGetTemporaryImagesByOwnerAsyncKeyItemKeyGet(itemKey: string, apiVersion: string, observe?: 'events', reportProgress?: boolean): Observable>>;\r\n public apiV1TemporaryImagesGetTemporaryImagesByOwnerAsyncKeyItemKeyGet(itemKey: string, apiVersion: string, observe: any = 'body', reportProgress: boolean = false): Observable {\r\n if (itemKey === null || itemKey === undefined) {\r\n throw new Error('Required parameter itemKey was null or undefined when calling apiV1TemporaryImagesGetTemporaryImagesByOwnerAsyncKeyItemKeyGet.');\r\n }\r\n if (apiVersion === null || apiVersion === undefined) {\r\n throw new Error('Required parameter apiVersion was null or undefined when calling apiV1TemporaryImagesGetTemporaryImagesByOwnerAsyncKeyItemKeyGet.');\r\n }\r\n\r\n let queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() });\r\n if (apiVersion !== undefined && apiVersion !== null) {\r\n queryParameters = queryParameters.set('api-version', apiVersion);\r\n }\r\n\r\n let headers = this.defaultHeaders;\r\n\r\n // authentication (ImplicitOAuth2) required\r\n if (this.configuration.accessToken) {\r\n const accessToken = typeof this.configuration.accessToken === 'function'\r\n ? this.configuration.accessToken()\r\n : this.configuration.accessToken;\r\n headers = headers.set('Authorization', 'Bearer ' + accessToken);\r\n }\r\n\r\n // to determine the Accept header\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get>(`${this.configuration.basePath}/api/v1/TemporaryImages/GetTemporaryImagesByOwner/key/${encodeURIComponent(String(itemKey))}`,\r\n {\r\n params: queryParameters,\r\n withCredentials: this.configuration.withCredentials,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MarketPlaceService } from 'src/applazy/services/marketplace.service';\r\nimport { DeliveryStoreBaseModel } from '../../models/orderTypeSetting';\r\n\r\n@Injectable()\r\nexport class StoreMarketPlaceOrderService {\r\n private readonly _marketPlaceService: MarketPlaceService;\r\n private readonly _apiVersion = '1.0';\r\n constructor(marketPlaceService: MarketPlaceService) {\r\n this._marketPlaceService = marketPlaceService;\r\n }\r\n\r\n async getDeliveryApplications(model: DeliveryStoreBaseModel, userId: string): Promise<{ id: string, name: string, logo: string }[]> {\r\n const models: { id: string, name: string, logo: string }[] = [];\r\n let deliveryApplications = await this._marketPlaceService.getActiveDeliveryApplications(this._apiVersion, userId).toPromise();\r\n if (deliveryApplications && deliveryApplications.length > 0) {\r\n deliveryApplications = deliveryApplications.filter(d => d.state === 'Active' && d.teamState === 'Active') || [];\r\n deliveryApplications.forEach(d => {\r\n models.push({ id: d.id, name: d.name, logo: d.logo });\r\n });\r\n }\r\n if (model.isActiveServiceFeeFix) {\r\n models.push({ id: undefined, name: 'base', logo: 'assets/images/svg/generalicons/notifications/delivery.svg' });\r\n }\r\n return models;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { Router } from '@angular/router';\r\nimport { Location } from '@angular/common';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { MessageService } from '../components/messagebox/services/message.service';\r\nimport { ComparableModel } from '../models/compare/comparable.model';\r\nconst isEqual = require('lodash.isequal');\r\n\r\n@Injectable()\r\nexport class NavigationService {\r\n constructor(\r\n private router: Router,\r\n private location: Location,\r\n private translateService: TranslateService,\r\n private messageService: MessageService\r\n ) {\r\n }\r\n private isRouted$ = new Subject();\r\n isRouted = this.isRouted$.asObservable();\r\n private _beforeChanges: Array = [];\r\n public set beforeChanges(c: Array) {\r\n this._beforeChanges = c || [];\r\n }\r\n public get beforeChanges(): Array {\r\n return this._beforeChanges;\r\n }\r\n\r\n private canShowMainQr$ = new Subject();\r\n canShowMainQr = this.canShowMainQr$.asObservable();\r\n canShowMain = false;\r\n private cacheClicked$ = new Subject();\r\n cacheClicked = this.cacheClicked$.asObservable();\r\n\r\n private refreshClicked$ = new Subject();\r\n refreshClicked = this.refreshClicked$.asObservable();\r\n component: any;\r\n\r\n showMainQr(show = true) {\r\n this.canShowMain = show;\r\n this.canShowMainQr$.next();\r\n }\r\n\r\n cache() {\r\n this.cacheClicked$.next();\r\n }\r\n\r\n refreshData() {\r\n this.refreshClicked$.next();\r\n }\r\n\r\n navigateTo(url: string, param?: string) {\r\n this.refresh();\r\n let data = [url];\r\n if (param) {\r\n data = [url, param];\r\n }\r\n this.router.navigate(data);\r\n this.isRouted$.next(url);\r\n }\r\n\r\n navigateWithCompareMessage(url: string) {\r\n if (this.compareWithOld(this.component)) {\r\n this.navigateTo(url);\r\n return;\r\n } else {\r\n const translateParams = [];\r\n translateParams.push('warning');\r\n translateParams.push('backMessage');\r\n this.translateService.get(translateParams).subscribe((t) => {\r\n const t1 = t['warning'];\r\n const t2 = t['backMessage'];\r\n this.messageService.showconfirm(t1, t2, true).then((exet) => {\r\n if (exet) {\r\n this.navigateTo(url);\r\n }\r\n });\r\n }, err => { });\r\n }\r\n }\r\n\r\n back() {\r\n this.refresh();\r\n this.location.back();\r\n }\r\n\r\n refresh() {\r\n // this.component = null;\r\n this.beforeChanges = this.getComparableArr(this.component);\r\n }\r\n\r\n compareWithOld(component: any): boolean {\r\n const afterChangesArr = this.getComparableArr(component);\r\n for (let i = 0; i < afterChangesArr.length; i++) {\r\n if (!isEqual(this.beforeChanges[i], afterChangesArr[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n cloneObject(realObj: any, obj: any) {\r\n for (const key in realObj) {\r\n if (realObj.hasOwnProperty(key) && key.indexOf('$') < 0) {\r\n const type = typeof realObj[key];\r\n if (type === 'object') {\r\n obj[key] = Object.assign({}, realObj[key]);\r\n this.cloneObject(realObj[key], obj[key]);\r\n } else {\r\n obj[key] = realObj[key];\r\n }\r\n }\r\n }\r\n }\r\n\r\n getOrdered(unordered: any): any {\r\n return Object.keys(unordered).sort().reduce(\r\n (obj, key) => {\r\n obj[key] = unordered[key];\r\n this._validateDefaultValue(obj, key);\r\n return obj;\r\n },\r\n {}\r\n );\r\n }\r\n\r\n getComparableArr(component: any): Array {\r\n this.component = component;\r\n const arr: string[] = [];\r\n if (!component) {\r\n return arr;\r\n }\r\n this._fillComparableArr(component, arr);\r\n return arr;\r\n }\r\n private _fillComparableArr(model: any, arr: string[]): void {\r\n if (Array.isArray(model) && model && model.length > 0) {\r\n model.forEach(item => {\r\n this._fillComparableArr(item, arr);\r\n });\r\n } else {\r\n for (const key in model) {\r\n if (Object.prototype.hasOwnProperty.call(model, key)) {\r\n if (model[key] instanceof ComparableModel) {\r\n const ordered = this.getOrdered(model[key]);\r\n const orderedJson = JSON.stringify(ordered);\r\n const orderedObj = JSON.parse(orderedJson);\r\n // arr.push(orderedJson);\r\n arr.push(orderedObj);\r\n this._fillComparableArr(orderedObj, arr);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n private _validateDefaultValue(obj: any, key: string): void {\r\n if (typeof obj[key] === 'string') {\r\n if (!obj[key]) {\r\n obj[key] = '';\r\n }\r\n }\r\n if (typeof obj[key] === 'number') {\r\n if (!obj[key]) {\r\n obj[key] = 0;\r\n }\r\n let parseNum = Number.parseFloat(obj[key].toString());\r\n if (parseNum % 1 === 0) {\r\n parseNum = Number.parseInt(obj[key].toString());\r\n }\r\n obj[key] = parseNum;\r\n }\r\n if (typeof obj[key] === 'boolean') {\r\n if (obj[key] === null || obj[key] === undefined) {\r\n obj[key] = false;\r\n }\r\n }\r\n }\r\n}\r\n","import { Subject } from 'rxjs';\r\nimport { OrderStatusModel } from 'src/applazy/shared/models/orderTypeSetting';\r\nimport { TimePickerItemModel, TimePickerModel } from '../../components/times/models/TimesModels';\r\nimport { UTCDatePipe } from '../../pipes/utcdate.pipe';\r\nimport { RelevantLocation } from '../../models/partnermodels/relevantLocation';\r\n\r\nexport class OrderStatusInfoService {\r\n private messageSubject = new Subject();\r\n public dialogConfirmation: () => void;\r\n public dialogRejection: () => void;\r\n public model: ChangeStatusWriteModel;\r\n public currentStatus: OrderStatusModel;\r\n public nextStatuses: OrderStatusModel[];\r\n\r\n infoState = this.messageSubject.asObservable();\r\n\r\n public showconfirm(\r\n currentStatus: OrderStatusModel, \r\n nextStatuses: OrderStatusModel[], \r\n applications: Array,\r\n locations: Array,\r\n showEstimationTime = true, \r\n showUserTime = true): Promise<{ confirmed: boolean, model: ChangeStatusWriteModel }> {\r\n if (!this.model) {\r\n this.model = new ChangeStatusWriteModel(nextStatuses[0].statusId);\r\n }\r\n this.model.applications = applications;\r\n this.model.locations = locations;\r\n if (this.model.locationId) {\r\n this.model.selectedLocation = this.model.locations?.find(x=>x.id === this.model.locationId);\r\n }\r\n if (!this.model.selectedLocation && this.model.locations && this.model.locations.length > 0) {\r\n this.model.selectedLocation = this.model.locations[0];\r\n this.model.locationId = this.model.locations[0].id;\r\n }\r\n if (this.model.applicationId) {\r\n this.model.selectedApplication = this.model.applications?.find(x=>x.id === this.model.applicationId);\r\n }\r\n this.model.statusId = nextStatuses[0].statusId;\r\n this.model.showEstimationTime = showEstimationTime;\r\n this.model.showUserTime = showUserTime;\r\n this.currentStatus = currentStatus;\r\n this.nextStatuses = nextStatuses;\r\n return new Promise<{ confirmed: boolean, model: ChangeStatusWriteModel }>((resolve, reject) => {\r\n this.dialogConfirmation = () => {\r\n const date = this.model.estimationDateTime;\r\n const day = date.getDate() < 10 ? '0' + date.getDate().toString() : date.getDate().toString();\r\n const month = (date.getMonth() + 1) < 10 ? '0' + (date.getMonth() + 1).toString() : (date.getMonth() + 1).toString();\r\n const year = date.getFullYear().toString();\r\n const hour = date.getHours() < 10 ? '0' + date.getHours().toString() : date.getHours().toString();\r\n const minute = date.getMinutes() < 10 ? '0' + date.getMinutes().toString() : date.getMinutes().toString();\r\n const second = date.getSeconds() < 10 ? '0' + date.getSeconds().toString() : date.getSeconds().toString();\r\n // 2021-01-27T22:35:59.059Z\r\n this.model.estimationTime = (year + '-' + month + '-' + day + 'T' + hour + ':' + minute + ':' + second);\r\n\r\n const udate = this.model.userDateTime;\r\n const uday = udate.getDate() < 10 ? '0' + udate.getDate().toString() : udate.getDate().toString();\r\n const umonth = (udate.getMonth() + 1) < 10 ? '0' + (udate.getMonth() + 1).toString() : (udate.getMonth() + 1).toString();\r\n const uyear = udate.getFullYear().toString();\r\n const uhour = udate.getHours() < 10 ? '0' + udate.getHours().toString() : udate.getHours().toString();\r\n const uminute = udate.getMinutes() < 10 ? '0' + udate.getMinutes().toString() : udate.getMinutes().toString();\r\n const usecond = udate.getSeconds() < 10 ? '0' + udate.getSeconds().toString() : udate.getSeconds().toString();\r\n // 2021-01-27T22:35:59.059Z\r\n this.model.userTime = (uyear + '-' + umonth + '-' + uday + 'T' + uhour + ':' + uminute + ':' + usecond);\r\n\r\n resolve({ confirmed: true, model: this.model });\r\n };\r\n this.dialogRejection = () => resolve({ confirmed: false, model: this.model });\r\n this.show();\r\n }).catch(err => new Promise<{ confirmed: boolean, model: ChangeStatusWriteModel }>((resolve, reject) => { }));\r\n }\r\n\r\n private show() {\r\n this.messageSubject.next({ show: true });\r\n }\r\n\r\n hide() {\r\n this.messageSubject.next({ show: false });\r\n }\r\n}\r\n\r\nexport interface InfoState {\r\n show: boolean;\r\n}\r\n\r\nexport class ChangeStatusWriteModel {\r\n orderId: number;\r\n statusId: number;\r\n description: string;\r\n estimationTime: string;\r\n estimationDateTime: Date;\r\n estimationTimeHM: string;\r\n showEstimationTime = true;\r\n userTime: string;\r\n userDateTime: Date;\r\n userTimeHM: string;\r\n showUserTime = true;\r\n editable: boolean;\r\n estimationTimePickerModel: TimePickerModel;\r\n userTimePickerModel: TimePickerModel;\r\n applicationId: string;\r\n locationId: string;\r\n selectedApplication: any;\r\n selectedLocation: RelevantLocation;\r\n applications: Array;\r\n locations: Array;\r\n isResend: boolean;\r\n\r\n constructor(statusId: number, orderId = 0, editable = true) {\r\n this.orderId = 0;\r\n if (orderId) {\r\n this.orderId = orderId;\r\n }\r\n this.statusId = statusId;\r\n this.editable = editable;\r\n this.description = '';\r\n }\r\n\r\n setEstimationTime(estimationTime: Date | string): void {\r\n const date = new Date(estimationTime);\r\n this.estimationDateTime = new Date(date.getTime() + date.getTimezoneOffset() * 60000);\r\n // this.estimationDateTime = new Date(estimationTime);\r\n const hours = this.estimationDateTime.getHours();\r\n const minutes = this.estimationDateTime.getMinutes();\r\n this.estimationDateTime.setHours(hours, minutes, 59, 59);\r\n this.estimationTimeHM = (hours < 10 ? '0' + hours : hours) + ':' + (minutes < 10 ? '0' + minutes.toString() : minutes);\r\n this.estimationTimePickerModel = new TimePickerModel();\r\n this.estimationTimePickerModel.hourModel = new TimePickerItemModel(hours, 24);\r\n this.estimationTimePickerModel.minuteModel = new TimePickerItemModel(minutes, 60);\r\n }\r\n\r\n setUserTime(userTime: Date): void {\r\n const date = new Date(userTime);\r\n this.userDateTime = new Date(date.getTime() + date.getTimezoneOffset() * 60000);\r\n // this.userDateTime = new Date(userDateTime);\r\n const hours = this.userDateTime.getHours();\r\n const minutes = this.userDateTime.getMinutes();\r\n this.userDateTime.setHours(hours, minutes, 59, 59);\r\n this.userTimeHM = (hours < 10 ? '0' + hours : hours) + ':' + (minutes < 10 ? '0' + minutes.toString() : minutes);\r\n this.userTimePickerModel = new TimePickerModel();\r\n this.userTimePickerModel.hourModel = new TimePickerItemModel(hours, 24);\r\n this.userTimePickerModel.minuteModel = new TimePickerItemModel(minutes, 60);\r\n }\r\n\r\n getEstimationString(date: Date, setZ = true): string {\r\n const day = date.getDate() < 10 ? '0' + date.getDate().toString() : date.getDate().toString();\r\n const month = (date.getMonth() + 1) < 10 ? '0' + (date.getMonth() + 1).toString() : (date.getMonth() + 1).toString();\r\n const year = date.getFullYear().toString();\r\n const hour = date.getHours() < 10 ? '0' + date.getHours().toString() : date.getHours().toString();\r\n const minute = date.getMinutes() < 10 ? '0' + date.getMinutes().toString() : date.getMinutes().toString();\r\n const second = date.getSeconds() < 10 ? '0' + date.getSeconds().toString() : date.getSeconds().toString();\r\n // 2021-01-27T22:35:59.059Z\r\n return (year + '-' + month + '-' + day + 'T' + hour + ':' + minute + ':' + second) + (setZ ? 'Z' : '');\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { LOCAL_STORAGE, WebStorageService } from 'ngx-webstorage-service';\r\nimport { AuthService } from 'src/applazy/services/auth.service';\r\nimport { User } from '../models/User';\r\nimport { StorageKeys } from './constant.service';\r\n@Injectable()\r\nexport class PaginationInfoService {\r\n private _paginatioModels: IPaginationModel[];\r\n // private _currentModel: IPaginationModel;\r\n private _name: string;\r\n get _currentModel(): IPaginationModel {\r\n let index = this._paginatioModels.findIndex(x => x.name === this._name);\r\n if (index === -1) {\r\n index = this._paginatioModels.length;\r\n const model = new PaginationModel(this._name);\r\n model.name = this._name;\r\n this._paginatioModels.push(model);\r\n }\r\n return this._paginatioModels[index];\r\n }\r\n\r\n set _currentModel(value: IPaginationModel) {\r\n value.name = this._name;\r\n const index = this._paginatioModels.findIndex(x => x.name === this._name);\r\n if (index === -1) {\r\n this._paginatioModels.push(value);\r\n } else {\r\n this._paginatioModels[index] = value;\r\n }\r\n }\r\n\r\n constructor(\r\n @Inject(LOCAL_STORAGE) private webStorageService: WebStorageService,\r\n ) {\r\n this._name = '';\r\n this._paginatioModels = [];\r\n }\r\n\r\n private getInfo(name: string) {\r\n const value = this.webStorageService.get(this.getKey(name));\r\n if (!value || value === null || value === undefined) {\r\n this._currentModel = new PaginationModel(name);\r\n return;\r\n }\r\n this._currentModel = value;\r\n }\r\n\r\n addPage(page: number): PaginationInfoService {\r\n this._currentModel.page = page;\r\n if (this._currentModel.pageRowSize === 1) {\r\n this._currentModel.pageRow = page;\r\n } else {\r\n const col = page;\r\n const row = Number.parseInt((col / this._currentModel.pageRowSize).toString());\r\n const pageRowIndex = row;\r\n this._currentModel.pageRow = pageRowIndex;\r\n }\r\n return this;\r\n }\r\n\r\n resetPage(): PaginationInfoService {\r\n this._currentModel.page = 0;\r\n this._currentModel.pageRow = 0;\r\n return this;\r\n }\r\n\r\n addScroll(scrollTo: number): PaginationInfoService {\r\n this._currentModel.scrollTo = scrollTo;\r\n return this;\r\n }\r\n\r\n resetScroll(): PaginationInfoService {\r\n this._currentModel.scrollTo = 0;\r\n return this;\r\n }\r\n\r\n addPageSize(pageSize: number, pageRowSize: number): PaginationInfoService {\r\n this._currentModel.pageSize = pageSize;\r\n this._currentModel.pageRowSize = pageRowSize;\r\n return this;\r\n }\r\n\r\n addTotalCount(totalCount: number): PaginationInfoService {\r\n this._currentModel.totalCount = totalCount;\r\n return this;\r\n }\r\n\r\n addItemHeightAndWidth(itemHeight: number, itemWidth: number): PaginationInfoService {\r\n this._currentModel.itemHeight = itemHeight;\r\n this._currentModel.itemWidth = itemWidth;\r\n return this;\r\n }\r\n\r\n addKey(key: string, keyIndex: number): PaginationInfoService {\r\n this._currentModel.key = key;\r\n const pageIndex = Number.parseInt((keyIndex / this._currentModel.pageSize).toString());\r\n\r\n if (this._currentModel.pageRowSize === 1) {\r\n if (pageIndex > this._currentModel.page) {\r\n this._currentModel.scrollTo = this._currentModel.scrollTo + (pageIndex - this._currentModel.page) * this._currentModel.itemHeight;\r\n this._currentModel.page = pageIndex;\r\n this._currentModel.pageRow = pageIndex;\r\n }\r\n } else {\r\n const col = keyIndex;\r\n const row = Number.parseInt((col / this._currentModel.pageRowSize).toString());\r\n const pageRowIndex = row;\r\n if (pageRowIndex > this._currentModel.pageRow) {\r\n this._currentModel.scrollTo = this._currentModel.scrollTo + (pageRowIndex - this._currentModel.pageRow) * this._currentModel.itemHeight;\r\n this._currentModel.pageRow = pageRowIndex;\r\n this._currentModel.page = pageIndex;\r\n }\r\n }\r\n this.savePaginationInfo(this._currentModel.name);\r\n return this;\r\n }\r\n\r\n scrollToTheEnd() {\r\n const page = Number.parseInt((this._currentModel.totalCount / this._currentModel.pageSize).toString());\r\n let pageRow = 0;\r\n if (this._currentModel.pageRowSize === 1) {\r\n this._currentModel.scrollTo = this._currentModel.itemHeight * this._currentModel.totalCount;\r\n pageRow = page;\r\n } else {\r\n this._currentModel.scrollTo = this._currentModel.itemHeight * this._currentModel.totalCount / this._currentModel.pageRowSize;\r\n pageRow = Number.parseInt((this._currentModel.totalCount / this._currentModel.pageRowSize).toString());\r\n }\r\n this._currentModel.page = page;\r\n this._currentModel.pageRow = pageRow;\r\n this.savePaginationInfo(this._currentModel.name);\r\n }\r\n\r\n scrollToTheTop() {\r\n this._currentModel.scrollTo = 0;\r\n this._currentModel.page = 0;\r\n this._currentModel.pageRow = 0;\r\n this.savePaginationInfo(this._currentModel.name);\r\n }\r\n\r\n savePaginationInfo(name: string) {\r\n this._name = name;\r\n this._currentModel.name = name;\r\n this.webStorageService.set(this.getKey(name), this._currentModel);\r\n }\r\n\r\n getPaginationInfo(name: string): IPaginationModel {\r\n this._name = name;\r\n this.getInfo(this._name);\r\n if (this._currentModel.name !== name) {\r\n this.removePaginationInfo();\r\n this._currentModel.name = name;\r\n }\r\n return this._currentModel;\r\n }\r\n\r\n removePaginationInfo() {\r\n this.webStorageService.remove(this.getKey(this._currentModel.name));\r\n const index = this._paginatioModels.findIndex(x => x.name === this._currentModel.name);\r\n if (index !== -1) {\r\n this._paginatioModels.splice(index, 1);\r\n }\r\n }\r\n\r\n clear() {\r\n if (this._paginatioModels && this._paginatioModels.length > 0) {\r\n this._paginatioModels.forEach(p => {\r\n this.webStorageService.remove(this.getKey(p.name));\r\n });\r\n this._paginatioModels = [];\r\n }\r\n }\r\n\r\n private getKey(name: string): string {\r\n const key = User.sub + '_' + StorageKeys.SCROLL_DATA_NAME + '_' + name;\r\n return key;\r\n }\r\n}\r\n\r\nexport interface IPaginationModel {\r\n page: number;\r\n pageRow: number;\r\n pageSize: number;\r\n pageRowSize: number;\r\n totalCount: number;\r\n scrollTo?: number;\r\n itemHeight: number;\r\n itemWidth: number;\r\n name: string;\r\n key: string;\r\n}\r\n\r\nexport class PaginationModel implements IPaginationModel {\r\n page: number;\r\n pageRow: number;\r\n pageSize: number;\r\n pageRowSize: number;\r\n totalCount: number;\r\n scrollTo?: number;\r\n itemHeight: number;\r\n itemWidth: number;\r\n name: string;\r\n key: string;\r\n constructor(name: string) {\r\n this.name = name;\r\n this.page = 0;\r\n this.pageRow = 0;\r\n this.pageSize = 10;\r\n this.pageRowSize = 1;\r\n this.totalCount = 0;\r\n this.scrollTo = 0;\r\n this.itemHeight = 0;\r\n this.itemWidth = 0;\r\n this.key = '';\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Injectable()\r\nexport class PaginationTitleService {\r\n private _defautlIcon = '../../../assets/images/logo.ico';\r\n private _defaultTitle = 'QR digital menu and e-commerce';\r\n constructor(\r\n private titleService: Title,\r\n @Inject(DOCUMENT) private document: Document,\r\n ) {\r\n\r\n }\r\n\r\n reset(): PaginationTitleService {\r\n this._setTitle(this._defaultTitle);\r\n this._setImage();\r\n\r\n return this;\r\n }\r\n\r\n setTitle(title: string): PaginationTitleService {\r\n this.titleService.setTitle(title);\r\n return this;\r\n }\r\n setImage(image: string): PaginationTitleService {\r\n this._setImage(image);\r\n return this;\r\n }\r\n\r\n private _setTitle(title: string = ''): void {\r\n this.titleService.setTitle(title || this._defaultTitle);\r\n }\r\n\r\n private _setImage(image: string = ''): void {\r\n const link = (this.document.querySelector('link[rel*=\"icon\"]') || this.document.createElement('link'));\r\n link.type = 'image/x-icon';\r\n link.rel = 'shortcut icon';\r\n link.href = image || this._defautlIcon;\r\n this.document.getElementsByTagName('head')[0].appendChild(link);\r\n }\r\n\r\n\r\n async setjivosite(id) {\r\n if (!id) {\r\n return;\r\n }\r\n const jivosite = document.createElement('script');\r\n jivosite.type = 'text/javascript';\r\n jivosite.src = '//code.jivosite.com/widget/' + id;\r\n jivosite.async = true;\r\n document.getElementsByTagName('head')[0].appendChild(jivosite);\r\n }\r\n}\r\n","\r\nimport { Injectable, Optional } from '@angular/core';\r\nimport {\r\n HttpClient, HttpHeaders, HttpParams,\r\n HttpResponse, HttpEvent\r\n} from '@angular/common/http';\r\n\r\nimport { Observable } from 'rxjs';\r\nimport { Configuration } from 'src/applazy/shared/models/configuration';\r\nimport { CustomHttpUrlEncodingCodec } from 'src/applazy/shared/models/encoder';\r\nimport { environment } from 'src/environments/environment';\r\nimport { IPartnersFilteredReadModel } from '../models/partner/partner.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SalePortalInfoService {\r\n\r\n protected basePath = environment.dataprocessing;\r\n public defaultHeaders = new HttpHeaders();\r\n public configuration = new Configuration();\r\n\r\n constructor(protected httpClient: HttpClient, @Optional() configuration: Configuration) {\r\n\r\n if (configuration) {\r\n this.configuration = configuration;\r\n this.configuration.basePath = configuration.basePath || this.basePath;\r\n\r\n } else {\r\n this.configuration.basePath = this.basePath;\r\n }\r\n }\r\n\r\n public partners(apiVersion: string, searchText: string, filters: { key: string, value: string }[], checkoutTypes: string, pageSize: number, pageIndex: number, nextPagesCount: number, startDate: string, endDate: string, observe?: 'body', reportProgress?: boolean): Observable;\r\n public partners(apiVersion: string, searchText: string, filters: { key: string, value: string }[], checkoutTypes: string, pageSize: number, pageIndex: number, nextPagesCount: number, startDate: string, endDate: string, observe?: 'response', reportProgress?: boolean): Observable>;\r\n public partners(apiVersion: string, searchText: string, filters: { key: string, value: string }[], checkoutTypes: string, pageSize: number, pageIndex: number, nextPagesCount: number, startDate: string, endDate: string, observe?: 'events', reportProgress?: boolean): Observable>;\r\n public partners(apiVersion: string, searchText: string, filters: { key: string, value: string }[], checkoutTypes: string, pageSize: number, pageIndex: number, nextPagesCount: number, startDate: string, endDate: string, observe: any = 'body', reportProgress: boolean = false): Observable {\r\n let headers = this.defaultHeaders;\r\n let queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() });\r\n if (searchText) {\r\n queryParameters = queryParameters.set('searchText', searchText);\r\n }\r\n if (checkoutTypes) {\r\n queryParameters = queryParameters.set('checkoutTypes', checkoutTypes);\r\n }\r\n if (pageSize) {\r\n queryParameters = queryParameters.set('pageSize', pageSize);\r\n }\r\n if (pageIndex !== null && pageIndex !== undefined) {\r\n queryParameters = queryParameters.set('pageIndex', pageIndex);\r\n }\r\n if (nextPagesCount) {\r\n queryParameters = queryParameters.set('nextPagesCount', nextPagesCount);\r\n }\r\n if (startDate) {\r\n queryParameters = queryParameters.set('startDate', startDate);\r\n }\r\n if (endDate) {\r\n queryParameters = queryParameters.set('endDate', endDate);\r\n }\r\n if (filters && filters.length > 0) {\r\n filters.forEach(f => {\r\n queryParameters = queryParameters.set(f.key, f.value);\r\n });\r\n }\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.get(`${this.configuration.basePath}/api/v${apiVersion}/directsaleportalinfo/partners`,\r\n {\r\n withCredentials: this.configuration.withCredentials,\r\n params: queryParameters,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n public partnersByKeys(apiVersion: string, teamKeys: string[], observe?: 'body', reportProgress?: boolean): Observable;\r\n public partnersByKeys(apiVersion: string, teamKeys: string[], observe?: 'response', reportProgress?: boolean): Observable>;\r\n public partnersByKeys(apiVersion: string, teamKeys: string[], observe?: 'events', reportProgress?: boolean): Observable>;\r\n public partnersByKeys(apiVersion: string, teamKeys: string[], observe: any = 'body', reportProgress: boolean = false): Observable {\r\n let headers = this.defaultHeaders;\r\n let queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() });\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'application/json',\r\n 'text/json'\r\n ];\r\n const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);\r\n if (httpHeaderAcceptSelected !== undefined) {\r\n headers = headers.set('Accept', httpHeaderAcceptSelected);\r\n }\r\n\r\n // to determine the Content-Type header\r\n const consumes: string[] = [\r\n ];\r\n\r\n return this.httpClient.post(`${this.configuration.basePath}/api/v${apiVersion}/saleportalinfo/GetPartnersByKeys`,\r\n teamKeys,\r\n {\r\n withCredentials: this.configuration.withCredentials,\r\n params: queryParameters,\r\n headers: headers,\r\n observe: observe,\r\n reportProgress: reportProgress\r\n }\r\n );\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\nimport { PaginatedItemReadModel } from \"../models/paginatedItemReadModel\";\r\nimport { IPartnerReadModel } from \"../models/partner/partner.model\";\r\nimport { SalePortalInfoService } from \"./salePortalInfo.service\";\r\n\r\n@Injectable()\r\nexport class SalePortalInfoDataService {\r\n private _apiVersion = '1.0';\r\n constructor(private salePortalInfoService: SalePortalInfoService) {\r\n\r\n }\r\n partners(searchText: string, pageSize: number, pageIndex: number): Observable> {\r\n return this.salePortalInfoService.partners(\r\n this._apiVersion,\r\n searchText,\r\n undefined,\r\n undefined,\r\n pageSize,\r\n pageIndex,\r\n 0,\r\n undefined,\r\n undefined).pipe(map(res => {\r\n return res.partnerPaginatedItemsReadModel;\r\n }))\r\n }\r\n partnersByKeys(keys: Array): Observable> {\r\n return this.salePortalInfoService.partnersByKeys(\r\n '1',\r\n keys\r\n ).pipe(map(res => {\r\n return res.partnerPaginatedItemsReadModel;\r\n }))\r\n }\r\n}","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { environment } from 'src/environments/environment';\r\nimport { IChangePasswordModel } from '../../partner/models/security.models';\r\n\r\n@Injectable()\r\nexport class SecurityService {\r\n\r\n constructor(\r\n private httpClient: HttpClient\r\n ) {\r\n }\r\n\r\n changeTeamPassword(model: IChangePasswordModel) {\r\n let headers = new HttpHeaders();\r\n const httpHeaderAccepts: string[] = [\r\n 'text/plain',\r\n 'text/json'\r\n ];\r\n headers = headers.set('Accept', 'application/json');\r\n\r\n headers = headers.set('Content-Type', 'application/json');\r\n\r\n return this.httpClient.post(`${environment.identityUrl}/IdentityServer/ChangeTeamPassword`,\r\n model,\r\n {\r\n withCredentials: false,\r\n headers: headers,\r\n observe: 'body',\r\n reportProgress: false\r\n }\r\n );\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { EventEmitter } from '@angular/core';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { ConfigService } from 'src/applazy/services/config.service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { ConstantService } from './constant.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class UserLocationService {\r\n private readonly _httpClient: HttpClient;\r\n private readonly _baseUrl: string;\r\n private readonly _apiKey: string;\r\n private _currentCountry: string;\r\n onSuccessCallback: EventEmitter<{ latitude: number, logitude: number }> = new EventEmitter<{ latitude: number, logitude: number }>();\r\n onFailCallback: EventEmitter<{ code: number, message: string }> = new EventEmitter<{ code: number, message: string }>();\r\n constructor(\r\n httpClient: HttpClient,\r\n configurationService: ConfigService\r\n ) {\r\n this._currentCountry = '';\r\n this._httpClient = httpClient;\r\n this._baseUrl = environment.googleLocationUrl;\r\n this._apiKey = configurationService.get('googlemapKey');\r\n if (environment.production) {\r\n this._apiKey = configurationService.get('googlemapKey');\r\n } else {\r\n this._apiKey = environment.googleApiKey;\r\n }\r\n }\r\n\r\n loadPosition(): void {\r\n if ('geolocation' in navigator) {\r\n const self = this;\r\n navigator.geolocation.getCurrentPosition((position) => {\r\n self.onSuccessCallback.emit({ latitude: position.coords.latitude, logitude: position.coords.longitude });\r\n }, err => {\r\n self.onFailCallback.emit({ code: Number(err.code), message: err.message });\r\n });\r\n } else {\r\n this.onFailCallback.emit({ code: 0, message: 'geolocation not found' });\r\n }\r\n }\r\n\r\n async getCountry(latitude: number, longitude: number): Promise {\r\n if (this._currentCountry) {\r\n return this._currentCountry;\r\n }\r\n const res = await this.getGeocodeInfo(latitude, longitude).toPromise();\r\n if (!res || (res && res.status === 'REQUEST_DENIED')) {\r\n return '';\r\n }\r\n const result = res.results.find(x => x.types[0] === 'country' && x.types[1] === 'political');\r\n const shortName = result.address_components[0].short_name;\r\n this._currentCountry = shortName;\r\n return shortName;\r\n }\r\n private getGeocodeInfo(latitude: number, longitude: number): Observable {\r\n ConstantService.IsExternalRequest = true;\r\n return this._httpClient.get(`${this._baseUrl}?latlng=${latitude},${longitude}&key=${this._apiKey}&language=en`).pipe(map(res => {\r\n return res;\r\n }, err => {\r\n return null;\r\n }));\r\n }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport {\r\n Directive,\r\n EventEmitter,\r\n HostListener,\r\n Inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n Output,\r\n Renderer2,\r\n SimpleChanges,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { fromEvent, merge, Subscription } from 'rxjs';\r\nimport { map, mergeMap, takeUntil } from 'rxjs/operators';\r\nimport { DatepickerModule } from './datepicker.module';\r\nimport { ISlimScrollEvent, ISlimScrollState, SlimScrollEvent, SlimScrollOptions, SlimScrollState, SLIMSCROLL_DEFAULTS } from './slimscroll';\r\n\r\nexport const easing: { [key: string]: (t: number) => number } = {\r\n linear: (t: number) => t,\r\n inQuad: (t: number) => t * t,\r\n outQuad: (t: number) => t * (2 - t),\r\n inOutQuad: (t: number) => (t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t),\r\n inCubic: (t: number) => t * t * t,\r\n outCubic: (t: number) => --t * t * t + 1,\r\n inOutCubic: (t: number) => (t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1),\r\n inQuart: (t: number) => t * t * t * t,\r\n outQuart: (t: number) => 1 - --t * t * t * t,\r\n inOutQuart: (t: number) => (t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t),\r\n inQuint: (t: number) => t * t * t * t * t,\r\n outQuint: (t: number) => 1 + --t * t * t * t * t,\r\n inOutQuint: (t: number) => (t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * --t * t * t * t * t)\r\n};\r\n\r\n@Directive({\r\n selector: '[slimScroll]', // tslint:disable-line\r\n exportAs: 'slimScroll'\r\n})\r\nexport class SlimScrollDirective implements OnInit, OnChanges, OnDestroy {\r\n @Input() enabled = true;\r\n @Input() options: SlimScrollOptions;\r\n @Input() scrollEvents: EventEmitter;\r\n @Output() scrollChanged = new EventEmitter();\r\n @Output() barVisibilityChange = new EventEmitter();\r\n\r\n el: HTMLElement;\r\n wrapper: HTMLElement;\r\n grid: HTMLElement;\r\n bar: HTMLElement;\r\n body: HTMLElement;\r\n pageY: number;\r\n top: number;\r\n dragging: boolean;\r\n mutationThrottleTimeout: number | any;\r\n mutationObserver: MutationObserver;\r\n lastTouchPositionY: number;\r\n visibleTimeout: any;\r\n interactionSubscriptions: Subscription;\r\n current: { max: number; percent: number };\r\n\r\n constructor(\r\n @Inject(ViewContainerRef) private viewContainer: ViewContainerRef,\r\n @Inject(Renderer2) private renderer: Renderer2,\r\n @Inject(DOCUMENT) private document: any,\r\n @Inject(SLIMSCROLL_DEFAULTS) @Optional() private optionsDefaults: any\r\n ) {\r\n this.el = this.viewContainer.element.nativeElement;\r\n this.body = this.document.querySelector('body');\r\n this.mutationThrottleTimeout = 50;\r\n }\r\n\r\n ngOnInit() {\r\n if (!this.interactionSubscriptions && this.enabled) {\r\n this.setup();\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.enabled) {\r\n if (this.enabled) {\r\n this.setup();\r\n } else {\r\n this.destroy();\r\n }\r\n }\r\n\r\n if (changes.options) {\r\n this.destroy();\r\n this.setup();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy();\r\n }\r\n\r\n setup() {\r\n this.interactionSubscriptions = new Subscription();\r\n if (this.optionsDefaults) {\r\n this.options = new SlimScrollOptions(this.optionsDefaults).merge(this.options);\r\n } else {\r\n this.options = new SlimScrollOptions(this.options);\r\n }\r\n\r\n this.setStyle();\r\n this.wrapContainer();\r\n this.initGrid();\r\n this.initBar();\r\n this.getBarHeight();\r\n this.initWheel();\r\n this.initDrag();\r\n\r\n if (!this.options.alwaysVisible) {\r\n this.hideBarAndGrid();\r\n }\r\n\r\n if (MutationObserver) {\r\n if (this.mutationObserver) {\r\n this.mutationObserver.disconnect();\r\n }\r\n this.mutationObserver = new MutationObserver(() => {\r\n if (this.mutationThrottleTimeout) {\r\n clearTimeout(this.mutationThrottleTimeout);\r\n this.mutationThrottleTimeout = setTimeout(this.onMutation.bind(this), 50);\r\n }\r\n });\r\n this.mutationObserver.observe(this.el, { subtree: true, childList: true });\r\n }\r\n\r\n if (this.scrollEvents && this.scrollEvents instanceof EventEmitter) {\r\n const scrollSubscription = this.scrollEvents.subscribe((event: SlimScrollEvent) => this.handleEvent(event));\r\n this.interactionSubscriptions.add(scrollSubscription);\r\n }\r\n }\r\n\r\n handleEvent(e: SlimScrollEvent): void {\r\n if (e.type === 'scrollToBottom') {\r\n const y = this.el.scrollHeight - this.el.clientHeight;\r\n this.scrollTo(y, e.duration, e.easing);\r\n } else if (e.type === 'scrollToTop') {\r\n const y = 0;\r\n this.scrollTo(y, e.duration, e.easing);\r\n } else if (e.type === 'scrollToPercent' && e.percent >= 0 && e.percent <= 100) {\r\n const y = Math.round(((this.el.scrollHeight - this.el.clientHeight) / 100) * e.percent);\r\n this.scrollTo(y, e.duration, e.easing);\r\n } else if (e.type === 'scrollTo') {\r\n const max = this.el.scrollHeight - this.el.clientHeight;\r\n const y = e.y <= max ? e.y : max;\r\n if (y >= 0) {\r\n this.scrollTo(y, e.duration, e.easing);\r\n }\r\n } else if (e.type === 'recalculate') {\r\n this.getBarHeight();\r\n }\r\n }\r\n\r\n setStyle(): void {\r\n const el = this.el;\r\n this.renderer.setStyle(el, 'overflow', 'hidden');\r\n }\r\n\r\n onMutation() {\r\n this.getBarHeight();\r\n this.setBarTop();\r\n }\r\n\r\n wrapContainer(): void {\r\n this.wrapper = this.renderer.createElement('div');\r\n const wrapper = this.wrapper;\r\n const el = this.el;\r\n\r\n this.renderer.addClass(wrapper, 'slimscroll-wrapper');\r\n this.renderer.setStyle(wrapper, 'position', 'relative');\r\n this.renderer.setStyle(wrapper, 'overflow', 'hidden');\r\n this.renderer.setStyle(wrapper, 'display', 'block');\r\n this.renderer.setStyle(wrapper, 'margin', getComputedStyle(el).margin);\r\n this.renderer.setStyle(wrapper, 'width', '100%');\r\n this.renderer.setStyle(wrapper, 'height', getComputedStyle(el).height);\r\n\r\n this.renderer.insertBefore(el.parentNode, wrapper, el);\r\n this.renderer.appendChild(wrapper, el);\r\n }\r\n\r\n initGrid(): void {\r\n this.grid = this.renderer.createElement('div');\r\n const grid = this.grid;\r\n\r\n this.renderer.addClass(grid, 'slimscroll-grid');\r\n this.renderer.setStyle(grid, 'position', 'absolute');\r\n this.renderer.setStyle(grid, 'top', '0');\r\n this.renderer.setStyle(grid, 'bottom', '0');\r\n this.renderer.setStyle(grid, this.options.position, '0');\r\n this.renderer.setStyle(grid, 'width', `${this.options.gridWidth}px`);\r\n this.renderer.setStyle(grid, 'background', this.options.gridBackground);\r\n this.renderer.setStyle(grid, 'opacity', this.options.gridOpacity);\r\n this.renderer.setStyle(grid, 'display', 'block');\r\n this.renderer.setStyle(grid, 'cursor', 'pointer');\r\n this.renderer.setStyle(grid, 'z-index', '99');\r\n this.renderer.setStyle(grid, 'border-radius', `${this.options.gridBorderRadius}px`);\r\n this.renderer.setStyle(grid, 'margin', this.options.gridMargin);\r\n\r\n this.renderer.appendChild(this.wrapper, grid);\r\n }\r\n\r\n initBar(): void {\r\n this.bar = this.renderer.createElement('div');\r\n const bar = this.bar;\r\n\r\n this.renderer.addClass(bar, 'slimscroll-bar');\r\n this.renderer.setStyle(bar, 'position', 'absolute');\r\n this.renderer.setStyle(bar, 'top', '0');\r\n this.renderer.setStyle(bar, this.options.position, '0');\r\n this.renderer.setStyle(bar, 'width', `${this.options.barWidth}px`);\r\n this.renderer.setStyle(bar, 'background', this.options.barBackground);\r\n this.renderer.setStyle(bar, 'opacity', this.options.barOpacity);\r\n this.renderer.setStyle(bar, 'display', 'block');\r\n this.renderer.setStyle(bar, 'cursor', 'pointer');\r\n this.renderer.setStyle(bar, 'z-index', '100');\r\n this.renderer.setStyle(bar, 'border-radius', `${this.options.barBorderRadius}px`);\r\n this.renderer.setStyle(bar, 'margin', this.options.barMargin);\r\n\r\n this.renderer.appendChild(this.wrapper, bar);\r\n this.barVisibilityChange.emit(true);\r\n }\r\n\r\n getBarHeight(): void {\r\n const elHeight = this.el.offsetHeight;\r\n const barHeight = Math.max((elHeight / this.el.scrollHeight) * elHeight, 30) + 'px';\r\n const display = parseInt(barHeight, 10) === elHeight ? 'none' : 'block';\r\n\r\n if (this.wrapper.offsetHeight !== elHeight) {\r\n this.renderer.setStyle(this.wrapper, 'height', elHeight + 'px');\r\n }\r\n\r\n this.renderer.setStyle(this.bar, 'height', barHeight);\r\n this.renderer.setStyle(this.bar, 'display', display);\r\n this.renderer.setStyle(this.grid, 'display', display);\r\n this.barVisibilityChange.emit(display !== 'none');\r\n }\r\n\r\n scrollTo(y: number, duration: number, easingFunc: string): void {\r\n const start = Date.now();\r\n const from = this.el.scrollTop;\r\n const paddingTop = parseInt(this.el.style.paddingTop, 10) || 0;\r\n const paddingBottom = parseInt(this.el.style.paddingBottom, 10) || 0;\r\n\r\n const scroll = () => {\r\n const currentTime = Date.now();\r\n const time = Math.min(1, (currentTime - start) / duration);\r\n const easedTime = easing[easingFunc](time);\r\n\r\n if (paddingTop > 0 || paddingBottom > 0) {\r\n let fromY = null;\r\n\r\n if (paddingTop > 0) {\r\n fromY = -paddingTop;\r\n fromY = -(easedTime * (y - fromY) + fromY);\r\n this.renderer.setStyle(this.el, 'padding-top', `${fromY}px`);\r\n }\r\n\r\n if (paddingBottom > 0) {\r\n fromY = paddingBottom;\r\n fromY = easedTime * (y - fromY) + fromY;\r\n this.renderer.setStyle(this.el, 'padding-bottom', `${fromY}px`);\r\n }\r\n } else {\r\n this.el.scrollTop = easedTime * (y - from) + from;\r\n }\r\n\r\n this.setBarTop();\r\n this.saveCurrent();\r\n this.updateScrollState();\r\n\r\n if (time < 1) {\r\n requestAnimationFrame(scroll);\r\n }\r\n };\r\n\r\n if (!duration || !easingFunc) {\r\n this.el.scrollTop = y;\r\n this.setBarTop();\r\n this.saveCurrent();\r\n this.updateScrollState();\r\n } else {\r\n requestAnimationFrame(scroll);\r\n }\r\n }\r\n\r\n scrollContent(y: number, isWheel: boolean, isJump: boolean): null | number {\r\n let delta = y;\r\n const maxTop = this.el.offsetHeight - this.bar.offsetHeight;\r\n const hiddenContent = this.el.scrollHeight - this.el.offsetHeight;\r\n let percentScroll: number;\r\n let over = null;\r\n\r\n if (isWheel) {\r\n delta = parseInt(getComputedStyle(this.bar).top, 10) + ((y * 20) / 100) * this.bar.offsetHeight;\r\n\r\n if (delta < 0 || delta > maxTop) {\r\n over = delta > maxTop ? delta - maxTop : delta;\r\n }\r\n\r\n delta = Math.min(Math.max(delta, 0), maxTop);\r\n delta = y > 0 ? Math.ceil(delta) : Math.floor(delta);\r\n this.renderer.setStyle(this.bar, 'top', delta + 'px');\r\n }\r\n\r\n percentScroll = parseInt(getComputedStyle(this.bar).top, 10) / (this.el.offsetHeight - this.bar.offsetHeight);\r\n delta = percentScroll * hiddenContent;\r\n\r\n this.el.scrollTop = delta;\r\n\r\n this.showBarAndGrid();\r\n\r\n if (!this.options.alwaysVisible) {\r\n if (this.visibleTimeout) {\r\n clearTimeout(this.visibleTimeout);\r\n }\r\n\r\n this.visibleTimeout = setTimeout(() => {\r\n this.hideBarAndGrid();\r\n }, this.options.visibleTimeout);\r\n }\r\n\r\n this.updateScrollState();\r\n this.saveCurrent();\r\n\r\n return over;\r\n }\r\n\r\n updateScrollState(): void {\r\n const isScrollAtStart = this.el.scrollTop === 0;\r\n const isScrollAtEnd = this.el.scrollTop === this.el.scrollHeight - this.el.offsetHeight;\r\n const scrollPosition = Math.ceil(this.el.scrollTop);\r\n const scrollState = new SlimScrollState({ scrollPosition, isScrollAtStart, isScrollAtEnd });\r\n this.scrollChanged.emit(scrollState);\r\n }\r\n\r\n initWheel(): void {\r\n const dommousescroll = fromEvent(this.el, 'DOMMouseScroll');\r\n const mousewheel = fromEvent(this.el, 'mousewheel');\r\n\r\n const wheelSubscription = merge(...[dommousescroll, mousewheel]).subscribe((e: WheelEvent) => {\r\n let delta = 0;\r\n\r\n if ((e as any).wheelDelta) {\r\n delta = -(e as any).wheelDelta / 120;\r\n }\r\n\r\n if (e.detail) {\r\n delta = e.detail / 3;\r\n }\r\n\r\n const over = this.scrollContent(delta, true, false);\r\n\r\n if (e.preventDefault && (this.options.alwaysPreventDefaultScroll || over === null)) {\r\n e.preventDefault();\r\n }\r\n });\r\n\r\n this.interactionSubscriptions.add(wheelSubscription);\r\n }\r\n\r\n initDrag(): void {\r\n const bar = this.bar;\r\n\r\n const mousemove = fromEvent(this.document.documentElement, 'mousemove');\r\n const touchmove = fromEvent(this.document.documentElement, 'touchmove');\r\n\r\n const mousedown = fromEvent(bar, 'mousedown');\r\n const touchstart = fromEvent(this.el, 'touchstart');\r\n const mouseup = fromEvent(this.document.documentElement, 'mouseup');\r\n const touchend = fromEvent(this.document.documentElement, 'touchend');\r\n\r\n const mousedrag = mousedown.pipe(\r\n mergeMap((e: MouseEvent) => {\r\n this.pageY = e.pageY;\r\n this.top = parseFloat(getComputedStyle(bar).top);\r\n\r\n return mousemove.pipe(\r\n map((emove: MouseEvent) => {\r\n emove.preventDefault();\r\n return this.top + emove.pageY - this.pageY;\r\n }),\r\n takeUntil(mouseup)\r\n );\r\n })\r\n );\r\n\r\n const touchdrag = touchstart.pipe(\r\n mergeMap((e: TouchEvent) => {\r\n this.pageY = e.targetTouches[0].pageY;\r\n this.top = -parseFloat(getComputedStyle(bar).top);\r\n\r\n return touchmove.pipe(\r\n map((tmove: TouchEvent) => {\r\n return -(this.top + tmove.targetTouches[0].pageY - this.pageY);\r\n }),\r\n takeUntil(touchend)\r\n );\r\n })\r\n );\r\n\r\n const dragSubscription = merge(...[mousedrag, touchdrag]).subscribe((top: number) => {\r\n this.body.addEventListener('selectstart', this.preventDefaultEvent, false);\r\n this.renderer.setStyle(this.body, 'touch-action', 'pan-y');\r\n this.renderer.setStyle(this.body, 'user-select', 'none');\r\n this.renderer.setStyle(this.bar, 'top', `${top}px`);\r\n const over = this.scrollContent(0, true, false);\r\n const maxTop = this.el.offsetHeight - this.bar.offsetHeight;\r\n\r\n if (over && over < 0 && -over <= maxTop) {\r\n this.renderer.setStyle(this.el, 'paddingTop', -over + 'px');\r\n } else if (over && over > 0 && over <= maxTop) {\r\n this.renderer.setStyle(this.el, 'paddingBottom', over + 'px');\r\n }\r\n });\r\n\r\n const dragEndSubscription = merge(...[mouseup, touchend]).subscribe(() => {\r\n this.body.removeEventListener('selectstart', this.preventDefaultEvent, false);\r\n const paddingTop = parseInt(this.el.style.paddingTop, 10);\r\n const paddingBottom = parseInt(this.el.style.paddingBottom, 10);\r\n this.renderer.setStyle(this.body, 'touch-action', 'unset');\r\n this.renderer.setStyle(this.body, 'user-select', 'default');\r\n\r\n if (paddingTop > 0) {\r\n this.scrollTo(0, 300, 'linear');\r\n } else if (paddingBottom > 0) {\r\n this.scrollTo(0, 300, 'linear');\r\n }\r\n });\r\n\r\n this.interactionSubscriptions.add(dragSubscription);\r\n this.interactionSubscriptions.add(dragEndSubscription);\r\n }\r\n\r\n setBarTop(): void {\r\n const barHeight = Math.max((this.el.offsetHeight / this.el.scrollHeight) * this.el.offsetHeight, 30);\r\n const maxScrollTop = this.el.scrollHeight - this.el.clientHeight;\r\n const paddingBottom = parseInt(this.el.style.paddingBottom, 10) || 0;\r\n const percentScroll = this.el.scrollTop / maxScrollTop;\r\n if (paddingBottom === 0) {\r\n const delta = Math.round((this.el.clientHeight - barHeight) * percentScroll);\r\n if (delta > 0) {\r\n this.renderer.setStyle(this.bar, 'top', `${delta}px`);\r\n }\r\n }\r\n }\r\n\r\n saveCurrent(): void {\r\n const max = this.el.scrollHeight - this.el.clientHeight;\r\n const percent = this.el.scrollTop / max;\r\n this.current = { max, percent };\r\n }\r\n\r\n showBarAndGrid(): void {\r\n this.renderer.setStyle(this.grid, 'background', this.options.gridBackground);\r\n this.renderer.setStyle(this.bar, 'background', this.options.barBackground);\r\n }\r\n\r\n hideBarAndGrid(): void {\r\n this.renderer.setStyle(this.grid, 'background', 'transparent');\r\n this.renderer.setStyle(this.bar, 'background', 'transparent');\r\n }\r\n\r\n preventDefaultEvent(e: MouseEvent): void {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n\r\n destroy(): void {\r\n if (this.mutationObserver) {\r\n this.mutationObserver.disconnect();\r\n this.mutationObserver = null;\r\n }\r\n\r\n if (this.el.parentElement.classList.contains('slimscroll-wrapper')) {\r\n const wrapper = this.el.parentElement;\r\n const bar = wrapper.querySelector('.slimscroll-bar');\r\n wrapper.removeChild(bar);\r\n const grid = wrapper.querySelector('.slimscroll-grid');\r\n wrapper.removeChild(grid);\r\n this.unwrap(wrapper);\r\n }\r\n\r\n if (this.interactionSubscriptions) {\r\n this.interactionSubscriptions.unsubscribe();\r\n }\r\n }\r\n\r\n unwrap(wrapper: HTMLElement): void {\r\n const docFrag = document.createDocumentFragment();\r\n while (wrapper.firstChild) {\r\n const child = wrapper.removeChild(wrapper.firstChild);\r\n docFrag.appendChild(child);\r\n }\r\n wrapper.parentNode.replaceChild(docFrag, wrapper);\r\n }\r\n\r\n @HostListener('window:resize', []) onResize() {\r\n const { percent } = { ...this.current };\r\n this.destroy();\r\n this.setup();\r\n this.scrollTo(Math.round((this.el.scrollHeight - this.el.clientHeight) * percent), null, null);\r\n }\r\n}\r\n","\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { DatepickerComponent } from './datepicker.component';\r\nimport { SlimScrollDirective } from './slimscroll.directive';\r\n\r\n@NgModule({\r\n declarations: [DatepickerComponent, SlimScrollDirective],\r\n imports: [CommonModule, FormsModule],\r\n exports: [DatepickerComponent, CommonModule, FormsModule]\r\n})\r\nexport class DatepickerModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { StorageService } from '../services/storage.service';\r\nimport { ConstantService, StorageKeys } from '../shared/services/constant.service';\r\nimport { UUID } from 'angular2-uuid';\r\nimport { ClientTokens, User } from '../shared/models/User';\r\n@Injectable()\r\nexport class CredentialsInterceptor implements HttpInterceptor {\r\n constructor(\r\n private storage: StorageService\r\n ) { }\r\n\r\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n if (ConstantService.IsExternalRequest) {\r\n ConstantService.IsExternalRequest = false;\r\n return next.handle(request);\r\n }\r\n const headers = {};\r\n const salePortalKey = this.storage.retrieve('SALE_PORTAL_KEY');\r\n const originSalePortalKey = User.OriginSalePortalKey;\r\n const teamReferer = this.storage.retrieve(StorageKeys.SALE_PORTAL_SELECTED_PARTNER);\r\n const adminReferer = this.storage.retrieve(StorageKeys.SALE_PORTAL_COMPANY_SELECTED_PARTNER);\r\n let companyTypeId = this.storage.retrieve(StorageKeys.SALE_PORTAL_COMPANY_TYPE_KEY);\r\n if (!companyTypeId) {\r\n companyTypeId = ConstantService.EmptyGuid;\r\n }\r\n if (salePortalKey) {\r\n headers['saleportalkey'] = salePortalKey;\r\n }\r\n if (originSalePortalKey) {\r\n headers['saleportalkey'] = originSalePortalKey;\r\n }\r\n if (salePortalKey && teamReferer) {\r\n headers['teamreferer'] = `https://${teamReferer}.bonee.net`;\r\n headers['autoDecode'] = 'false';\r\n }\r\n if (salePortalKey && adminReferer && (!teamReferer || teamReferer === adminReferer) && companyTypeId) {\r\n headers['teamreferer'] = `https://${adminReferer}.bonee.net`;\r\n headers['CompanyTypeKey'] = companyTypeId;\r\n }\r\n if (!headers['x-requestId']) {\r\n headers['x-requestId'] = UUID.UUID();\r\n }\r\n let clientToken = ClientTokens.SalePortal;\r\n if (User.ClientToken) {\r\n clientToken = User.ClientToken;\r\n }\r\n headers['clienttoken'] = clientToken;\r\n request = request.clone({\r\n setHeaders: headers\r\n });\r\n return next.handle(request);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { StorageService } from '../services/storage.service';\r\nimport { ConstantService, StorageKeys } from '../shared/services/constant.service';\r\n@Injectable()\r\nexport class JwtInterceptor implements HttpInterceptor {\r\n constructor(\r\n private storage: StorageService\r\n ) { }\r\n\r\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n if (ConstantService.IsExternalRequest) {\r\n return next.handle(request);\r\n }\r\n const token = this.storage.retrieve('access_token');\r\n if (!token) {\r\n return next.handle(request);\r\n }\r\n const headers = {};\r\n\r\n headers['Authorization'] = `Bearer ${token}`;\r\n\r\n request = request.clone({\r\n setHeaders: headers\r\n });\r\n return next.handle(request);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n HttpEvent,\r\n HttpInterceptor,\r\n HttpHandler,\r\n HttpRequest,\r\n HttpResponse\r\n} from '@angular/common/http';\r\nimport { Observable, throwError as observableThrowError } from 'rxjs';\r\nimport { tap, catchError, finalize } from 'rxjs/operators';\r\nimport { LoaderService } from './loader.service';\r\nimport { ErrorsService } from '../shared/services/errors.service';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LoaderInterceptor implements HttpInterceptor {\r\n allowAnimate = false;\r\n private _ignoreApis = [environment.signalRUrl];\r\n constructor(\r\n private loaderService: LoaderService,\r\n private errorsService: ErrorsService\r\n ) { }\r\n\r\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\r\n const isPost = req.method.toLowerCase() === 'post' || req.method.toLowerCase() === 'put';\r\n if (this._ignoreApis.findIndex(api => req.url.startsWith(api)) === -1) {\r\n this.showLoader(isPost);\r\n } else {\r\n }\r\n return next.handle(req).pipe(\r\n catchError(this.onCatch),\r\n tap(\r\n (event: HttpEvent) => {\r\n if (event instanceof HttpResponse) {\r\n this.onSuccess(event);\r\n }\r\n },\r\n (err: any) => {\r\n this.onError(err);\r\n }\r\n ),\r\n finalize(() => {\r\n this.onEnd();\r\n })\r\n );\r\n }\r\n private onCatch(error: any, caught: Observable): Observable {\r\n return observableThrowError(error);\r\n }\r\n\r\n private onSuccess(res: HttpResponse): void {\r\n console.log('Request successful');\r\n }\r\n\r\n private onError(res: HttpResponse): void {\r\n this.errorsService.addError({ code: res.status });\r\n console.log('Error, status code: ' + res.status);\r\n }\r\n\r\n private onEnd(): void {\r\n this.hideLoader();\r\n }\r\n\r\n private showLoader(isPost: boolean): void {\r\n this.allowAnimate = true;\r\n this.loaderService.show(isPost);\r\n }\r\n\r\n private hideLoader(): void {\r\n this.allowAnimate = false;\r\n this.loaderService.hide();\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { GoogleMapsScriptProtocol, MapsAPILoader, LazyMapsAPILoaderConfigLiteral, LAZY_MAPS_API_CONFIG } from '@agm/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { TranslationLanguageService } from 'src/applazy/services/translationlanguage.service';\r\nimport { ConfigService } from 'src/applazy/services/config.service';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable()\r\nexport class CustomMapsAPILoader extends MapsAPILoader {\r\n private _script: any;\r\n private _scriptLoadingPromise: Promise;\r\n private _config: LazyMapsAPILoaderConfigLiteral;\r\n // private _windowRef: WindowRef;\r\n // private _documentRef: DocumentRef;\r\n private _translateService: TranslateService;\r\n private _translationLanguageService: TranslationLanguageService;\r\n private _manifestConfigurationService: ConfigService;\r\n\r\n\r\n constructor(\r\n @Inject(LAZY_MAPS_API_CONFIG) config: any,\r\n // w: WindowRef,\r\n // d: DocumentRef,\r\n @Inject(DOCUMENT) private document: Document,\r\n @Inject(TranslationLanguageService) translationLanguageService: TranslationLanguageService,\r\n @Inject(TranslateService) translateService: TranslateService,\r\n @Inject(ConfigService) manifestConfigurationService\r\n ) {\r\n super();\r\n this._config = config || {};\r\n // this._windowRef = w;\r\n // this._documentRef = d;\r\n this._translateService = translateService;\r\n this._translationLanguageService = translationLanguageService;\r\n this._manifestConfigurationService = manifestConfigurationService;\r\n this._translationLanguageService.mainPanelLanguageChanged.subscribe(res => {\r\n setTimeout(() => {\r\n const w = window as any;\r\n if (w.google) {\r\n w.google.maps = null;\r\n }\r\n const element = this.document.getElementById('googleMapApiLoader');\r\n if (element) {\r\n element.remove();\r\n }\r\n this._scriptLoadingPromise = undefined;\r\n this._script = undefined;\r\n }, 200);\r\n });\r\n }\r\n\r\n load(): Promise {\r\n const lang = this._translationLanguageService.authLanguagesArr.find(x => x.name === this._translateService.currentLang);\r\n if (this._scriptLoadingPromise) {\r\n return this._scriptLoadingPromise;\r\n }\r\n if (lang) {\r\n this._config.language = lang.googleName;\r\n }\r\n // this._config.region = this._profileDataService.configurationModel.countryCode;\r\n const callbackName = `agmLazyMapsAPILoader`;\r\n this._script = this.document.createElement('script');\r\n this._script.id = 'googleMapApiLoader';\r\n this._script.type = 'text/javascript';\r\n this._script.async = true;\r\n this._script.defer = true;\r\n this._script.src = this._getScriptSrc(callbackName);\r\n this.document.body.appendChild(this._script);\r\n this._scriptLoadingPromise = new Promise((resolve: Function, reject: Function) => {\r\n const w = window as any;\r\n const a = w[callbackName];\r\n w[callbackName] = undefined;\r\n (w)[callbackName] = () => { resolve(); };\r\n\r\n this._script.onerror = (error: Event) => { reject(error); };\r\n }).catch(err => { });\r\n return this._scriptLoadingPromise;\r\n }\r\n\r\n private _getScriptSrc(callbackName: string): string {\r\n const protocolType: GoogleMapsScriptProtocol =\r\n (this._config && this._config.protocol) || GoogleMapsScriptProtocol.HTTPS;\r\n let protocol: string;\r\n\r\n switch (protocolType) {\r\n case GoogleMapsScriptProtocol.AUTO:\r\n protocol = '';\r\n break;\r\n case GoogleMapsScriptProtocol.HTTP:\r\n protocol = 'http:';\r\n break;\r\n case GoogleMapsScriptProtocol.HTTPS:\r\n protocol = 'https:';\r\n break;\r\n }\r\n\r\n const hostAndPath: string = this._config.hostAndPath || 'maps.googleapis.com/maps/api/js';\r\n const queryParams: { [key: string]: string | Array } = {\r\n v: this._config.apiVersion || '3',\r\n callback: callbackName,\r\n key: this._getKey(),\r\n client: this._config.clientId,\r\n channel: this._config.channel,\r\n libraries: this._config.libraries,\r\n region: this._config.region,\r\n language: this._config.language\r\n };\r\n const params: string =\r\n Object.keys(queryParams)\r\n .filter((k: string) => queryParams[k] != null)\r\n .filter((k: string) => {\r\n // remove empty arrays\r\n return !Array.isArray(queryParams[k]) ||\r\n (Array.isArray(queryParams[k]) && queryParams[k].length > 0);\r\n })\r\n .map((k: string) => {\r\n // join arrays as comma seperated strings\r\n const i = queryParams[k];\r\n if (Array.isArray(i)) {\r\n return { key: k, value: i.join(',') };\r\n }\r\n return { key: k, value: queryParams[k] };\r\n })\r\n .map((entry: { key: string, value: string }) => `${entry.key}=${entry.value}`)\r\n .join('&');\r\n return `${protocol}//${hostAndPath}?${params}`;\r\n }\r\n private _getKey() {\r\n if (!environment.production) {\r\n return environment.googleApiKey;\r\n }\r\n if (this._manifestConfigurationService.get('googlemapKey')) {\r\n return this._manifestConfigurationService.get('googlemapKey');\r\n }\r\n return this._config.apiKey;\r\n }\r\n}\r\n\r\nexport class WindowRef {\r\n getNativeWindow(): any { return window; }\r\n}\r\n\r\nexport class DocumentRef {\r\n getNativeDocument(): any { return document; }\r\n}\r\n","import { AgmCoreModule, MapsAPILoader } from '@agm/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\r\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { MissingTranslationHandler, TranslateLoader, TranslateModule } from '@ngx-translate/core';\r\nimport { ColorPickerModule } from 'ngx-color-picker';\r\nimport { ImageCropperModule } from 'ngx-image-cropper';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { DatepickerModule } from '../datepicker/datepicker.module';\r\nimport { DirectTranslationService, TranslationService } from '../generatedmodules/translation/api';\r\nimport { DomSanitizerDirective } from '../sanitizer/directives/domSanitizer.directive';\r\nimport { SanitizerModule } from '../sanitizer/sanitizer.module';\r\nimport { AuthService } from '../services/auth.service';\r\nimport { CredentialsInterceptor } from '../services/credentials.iterceptor';\r\nimport { JwtInterceptor } from '../services/jwt.interceptor';\r\nimport { LoaderInterceptor } from '../services/loader.interceptor';\r\nimport { StorageService } from '../services/storage.service';\r\nimport { TextEditorModule } from '../textEditor/textEditor.module';\r\nimport { AccordionListComponent } from './components/accordion-list/accordion-list.component';\r\nimport { AddInputComponent } from './components/add-input/add-input.component';\r\nimport { AppSwitcherComponent } from './components/app-switcher/app-switcher.component';\r\nimport { TranslateEditorComponent } from './components/app-translate-editor/translate-editor.component';\r\nimport { CardItemComponent } from './components/card-item/card-item.component';\r\nimport { CheckoutFormItemComponent } from './components/checkout-form/checkout-form-item/checkout-form-item.component';\r\nimport { CheckoutFormComponent } from './components/checkout-form/checkout-form.component';\r\nimport { CheckoutModalComponent } from './components/checkout-modal/checkout-modal.component';\r\nimport { DropListComponent } from './components/droplist/droplist.component';\r\nimport { DropListService } from './components/droplist/services/droplist.service';\r\nimport { DroptreeComponent } from './components/droptree/droptree.component';\r\nimport { DropTreeSubscriptionsService } from './components/droptree/services/droptreeSubscriptions.service';\r\nimport { MapComponent } from './components/google-map/app-map.component';\r\nimport { MapDrawComponent } from './components/google-map/draw/app-map-draw.component';\r\nimport { MapInputComponent } from './components/google-map/input/app-map-input.component';\r\nimport { CustomMapsAPILoader } from './components/google-map/loader/customMapsApiLoader';\r\nimport { MapPolygonComponent } from './components/google-map/polygon/app-map-polygon.component';\r\nimport { HeaderComponent } from './components/header/header.component';\r\nimport { ImageCropperModalComponent } from './components/image-cropper-modal/app-image-cropper-modal.component';\r\nimport { ImageCropperComponent } from './components/image-cropper/image-cropper.component';\r\nimport { ImagesGalleryModalComponent } from './components/images-gallery-modal/images-gallery-modal.component';\r\nimport { ImagesComponent } from './components/images/images.component';\r\nimport { LanguagePreferenceComponent } from './components/language-preference/language-preference.component';\r\nimport { LanguagesComponent } from './components/languages/languages.component';\r\nimport { LoaderComponent } from './components/loader/loader.component';\r\nimport { MainGalleryFullscreenComponent } from './components/main-gallery-fullscreen/main-gallery-fullscreen.component';\r\nimport { MainGalleryImagesComponent } from './components/main-gallery-images/main-gallery-images.component';\r\nimport { MessageboxComponent } from './components/messagebox/messagebox.component';\r\nimport { NavigationMenuComponent } from './components/navigation/menu/navigation-menu.component';\r\nimport { NotificationBaseComponent } from './components/notification-base/notification-base.component';\r\nimport { OrderStatusInfoComponent } from './components/order-status-info/order-status-info.component';\r\nimport { PageNotFoundComponent } from './components/page-not-found/page-not-found.component';\r\nimport { SecurityComponent } from './components/security/security.component';\r\nimport { SideBarListComponent } from './components/sidebar-list/sidebar-list.component';\r\nimport { SideBarComponent } from './components/sidebar/sidebar.component';\r\nimport { TablesComponent } from './components/tables/tables.component';\r\nimport { TimesGroupComponent } from './components/times/group/times-group.component';\r\nimport { TimesItemComponent } from './components/times/times-item/times-item.component';\r\nimport { TimesComponent } from './components/times/times.component';\r\nimport { ToppanelComponent } from './components/toppanel/toppanel.component';\r\nimport { ClickOutsideDirective } from './directives/clickoutside.directive';\r\nimport { FloatPipe } from './directives/float.directive';\r\nimport { FormFirstInvalidInputFocusDirective } from './directives/formFirstInvalidInputFocus.directive';\r\nimport { KeyWordDirective } from './directives/keyword.directive';\r\nimport { NumberOnlyRegDirective } from './directives/numberonlyreg.directive';\r\nimport { PagechangeDirective } from './directives/pageChange.directive';\r\nimport { ResizableDirective } from './directives/resizeColumn.directive';\r\nimport { RtlLangDirective } from './directives/rtlLang.directive';\r\nimport { ScrollDataDirective } from './directives/scrolldata.directive';\r\nimport { UserRolesDirective } from './directives/userroles.directive';\r\nimport { LazyFakeMissingTranslationHandler } from './handlers/lazyFakeMissingTranslationHandler';\r\nimport { TranslationLoader } from './loaders/translationloader';\r\nimport { KeysPipe } from './pipes/KeysPipe';\r\nimport { SafePipe } from './pipes/SafePipe';\r\nimport { DateFormatPipe } from './pipes/dataformatPipe';\r\nimport { ImageSizePipe } from './pipes/imagesize.pipe';\r\nimport { LazyTranslatePipe } from './pipes/lazy-translate.pipe';\r\nimport { LinkPipe } from './pipes/link.pipe';\r\nimport { UTCDatePipe } from './pipes/utcdate.pipe';\r\nimport { GlobalizationService } from './services/globalization.service';\r\nimport { HelperService } from './services/helper.service';\r\nimport { ImageStoreDataService } from './services/imageStoreData.service';\r\nimport { ImageStoreService } from './services/imagestore/imageStore.service';\r\nimport { TemporaryImagesService } from './services/imagestore/temporaryImages.service';\r\nimport { StoreMarketPlaceOrderService } from './services/marketplace/storeMarketPlaceOrder.service';\r\nimport { NavigationService } from './services/navigation.service';\r\nimport { OrderStatusInfoService } from './services/order/orderstatusinfo.service';\r\nimport { SalePortalInfoService } from './services/salePortalInfo.service';\r\nimport { SalePortalInfoDataService } from './services/saleportalinfodata.service';\r\nimport { SecurityService } from './services/security.service';\r\nimport { UserLocationService } from './services/userlocation.service';\r\nimport { EqualValidator } from './validators/custom_validators';\r\n\r\nexport function HttpLoaderFactory(storageService: StorageService, translationService: TranslationService, directTranslationService: DirectTranslationService, authService: AuthService) {\r\n return new TranslationLoader(storageService, translationService, directTranslationService, authService);\r\n}\r\n\r\n@NgModule({\r\n declarations: [\r\n DateFormatPipe,\r\n ImageSizePipe,\r\n KeysPipe,\r\n LazyTranslatePipe,\r\n SafePipe,\r\n UTCDatePipe,\r\n\r\n MessageboxComponent,\r\n LoaderComponent,\r\n TimesItemComponent,\r\n TimesComponent,\r\n TimesGroupComponent,\r\n NavigationMenuComponent,\r\n ToppanelComponent,\r\n LanguagesComponent,\r\n LanguagePreferenceComponent,\r\n SecurityComponent,\r\n MapComponent,\r\n MapInputComponent,\r\n MapDrawComponent,\r\n MapPolygonComponent,\r\n ImagesComponent,\r\n ImageCropperComponent,\r\n ImageCropperModalComponent,\r\n ImagesGalleryModalComponent,\r\n TablesComponent,\r\n HeaderComponent,\r\n DropListComponent,\r\n DroptreeComponent,\r\n AccordionListComponent,\r\n CardItemComponent,\r\n CheckoutFormComponent,\r\n CheckoutFormItemComponent,\r\n NotificationBaseComponent,\r\n SideBarComponent,\r\n SideBarListComponent,\r\n MainGalleryImagesComponent,\r\n MainGalleryFullscreenComponent,\r\n PageNotFoundComponent,\r\n AddInputComponent,\r\n CheckoutModalComponent,\r\n OrderStatusInfoComponent,\r\n TranslateEditorComponent,\r\n FloatPipe,\r\n LinkPipe,\r\n NumberOnlyRegDirective,\r\n PagechangeDirective,\r\n FormFirstInvalidInputFocusDirective,\r\n RtlLangDirective,\r\n UserRolesDirective,\r\n ScrollDataDirective,\r\n ClickOutsideDirective,\r\n KeyWordDirective,\r\n ResizableDirective,\r\n\r\n EqualValidator,\r\n AppSwitcherComponent\r\n ],\r\n exports: [\r\n FormsModule,\r\n ImageCropperModule,\r\n AgmCoreModule,\r\n TranslateModule,\r\n InfiniteScrollModule,\r\n ColorPickerModule,\r\n DatepickerModule,\r\n SanitizerModule,\r\n DateFormatPipe,\r\n ImageSizePipe,\r\n KeysPipe,\r\n LazyTranslatePipe,\r\n SafePipe,\r\n UTCDatePipe,\r\n\r\n MessageboxComponent,\r\n LoaderComponent,\r\n TimesItemComponent,\r\n TimesComponent,\r\n TimesGroupComponent,\r\n NavigationMenuComponent,\r\n ToppanelComponent,\r\n LanguagesComponent,\r\n LanguagePreferenceComponent,\r\n SecurityComponent,\r\n MapComponent,\r\n MapInputComponent,\r\n MapDrawComponent,\r\n MapPolygonComponent,\r\n ImagesComponent,\r\n ImageCropperComponent,\r\n ImageCropperModalComponent,\r\n ImagesGalleryModalComponent,\r\n TablesComponent,\r\n HeaderComponent,\r\n DropListComponent,\r\n DroptreeComponent,\r\n AccordionListComponent,\r\n CardItemComponent,\r\n CheckoutFormComponent,\r\n CheckoutFormItemComponent,\r\n NotificationBaseComponent,\r\n SideBarComponent,\r\n SideBarListComponent,\r\n MainGalleryImagesComponent,\r\n MainGalleryFullscreenComponent,\r\n PageNotFoundComponent,\r\n AddInputComponent,\r\n CheckoutModalComponent,\r\n OrderStatusInfoComponent,\r\n TranslateEditorComponent,\r\n AppSwitcherComponent,\r\n FloatPipe,\r\n LinkPipe,\r\n NumberOnlyRegDirective,\r\n PagechangeDirective,\r\n FormFirstInvalidInputFocusDirective,\r\n RtlLangDirective,\r\n UserRolesDirective,\r\n ScrollDataDirective,\r\n ClickOutsideDirective,\r\n ResizableDirective,\r\n KeyWordDirective,\r\n DomSanitizerDirective,\r\n\r\n EqualValidator\r\n ],\r\n providers: [\r\n HelperService,\r\n NavigationService,\r\n ImageStoreDataService,\r\n ImageStoreService,\r\n TemporaryImagesService,\r\n GlobalizationService,\r\n DropTreeSubscriptionsService,\r\n DropListService,\r\n NavigationService,\r\n OrderStatusInfoService,\r\n SecurityService,\r\n UserLocationService,\r\n SalePortalInfoService,\r\n SalePortalInfoDataService,\r\n StoreMarketPlaceOrderService,\r\n { provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: CredentialsInterceptor, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: LoaderInterceptor, multi: true },\r\n { provide: MapsAPILoader, useClass: CustomMapsAPILoader },\r\n { provide: MissingTranslationHandler, useClass: LazyFakeMissingTranslationHandler }\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n RouterModule,\r\n ImageCropperModule,\r\n ColorPickerModule,\r\n InfiniteScrollModule,\r\n DatepickerModule,\r\n TextEditorModule,\r\n SanitizerModule,\r\n AgmCoreModule.forRoot({\r\n libraries: ['places', 'drawing'],\r\n language: 'ru',\r\n region: 'ru'\r\n }),\r\n TranslateModule.forChild({\r\n loader: {\r\n provide: TranslateLoader,\r\n useFactory: (HttpLoaderFactory),\r\n deps: [StorageService, TranslationService, DirectTranslationService, AuthService]\r\n }\r\n }),\r\n HttpClientModule\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n})\r\nexport class SharedModule {\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { LanguageReadModel, TranslationService } from 'src/applazy/generatedmodules/translation/api';\r\nimport { SaveHostLanguagesModel } from 'src/applazy/generatedmodules/translation/api/model/saveHostLanguagesModel';\r\nimport { BaseTranslationDataService } from 'src/applazy/services/basetranslationdata.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SubadminTranslationDataService implements BaseTranslationDataService {\r\n constructor(\r\n private translationService: TranslationService\r\n ) {\r\n }\r\n getAuthLanguages(loadUrl: boolean): Observable {\r\n return this.translationService.apiV1TranslationLangsTeamallGet('1.0', loadUrl);\r\n }\r\n saveAuthLanguages(languages: string[]) {\r\n return this.translationService.apiV1TranslationLangsSaveteamPost('1.0', new SaveHostLanguagesModel(languages));\r\n }\r\n getWordByKey(keys: string[], language: string) {\r\n return this.translationService.apiV1TranslationLanguageLanguagePost(language, '1.0', keys);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ButtonDirective } from './directives/button.directive';\r\nimport { GroupDirective } from './directives/group.directive';\r\nimport { TextEditorComponent } from './components/text-editor/text-editor.component';\r\nimport { SanitizerModule } from '../sanitizer/sanitizer.module';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n SanitizerModule\r\n ],\r\n declarations: [\r\n TextEditorComponent,\r\n ButtonDirective,\r\n GroupDirective\r\n ],\r\n exports: [\r\n TextEditorComponent,\r\n ButtonDirective,\r\n GroupDirective\r\n ],\r\n})\r\nexport class TextEditorModule { }\r\n","export const apiUrl = 'https://apis.bonee.net';\r\n\r\nexport const environment = {\r\n production: true,\r\n googleApiKey: 'AIzaSyAr41VLC5BBZSEwJVbWIMF130oXG5ubVlg',\r\n googleLocationUrl: 'https://maps.googleapis.com/maps/api/geocode/json',\r\n appInsightsInstrumentationKey: 'fa2bbb3f-11dd-4357-bae7-675e06da5d26',\r\n originURL: 'https://portal.bonee.net',\r\n wellknown: '/.well-known/openid-configuration',\r\n // identityUrl : `${apiUrl}/identity`,\r\n identityUrl: 'https://accounts.bonee.net',\r\n catalogServicesUrl: `${apiUrl}/catalog`,\r\n basket: `${apiUrl}/basket`,\r\n clientaggregator: `${apiUrl}/httpaggregator`,\r\n translationUrl: `${apiUrl}/translation`,\r\n filestoreUrl: `${apiUrl}/filestore`,\r\n globalizationUrl: `${apiUrl}/globalization`,\r\n userproviderUrl: `${apiUrl}/userprovider`,\r\n feedback: `${apiUrl}/feedback`,\r\n partnerUrl: `${apiUrl}/partner`,\r\n employeeUrl: `${apiUrl}/employee`,\r\n orderUrl: `${apiUrl}/order`,\r\n paymentUrl: `${apiUrl}/payment`,\r\n hotactions: `${apiUrl}/hotactions`,\r\n dataprocessing: `${apiUrl}/dataprocessing`,\r\n marketplace: `${apiUrl}/marketplace`,\r\n webhook: `${apiUrl}/webHookUrl`,\r\n smartTranslate: `${apiUrl}/smartTranslate`,\r\n imageCloud: `${apiUrl}/imageCloud`,\r\n subscriptionsUrl: `${apiUrl}/subscriptions`,\r\n signalRUrl: `${apiUrl}/signalr`,\r\n ordering: `${apiUrl}/order`,\r\n talkUrl: `${apiUrl}/talkUrl`,\r\n loyaltyServicesUrl: `${apiUrl}/loyality`,\r\n templateGeneratorUrl: `${apiUrl}/templateGenerator`,\r\n cardUrl: `${apiUrl}/card`,\r\n advertisementUrl: `${apiUrl}/advertisement`,\r\n clientUrl: `${apiUrl}/client`,\r\n integration: `${apiUrl}/integration`,\r\n salePortalUrl: `${apiUrl}/saleportal`,\r\n externalIntegration : `${apiUrl}/integration`,\r\n theme: `${apiUrl}/style`,\r\n webhookDocumentation: 'https://webhook.bonee.net',\r\n companyType: `${apiUrl}/userdefaultsettings`,\r\n couponUrl: `${apiUrl}/loyality`,\r\n posUrl: `${apiUrl}/pos`,\r\n rmsUrl: `${apiUrl}/rms`,\r\n rmsPrefix: `${apiUrl}`\r\n};\r\n\r\nexport const defaultdata = {\r\n noneimageurl: '../../../../assets/images/svg/generalicons/nophoto.svg'\r\n};\r\n","\r\n \r\n \r\n","import { Component } from '@angular/core';\r\nimport { NavigationStart, Router } from '@angular/router';\r\nimport * as jwt_decode from 'jwt-decode';\r\nimport { AppInsights } from 'applicationinsights-js';\r\nimport { ConfigService } from './services/config.service';\r\nimport { USED_LANGUAGES } from './shared/loaders/translationloader';\r\nimport { AuthService } from './services/auth.service';\r\nimport { StorageKeys } from './shared/services/constant.service';\r\nimport { HelperService } from './shared/services/helper.service';\r\nimport { TranslationService } from './generatedmodules/translation/api';\r\nimport { User } from './shared/models/User';\r\nimport { PaginationTitleService } from './shared/services/paginationtitle.service';\r\nimport { TranslationLanguageService } from './services/translationlanguage.service';\r\nimport { StorageService } from './services/storage.service';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss']\r\n})\r\nexport class AppComponent {\r\n isinit = false;\r\n auth = false;\r\n defaultLangsLoaded = false;\r\n\r\n jivosites = '';\r\n documentTitle = '';\r\n documentIcon = '';\r\n appThemes = '';\r\n currentCountryCodeLoaded = false;\r\n private themeWrapper = document.querySelector('body');\r\n\r\n constructor(\r\n private authService: AuthService,\r\n private router: Router,\r\n private translationlanguageService: TranslationLanguageService,\r\n private translationService: TranslationService,\r\n private storageService: StorageService,\r\n private paginationTitleService: PaginationTitleService,\r\n private configService: ConfigService,\r\n private helperService: HelperService\r\n ) {\r\n this.documentTitle = this.configService.get('documentTitle');\r\n this.documentIcon = this.configService.get('documentIcon');\r\n const salePortalKey = this.configService.get('SalePortalKey');\r\n this.appThemes = this.configService.get('app-themes');\r\n const styles = this.configService.get('styles') as { key: string, value: string }[];\r\n styles.forEach(style => {\r\n this.themeWrapper.style.setProperty('--' + style.key, style.value);\r\n });\r\n this.storageService.store(StorageKeys.SALE_PORTAL_KEY, salePortalKey);\r\n this.paginationTitleService.reset();\r\n this.paginationTitleService.setTitle(this.documentTitle);\r\n this.paginationTitleService.setImage(this.documentIcon);\r\n this.jivosites = this.configService.get('jivoChat');\r\n this.paginationTitleService.setjivosite(this.jivosites);\r\n this.defaultLangsLoaded = false;\r\n USED_LANGUAGES.splice(0, USED_LANGUAGES.length);\r\n this.auth = this.authService.checkTokenValidation();\r\n this.authService.authorized.subscribe(\r\n val => {\r\n if (this.auth === val) {\r\n return;\r\n }\r\n if (val === false) {\r\n this.auth = false;\r\n this.unAuthData();\r\n }\r\n if (val === true) {\r\n this.authData();\r\n }\r\n },\r\n err => { }\r\n );\r\n this.router.events.subscribe(res => {\r\n if (res instanceof NavigationStart) {\r\n if ((res.url === '/' || res.url === '/home') && !this.auth) {\r\n this.router.navigate(['/profile/login']);\r\n }\r\n if (!this.isinit) {\r\n this.isinit = true;\r\n if (this.auth === false) {\r\n const paramLang = this.helperService.getParamValue(res.url, 'lang');\r\n if (paramLang) {\r\n this.unAuthData(paramLang);\r\n } else {\r\n // if (!this.currentCountryCodeLoaded) {\r\n // this.translationService.apiV1TranslationLangsCurrentcountryGet('1.0').subscribe(currentCountryCode => {\r\n // this.storageService.store(StorageKeys.CURRENT_COUNTRY_CODE, currentCountryCode);\r\n // this.currentCountryCodeLoaded = true;\r\n // this.unAuthData(currentCountryCode);\r\n // });\r\n // } else {\r\n // this.unAuthData(this.currentCountryCode);\r\n // }\r\n this.unAuthData('');\r\n }\r\n }\r\n if (this.auth === true) {\r\n this.authData();\r\n }\r\n }\r\n }\r\n });\r\n AppInsights.queue.push(() => {\r\n AppInsights.context.addTelemetryInitializer(\r\n (envelope: Microsoft.ApplicationInsights.IEnvelope) => {\r\n envelope.tags['ai.device.roleName'] = 'Portal';\r\n }\r\n );\r\n });\r\n }\r\n\r\n unAuthData(paramLang?: string) {\r\n if (window.screen.width <= 767) {\r\n paramLang = 'us';\r\n }\r\n this.auth = false;\r\n User.clear();\r\n this.isinit = false;\r\n if (!this.defaultLangsLoaded) {\r\n this.translationlanguageService.loadLanguages(paramLang);\r\n this.translationlanguageService.languages.subscribe(res => {\r\n if (res && res.length > 0) {\r\n let language = this.storageService.retrieve(StorageKeys.TranslationLanguageKey);\r\n if (!language || !language.trim()) {\r\n language = res[0].name;\r\n this.storageService.store(StorageKeys.TranslationLanguageKey, language);\r\n }\r\n this.defaultLangsLoaded = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n authData() {\r\n const decoded = jwt_decode(this.storageService.retrieve('access_token'));\r\n User.create(decoded);\r\n this.auth = true;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CanActivate, CanActivateChild, Router } from '@angular/router';\r\nimport { Observable, from as _observableFrom, throwError as _observableThrow, of as _observableOf } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { AuthService } from '../services/auth.service';\r\n\r\n@Injectable()\r\nexport class AuthGuardHome implements CanActivate, CanActivateChild {\r\n\r\n constructor(private authService: AuthService, private router: Router) {\r\n\r\n }\r\n canActivate(): Observable | boolean {\r\n return this.authService.authorized.pipe(map(b => {\r\n if (b === true) {\r\n return true;\r\n } else {\r\n window.history.back();\r\n return false;\r\n }\r\n }));\r\n }\r\n\r\n canActivateChild() {\r\n return this.authService.authorized;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { AuthGuardHome } from './guards/auth-guard-home.service';\r\nimport { AuthGuard } from './guards/auth-guard.service';\r\nimport { HomeComponent } from './main/home/home.component';\r\nconst routes: Routes = [\r\n { path: '', redirectTo: 'home', pathMatch: 'full' },\r\n { path: 'home', component: HomeComponent, canActivate: [AuthGuardHome] },\r\n { path: 'profile', loadChildren: () => import('./auth/auth.module').then((m) => m.AuthModule) },\r\n { path: 'admin', loadChildren: () => import('./admin/admin.module').then((m) => m.AdminModule), canActivate: [AuthGuard] },\r\n { path: 'partner', loadChildren: () => import('./partner/partner.module').then((m) => m.PartnerModule), canActivate: [AuthGuard] },\r\n { path: 'saleportal', loadChildren: () => import('./saleportal/saleportal.module').then((m) => m.SalePortalModule), canActivate: [AuthGuard] },\r\n { path: 'employee', loadChildren: () => import('./employee-tracking/employeetracking.module').then((m) => m.EmployeeTrackingModule) },\r\n { path: 'subadmin', loadChildren: () => import('./subadmin/subadmin.module').then((m) => m.SubadminModule), canActivate: [AuthGuard] },\r\n];\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes, { relativeLinkResolution: 'legacy' })],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { User } from 'src/applazy/shared/models/User';\r\n\r\n@Component({\r\n selector: 'app-home',\r\n templateUrl: './home.component.html',\r\n styleUrls: ['./home.component.scss']\r\n})\r\nexport class HomeComponent implements OnInit {\r\n\r\n constructor(\r\n private router: Router\r\n\r\n ) {\r\n\r\n }\r\n ngOnInit() {\r\n if (User.currentRole === 'admin') {\r\n this.router.navigate(['admin']);\r\n return;\r\n }\r\n if (User.currentRole === 'partner') {\r\n this.router.navigate([User.currentRole + '/' + 'profile/info']);\r\n }\r\n if (User.currentRole === 'saleportal') {\r\n this.router.navigate([User.currentRole + '/' + 'profile/saleprofile']);\r\n }\r\n if (User.currentRole === 'subadmin') {\r\n this.router.navigate([User.currentRole + '/' + 'profile/subadminprofile']);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CanActivate, CanActivateChild, Router } from '@angular/router';\r\nimport { Observable, from as _observableFrom, throwError as _observableThrow, of as _observableOf } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { AuthService } from '../services/auth.service';\r\n\r\n@Injectable()\r\nexport class UnAuthGuard implements CanActivate, CanActivateChild {\r\n\r\n constructor(private authService: AuthService, private router: Router) {\r\n\r\n }\r\n canActivate(): Observable | boolean {\r\n return this.authService.authorized.pipe(map(b => {\r\n if (b === false) {\r\n return true;\r\n } else {\r\n this.router.navigate(['/home']);\r\n return false;\r\n }\r\n }));\r\n }\r\n\r\n canActivateChild() {\r\n return this.authService.authorized;\r\n }\r\n}\r\n","import { ApiModule as TranslationApiModule, BASE_PATH as API_TRANSLATION_URL, DirectTranslationService, TranslationService } from 'src/applazy/generatedmodules/translation/api';\r\n\r\nimport { HashLocationStrategy, LocationStrategy } from '@angular/common';\r\nimport { APP_INITIALIZER, CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\r\nimport { ApplicationInsightsModule } from '@markpieszak/ng-application-insights';\r\nimport { environment } from 'src/environments/environment';\r\nimport { AppComponent } from './app.component';\r\nimport { AppRoutingModule } from './approuting.module';\r\nimport { HomeComponent } from './main/home/home.component';\r\nimport { ConfigService } from './services/config.service';\r\nimport { HttpLoaderFactory, SharedModule } from './shared/shared.module';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { AuthService } from './services/auth.service';\r\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\r\nimport { StorageService } from './services/storage.service';\r\nimport { TranslationLanguageService } from './services/translationlanguage.service';\r\nimport { AuthGuardHome } from './guards/auth-guard-home.service';\r\nimport { AuthGuardMain } from './guards/auth-guard-main.service';\r\nimport { AuthGuard } from './guards/auth-guard.service';\r\nimport { CanDeactivateGuard } from './guards/can-deactivate-guard.service';\r\nimport { UnAuthGuard } from './guards/unauth-guard.service';\r\nimport { RedirectAdminGuard } from './guards/redirect-admin.guard';\r\nimport { ErrorsService } from './shared/services/errors.service';\r\nimport { MessageService } from './shared/components/messagebox/services/message.service';\r\nimport { LoaderService } from './services/loader.service';\r\nimport { PaginationTitleService } from './shared/services/paginationtitle.service';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { PaginationInfoService } from './shared/services/paginationinfo.service';\r\nimport { PaymentSystemsService } from './services/paymentSystems.service';\r\nimport { ImageCloudDataService } from './services/imageclouddata.service';\r\nimport { IconService } from './services/icon.service';\r\nimport { MarketPlaceService } from './services/marketplace.service';\r\nimport { SignalRNotificationClient } from './services/notification.signalR.service';\r\nimport { NavigationMenuService } from './shared/components/navigation/services/navigation-menu.service';\r\nimport { CompanyTypeSubscriptionsService } from './services/companytype.subscriptions.service';\r\nimport { CompanyTypeService } from './services/companytype/companytype.service';\r\nimport { CompanyTypeDataService } from './services/companytype/companytypedata.service';\r\n\r\nexport function initializeApp(appConfig: ConfigService) {\r\n const promise = appConfig.load().then(() => {\r\n const config: Microsoft.ApplicationInsights.IConfig = {\r\n instrumentationKey: environment.appInsightsInstrumentationKey,\r\n enableCorsCorrelation: false,\r\n disableTelemetry: !environment.production\r\n };\r\n appInsights.downloadAndSetup(config);\r\n });\r\n return () => promise;\r\n}\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n HomeComponent\r\n ],\r\n exports: [],\r\n imports: [\r\n TranslateModule.forRoot({\r\n loader: {\r\n provide: TranslateLoader,\r\n useFactory: (HttpLoaderFactory),\r\n deps: [StorageService, TranslationService, DirectTranslationService, AuthService]\r\n }\r\n }),\r\n BrowserModule,\r\n BrowserAnimationsModule,\r\n TranslationApiModule,\r\n AppRoutingModule,\r\n ToastrModule.forRoot(\r\n {\r\n closeButton: true,\r\n progressBar: true,\r\n },\r\n\r\n ),\r\n SharedModule,\r\n ApplicationInsightsModule.forRoot({\r\n instrumentationKey: environment.appInsightsInstrumentationKey,\r\n enableCorsCorrelation: true,\r\n disableTelemetry: !environment.production\r\n }),\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n providers: [\r\n\r\n { provide: API_TRANSLATION_URL, useValue: environment.translationUrl },\r\n { provide: LocationStrategy, useClass: HashLocationStrategy },\r\n { provide: APP_INITIALIZER, useFactory: initializeApp, deps: [ConfigService], multi: true },\r\n MessageService,\r\n TranslationLanguageService,\r\n CompanyTypeSubscriptionsService,\r\n StorageService,\r\n SignalRNotificationClient,\r\n CompanyTypeService,\r\n CompanyTypeDataService,\r\n PaymentSystemsService,\r\n MarketPlaceService,\r\n AuthService,\r\n ConfigService,\r\n AuthGuardHome,\r\n AuthGuardMain,\r\n RedirectAdminGuard,\r\n AuthGuard,\r\n CanDeactivateGuard,\r\n UnAuthGuard,\r\n LoaderService,\r\n ErrorsService,\r\n PaginationTitleService,\r\n PaginationInfoService,\r\n IconService,\r\n ImageCloudDataService,\r\n NavigationMenuService\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule {\r\n constructor() { }\r\n}\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './applazy/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.log(err));\r\n"],"x_google_ignoreList":[]}