Updated the process for retrieving records from CRMServiceRequests
This commit is contained in:
@@ -2,10 +2,27 @@ function createFusionCrmServiceRequests({ isCurrentPeriodRequest,
|
||||
logRequestStart, logRequestSuccess, logRequestFailure, readResponseBodyForDebug, maskToken, environment }) {
|
||||
const { fetch } = environment;
|
||||
const url = "https://eeho.fa.us2.oraclecloud.com/crmRestApi/searchResources/latest/custom-actions/queries";
|
||||
function createPayload(offset) {
|
||||
async function requestSRSearchResources(token) {
|
||||
const searchUrl = `${url}?applications=461e5791-9f15-4cd1-b5cd-19e8480cbce4&entity=CRMServiceRequest&language=en&limit=-1&onlyData=true`;
|
||||
const headers = { Accept: "application/json", Authorization: `Bearer ${token}` };
|
||||
const entry = logRequestStart({ name: "requestSRSearchResources", method: "GET", url: searchUrl, headers });
|
||||
try {
|
||||
const response = await fetch(searchUrl, { method: "GET", credentials: "include", headers });
|
||||
logRequestSuccess(entry, response, await readResponseBodyForDebug(response));
|
||||
if (response.status !== 200) throw new Error(`requestSRSearchResources failed with status ${response.status}.`);
|
||||
const data = await response.json();
|
||||
const number = data?.items?.[0]?.savedSearchNumber;
|
||||
if (!Array.isArray(data?.items) || typeof number !== "string" || !number.trim()) {
|
||||
throw new Error("requestSRSearchResources did not return savedSearchNumber in its first item.");
|
||||
}
|
||||
return number.trim();
|
||||
} catch (error) { logRequestFailure(entry, error.message); throw error; }
|
||||
}
|
||||
function createPayload(offset, savedSearchNumber) {
|
||||
if (typeof savedSearchNumber !== "string" || !savedSearchNumber.trim()) throw new Error("Missing SR savedSearchNumber.");
|
||||
return {
|
||||
aggregationResults: false, applications: ["ORACLE-ISS-APP"], onlyData: true,
|
||||
entity: "CRMServiceRequest", copiedFrom: "queries/c521309c-1310-49a0-9723-da2eb1988205",
|
||||
entity: "CRMServiceRequest", copiedFrom: `queries/${savedSearchNumber.trim()}`,
|
||||
q: { op: "$and", criteria: [
|
||||
{ op: "$in", attribute: "StatusCd", values: ["SVC_PENDING_DELIVERY"] },
|
||||
{ op: "$eq", attribute: "RecordSet", value: "ORA_SVC_MY_SR_TEAM_SRS" }
|
||||
@@ -19,11 +36,13 @@ function createFusionCrmServiceRequests({ isCurrentPeriodRequest,
|
||||
};
|
||||
}
|
||||
async function requestCrmServiceRequest(token, version, isActive = () => isCurrentPeriodRequest(version), onProgress = () => {}) {
|
||||
if (!isActive()) return null;
|
||||
const savedSearchNumber = await requestSRSearchResources(token);
|
||||
const items = [];
|
||||
let offset = 0;
|
||||
let attempt = 1;
|
||||
while (isActive()) {
|
||||
const payload = createPayload(offset);
|
||||
const payload = createPayload(offset, savedSearchNumber);
|
||||
const headers = {
|
||||
Accept: "application/json", "Content-Type": "application/json", Authorization: `Bearer ${token}`,
|
||||
Origin: "https://eeho.fa.us2.oraclecloud.com", Preference: "transient"
|
||||
@@ -60,5 +79,5 @@ function createFusionCrmServiceRequests({ isCurrentPeriodRequest,
|
||||
}
|
||||
return null;
|
||||
}
|
||||
return { createPayload, requestCrmServiceRequest };
|
||||
return { createPayload, requestCrmServiceRequest, requestSRSearchResources };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user