UNPKG

procurement-vuex

Version:
133 lines (124 loc) 4.28 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 purchaseOrderTemplateService from './purchase_order_template.service' const { doPostOne, doFetchOne,doDeleteSelected,doPatchOne, doPatchOneProperty } = purchaseOrderTemplateService const snakes = createHumps(snakeCase) export default { namespaced: true, state: { one:null, inProgress: true, }, getters: { getField, }, mutations: { updateField, setOne(state, one) { state.one = one }, inProgress(state, yesOrNo) { state.inProgress = yesOrNo } }, actions: { new({ commit }, { purchaserBusinessEntityId,appId }) { commit('inProgress', false); commit('setOne', { purchaserBusinessEntityId: purchaserBusinessEntityId, appId: appId, name: null, templateType:null, description: null, orderFields:null, itemFields:null, relatedTemplateId:null }); }, saveTemplate: async ({ commit,state}) => { commit('inProgress', true); try { let template =null if (undefined === state.one.id) { template = await doPostOne(snakes(state.one)); if(template){ return ({ new:true ,data: humps(template) }) } }else{ template = await doPatchOne(snakes(state.one)); if(template){ return ({ update:true,data: humps(template) }) } } } catch (err) { throw 'error' } finally { commit('inProgress', false); } }, fetchTemplate: async ({ commit}, { appId,templateId }) => { commit('inProgress', true); try { let template = await doFetchOne({ appId,templateId }); if(template){ commit('setOne', humps(template)) commit('inProgress', false) return ({ data: humps(template) }) }else{ commit('inProgress', false) return ({ data: {} }) } } catch (err) { throw 'error' } finally { commit('inProgress', false); } }, fetchTemplateDetails: async ({ commit}, { appId,templateId }) => { commit('inProgress', true); try { let template = await doFetchOne({ appId,templateId }); if(template){ return ({ data: humps(template) }) }else{ commit('inProgress', false) return ({ data: {} }) } } catch (err) { throw 'error' } finally { commit('inProgress', false); } }, deleteTemplate: async ({ commit }, {purchaseOrderTemplateId}) => { commit('inProgress', true); try { await doDeleteSelected({purchaseOrderTemplateId}); return ({ deleteSelected: true }) } catch (err) { return ({ deleteSelected: false }) } finally { commit('inProgress', false); } }, updateTemplateProperty: async ({ commit }, { purchaseOrderTemplateId, property }) => { commit("inProgress", true); try { let order = await doPatchOneProperty({ purchaseOrderTemplateId, property: snakes(property) }); commit("inProgress", false); return { order }; } catch (err) { // eslint-disable-next-line no-useless-catch throw err; } finally { commit("inProgress", false); } } }, }