import url from '@/plugins/routes' import axios from 'axios' const state = { priceListLoading: false, typesLoading: false, priceList: [], types: [] } const mutations = { setPriceList: (state, priceList) => { state.priceList = priceList }, setTypes: (state, types) => { state.types = types state.types.sort((a, b) => { const low = b.name.toLowerCase() const high = a.name.toLowerCase() if (high < low) return -1 if (high > low) return 1 return 0 }) }, updatePriceList: (state, drink) => { var a = state.priceList.find(b => { return b.id === drink.id }) if (a) { a.name = drink.name a.type = drink.type a.price = drink.price a.price_big = drink.price_big a.price_club = drink.price_club a.price_club_big = drink.price_club_big a.premium = drink.premium a.premium_club = drink.premium_club a.price_extern_club = drink.price_extern_club } else { state.priceList.push({ id: drink.id, name: drink.name, type: drink.type, price: drink.price, price_big: drink.price_big, price_club: drink.price_club, price_club_big: drink.price_club_big, premium: drink.premium, premium_club: drink.premium_club, price_extern_club: drink.price_extern_club }) } }, deleteDrinkPrice: (state, data) => { var index = state.priceList.indexOf( state.priceList.find(a => { return a.id === data.id }) ) state.priceList.splice(index, 1) }, updateDrinkType: (state, type) => { var a = state.types.find(b => { return b.id === type.id }) if (a) { a.name = type.name } else { state.types.push({ ...type }) } state.types.sort((a, b) => { const low = b.name.toLowerCase() const high = a.name.toLowerCase() if (high < low) return -1 if (high > low) return 1 return 0 }) }, deleteDrinkType: (state, type) => { var index = state.types.indexOf( state.types.find(a => { return a.id === type.id }) ) state.types.splice(index, 1) }, setPriceListLoading: (state, value) => { state.priceListLoading = value }, setTypesLoading: (state, value) => { state.typesLoading = value } } const actions = { async getPriceList({ commit }) { try { commit('setPriceListLoading', true) const response = await axios.get(url.pricelist) commit('setPriceList', response.data) commit('setPriceListLoading', false) } catch (e) { commit('setPriceListLoading', false) } }, async getTypes({ commit }) { try { commit('setTypesLoading', true) const response = await axios.get(url.getTypes) commit('setTypes', response.data) commit('setTypesLoading', false) } catch (e) { commit('setTypesLoading', false) } }, async setDrink({ commit, rootState, dispatch }, data) { try { commit('setPriceListLoading', true) const response = await axios.post( url.gastro.setDrink, { ...data }, { headers: { Token: rootState.login.user.accessToken } } ) commit('updatePriceList', response.data) commit('setPriceListLoading', false) } catch (e) { commit('setPriceListLoading', false) if (e.response) if (e.response.status === 401) dispatch('logout', null, { root: true }) } }, async updateDrink({ commit, rootState, dispatch }, data) { try { commit('setPriceListLoading', true) const response = await axios.post( url.gastro.updateDrink, { ...data }, { headers: { Token: rootState.login.user.accessToken } } ) commit('updatePriceList', response.data) commit('setPriceListLoading', false) } catch (e) { commit('setPriceListLoading', false) if (e.response) if (e.response.status === 401) dispatch('logout', null, { root: true }) } }, async deleteDrink({ commit, rootState, dispatch }, data) { try { commit('setPriceListLoading', true) await axios.post( url.gastro.deleteDrink, { ...data }, { headers: { Token: rootState.login.user.accessToken } } ) commit('deleteDrinkPrice', data) commit('setPriceListLoading', false) } catch (e) { commit('setPriceListLoading', false) if (e.response) if (e.response.status === 401) dispatch('logout', null, { root: true }) } }, async setDrinkType({ commit, rootState, dispatch }, data) { try { commit('setTypesLoading', true) const response = await axios.post( url.gastro.setType, { ...data }, { headers: { Token: rootState.login.user.accessToken } } ) commit('updateDrinkType', response.data) commit('setTypesLoading', false) } catch (e) { commit('setTypesLoading', false) if (e.response) if (e.response.status === 401) dispatch('logout', null, { root: true }) } }, async updateDrinkType({ commit, rootState, dispatch }, data) { try { commit('setTypesLoading', true) const response = await axios.post( url.gastro.updateType, { ...data }, { headers: { Token: rootState.login.user.accessToken } } ) commit('updateDrinkType', response.data) commit('setTypesLoading', false) } catch (e) { commit('setTypesLoading', false) if (e.response) if (e.response.status === 401) dispatch('logout', null, { root: true }) } }, async deleteDrinkType({ commit, rootState, dispatch }, data) { try { commit('setTypesLoading', true) await axios.post( url.gastro.deleteType, { ...data }, { headers: { Token: rootState.login.user.accessToken } } ) commit('deleteDrinkType', data) commit('setTypesLoading', false) } catch (e) { commit('setTypesLoading', false) if (e.response) if (e.response.status === 401) dispatch('logout', null, { root: true }) } } } const getters = { priceList: state => { return state.priceList }, types: state => { return state.types }, priceListLoading: state => { return state.priceListLoading }, typesLoading: state => { return state.typesLoading } } export default { namespaced: true, state, mutations, actions, getters }