commerce-vuex
Version:
Commerce vuex module
69 lines (67 loc) • 2.69 kB
JavaScript
import { doPostOne, doPatchOne, doFetchOne } from '@/services/brand_license.service';
import { terminateDateFormate, inviteDateFormate,activateDateFormate } from '@/services/util.service';
import { getField, updateField } from 'vuex-map-fields';
import createHumps from 'lodash-humps/lib/createHumps';
import { snakeCase } from 'lodash';
const snakes = createHumps(snakeCase);
import humps from 'lodash-humps';
export default {
namespaced: true,
state: {
one: null,
inProgress: true,
},
getters: {
getField,
},
mutations: {
updateField,
setOne(state, one) {
state.one = one;
state.one.invitationDate = one.invitationDate ? inviteDateFormate(one.invitationDate) :{};
state.one.activationDate = one.activationDate ? activateDateFormate(one.activationDate) :{};
state.one.terminationDate = one.terminationDate ? terminateDateFormate(one.terminationDate):{};
},
inProgress(state, yesOrNo) {
state.inProgress = yesOrNo
},
},
actions: {
new({ commit }) {
commit('inProgress', false);
commit('setOne', {
"permissions": "",
"agentOrgId":"",
"invitationDate":{ "inviteTime":'',
"inviteDate":''},
"activationDate":{ "activateTime":'',
"activateDate":''},
"terminationDate":{ "terminateTime":'',
"terminateDate":''},
});
},
fetchOne: async ({ commit, dispatch, rootState }, { brandLicenseId,appId,recursive }) => {
commit('inProgress', true);
const brandLicense = await doFetchOne(brandLicenseId);
if (brandLicense) {
commit('setOne', humps(brandLicense));
}
if (recursive && appId != rootState.appOne.one.id) {
dispatch('appOne/fetchOne', appId, { root: true });
}
commit('inProgress', false);
},
save: async ({ commit, state }, {agentOrgId,brandId, appId }) => {
commit('inProgress', true);
if (undefined === state.one.id) {
await doPostOne(snakes(Object.assign({}, state.one, { brandId: brandId,agentOrgId: agentOrgId, appId: appId })));
commit('inProgress', false);
return ({ new: true });
} else {
await doPatchOne(snakes(state.one));
commit('inProgress', false);
return ({ update: true });
}
},
},
}