UNPKG

commerce-vuex

Version:
319 lines (307 loc) 10.7 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 service from './service.service' const { doPostOne, doPatchOne, doFetchOne,doDeleteSelected,doDeleteMultiple } = service const snakes = createHumps(snakeCase) export default { namespaced: true, state: { one: null, inProgress: true, OrgList: [], validFromTime: '', validFromDate: '', validToTime: '', validToDate: '', resourceList: [], countryList: [] }, 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] } state.resourceList = [] state.countryList = [] // if(state.one.brands&&state.one.brands.length){ // state.one.brands.filter((res)=>{ // state.resourceList.push({ // id: res // }) // }); // } if(state.one.countriesIso3&&state.one.countriesIso3.length){ state.one.countriesIso3.filter((res)=>{ state.countryList.push({ id: res }) }); } }, inProgress(state, yesOrNo) { state.inProgress = yesOrNo }, setList(state, list) { state.OrgList = list; }, setDates(state) { state.one.validFrom = new Date((state.validFromDate + "T" + state.validFromTime).replace(/\s/, 'T')) state.one.validTo = new Date((state.validToDate + "T" + state.validToTime).replace(/\s/, 'T')) }, clearDates(state) { state.validFromDate = '' state.validFromTime = '' state.validToDate = '' state.validToTime = '' state.resourceList = [] state.countryList = [] }, // setResourceList(state, brandsList){ // if(state.one.brands&&state.one.brands.length){ // brandsList.filter((res)=>{ // state.resourceList.push({ // id: res.id, // name: res.name // }) // }); // } // }, addResource(state, resource){ let flag = false if(state.resourceList.length){ state.resourceList.filter((res)=>{ if(res.id===resource.id) flag = true }); } if(!flag) state.resourceList.push({ 'id': resource.id, 'name': resource.name }) }, editResource(state, payLoad){ let list = state.resourceList.filter((res)=>{ if(res.id === payLoad.oldId){ res.id = payLoad.resource.id, res.name = payLoad.resource.name } return res; }) state.resourceList = list }, deleteResource(state, payLoad){ let list = state.resourceList.filter((res)=>{ if(res.id !== payLoad.id) return res; }) state.resourceList = list }, // setResources(state){ // let allResources = [] // if(state.resourceList.length){ // state.resourceList.filter((res)=>{ // allResources.push(res.id); // }); // } // state.one.brands = allResources // }, addCountry(state, id){ let flag = false if(state.countryList.length){ state.countryList.filter((res)=>{ if(res.id===id) flag = true }); } if(!flag) state.countryList.push({ 'id': id }) }, editCountry(state, payLoad){ let list = state.countryList.filter((res)=>{ if(res.id === payLoad.oldId) res.id = payLoad.id return res; }) state.countryList = list }, deleteCountry(state, payLoad){ let list = state.countryList.filter((res)=>{ if(res.id !== payLoad.id) return res; }) state.countryList = list }, setCountry(state){ let allCountries = [] if(state.countryList.length){ state.countryList.filter((cntr)=>{ allCountries.push(cntr.id); }); } state.one.countriesIso3 = allCountries } }, actions: { new({ commit }) { commit('inProgress', false); commit('clearDates') commit('setOne', { name: "", businessEntityId: "", logoUrl: "", validFrom: "", validTo: "", naicsCode: '', // brands: [], brandId:'', countriesIso3: [], provisionings:{ contractType:'', retailerConnectionFeeBearer:'', retailerConnectionApproval:'' } }); }, fetchOne: async ({ commit }, { serviceId }) => { commit('inProgress', true); try { const service = await doFetchOne({ serviceId }); if (service) { commit('setOne', humps(service)); commit('inProgress', false) return humps(service) } /* if (recursive && appId != rootState.appOne.one.id) { dispatch('appOne/fetchOne', appId, { root: true }); }*/ } // eslint-disable-next-line no-useless-catch catch (err) { throw err } finally { commit('inProgress', false) } }, setResourceList: async ({ commit }, { brandsList }) => { commit('setResourceList', brandsList) }, addResource: async ({ commit }, { resource }) => { commit('addResource', resource) }, editResource: async ({ commit }, { resource, oldId }) => { commit('editResource', {resource, oldId}) }, deleteResource: async ({ commit }, { id }) => { commit('deleteResource', {id}) }, addCountry: async ({ commit }, { id }) => { commit('addCountry', id) }, editCountry: async ({ commit }, { id, oldId }) => { commit('editCountry', {id, oldId}) }, deleteCountry: async ({ commit }, { id }) => { commit('deleteCountry', {id}) }, save: async ({ commit, state }, { appId }) => { commit('inProgress', true); try { commit('setDates') // commit('setResources') commit('setCountry') if (undefined === state.one.id) { await doPostOne(snakes(Object.assign({}, state.one, { appId: appId }))); commit('inProgress', false); commit('clearDates') return ({ new: true }); } else { await doPatchOne(snakes(state.one)); commit('inProgress', false); commit('clearDates') return ({ update: true }); } } // eslint-disable-next-line no-useless-catch catch (err) { throw err } finally { commit('inProgress', false) } }, cloneNewService: async ({ commit }, { serviceOne }) => { commit('inProgress', true); try { let newService = await doPostOne(snakes(serviceOne)); commit('inProgress', false); return ({ new: true, business: humps(newService) }); } // eslint-disable-next-line no-useless-catch catch (err) { throw err } finally { commit('inProgress', false) } }, updateService: async ({ commit,state }) => { commit('inProgress', true); try { commit('setDates') let updatedService = await doPatchOne(snakes(state.one)); commit('inProgress', false); return ({ new: true, business: humps(updatedService) }); } // eslint-disable-next-line no-useless-catch catch (err) { throw err } finally { commit('inProgress', false) } }, deleteSelected: async ({ commit }, { serviceId }) => { commit('inProgress', true); try { await doDeleteSelected({ serviceId }); return ({ deleteSelected: true }) } catch (err) { return ({ deleteSelected: false }) } finally { commit('inProgress', false); } }, deleteMultiple: async ({ commit }, { serviceId }) => { commit('inProgress', true); try { await doDeleteMultiple({ serviceId }); return ({ deleteSelected: true }) } catch (err) { return ({ deleteSelected: false }) } finally { commit('inProgress', false); } }, }, }