procurement-vuex
Version:
Commerce vuex module
133 lines (124 loc) • 4.28 kB
JavaScript
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);
}
}
},
}