import { marbasAxiosInstance } from "@/service"; import { defineStore } from "pinia"; import { computed, ref } from "vue"; export type AcquiredMarketItem = { id: number; type: number; quantity: number; remaining: number; price: number; date: Date; source: 'bo' | 'so' | 'prod'; user: number; } const endpoint = '/api/acquisitions'; export const useAcquiredItemStore = defineStore('market-acquisition', () => { const acquiredItems = ref([]); const types = computed(() => acquiredItems.value); const addAcquiredItem = async (type: number, quantity: number, price: number) => { acquiredItems.value = [...acquiredItems.value, (await marbasAxiosInstance.post(endpoint, { type: type, quantity: quantity, remaining: quantity, price: price, date: new Date(), source: 'bo', })).data]; }; const removeAcquiredItem = async (type: number, quantity: number) => { const found = acquiredItems.value.find(item => item.type === type); if (!found) { return; } if (found.remaining <= 0) { acquiredItems.value = acquiredItems.value.filter(i => i.type !== type); } else { acquiredItems.value = acquiredItems.value.map(i => { if (i.type === item.type) { return item; } else { return i; } }); } const item = { ...found, remaining: found.remaining - quantity }; await marbasAxiosInstance.put(`${endpoint}/${item.id}`, item); }; marbasAxiosInstance.get(endpoint).then(res => acquiredItems.value = res.data.filter(item => item.remaining > 0)); return { types, addAcquiredItem, removeAcquiredItem }; });