diff --git a/src/services/StockService.ts b/src/services/StockService.ts index 453ba906..9c865479 100644 --- a/src/services/StockService.ts +++ b/src/services/StockService.ts @@ -1,26 +1,48 @@ import { api } from '@/adapter'; +import { client } from "@hotwax/oms-api"; +import { getHardcodedToken } from '@/utils'; -const scheduleJob = async (payload: any): Promise => { - return api({ - url: "scheduleService", - method: "post", - data: payload +const scheduleJob = async (payload: any): Promise => { + const token = getHardcodedToken(); + const jobName = payload.jobName || payload.systemJobEnumId || payload.jobId || "JOB_SCHEDULED_RSTK"; + return client({ + baseURL: "http://localhost:8080/rest/s1", + url: `/admin/serviceJobs/${jobName}/runs`, + method: "POST", + data: payload, + headers: { + Authorization: 'Bearer ' + token, + 'Content-Type': 'application/json' + } }); } -const fetchJobInformation = async (payload: any): Promise => { - return api({ - url: "/findJobs", - method: "get", - params: payload +const fetchJobInformation = async (payload: any): Promise => { + const token = getHardcodedToken(); + return client({ + baseURL: "http://localhost:8080/rest/s1", + url: `/admin/serviceJobs`, + method: "GET", + params: payload, + headers: { + Authorization: 'Bearer ' + token, + 'Content-Type': 'application/json' + } }); } -const updateJob = async (payload: any): Promise => { - return api({ - url: "service/updateJobSandbox", - method: "post", - data: payload +const updateJob = async (payload: any): Promise => { + const token = getHardcodedToken(); + const jobName = payload.jobName || payload.systemJobEnumId || payload.jobId || "JOB_SCHEDULED_RSTK"; + return client({ + baseURL: "http://localhost:8080/", + url: `/apps/system/ServiceJob/Jobs/ServiceJobDetail/updateJobParameter`, + method: "POST", + data: payload, + headers: { + Authorization: 'Bearer ' + token, + 'Content-Type': 'application/json' + } }); } diff --git a/src/services/UploadService.ts b/src/services/UploadService.ts index f83fbe3c..63954f6b 100644 --- a/src/services/UploadService.ts +++ b/src/services/UploadService.ts @@ -1,5 +1,7 @@ import { api } from '@/adapter'; import { UploadRequest } from '@/types' +import { client } from "@hotwax/oms-api"; +import { getHardcodedToken } from '@/utils'; const uploadJsonFile = async (payload: any): Promise => { return api({ @@ -18,10 +20,16 @@ const uploadAndImportFile = async (payload: any): Promise => { } const createIncomingShipment = async (payload: any): Promise => { - return api({ - url: "/service/createIncomingShipment", + const token = getHardcodedToken(); + return client({ + baseURL: "http://localhost:8080/rest/s1", + url: "/poorti/createIncomingShipment", method: "post", - data: payload + data: payload, + headers: { + Authorization: 'Bearer ' + token, + 'Content-Type': 'application/json' + } }); } diff --git a/src/services/UserService.ts b/src/services/UserService.ts index af745e4d..50bf9635 100644 --- a/src/services/UserService.ts +++ b/src/services/UserService.ts @@ -2,6 +2,7 @@ import { api, client } from '@/adapter' import store from '@/store'; import { hasError } from '@/adapter'; import logger from '@/logger'; +import {getHardcodedToken} from "@/utils"; const login = async (username: string, password: string): Promise => { return api({ @@ -22,10 +23,16 @@ const getProfile = async (): Promise => { } const createFieldMapping = async (payload: any): Promise => { - return api({ - url: "/service/createDataManagerMapping", + const token = getHardcodedToken(); + return client({ + baseURL: "http://localhost:8080/rest/s1", + url: "/admin/dataManagerMapping", method: "POST", - data: payload + data: payload, + headers: { + Authorization: 'Bearer ' + token, + 'Content-Type': 'application/json' + } }); } @@ -46,10 +53,16 @@ const deleteFieldMapping = async (payload: any): Promise => { } const getFieldMappings = async (payload: any): Promise => { - return api({ - url: "/performFind", - method: "POST", - data: payload + const token = getHardcodedToken(); + return client({ + baseURL: "http://localhost:8080/rest/s1", + url: "/admin/dataManagerMapping", + method: "GET", + params: payload, + headers: { + Authorization: 'Bearer ' + token, + 'Content-Type': 'application/json' + } }); } diff --git a/src/services/UtilService.ts b/src/services/UtilService.ts index 40220c5a..265deb59 100644 --- a/src/services/UtilService.ts +++ b/src/services/UtilService.ts @@ -1,45 +1,80 @@ import { api } from '@/adapter' - -const getFacilities= async (payload: any): Promise => { - return api({ - url: "/performFind", +import { client } from "@hotwax/oms-api"; +import {getHardcodedToken} from "@/utils"; + +const getFacilities = async (payload: any): Promise => { + const token = getHardcodedToken(); + return client({ + baseURL: "http://localhost:8080/rest/s1", + url: "/admin/facilities", method: "GET", params: payload, - cache: true + cache: true, + headers: { + Authorization: 'Bearer ' + token, + 'Content-Type': 'application/json' + } }); } const getFacilityLocations = async (payload: any): Promise => { - return api({ - url: "/performFind", - method: "POST", - data: payload - }) + const token = getHardcodedToken(); + return client({ + baseURL: "http://localhost:8080/rest/s1", + url: `/facilities/${payload.inputFields.facilityId}/locations`, + method: "GET", + params: payload, + headers: { + Authorization: 'Bearer ' + token, + 'Content-Type': 'application/json' + } + }); } const fetchGoodIdentificationTypes = async (payload: any): Promise => { - return api({ - url: "/performFind", - method: "POST", - data: payload - }) + const token = getHardcodedToken(); + return client({ + baseURL: "http://localhost:8080/rest/s1", + url: "/oms/goodIdentificationTypes", + method: "GET", + params: payload, + headers: { + Authorization: 'Bearer ' + token, + 'Content-Type': 'application/json' + } + }); } const fetchShopifyShop = async (payload: any): Promise => { - return api({ - url: "/performFind", - method: "POST", - data: payload - }) + const token = getHardcodedToken(); + return client({ + baseURL: "http://localhost:8080/rest/s1", + url: "/admin/shopifyShops", + method: "GET", + params: payload, + headers: { + Authorization: 'Bearer ' + token, + 'Content-Type': 'application/json' + } + }); } -const fetchProductSelectorPref = async (payload: any): Promise => { - return api({ - url: "/performFind", +const fetchProductSelectorPref = async (payload?: any): Promise => { + const token = getHardcodedToken(); + const productStoreId = payload?.inputFields?.productStoreId || payload?.productStoreId; + const settingTypeEnumId = payload?.inputFields?.settingTypeEnumId || payload?.settingTypeEnumId || "PRDT_IDEN_PREF"; + return client({ + baseURL: "http://localhost:8080/rest/s1", + url: `/admin/productStores/${productStoreId}/settings`, method: "GET", - params: payload, - cache: true - }) + params: { + settingTypeEnumId: settingTypeEnumId + }, + headers: { + Authorization: 'Bearer ' + token, + 'Content-Type': 'application/json' + } + }); } const updateProductSelectorPref = async (payload: any): Promise => { @@ -51,18 +86,30 @@ const updateProductSelectorPref = async (payload: any): Promise => { } const fetchProductStores = async (payload: any): Promise => { - return api({ - url: "/performFind", - method: "POST", - data: payload - }) + const token = getHardcodedToken(); + return client({ + baseURL: "http://localhost:8080/rest/s1", + url: "/admin/users/productStores", + method: "GET", + params: payload, + headers: { + Authorization: 'Bearer ' + token, + 'Content-Type': 'application/json' + } + }); } const fetchProducts = async (query: any): Promise => { - return api({ - url: "searchProducts", + const token = getHardcodedToken(); + return client({ + baseURL: "http://localhost:8080/rest/s1", + url: "/admin/search/query", method: "POST", data: query, + headers: { + Authorization: 'Bearer ' + token, + 'Content-Type': 'application/json' + } }); } @@ -108,19 +155,31 @@ const removeShipmentItem = async (payload: any): Promise => { } const fetchDataManagerConfig = async (payload: any): Promise => { - return api ({ - url: "performFind", + const token = getHardcodedToken(); + return client({ + baseURL: "http://localhost:8080/rest/s1", + url: "/admin/dataManager", method: "GET", - params: payload - }) + params: payload, + headers: { + Authorization: 'Bearer ' + token, + 'Content-Type': 'application/json' + } + }); } const fetchDataManagerLogs = async (payload: any): Promise => { - return api ({ - url: "performFind", + const token = getHardcodedToken(); + return client({ + baseURL: "http://localhost:8080/rest/s1", + url: "/admin/dataManager/logs", method: "GET", - params: payload - }) + params: payload, + headers: { + Authorization: 'Bearer ' + token, + 'Content-Type': 'application/json' + } + }); } const fetchDataResource = async (payload: any): Promise => { diff --git a/src/store/modules/stock/actions.ts b/src/store/modules/stock/actions.ts index 05948e85..f287fc7d 100644 --- a/src/store/modules/stock/actions.ts +++ b/src/store/modules/stock/actions.ts @@ -15,7 +15,7 @@ const actions: ActionTree = { this.dispatch('util/updateFileProcessingStatus', true); //Fetching only top - const productIds = items.slice(0, process.env['VUE_APP_VIEW_SIZE']).map((item: any) => item.identification); + const productIdentificationIds = items.slice(0, process.env['VUE_APP_VIEW_SIZE']).map((item: any) => item.identification); // We are getting external facilityId from CSV, extract facilityId and pass for getting locations const externalFacilityIds = [...new Set(items.map((item: any) => item.externalFacilityId))] @@ -29,12 +29,12 @@ const actions: ActionTree = { }).filter((facilityId: any) => facilityId) store.dispatch('util/fetchFacilityLocations', facilityIds); - const viewSize = productIds.length; + const viewSize = productIdentificationIds.length; const viewIndex = 0; const payload = { viewSize, viewIndex, - productIds, + productIdentificationIds, identificationTypeId: items[0]?.identificationTypeId //fetching identificationTypeId from first item, as all the items will have one identification type } const cachedProducts = await store.dispatch("product/fetchProducts", payload); @@ -78,10 +78,10 @@ const actions: ActionTree = { }, async processUpdateRestockItems({ commit }, items) { - const productIds = items.map((item: any) => item.identification); + const productIdentificationIds = items.map((item: any) => item.identification); const payload = { - productIds, + productIdentificationIds, identificationTypeId: items[0]?.identificationTypeId }; @@ -149,7 +149,7 @@ const actions: ActionTree = { }, async scheduleService({ dispatch }, { params, restockName, scheduledTime, bulkFileProcessingJob }) { - let resp, job; + let resp, job, res; if(bulkFileProcessingJob) { job = bulkFileProcessingJob; @@ -162,40 +162,41 @@ const actions: ActionTree = { return; } - let payload = { - 'JOB_NAME': bulkFileProcessingJob ? job.jobName : restockName || `Created ${DateTime.now().toLocaleString(DateTime.DATETIME_MED)}`, - 'SERVICE_NAME': job.serviceName, - 'SERVICE_COUNT': '0', - 'SERVICE_TEMP_EXPR': bulkFileProcessingJob ? "EVERY_5_MIN" : job.jobStatus, - 'SERVICE_RUN_AS_SYSTEM':'Y', - 'jobFields': { - 'systemJobEnumId': job.systemJobEnumId, - 'tempExprId': bulkFileProcessingJob ? "EVERY_5_MIN" : job.jobStatus, // Need to remove this as we are passing frequency in SERVICE_TEMP_EXPR, currently kept it for backward compatibility - 'parentJobId': job.parentJobId, - 'runAsUser': 'system', //default system, but empty in run now. TODO Need to remove this as we are using SERVICE_RUN_AS_SYSTEM, currently kept it for backward compatibility - 'recurrenceTimeZone': this.state.user.current.userTimeZone, - 'createdByUserLogin': this.state.user.current.userLoginId, - 'lastModifiedByUserLogin': this.state.user.current.userLoginId, - 'instanceOfProductId': job.systemJobEnumId, - 'productStoreId': params?.productStoreId + const jobName = job.jobId || job.jobName || job.systemJobEnumId || "JOB_SCHEDULED_RSTK"; + + const payload: any = { + jobName, + serviceName: job.serviceName, + description: bulkFileProcessingJob ? job.jobName : restockName || `Created ${DateTime.now().toLocaleString(DateTime.DATETIME_MED)}`, + cronExpression: bulkFileProcessingJob ? "EVERY_5_MIN" : (job.jobStatus || job.cronExpression), + paused: "N", + parameters: { + shipmentId: params.shipmentId, + shopId: params.shopId }, - 'statusId': "SERVICE_PENDING", - 'systemJobEnumId': job.systemJobEnumId, - } as any + fromDate : scheduledTime.toString(), + repeatedCount : '0' + }; // If not a bulk file processing job, merge additional parameters of Scheduled Restock - if(!bulkFileProcessingJob) { - payload = { - ...payload, - ...params, - SERVICE_TIME: scheduledTime.toString(), - }; + if (!bulkFileProcessingJob && scheduledTime) { + payload.fromDate = scheduledTime.toString(); } - job?.priority && (payload['SERVICE_PRIORITY'] = job.priority.toString()) job?.sinceId && (payload['sinceId'] = job.sinceId) try { + if (payload.parameters) { + for (const [parameterName, parameterValue] of Object.entries(payload.parameters)) { + if (parameterValue) { + await StockService.updateJob({ + jobName: payload.jobName, + parameterName, + parameterValue: String(parameterValue) + }); + } + } + } resp = await StockService.scheduleJob({ ...payload }); if(resp.status == 200 && !hasError(resp)) { showToast(translate('Service has been scheduled')); @@ -214,37 +215,33 @@ const actions: ActionTree = { let resp, job: any = {}; const payload = { - "inputFields": { - "statusId": "SERVICE_DRAFT", - "statusId_op": "equals", - "systemJobEnumId": "JOB_SCHEDULED_RSTK", - "systemJobEnumId_op": "equals" - }, - "fieldList": [ "systemJobEnumId", "runTime", "tempExprId", "parentJobId", "serviceName", "jobId", "jobName", "currentRetryCount", "statusId", "runtimeDataId", "productStoreId", "priority"], - "noConditionFind": "Y", - "viewSize": 1, - "orderBy": "runTime ASC" + "jobName": "JOB_SCHEDULED_RSTK", + "jobTypeEnumId": "JOB_SCHEDULED_RSTK", + "systemJobEnumId": "JOB_SCHEDULED_RSTK" } try { resp = await StockService.fetchJobInformation(payload) - if(!hasError(resp) && resp.data.docs.length) { - job = resp.data.docs[0] - + const jobsList = resp.data.docs || resp.data.serviceJobList || resp.data.serviceJobs || resp.data.jobs || (Array.isArray(resp.data) ? resp.data : []); + if(!hasError(resp) && jobsList.length) { + const rawJob = jobsList[0]; job = { - ...job, - status: job.statusId, - enumId: job.systemJobEnumId, - frequency: job.tempExprId, - id: job.jobId + ...rawJob, + jobId: rawJob.jobId || rawJob.jobName, + serviceName: rawJob.serviceName, + status: rawJob.statusId, + systemJobEnumId: rawJob.jobTypeEnumId || rawJob.systemJobEnumId || "JOB_SCHEDULED_RSTK", + frequency: rawJob.tempExprId || rawJob.cronExpression, + jobStatus: rawJob.tempExprId || rawJob.cronExpression || rawJob.jobStatus || '', + id: rawJob.jobId || rawJob.jobName } } else { - throw resp.data + throw resp.data; } } catch(err) { - logger.error('Failed to fetch draft job') - job = {} + logger.error('Failed to fetch draft job', err); + job = {}; } return job; diff --git a/src/store/modules/util/actions.ts b/src/store/modules/util/actions.ts index 6988077c..dce039ab 100644 --- a/src/store/modules/util/actions.ts +++ b/src/store/modules/util/actions.ts @@ -25,7 +25,8 @@ const actions: ActionTree = { try { const resp = await UtilService.getFacilities(payload); if(resp.status === 200 && !hasError(resp)){ - commit(types.UTIL_FACILITIES_UPDATED, resp.data.docs); + const facilitiesList = resp.data.docs || resp.data.facilities || (Array.isArray(resp.data) ? resp.data : []); + commit(types.UTIL_FACILITIES_UPDATED, facilitiesList); } else { logger.error(resp) commit(types.UTIL_FACILITIES_UPDATED, []); @@ -95,8 +96,9 @@ const actions: ActionTree = { } try { const resp = await UtilService.fetchGoodIdentificationTypes(payload); - if (!hasError(resp) && resp.data.count > 0) { - commit(types.UTIL_GOOD_IDENTIFICATION_TYPES_UPDATED, resp.data.docs); + if (!hasError(resp)) { + const typesList = resp.data.docs || resp.data.goodIdentificationTypes || (Array.isArray(resp.data) ? resp.data : []); + commit(types.UTIL_GOOD_IDENTIFICATION_TYPES_UPDATED, typesList); } else { throw resp.data; } @@ -117,7 +119,7 @@ const actions: ActionTree = { try { const resp = await UtilService.fetchProductStores(payload); if (!hasError(resp)) { - productStores = resp.data.docs; + productStores = resp.data.docs || resp.data.productStores || (Array.isArray(resp.data) ? resp.data : []); } else { throw resp.data; } @@ -211,8 +213,9 @@ const actions: ActionTree = { try { const resp = await UtilService.fetchProductSelectorPref(payload) - if(!hasError(resp) && resp.data.docs?.length && resp.data.docs[0].settingValue) { - productSelectorPref = resp.data.docs[0].settingValue + const settingsList = resp.data.docs || resp.data.settings || resp.data.productStoreSettings || (Array.isArray(resp.data) ? resp.data : []); + if (!hasError(resp) && settingsList.length && settingsList[0].settingValue) { + productSelectorPref = settingsList[0].settingValue; } else { throw resp.data } diff --git a/src/utils/index.ts b/src/utils/index.ts index c361b546..6d0ede71 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -147,4 +147,9 @@ const saveDataFile = async (response: any, fileName: string) => { saveAs(blob, fileName); } -export { showToast, hasError , parseCsv , jsonToCsv, JsonToCsvOption, handleDateTimeInput, saveDataFile } +const getHardcodedToken = () => { + return "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3ODU4NDI1NzksImV4cCI6MTc4NTg0OTc3OSwiaXNzIjoiaXA2LWxvY2FsaG9zdCIsInVzZXJMb2dpbklkIjoiaG90d2F4LnVzZXIiLCJ1c2VySWQiOiJIT1RXQVhfVVNFUiJ9.NnEkFd-69NT3FZ2cQJk4n364DroqDXnT3xF4LqV-BnNvGEEqvF-8WLF2jYFoVphpdnW4XrrwpsLA1iL_ntz0nA"; +} + +export { showToast, hasError , parseCsv , jsonToCsv, JsonToCsvOption, handleDateTimeInput, saveDataFile, getHardcodedToken } + diff --git a/src/views/ScheduledRestock.vue b/src/views/ScheduledRestock.vue index 1ea501f7..692d5da2 100644 --- a/src/views/ScheduledRestock.vue +++ b/src/views/ScheduledRestock.vue @@ -212,17 +212,10 @@ export default defineComponent({ async fetchShopifyShops(productStoreId) { let shopifyShops = [] try { - const resp = await UtilService.fetchShopifyShop({ - entityName: "ShopifyShop", - fieldList: ['name', 'shopId'], - inputFields: { - productStoreId - }, - viewSize: 100 - }) + const resp = await UtilService.fetchShopifyShop({productStoreId}) if (!hasError(resp)) { - shopifyShops = resp.data.docs + shopifyShops = resp.data.docs || resp.data.shopifyShopAndConfigs || resp.data.shopifyShops || (Array.isArray(resp.data) ? resp.data : []); } else { throw resp.data }