From f417ee22f28b91421cad1173c39ee2991cdf0b5e Mon Sep 17 00:00:00 2001 From: Yash Maheshwari Date: Fri, 26 Jan 2024 14:45:09 +0530 Subject: [PATCH 1/3] Improved: support to fetch route with current group and update routes in bulk(feat/route) --- src/components/ArchivedRoutingModal.vue | 19 ++-- src/services/RoutingService.ts | 13 +-- src/store/modules/orderRouting/actions.ts | 119 +++----------------- src/store/modules/orderRouting/getters.ts | 3 - src/utils/index.ts | 2 + src/views/BrokeringRoute.vue | 127 ++++++++++++++++------ src/views/BrokeringRuns.vue | 1 - 7 files changed, 119 insertions(+), 165 deletions(-) diff --git a/src/components/ArchivedRoutingModal.vue b/src/components/ArchivedRoutingModal.vue index a0f2508..2731943 100644 --- a/src/components/ArchivedRoutingModal.vue +++ b/src/components/ArchivedRoutingModal.vue @@ -24,7 +24,6 @@ diff --git a/src/services/RoutingService.ts b/src/services/RoutingService.ts index 0a25fd8..db4998e 100644 --- a/src/services/RoutingService.ts +++ b/src/services/RoutingService.ts @@ -8,7 +8,7 @@ const fetchRoutingGroups = async (payload: any): Promise => { }); } -const fetchRoutingGroup = async (routingGroupId: string): Promise => { +const fetchRoutingGroupInformation = async (routingGroupId: string): Promise => { return api({ url: `groups/${routingGroupId}`, method: "GET" @@ -31,14 +31,6 @@ const updateRoutingGroup = async (payload: any): Promise => { }) } -const fetchOrderRoutings = async (payload: any): Promise => { - return api({ - url: `groups/${payload.routingGroupId}/routings`, - method: "GET", - query: payload - }); -} - const fetchOrderRouting = async (orderRoutingId: string): Promise => { return api({ url: `routings/${orderRoutingId}`, @@ -150,9 +142,8 @@ export const OrderRoutingService = { deleteRoutingFilter, deleteRuleCondition, fetchOrderRouting, - fetchOrderRoutings, fetchRoutingFilters, - fetchRoutingGroup, + fetchRoutingGroupInformation, fetchRoutingGroups, fetchRoutingRules, fetchRuleActions, diff --git a/src/store/modules/orderRouting/actions.ts b/src/store/modules/orderRouting/actions.ts index 550346d..55bca4a 100644 --- a/src/store/modules/orderRouting/actions.ts +++ b/src/store/modules/orderRouting/actions.ts @@ -50,40 +50,11 @@ const actions: ActionTree = { } }, - async updateRoutingGroup({ commit, state }, payload) { - const current = JSON.parse(JSON.stringify(state.currentGroup)) - - const params = { - routingGroupId: payload.routingGroupId, - [payload.fieldToUpdate]: payload.value - } + async fetchCurrentRoutingGroup({ commit }, routingGroupId) { + let currentGroup = {} as any try { - const resp = await OrderRoutingService.updateRoutingGroup(params); - - if(!hasError(resp) && resp.data.routingGroupId) { - current[payload.fieldToUpdate] = payload.value - showToast("Rounting group information updated") - } else { - throw resp.data - } - } catch(err) { - logger.error(err); - } - commit(types.ORDER_ROUTING_CURRENT_GROUP_UPDATED, current) - }, - - async fetchCurrentRoutingGroup({ dispatch, state }, routingGroupId) { - const current = state.currentGroup - if(current.routingGroupId && current.routingGroupId === routingGroupId) { - dispatch("setCurrentRoutingGroup", current) - return; - } - - let currentGroup = {} - - try { - const resp = await OrderRoutingService.fetchRoutingGroup(routingGroupId); + const resp = await OrderRoutingService.fetchRoutingGroupInformation(routingGroupId); if(!hasError(resp) && resp.data) { currentGroup = resp.data @@ -94,41 +65,15 @@ const actions: ActionTree = { logger.error(err); } - dispatch("setCurrentRoutingGroup", currentGroup) - }, - - async setCurrentRoutingGroup({ commit }, payload) { - commit(types.ORDER_ROUTING_CURRENT_GROUP_UPDATED, payload) - }, - - async fetchOrderRoutings({ commit }, routingGroupId) { - let orderRoutings = [] as any; - // filter groups on the basis of productStoreId - const payload = { - routingGroupId + if(currentGroup.routings.length) { + currentGroup.routings = sortSequence(currentGroup.routings) } - try { - const resp = await OrderRoutingService.fetchOrderRoutings(payload); - - if(!hasError(resp) && resp.data.length) { - orderRoutings = resp.data - } else { - throw resp.data - } - } catch(err) { - logger.error(err); - } - - if(orderRoutings.length) { - orderRoutings = sortSequence(orderRoutings) - } - - commit(types.ORDER_ROUTINGS_UPDATED, orderRoutings) + commit(types.ORDER_ROUTING_CURRENT_GROUP_UPDATED, currentGroup) }, - async createOrderRouting({ commit, state }, payload) { - let orderRoutings = JSON.parse(JSON.stringify(state.routes)) + async createOrderRouting({ dispatch, state }, payload) { + const currentGroup = JSON.parse(JSON.stringify(state.currentGroup)) let orderRoutingId = '' try { @@ -136,19 +81,18 @@ const actions: ActionTree = { if(!hasError(resp) && resp?.data.orderRoutingId) { orderRoutingId = resp.data.orderRoutingId - orderRoutings.push({ + currentGroup["routings"].push({ ...payload, orderRoutingId }) - showToast('New Order Routing Created') + showToast('New routing created') } - // Sort the routings and update the state only on success - if(orderRoutings.length) { - orderRoutings = sortSequence(orderRoutings) + if(currentGroup["routings"].length) { + currentGroup["routings"] = sortSequence(currentGroup["routings"]) } - commit(types.ORDER_ROUTINGS_UPDATED, orderRoutings) + await dispatch("setCurrentGroup", currentGroup) } catch(err) { showToast("Failed to create order routing") logger.error('err', err) @@ -157,41 +101,8 @@ const actions: ActionTree = { return orderRoutingId; }, - async updateOrderRouting({ commit, state }, payload) { - let orderRoutings = JSON.parse(JSON.stringify(state.routes)) - const field: Route[keyof Route] = payload.fieldToUpdate - let orderRoutingId = '' - - const params = { - orderRoutingId: payload.orderRoutingId, - [field]: payload.value // only one field can be updated once for orderRouting - } - - try { - const resp = await OrderRoutingService.updateOrderRouting(params); - - if(!hasError(resp) && resp.data.orderRoutingId) { - orderRoutingId = resp.data.orderRoutingId - orderRoutings.map((routing: Route) => { - if(routing.orderRoutingId === orderRoutingId) { - routing[field] = payload.value - } - }) - showToast("Order routing information updated") - } else { - throw resp.data - } - } catch(err) { - showToast("Failed to update order routing") - logger.error(err); - } - - if(orderRoutings.length) { - orderRoutings = sortSequence(orderRoutings) - } - - commit(types.ORDER_ROUTINGS_UPDATED, orderRoutings) - return orderRoutingId; + async setCurrentGroup({ commit }, currentGroup) { + commit(types.ORDER_ROUTING_CURRENT_GROUP_UPDATED, currentGroup) }, async fetchCurrentOrderRouting({ dispatch, state }, orderRoutingId) { diff --git a/src/store/modules/orderRouting/getters.ts b/src/store/modules/orderRouting/getters.ts index a95480f..b38bfd2 100644 --- a/src/store/modules/orderRouting/getters.ts +++ b/src/store/modules/orderRouting/getters.ts @@ -6,9 +6,6 @@ const getters: GetterTree = { getRoutingGroups(state) { return state.groups }, - getOrderRoutings(state) { - return state.routes - }, getRoutingRules(state) { return JSON.parse(JSON.stringify(state.rules)) }, diff --git a/src/utils/index.ts b/src/utils/index.ts index 52856be..acfd9fd 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -119,6 +119,8 @@ const jsonToCsv = (file: any, options: JsonToCsvOption = {}) => { } const sortSequence = (sequence: Array) => { + // Currently, sorting is only performed on sequenceNum, so if two seqence have same seqNum then they will be arranged in FCFS basis + // TODO: Need to check that if for the above case we need to define the sorting on name as well, when seqNum is same return sequence.sort((a, b) => a.sequenceNum - b.sequenceNum) } diff --git a/src/views/BrokeringRoute.vue b/src/views/BrokeringRoute.vue index 3dd0f26..b3593f6 100644 --- a/src/views/BrokeringRoute.vue +++ b/src/views/BrokeringRoute.vue @@ -96,7 +96,7 @@ - + @@ -105,18 +105,17 @@