draft acquisition
This commit is contained in:
65
src/market/acquisition/acquisition.ts
Normal file
65
src/market/acquisition/acquisition.ts
Normal 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 };
|
||||
});
|
||||
Reference in New Issue
Block a user