mirror of
				https://github.com/crater-invoice/crater.git
				synced 2025-10-31 13:41:09 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			117 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const { defineStore } = window.pinia
 | |
| import { useNotificationStore } from '@/scripts/stores/notification'
 | |
| import axios from 'axios'
 | |
| import { handleError } from '@/scripts/customer/helpers/error-handling'
 | |
| 
 | |
| export const useEstimateStore = defineStore({
 | |
|   id: 'customerEstimateStore',
 | |
|   state: () => ({
 | |
|     estimates: [],
 | |
|     totalEstimates: 0,
 | |
|     selectedViewEstimate: [],
 | |
|   }),
 | |
|   actions: {
 | |
|     fetchEstimate(params, slug) {
 | |
|       return new Promise((resolve, reject) => {
 | |
|         axios
 | |
|           .get(`/api/v1/${slug}/customer/estimates`, { params })
 | |
|           .then((response) => {
 | |
|             this.estimates = response.data.data
 | |
|             this.totalEstimates = response.data.meta.estimateTotalCount
 | |
|             resolve(response)
 | |
|           })
 | |
|           .catch((err) => {
 | |
|             handleError(err)
 | |
|             reject(err)
 | |
|           })
 | |
|       })
 | |
|     },
 | |
| 
 | |
|     fetchViewEstimate(params, slug) {
 | |
|       return new Promise((resolve, reject) => {
 | |
|         axios
 | |
|           .get(`/api/v1/${slug}/customer/estimates/${params.id}`, {
 | |
|             params,
 | |
|           })
 | |
| 
 | |
|           .then((response) => {
 | |
|             this.selectedViewEstimate = response.data.data
 | |
|             resolve(response)
 | |
|           })
 | |
|           .catch((err) => {
 | |
|             handleError(err)
 | |
|             reject(err)
 | |
|           })
 | |
|       })
 | |
|     },
 | |
| 
 | |
|     searchEstimate(params, slug) {
 | |
|       return new Promise((resolve, reject) => {
 | |
|         axios
 | |
|           .get(`/api/v1/${slug}/customer/estimates`, { params })
 | |
|           .then((response) => {
 | |
|             this.estimates = response.data
 | |
|             resolve(response)
 | |
|           })
 | |
|           .catch((err) => {
 | |
|             handleError(err)
 | |
|             reject(err)
 | |
|           })
 | |
|       })
 | |
|     },
 | |
|     acceptEstimate({ slug, id, status }) {
 | |
| 
 | |
|       return new Promise((resolve, reject) => {
 | |
|         axios
 | |
|           .post(`/api/v1/${slug}/customer/estimate/${id}/status`, { status })
 | |
|           .then((response) => {
 | |
|             let pos = this.estimates.findIndex(
 | |
|               (estimate) => estimate.id === id
 | |
|             )
 | |
|             if (this.estimates[pos]) {
 | |
|               this.estimates[pos].status = 'ACCEPTED'
 | |
| 
 | |
|               const notificationStore = useNotificationStore(true)
 | |
|               notificationStore.showNotification({
 | |
|                 type: 'success',
 | |
|                 message: global.t('estimates.marked_as_accepted_message'),
 | |
|               })
 | |
|             }
 | |
|             resolve(response)
 | |
|           })
 | |
|           .catch((err) => {
 | |
|             handleError(err)
 | |
|             reject(err)
 | |
|           })
 | |
|       })
 | |
|     },
 | |
| 
 | |
|     rejectEstimate({ slug, id, status }) {
 | |
| 
 | |
|       return new Promise((resolve, reject) => {
 | |
|         axios
 | |
|           .post(`/api/v1/${slug}/customer/estimate/${id}/status`, { status })
 | |
|           .then((response) => {
 | |
|             let pos = this.estimates.findIndex(
 | |
|               (estimate) => estimate.id === id
 | |
|             )
 | |
|             if (this.estimates[pos]) {
 | |
|               this.estimates[pos].status = 'REJECTED'
 | |
| 
 | |
|               const notificationStore = useNotificationStore(true)
 | |
|               notificationStore.showNotification({
 | |
|                 type: 'success',
 | |
|                 message: global.t('estimates.marked_as_rejected_message'),
 | |
|               })
 | |
|             }
 | |
|             resolve(response)
 | |
|           })
 | |
|           .catch((err) => {
 | |
|             handleError(err)
 | |
|             reject(err)
 | |
|           })
 | |
|       })
 | |
|     },
 | |
|   },
 | |
| })
 |