mirror of
				https://github.com/crater-invoice/crater.git
				synced 2025-10-29 12:41:10 -04:00 
			
		
		
		
	v6 update
This commit is contained in:
		
							
								
								
									
										116
									
								
								resources/scripts/customer/stores/estimate.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								resources/scripts/customer/stores/estimate.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,116 @@ | ||||
| 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) | ||||
|           }) | ||||
|       }) | ||||
|     }, | ||||
|   }, | ||||
| }) | ||||
		Reference in New Issue
	
	Block a user