UNPKG

commerce-vuex

Version:
116 lines (107 loc) 3.09 kB
import { snakeCase } from 'lodash' import humps from 'lodash-humps' import createHumps from 'lodash-humps/lib/createHumps' import { getField, updateField } from 'vuex-map-fields' import { dateTimeFormate } from './common.service' import servicePricing from './service_pricing.service' const { doPostOne, doPatchOne, doFetchOne } = servicePricing const snakes = createHumps(snakeCase) export default { namespaced: true, state: { one: null, inProgress: true, validFromTime: '', validFromDate: '', validToTime: '', validToDate: '' }, getters: { getField, }, mutations: { updateField, setOne(state, one) { state.one = one; state.one.validFrom = one.validFrom ? dateTimeFormate(one.validFrom) : ''; if (state.one.validFrom.length) { state.validFromTime = state.one.validFrom[0] state.validFromDate = state.one.validFrom[1] } state.one.validTo = one.validTo ? dateTimeFormate(one.validTo) : ''; if (state.one.validTo.length) { state.validToTime = state.one.validTo[0] state.validToDate = state.one.validTo[1] } }, inProgress(state, yesOrNo) { state.inProgress = yesOrNo }, setDates(state) { state.one.validFrom = new Date(state.validFromDate + " " + state.validFromTime) state.one.validTo = new Date(state.validToDate + " " + state.validToTime) }, clearDates(state) { state.validFromDate = '' state.validFromTime = '' state.validToDate = '' state.validToTime = '' } }, actions: { new({ commit }, { businessEntityId, serviceId, appId }) { commit('inProgress', false) commit('clearDates') commit('setOne', { 'amount': '', 'charging': 'monthly', 'validFrom': '', 'validTo': '', 'serviceId': serviceId, 'appId': appId, 'businessEntityId': businessEntityId }) }, fetchOne: async ({ commit }, { servicePricingId, appId }) => { commit('inProgress', true) try { const servicePricing = await doFetchOne({ servicePricingId, appId }) if (servicePricing) { commit('setOne', humps(servicePricing)) return servicePricing } } // eslint-disable-next-line no-useless-catch catch (err) { throw err } finally { commit('inProgress', false) } }, save: async ({ commit, state }) => { commit('inProgress', true) try { commit('setDates') if (undefined === state.one.id) { await doPostOne(snakes(state.one)) commit('clearDates') commit('inProgress', false) return ({ new: true }) } else { await doPatchOne(snakes(state.one)) commit('clearDates') commit('inProgress', false) return ({ update: true }) } } // eslint-disable-next-line no-useless-catch catch (err) { throw err } finally { commit('inProgress', false) } }, }, }