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..9f4d34a 100644 --- a/src/store/modules/orderRouting/actions.ts +++ b/src/store/modules/orderRouting/actions.ts @@ -5,7 +5,8 @@ import { OrderRoutingService } from "@/services/RoutingService" import { hasError, showToast, sortSequence } from "@/utils" import * as types from './mutation-types' import logger from "@/logger" -import { Route, RouteFilter } from "@/types" +import { RouteFilter } from "@/types" +import { DateTime } from "luxon" const actions: ActionTree = { async fetchOrderRoutingGroups({ commit }) { @@ -35,7 +36,8 @@ const actions: ActionTree = { async createRoutingGroup({ dispatch }, groupName) { const payload = { groupName, - productStoreId: "STORE" + productStoreId: "STORE", + createdDate: DateTime.now().toMillis() } try { const resp = await OrderRoutingService.createRoutingGroup(payload) @@ -50,40 +52,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 +67,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 +83,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 +103,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..17fb80a 100644 --- a/src/views/BrokeringRoute.vue +++ b/src/views/BrokeringRoute.vue @@ -96,7 +96,7 @@ - + @@ -107,16 +107,15 @@