/** * @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 } from "../middleware/apiResponse"; import { relayGet } 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)"; //" and statuscode eq 1&$count=true"; // queryUrl = // queryUrl + // getSelectQuery(appealTypeName) + // ",_" + // (primaryIdAttribute == "pinswg_sipscase" // ? "pinswg_sipscase_value" // : primaryIdAttribute + "s_value"); queryUrl = queryUrl + getSelectQuery(appealTypeName); // console.log( // "\n==========================================\n", // "\nSearch Details query ", // "\nAppealType: " + appealTypeName, // "\nIncident ID: " + incidentID, // "\n\nQuery url: " + queryUrl, // "\n==========================================\n" // ); return relayGet({ queryUrl, res, requestOptionsBuilder: (accessToken) => azureHeaders(accessToken), transformData: (data) => { let flattened = data.value.map((r) => ({ ...r, ticketnumber: r[navigationProperty]?.ticketnumber || null })); data.value = flattened; return data; }, errorResponse: { status: 400, code: "BASIC_SEARCH_DETAILS_FETCH_FAILED", message: "Failed to fetch basic search details" } }); }