88 lines
2.6 KiB
JavaScript
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
|
|
}
|
|
}); |