mirror of
				https://github.com/crater-invoice/crater.git
				synced 2025-10-31 05:31:10 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			204 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			204 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import axios from 'axios'
 | |
| import { defineStore } from 'pinia'
 | |
| import { useNotificationStore } from '@/scripts/stores/notification'
 | |
| import { handleError } from '@/scripts/helpers/error-handling'
 | |
| import Ls from '@/scripts/services/ls'
 | |
| 
 | |
| export const useCompanyStore = (useWindow = false) => {
 | |
|   const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore
 | |
|   const { global } = window.i18n
 | |
| 
 | |
|   return defineStoreFunc({
 | |
|     id: 'company',
 | |
| 
 | |
|     state: () => ({
 | |
|       companies: [],
 | |
|       selectedCompany: null,
 | |
|       selectedCompanySettings: {},
 | |
|       selectedCompanyCurrency: null,
 | |
|     }),
 | |
| 
 | |
|     actions: {
 | |
|       setSelectedCompany(data) {
 | |
|         window.Ls.set('selectedCompany', data.id)
 | |
|         this.selectedCompany = data
 | |
|       },
 | |
| 
 | |
|       fetchBasicMailConfig() {
 | |
|         return new Promise((resolve, reject) => {
 | |
|           axios
 | |
|             .get('/api/v1/company/mail/config')
 | |
|             .then((response) => {
 | |
|               resolve(response)
 | |
|             })
 | |
|             .catch((err) => {
 | |
|               handleError(err)
 | |
|               reject(err)
 | |
|             })
 | |
|         })
 | |
|       },
 | |
| 
 | |
|       updateCompany(data) {
 | |
|         return new Promise((resolve, reject) => {
 | |
|           axios
 | |
|             .put('/api/v1/company', data)
 | |
|             .then((response) => {
 | |
|               const notificationStore = useNotificationStore()
 | |
| 
 | |
|               notificationStore.showNotification({
 | |
|                 type: 'success',
 | |
|                 message: global.t('settings.company_info.updated_message'),
 | |
|               })
 | |
| 
 | |
|               this.selectedCompany = response.data.data
 | |
| 
 | |
|               resolve(response)
 | |
|             })
 | |
|             .catch((err) => {
 | |
|               handleError(err)
 | |
|               reject(err)
 | |
|             })
 | |
|         })
 | |
|       },
 | |
| 
 | |
|       updateCompanyLogo(data) {
 | |
|         return new Promise((resolve, reject) => {
 | |
|           axios
 | |
|             .post('/api/v1/company/upload-logo', data)
 | |
|             .then((response) => {
 | |
|               resolve(response)
 | |
|             })
 | |
|             .catch((err) => {
 | |
|               handleError(err)
 | |
|               reject(err)
 | |
|             })
 | |
|         })
 | |
|       },
 | |
| 
 | |
|       addNewCompany(data) {
 | |
|         return new Promise((resolve, reject) => {
 | |
|           axios
 | |
|             .post('/api/v1/companies', data)
 | |
|             .then((response) => {
 | |
|               const notificationStore = useNotificationStore()
 | |
|               notificationStore.showNotification({
 | |
|                 type: 'success',
 | |
|                 message: global.t('company_switcher.created_message'),
 | |
|               })
 | |
|               resolve(response)
 | |
|             })
 | |
|             .catch((err) => {
 | |
|               handleError(err)
 | |
|               reject(err)
 | |
|             })
 | |
|         })
 | |
|       },
 | |
| 
 | |
|       fetchCompany(params) {
 | |
|         return new Promise((resolve, reject) => {
 | |
|           axios
 | |
|             .get('/api/v1/current-company', params)
 | |
|             .then((response) => {
 | |
|               Object.assign(this.companyForm, response.data.data.address)
 | |
|               this.companyForm.name = response.data.data.name
 | |
|               resolve(response)
 | |
|             })
 | |
|             .catch((err) => {
 | |
|               handleError(err)
 | |
|               reject(err)
 | |
|             })
 | |
|         })
 | |
|       },
 | |
| 
 | |
|       fetchUserCompanies() {
 | |
|         return new Promise((resolve, reject) => {
 | |
|           axios
 | |
|             .get('/api/v1/companies')
 | |
|             .then((response) => {
 | |
|               resolve(response)
 | |
|             })
 | |
|             .catch((err) => {
 | |
|               handleError(err)
 | |
|               reject(err)
 | |
|             })
 | |
|         })
 | |
|       },
 | |
| 
 | |
|       fetchCompanySettings(settings) {
 | |
|         return new Promise((resolve, reject) => {
 | |
|           axios
 | |
|             .get('/api/v1/company/settings', {
 | |
|               params: {
 | |
|                 settings,
 | |
|               },
 | |
|             })
 | |
|             .then((response) => {
 | |
|               resolve(response)
 | |
|             })
 | |
|             .catch((err) => {
 | |
|               handleError(err)
 | |
|               reject(err)
 | |
|             })
 | |
|         })
 | |
|       },
 | |
| 
 | |
|       updateCompanySettings({ data, message }) {
 | |
|         return new Promise((resolve, reject) => {
 | |
|           axios
 | |
|             .post('/api/v1/company/settings', data)
 | |
|             .then((response) => {
 | |
|               Object.assign(this.selectedCompanySettings, data.settings)
 | |
| 
 | |
|               if (message) {
 | |
|                 const notificationStore = useNotificationStore()
 | |
| 
 | |
|                 notificationStore.showNotification({
 | |
|                   type: 'success',
 | |
|                   message: global.t(message),
 | |
|                 })
 | |
|               }
 | |
| 
 | |
|               resolve(response)
 | |
|             })
 | |
|             .catch((err) => {
 | |
|               handleError(err)
 | |
|               reject(err)
 | |
|             })
 | |
|         })
 | |
|       },
 | |
| 
 | |
|       deleteCompany(data) {
 | |
|         return new Promise((resolve, reject) => {
 | |
|           axios
 | |
|             .post(`/api/v1/companies/delete`, data)
 | |
|             .then((response) => {
 | |
|               resolve(response)
 | |
|             })
 | |
|             .catch((err) => {
 | |
|               handleError(err)
 | |
|               reject(err)
 | |
|             })
 | |
|         })
 | |
|       },
 | |
| 
 | |
|       setDefaultCurrency(data) {
 | |
|         this.defaultCurrency = data.currency
 | |
|       },
 | |
| 
 | |
|       checkCompanyHasCurrencyTransactions() {
 | |
|         return new Promise((resolve, reject) => {
 | |
|           axios
 | |
|             .get(`/api/v1/company/has-transactions`)
 | |
|             .then((response) => {
 | |
|               resolve(response)
 | |
|             })
 | |
|             .catch((err) => {
 | |
|               handleError(err)
 | |
|               reject(err)
 | |
|             })
 | |
|         })
 | |
|       },
 | |
|     },
 | |
|   })()
 | |
| }
 |