Files
pedwfrontend/pages/api/endpoint/getbasicsearchdetails_api.js
T
Robert Bond 5bf885933d Merged PR 2262: shows primary lpa and then lists additional lps below on the portal summary tab
shows primary lpa and then lists additional lps below on the portal summary tab

Related work items: #22699
2026-04-21 08:39:37 +00:00

138 lines
4.1 KiB
JavaScript

/**
* @swagger
* /api/endpoint/getbasicsearchdetails_api:
* get:
* tags: [Search]
* description: Basic search details
* parameters:
* - name: appealTypeName
* description:
* in: query
* required: true
* example: pinswg_planningappeals78s
* schema:
* type: string
* - name: primaryIdAttribute
* in: query
* required: true
* example: pinswg_planningappeals78id
* schema:
* type: string
* - name: incidentID
* in: query
* required: true
* example: 1f129091-cb0f-ec11-aac8-00224800be9c
* schema:
* type: string
* responses:
* 200:
* description: Success
*/
import { azureHeaders } from "../../../actions/core/headers";
import { getSelectQuery } from "../../../actions/selectQueryTypes";
import { getNavigationPropertyByPrimaryAttribute } from "../../../components/utils";
import { respondError, respondSuccess } from "../middleware/apiResponse";
import { relayGetData } from "../middleware/relayForwarding";
export default async function ApiProxy(req, res) {
const appealTypeName = req.query.appealTypeName;
const primaryIdAttribute = req.query.primaryIdAttribute;
const incidentID = req.query.incidentID;
if (
typeof appealTypeName !== "string" ||
appealTypeName.trim().length === 0
) {
return respondError(res, {
status: 400,
code: "APPEAL_TYPE_NAME_REQUIRED",
message: "appealTypeName is required"
});
}
if (
typeof primaryIdAttribute !== "string" ||
primaryIdAttribute.trim().length === 0
) {
return respondError(res, {
status: 400,
code: "PRIMARY_ID_ATTRIBUTE_REQUIRED",
message: "primaryIdAttribute is required"
});
}
if (typeof incidentID !== "string" || incidentID.trim().length === 0) {
return respondError(res, {
status: 400,
code: "INCIDENT_ID_REQUIRED",
message: "incidentID is required"
});
}
const navigationProperty =
getNavigationPropertyByPrimaryAttribute(
primaryIdAttribute
).NavigationProperty;
let queryUrl =
appealTypeName +
"?$filter=_" +
(primaryIdAttribute == "pinswg_sipscase"
? "pinswg_sipscase_value"
: primaryIdAttribute + "s_value ") +
" eq " +
incidentID +
"&$count=true" +
"&$expand=" +
navigationProperty +
"($select=ticketnumber)";
queryUrl = queryUrl + getSelectQuery(appealTypeName);
const incidentQueryUrl =
"incidents(" +
incidentID +
")?$select=title,ticketnumber" +
"&$expand=pinswg_Incident_Account_AdditionalLPAs($select=name,accountnumber)" +
"&$count=true";
try {
const [searchResult, incidentResult] = await Promise.all([
relayGetData({
queryUrl,
requestOptionsBuilder: (accessToken) =>
azureHeaders(accessToken)
}),
relayGetData({
queryUrl: incidentQueryUrl,
requestOptionsBuilder: (accessToken) =>
azureHeaders(accessToken)
})
]);
const data = searchResult.data;
const incidentData = incidentResult.data;
const additionalLPAs =
incidentData?.pinswg_Incident_Account_AdditionalLPAs || [];
data.value = (data.value || []).map((r) => ({
...r,
ticketnumber:
r[navigationProperty]?.ticketnumber ||
incidentData?.ticketnumber ||
null,
incidenttitle: incidentData?.title || null,
additionalLPAs
}));
return respondSuccess(res, data);
} catch (error) {
return respondError(res, {
status: 400,
code: "BASIC_SEARCH_DETAILS_FETCH_FAILED",
message: "Failed to fetch basic search details"
});
}
}