draft acquisition

This commit is contained in:
2024-05-14 21:21:17 +02:00
parent 9fb78329cc
commit 7332e145f4
15 changed files with 146 additions and 135 deletions

View File

@@ -0,0 +1,65 @@
import { marbasAxiosInstance } from "@/service";
import { defineStore } from "pinia";
import { computed, onMounted, 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<AcquiredMarketItem[]>([]);
const items = computed(() => _acquiredItems.value);
const addAcquiredItem = async (type: number, quantity: number, price: number) => {
_acquiredItems.value = [..._acquiredItems.value, (await marbasAxiosInstance.post<AcquiredMarketItem>(endpoint, {
type: type,
quantity: quantity,
remaining: quantity,
price: price,
date: new Date(),
source: 'bo',
user: 0 // TODO: get user id
})).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);
await marbasAxiosInstance.delete(`${endpoint}/${found.id}`);
} else {
const item = {
...found,
remaining: found.remaining - quantity
};
_acquiredItems.value = _acquiredItems.value.map(i => {
if (i.type === item.type) {
return item;
} else {
return i;
}
});
await marbasAxiosInstance.put(`${endpoint}/${item.id}`, item);
}
};
onMounted(async () => {
_acquiredItems.value = (await marbasAxiosInstance.get<AcquiredMarketItem[]>(endpoint)).data;
});
return { items, addAcquiredItem, removeAcquiredItem };
});