Files
pedwfrontend/pages/api/endpoint/getmylpacases_api.js
T

93 lines
3.1 KiB
JavaScript

/**
* @swagger
* /api/endpoint/getmylpacases_api:
* get:
* tags: [Portal]
* description: Get My LPA Cases
* summary: Phase 2
* parameters:
* - name: lpaid
* in: query
* required: true
* example: 726158c6-708d-ec11-aad8-00224800be9c
* schema:
* type: string
* responses:
* 200:
* description: Success
*/
import { JSONPath as jsonpath } from "jsonpath-plus";
import { getLPA } from "../../../actions/services/referenceDataService";
import { azureHeaders } from "../../../actions/core/headers";
import { respondError } from "../middleware/apiResponse";
import { relayGet } from "../middleware/relayForwarding";
export default async function ApiProxy(req, res) {
const lpaid = req.query.lpaid;
if (typeof lpaid !== "string" || lpaid.trim().length === 0) {
return respondError(res, {
status: 400,
code: "LPA_ID_REQUIRED",
message: "lpaid is required"
});
}
try {
const lpaList = await getLPA();
const lpaGUID = jsonpath({
path: '$..[?(@ && @.name=="' + lpaid + '")]',
json: lpaList,
eval: true
});
if (!Array.isArray(lpaGUID) || !lpaGUID[0]?.accountid) {
return respondError(res, {
status: 404,
code: "LPA_NOT_FOUND",
message: "No matching LPA found"
});
}
//console.log(
// '$..[?(@ && @.name="' + lpaid + '")]',
// lpaList,
// lpaid,
// "LPAGUID=",
// lpaGUID
// );
const queryUrl =
"incidents?$select=pinswg_environmentalstatementlocation,modifiedon,description,numberofchildincidents,_accountid_value,_customerid_value,_pinswg_associatedlpa_value,_ownerid_value,pinswg_appealcasetype,statuscode,ticketnumber,title, _primarycontactid_value,pinswg_lpareference,pinswg_appellantlastname,pinswg_appellantfirstname,pinswg_appellantagent,pinswg_agentfirstname,pinswg_agentlastname,pinswg_agentcompanyname&$expand=primarycontactid($select=fullname)&$filter=_pinswg_associatedlpa_value eq " +
lpaGUID[0].accountid +
" and servicestage eq 0 and pinswg_appealcasetype ne null&$orderby=createdon desc&$count=true";
//console.log("///////////\nPortal query: ", queryUrl, "<<<<end query");
return relayGet({
queryUrl,
res,
requestOptionsBuilder: (accessToken) => azureHeaders(accessToken),
transformData: (data) => {
data.value.forEach(function (element) {
element.pinswg_title = element.title;
});
return data;
},
errorResponse: {
status: 400,
code: "MY_LPA_CASES_FETCH_FAILED",
message: "Failed to fetch my LPA cases"
}
});
} catch (error) {
return respondError(res, {
status: 400,
code: "MY_LPA_CASES_FETCH_FAILED",
message: "Failed to fetch my LPA cases"
});
}
}