{ "version": 3, "sources": ["libs/pos-shared/src/lib/services/pos-resolvers.ts"], "sourcesContent": ["import { Inject, Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot } from \"@angular/router\";\nimport { RequestService } from '@proman/services/request.service';\nimport { PreferencesService } from '@proman/services/preferences.service';\nimport { WebsocketService } from '@proman/services/websocket.service';\nimport { COOKIE_AUTHORIZATION, CookiesService } from '@proman/services/cookies.service';\nimport { LanguageConfigService } from '@proman/services/language-config.service';\nimport { Store } from '@ngrx/store';\nimport { filter, forkJoin, take } from '@proman/rxjs-common';\nimport { getCurrUser, setCurrUser } from '@proman/store/curr-user';\nimport { getSystemOptions, loadSystemOptions } from '@proman/store/system-options';\nimport { CurrUser } from '@proman/interfaces/object-interfaces';\nimport { findById, guaranteeArray, isDefinedNotNull, isLocalhost, roundNumber } from '@proman/utils';\nimport { CONFIG } from '@proman/config';\nimport { getCurrencies, loadCurrency, setCurrency } from '@proman/store/currency';\nimport { ACL } from '@proman/services/acl.service';\nimport { Entity, EntityConfigInterface } from '@proman/services/entity.service';\nimport { CurrenciesService } from '@proman/services/currencies.service';\nimport { ToastService } from '@proman/services/toast.service';\nimport { FilterService } from '@proman/services/filter.service';\nimport { Article, ArticleCategory } from '@proman/interfaces/entity-interfaces';\nimport {\n getCategories,\n getMenu,\n loadPosOptionsOverrides,\n setCategories,\n setMenu,\n setPosPublicCurrency,\n setStyle\n} from \"@pos-shop-shared/store\";\n\n@Injectable({ providedIn: 'root' })\nexport class UserResolver implements Resolve {\n\n constructor(\n @Inject(RequestService) private Request: RequestService,\n @Inject(PreferencesService) private Prefs: PreferencesService,\n @Inject(Router) private Router: Router,\n @Inject(ACL) private ACL: ACL,\n @Inject(WebsocketService) private Websocket: WebsocketService,\n @Inject(CookiesService) private Cookies: CookiesService,\n @Inject(LanguageConfigService) private LangConfig: LanguageConfigService,\n @Inject(Entity) private Entity: Entity,\n @Inject(Store) private store: Store,\n\n ) {\n\n }\n\n resolve(): Promise {\n const bareToken = this.Cookies.get(COOKIE_AUTHORIZATION);\n\n return new Promise((resolve) => {\n\n forkJoin([\n this.store.select(getCurrUser)\n .pipe(take(1)),\n this.store.select(getSystemOptions)\n .pipe(take(1)),\n ])\n\n .subscribe(([currUser, systemOptions]) => {\n\n if (currUser && !!systemOptions.id) {\n resolve(currUser);\n\n } else {\n this.Request\n .loadUser()\n .then(async (response: CurrUser) => {\n\n if (!isLocalhost() && isDefinedNotNull(response.allowPos) && response.allowPos === false) {\n window.location.replace(`${CONFIG.root}shop`);\n return;\n }\n\n this.Cookies.set(COOKIE_AUTHORIZATION, bareToken);\n\n this.store.dispatch(setCurrUser({ payload: response }));\n this.store.select(getCurrUser)\n .pipe(filter((value) => !!value), take(1))\n .subscribe(() => this.Websocket.startSession());\n\n // if (this.Prefs.language() !== this.AppInit.currentLang) {\n // this.Prefs.language(response.language);\n // await this.LangConfig.loadLanguage(response.language);\n //\n // }\n\n this.store.dispatch(loadSystemOptions());\n this.store.dispatch(loadCurrency());\n await new Promise((resolve2) => {\n this.store.select(getSystemOptions)\n .pipe(\n filter((systemOptions) => !!systemOptions?.id),\n take(1),\n )\n .subscribe(() => resolve2());\n });\n await new Promise((resolve3) => {\n this.store.select(getCurrencies)\n .pipe(\n filter((currencies) => !!currencies?.length),\n take(1),\n )\n .subscribe(() => resolve3());\n });\n\n this.store.dispatch(loadPosOptionsOverrides());\n\n resolve(response);\n })\n .catch((error) => {\n this.Router.navigate(['login']);\n });\n }\n });\n });\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class PublicDataResolver implements Resolve {\n\n constructor(\n @Inject(Entity) private Entity: Entity,\n @Inject(Store) private store: Store,\n @Inject(CurrenciesService) private Currencies: CurrenciesService,\n @Inject(ToastService) private Toast: ToastService,\n @Inject(FilterService) private Filter: FilterService,\n ) {\n }\n\n resolve(): Promise {\n let result: any = {};\n\n (this.Entity.get({ name: 'public/pos', get: ['menu'] } as unknown as EntityConfigInterface) as any)\n .menu({pos: true})\n .then((response: { currency: any; articles: Article[]; articleCategories: ArticleCategory[]; style: any }) => {\n\n let articles = (response.articles || []);\n let categories = (response.articleCategories || []);\n let style = (response.style || null);\n let currency = (response.currency || null);\n\n articles.forEach((item) => {\n if (item.productParameters) {\n item.productParameters = guaranteeArray(item.productParameters);\n }\n })\n\n articles.sort((a, b) => +a.position < +b.position ? -1 : 1);\n\n articles.map((item: any) => {\n item.price = `${ this.vatPrice(item) }${ this.Currencies?.base?.shorthand ?? '' }` as unknown as number;\n });\n\n this.store.dispatch(setCategories({ payload: categories }));\n\n this.store.dispatch(setMenu({ payload: articles }));\n\n this.store.dispatch(setStyle({ payload: style }));\n\n this.store.dispatch(setPosPublicCurrency({ payload: currency}));\n this.store.dispatch(setCurrency({ payload: [currency] }));\n })\n .catch(() => {\n this.Toast.pop('error', this.Filter.translate('error_loading_menu_items'));\n });\n\n return Promise.resolve(result);\n }\n\n vatPrice = (item: Article) => {\n let price = !isNaN(parseFloat(item.primeCostExpression)) ? parseFloat(item.primeCostExpression) : (item.price ?? 0.0);\n return roundNumber((item.vat ? price * (1 + item.vat?.percentage / 100) : price), 2);\n }\n\n}\n\n@Injectable()\nexport class ArticleResolver implements Resolve {\n menuItems: any;\n\n constructor(\n @Inject(Entity) private Entity: Entity,\n @Inject(Store) private store: Store,\n ) {\n\n }\n\n resolve(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Promise {\n\n let result: any = {};\n\n return new Promise((resolve) => {\n this.store.select(getMenu)\n .pipe(filter((items) => !!items.length), take(1))\n .subscribe((values) => {\n if (route.params['productId']) result = findById(values, +route.params['productId']);\n\n resolve(result);\n });\n\n })\n }\n\n}\n\n@Injectable()\nexport class ArticleCategoryResolver implements Resolve {\n\n constructor(\n @Inject(Entity) private Entity: Entity,\n @Inject(Store) private store: Store,\n ) {\n }\n\n resolve(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Promise {\n\n let result: any = {};\n\n return new Promise((resolve) => {\n this.store.select(getCategories)\n .pipe(filter((items) => !!items.length), take(1))\n .subscribe((values) => {\n if (route.params['categoryId']) result = findById(values, +route.params['categoryId']);\n\n resolve(result);\n });\n\n })\n }\n\n}\n"], "mappings": "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", "names": ["UserResolver", "constructor", "Request", "Prefs", "Router", "ACL", "Websocket", "Cookies", "LangConfig", "Entity", "store", "resolve", "bareToken", "get", "COOKIE_AUTHORIZATION", "Promise", "forkJoin", "select", "getCurrUser", "pipe", "take", "getSystemOptions", "subscribe", "currUser", "systemOptions", "id", "loadUser", "then", "response", "isLocalhost", "isDefinedNotNull", "allowPos", "window", "location", "replace", "CONFIG", "root", "set", "dispatch", "setCurrUser", "payload", "filter", "value", "startSession", "loadSystemOptions", "loadCurrency", "resolve2", "resolve3", "getCurrencies", "currencies", "length", "loadPosOptionsOverrides", "catch", "error", "navigate", "\u0275\u0275inject", "RequestService", "PreferencesService", "WebsocketService", "CookiesService", "LanguageConfigService", "Store", "factory", "\u0275fac", "providedIn", "PublicDataResolver", "Currencies", "Toast", "Filter", "vatPrice", "item", "price", "isNaN", "parseFloat", "primeCostExpression", "roundNumber", "vat", "percentage", "result", "name", "menu", "pos", "articles", "categories", "articleCategories", "style", "currency", "forEach", "productParameters", "guaranteeArray", "sort", "a", "b", "position", "map", "base", "shorthand", "setCategories", "setMenu", "setStyle", "setPosPublicCurrency", "setCurrency", "pop", "translate", "CurrenciesService", "ToastService", "FilterService", "ArticleResolver", "route", "state", "getMenu", "items", "values", "params", "findById", "ArticleCategoryResolver", "getCategories"] }