Files
pedwfrontend/pages/api/endpoint/getbasicsearch_api.js
T
Robert Bond a25ab433a6 Merged PR 2279: passed in case customer email in search and update rep logic to stop non owne...
passed in case customer email in search and update rep logic to stop non owners rasing reps on other owners cases

Related work items: #22095
2026-04-28 12:00:12 +00:00

71 lines
2.6 KiB
JavaScript

/**
* @swagger
* /api/endpoint/getbasicsearch_api:
* get:
* tags: [Search]
* description: Basic search
* parameters:
* - name: searchString
* in: query
* required: true
* schema:
* type: string
* responses:
* 200:
* description: Success
*/
import { azureHeadersPaged } from "../../../actions/core/headers";
import { respondError } from "../middleware/apiResponse";
import { relayGet } from "../middleware/relayForwarding";
import { RELAY_POLICY_BOUNDED_READ } from "../middleware/relayPolicyPresets";
export default async function ApiProxy(req, res) {
const searchString = req.query.searchString;
if (typeof searchString !== "string" || searchString.trim().length === 0) {
return respondError(res, {
status: 400,
code: "SEARCH_STRING_REQUIRED",
message: "searchString is required"
});
}
const escapedSearchString = searchString.replace(/\'/g, "''");
const queryUrl =
"incidents?$select=pinswg_environmentalstatementlocation,pinswg_caseaddress,modifiedon,description,numberofchildincidents,_accountid_value,_customerid_value,_pinswg_associatedlpa_value,_ownerid_value,pinswg_appealcasetype,statuscode,ticketnumber,title, _primarycontactid_value,pinswg_lpareference,pinswg_appellantagent,pinswg_appellantfirstname,pinswg_appellantlastname&$expand=customerid_contact($select=fullname,emailaddress1)&$filter=(contains(title, '" +
escapedSearchString +
"') or contains(ticketnumber, '" +
escapedSearchString +
"') or contains(pinswg_lpareference, '" +
escapedSearchString +
"')) and pinswg_appealcasetype ne null " +
(process.env.SHOWSIPS !== "true"
? "and pinswg_appealcasetype ne 846040002 "
: "") +
"and pinswg_publishtoweb eq true&$orderby=createdon desc&$count=true";
const relayPolicy = RELAY_POLICY_BOUNDED_READ;
return relayGet({
queryUrl,
res,
requestOptionsBuilder: (accessToken) => azureHeadersPaged(accessToken),
relayPolicy,
transformData: (data) => {
if (Object.prototype.hasOwnProperty.call(data, "@odata.nextLink")) {
const dataStr = JSON.stringify(data["@odata.nextLink"]);
data["@odata.nextLink"] = dataStr.split("/v9.2/")[1];
}
return data;
},
errorResponse: {
status: 400,
code: "BASIC_SEARCH_FETCH_FAILED",
message: "Failed to fetch basic search results"
}
});
}