flaschengeist-frontend/src/plugins/pricelist/store.ts

47 lines
1.5 KiB
TypeScript
Raw Normal View History

2021-03-14 14:12:41 +00:00
import { api } from 'src/boot/axios';
import { defineStore } from 'pinia';
export const usePricelistStore = defineStore({
id: 'pricelist',
state: () => ({
drinkTypes: [] as Array<FG.DrinkType>,
drinks: [] as Array<FG.Drink>,
}),
actions: {
async getDrinkTypes(force = false) {
if (force || this.drinks.length == 0) {
const { data } = await api.get<Array<FG.DrinkType>>('/pricelist/drink-types');
this.drinkTypes = data;
}
return this.drinkTypes;
},
async addDrinkType(name: string) {
const { data } = await api.post<FG.DrinkType>('/pricelist/drink-types', { name: name });
this.drinkTypes.push(data);
},
async removeDrinkType(id: number) {
await api.delete(`/pricelist/drink-types/${id}`);
const idx = this.drinkTypes.findIndex((val) => val.id == id);
if (idx >= 0) this.drinkTypes.splice(idx, 1);
},
async changeDrinkTypeName(drinkType: FG.DrinkType) {
await api.put(`/pricelist/drink-types/${drinkType.id}`, drinkType);
const itm = this.drinkTypes.filter((val) => val.id == drinkType.id);
if (itm.length > 0) itm[0].name = drinkType.name;
},
async getDrinks(force = false) {
if (force || this.drinks.length == 0) {
const { data } = await api.get<Array<FG.Drink>>('/pricelist/drinks');
this.drinks = data;
}
return this.drinks;
},
async createDrink(drink: FG.Drink) {
await api.post('/pricelist/drinks', drink);
this.drinks.push(drink);
},
},
});