import { defineStore } from "pinia"; import { ref } from "vue"; import { getBudgets, getCompany, updateBudget, updateCompany, deleteBudget, createBudget, getUsers, updateUser, createUser, deleteUser, getLocations, createLocation, updateLocation, deleteLocation } from "../services/company"; import api from "../lib/axios"; import { saveProposal, updateProposal } from "../services/vehicles"; export const useCompanyStore = defineStore('company', () => { const company = ref(null) const users = ref([]); const budgets = ref([]); const locations = ref([]); const locationsTotal = ref(0); const locationsCurrentPage = ref(1); const proposals = ref([]) const loading = ref(false); const getCompanyData = async() => { const companyId = localStorage.getItem('id'); loading.value = true; if(!company.value) { loading.value = true; const resp = await getCompany(companyId); console.log(resp); company.value = resp; } console.log(company.value); loading.value = false; } const getUsersCompany = async() => { const companyId = localStorage.getItem('id'); if(users.value.length <= 0) { const resp = await getUsers(companyId); console.log(resp); if(resp !== null && resp.total > 0) { users.value = resp.data; } else { users.value = []; } } } const createUserCompany = async(formData, localData) => { const data = await createUser(formData); if(data) { users.value.push({ ...data, ...localData }); return 'success'; } else { return 'Algo salio mal, intente más tarde'; } } const updateUserCompany = async(id, formData, localData) => { const data = await updateUser(id, formData); if(data) { const index = users.value.findIndex((user) => user._id === id); users.value[index] = { ...users.value[index], ...data, ...localData }; return 'success'; } else { return 'Algo salio mal, intente más tarde'; } } const deleteUserCompany = async(id) => { const data = await deleteUser(id); if(data) { users.value = users.value.filter(user => user._id !== id); return 'success'; } else { return 'Algo salio mal, intente más tarde'; } } const editCompany = async(formData) => { const data = await updateCompany(company.value._id, formData); if(data === null) { return 'Algo salio mal, intente más tarde'; } else { company.value = { ...company.value, ...formData, }; return 'success'; } } const clear = () => { company.value = null; users.value = []; budgets.value = []; proposals.value = []; // companyid = null; loading.value = false; } const $reset = () => { company.value = null; // companyid = null; loading.value = false; } ///loads?company=64fa70c130d2650011ac4f3a&status[$ne]=Closed,posted_by_name[$regex]=ju&posted_by_name[$options]=i const getProposalsCompany = async() => { const companyId = localStorage.getItem('id'); try { const endpoint = `/proposals?carrier=${companyId}`; const {data} = await api.get(endpoint); proposals.value = data.data; console.log(data); } catch (error) { proposals.value = []; console.log(error); } } const createPropsal = async(formData) => { const data = await saveProposal(formData); console.log(data); if(data) { return 'success'; } else { return 'Algo salio mal, intente más tarde'; } } const updatePropsalLoad = async(id, formData, localData) => { const data = await updateProposal(id, formData); if(data) { console.log(data); const index = proposals.value.findIndex((prop) => prop._id === id); proposals.value[index] = { ...proposals.value[index], ...data, ...localData }; return 'success'; } else { return 'Algo salio mal, intente más tarde'; } } const getBudgetsCompany = async(filterQuery, reload = false) => { let filterArr = Object.values(filterQuery); let cleanfilterArr = filterArr.filter(n=>n); // console.log(cleanfilterArr); var filterStr = ""; if(cleanfilterArr.length >0){ filterStr ="?"+cleanfilterArr.join("&"); } if(budgets.value.length <= 0 || reload === true) { try { const data = await getBudgets(filterStr); if(data.total > 0) { budgets.value = data.data; } else { budgets.value = []; } } catch (error) { budgets.value = []; } } } const updateBudgetCompany = async(id, formData, localData) => { try { const data = await updateBudget(id, formData); console.log(localData); if(data) { const index = budgets.value.findIndex((budget) => budget._id === id); budgets.value[index] = { ...budgets.value[index], ...data, ...localData }; return 'success'; } else { return 'No se pudo actualizar presupuesto, intente mas tarde'; } } catch (error) { return 'Algo salio mal, intente más tarde'; } } const createBudgetCompany = async(formData, localData) => { try { const data = await createBudget(formData); if(data) { budgets.value.push({ ...data, ...localData }); return 'success'; } else { return 'No se pudo agregar presupuesto, intente mas tarde'; } } catch (error) { return 'Algo salio mal, intente más tarde'; } } const deleteBudgetCompany = async(id) => { try { const data = await deleteBudget(id); console.log(data); if(data) { budgets.value = budgets.value.filter(budget => budget._id !== id); return data; } else { return null; } } catch (error) { return null; } } const getLocationsCompany = 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(locations.value.length <= 0 || reload === true) { const resp = await getLocations(filterStr); console.log(resp); if(resp !== null && resp.total > 0) { locations.value = resp.data; locationsTotal.value = resp.total; } else { locations.value = []; } } } const createLocationCompany = async(formData, localData) => { const data = await createLocation(formData); if(data) { locations.value.unshift({ ...data, ...localData }); locationsTotal.value++; return 'success'; } else { return 'Algo salio mal, intente más tarde'; } } const updateLocationCompany = async(id, formData, localData) => { const data = await updateLocation(id, formData); if(data) { const index = locations.value.findIndex((loc) => loc._id === id); locations.value[index] = { ...locations.value[index], ...data, ...localData }; return 'success'; } else { return 'Algo salio mal, intente más tarde'; } } const deleteLocationCompany = async(id) => { const data = await deleteLocation(id); if(data) { locations.value = locations.value.filter(loc => loc._id !== id); return 'success'; } else { return 'Algo salio mal, intente más tarde'; } } return { getCompanyData, getProposalsCompany, createPropsal, updatePropsalLoad, getBudgetsCompany, getUsersCompany, createUserCompany, updateUserCompany, deleteUserCompany, editCompany, updateBudgetCompany, createBudgetCompany, deleteBudgetCompany, getLocationsCompany, createLocationCompany, updateLocationCompany, deleteLocationCompany, budgets, users, locations, locationsTotal, locationsCurrentPage, clear, $reset, loading, proposals, company, } });