Files
WebETA/src/stores/vehicles.js
2024-03-13 21:39:26 -06:00

88 lines
2.6 KiB
JavaScript

import { defineStore } from "pinia";
import { ref } from "vue";
import { createVehicle, deleteVehicle, getVehicles, updateVehicle } from "../services/vehicles";
export const useVehiclesStore = defineStore('vehicles', () => {
const vehicles = ref([]);
const vehiclesTotal = ref(0);
const vehiclesCurrentPage = ref(0)
const fetchVehicles = async(filterQuery, reload = false) => {
let filterArr = Object.values(filterQuery);
let cleanfilterArr = filterArr.filter(n=>n);
var filterStr = "";
if(cleanfilterArr.length > 0){
filterStr ="?"+cleanfilterArr.join("&");
}
if(vehicles.value.length <= 0 || reload === true) {
const resp = await getVehicles(filterStr + '&$sort%5BcreatedAt%5D=-1');
console.log(resp);
if(resp !== null) {
vehiclesTotal.value = resp.total;
vehicles.value = resp.data;
}
}
}
const createVehicleCompany = async(formData, localData = {}) => {
const data = await createVehicle(formData);
if(data) {
vehicles.value.push({
...data,
...localData
});
vehiclesTotal.value++;
return 'success';
} else {
return 'Algo salio mal, intente más tarde';
}
}
const updateVehicleCompany = async(id, formData, localData = {}) => {
const data = await updateVehicle(id, formData);
if(data) {
console.log({data});
const index = vehicles.value.findIndex((vehicle) => vehicle._id === id);
vehicles.value[index] = {
...vehicles.value[index],
...data,
...localData
};
console.log(vehicles.value[index]);
return 'success';
} else {
return 'Algo salio mal, intente más tarde';
}
}
const deleteVehicleCompany = async(id) => {
const data = await deleteVehicle(id);
if(data) {
vehicles.value = vehicles.value.filter(vehicle => vehicle._id !== id);
vehiclesTotal.value--;
return 'success';
} else {
return 'Algo salio mal, intente más tarde';
}
}
const clear = () => {
vehicles.value = [];
vehiclesTotal.value = 0;
vehiclesCurrentPage.value = 0;
}
return {
vehicles,
vehiclesTotal,
vehiclesCurrentPage,
fetchVehicles,
createVehicleCompany,
updateVehicleCompany,
deleteVehicleCompany,
clear
}
});