{"version":3,"file":"DneneWk_.js","sources":["../../../../store/general.ts"],"sourcesContent":["import { StatementSync } from 'node:sqlite';\r\nimport { defineStore } from 'pinia';\r\nimport { stringify } from 'qs';\r\nimport {\r\n type Bank,\r\n type Country,\r\n type Employee,\r\n type EmployeeDepartment,\r\n type SimpleStringModel,\r\n} from '~/models/arbitrary';\r\nimport { type BankAccount } from '~/models/clients';\r\n\r\ntype CountriesCache = {\r\n [key in 'cs' | 'en']: { loaded: boolean; data: Country[] };\r\n};\r\ntype BanksCache = {\r\n [key in 'cs' | 'en']: { loaded: boolean; data: Bank[] };\r\n};\r\n\r\nexport const useGeneralStore = defineStore('general', {\r\n state: () => ({\r\n reshowCookies: false,\r\n didSetConsents: false,\r\n loadingCountries: false,\r\n countriesCache: {\r\n cs: { loaded: false, data: [] },\r\n en: { loaded: false, data: [] },\r\n } as CountriesCache,\r\n loadingBanks: false,\r\n banksCache: {\r\n cs: { loaded: false, data: [] },\r\n en: { loaded: false, data: [] },\r\n } as BanksCache,\r\n loadingBankAccounts: true,\r\n bankAccounts: [] as BankAccount[],\r\n loadingEmployeeDepartments: false,\r\n employeeDepartments: [] as EmployeeDepartment[],\r\n employees: [] as Employee[],\r\n }),\r\n getters: {\r\n availableCurrencies: () => {\r\n const {\r\n public: { availableCurrencies },\r\n } = useRuntimeConfig();\r\n\r\n return availableCurrencies.split(',');\r\n },\r\n countries: (state) => {\r\n const {\r\n $i18n: { locale },\r\n } = useNuxtApp();\r\n const language = locale.value as 'cs' | 'en';\r\n\r\n if (state.countriesCache[language].loaded) {\r\n return state.countriesCache[language].data;\r\n }\r\n\r\n return [];\r\n },\r\n banks: (state) => {\r\n const {\r\n $i18n: { locale },\r\n } = useNuxtApp();\r\n const language = locale.value as 'cs' | 'en';\r\n\r\n if (state.banksCache[language].loaded) {\r\n return state.banksCache[language].data;\r\n }\r\n\r\n return [];\r\n },\r\n },\r\n actions: {\r\n reshowCookiesBanner() {},\r\n markConsentsSet() {\r\n this.didSetConsents = true;\r\n },\r\n async getCountries({ force = false }: { force?: boolean } = {}) {\r\n const {\r\n $i18n: { locale },\r\n } = useNuxtApp();\r\n const language = locale.value as 'cs' | 'en';\r\n const fetch = useApiFetch();\r\n\r\n if (!force && this.countriesCache[language].loaded) {\r\n return this.countriesCache[language].data;\r\n }\r\n\r\n this.loadingCountries = true;\r\n\r\n this.countriesCache[language] = {\r\n loaded: true,\r\n data: await fetch(`/staticdata/countries/${language}`),\r\n };\r\n\r\n this.loadingCountries = false;\r\n },\r\n async getBanks({ force = false }: { force?: boolean }) {\r\n const {\r\n $i18n: { locale },\r\n } = useNuxtApp();\r\n const language = locale.value as 'cs' | 'en';\r\n const fetch = useApiFetch();\r\n\r\n if (!force && this.banksCache[language].loaded) {\r\n return this.banksCache[language].data;\r\n }\r\n\r\n this.loadingBanks = true;\r\n\r\n this.banksCache[language] = {\r\n loaded: true,\r\n data: (await fetch('/staticdata/banks/cz'))\r\n .filter((b) => b.Code !== '4000')\r\n .sort((a, b) => a.Code.localeCompare(b.Code)),\r\n };\r\n\r\n this.loadingBanks = false;\r\n },\r\n async getBankAccounts() {\r\n const fetch = useApiFetch();\r\n\r\n if (this.bankAccounts.length > 0) {\r\n return;\r\n }\r\n\r\n this.loadingBankAccounts = true;\r\n this.bankAccounts = await fetch(\r\n `/staticdata/bankaccounts${stringify(\r\n {\r\n currency: 'CZK',\r\n },\r\n { addQueryPrefix: true },\r\n )}`,\r\n );\r\n this.loadingBankAccounts = false;\r\n },\r\n async subscribeToNewsletter({ email }: { email: string }) {\r\n const fetch = useApiFetch();\r\n const category = 'edu_gallery_nl';\r\n const domain = 'cz';\r\n\r\n return await fetch(\r\n `/bloomreach/subscribeto?email=${email}&category=${category}&domain=${domain}`,\r\n {\r\n method: 'POST',\r\n },\r\n );\r\n },\r\n async getEmployeeDepartments() {\r\n const fetch = useApiFetch();\r\n const {\r\n $i18n: { locale },\r\n } = useNuxtApp();\r\n const language = locale.value as 'cs' | 'en';\r\n\r\n if (this.employeeDepartments.length > 0) {\r\n return;\r\n }\r\n\r\n this.loadingEmployeeDepartments = true;\r\n\r\n const response = await fetch(\r\n `/staticdata/setting/Departments_${language}`,\r\n );\r\n\r\n try {\r\n this.employeeDepartments = JSON.parse(response.Result || '{}').gallery;\r\n } catch (err) {\r\n } finally {\r\n this.loadingEmployeeDepartments = false;\r\n }\r\n },\r\n async getEmployees() {\r\n const fetch = useApiFetch();\r\n const {\r\n $i18n: { locale },\r\n } = useNuxtApp();\r\n const language = locale.value as 'cs' | 'en';\r\n\r\n if (this.employees.length > 0) {\r\n return;\r\n }\r\n\r\n const response = await fetch(`/staticdata/setting/Employees_${language}`);\r\n\r\n try {\r\n this.employees = JSON.parse(response.Result || '[]');\r\n } catch (err) {\r\n // ignored\r\n }\r\n },\r\n },\r\n});\r\n\r\nif (import.meta.hot) {\r\n import.meta.hot.accept(acceptHMRUpdate(useGeneralStore, import.meta.hot));\r\n}\r\n"],"names":["useGeneralStore","defineStore","availableCurrencies","useRuntimeConfig","state","locale","useNuxtApp","language","force","fetch","useApiFetch","b","a","stringify","email","response"],"mappings":"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"}