509 lines
22 KiB
JavaScript
509 lines
22 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 axios from "axios";
|
|
import CryptoJS from "crypto-js";
|
|
import _ from "lodash";
|
|
import {
|
|
getToken,
|
|
azureHeaders,
|
|
consoleLogger,
|
|
getIncidentbyID,
|
|
} from "../../../actions";
|
|
import { JSONPath as jsonpath } from "jsonpath-plus";
|
|
import { object } from "prop-types";
|
|
|
|
const WORDKEY = process.env.HASHKEY;
|
|
|
|
const WEBAPI_URL =
|
|
process.env.RELAY_ROOT ||
|
|
"https://dev-pedw-ns.servicebus.windows.net/dev-pedw-hc/";
|
|
|
|
const hashAPIPath = (queryPath) => {
|
|
var hashlink = CryptoJS.HmacSHA256(
|
|
queryPath,
|
|
CryptoJS.enc.Hex.parse(WORDKEY)
|
|
);
|
|
hashlink = hashlink.toString(CryptoJS.enc.Hex);
|
|
|
|
//return "&hash=" + hashlink;
|
|
|
|
return (queryPath.indexOf("?") > -1 ? "&hash=" : "?hash=") + hashlink;
|
|
};
|
|
|
|
const getIncident = async (incidentID) => {
|
|
const queryUrl =
|
|
process.env.API_ROOT +
|
|
"/api/endpoint/getincidentbyid_api?searchString=" +
|
|
incidentID;
|
|
|
|
var config = {
|
|
method: "get",
|
|
url: queryUrl,
|
|
};
|
|
|
|
return axios(config)
|
|
.then((res) => {
|
|
return res.data;
|
|
})
|
|
.catch((error) => {
|
|
consoleLogger(error);
|
|
});
|
|
};
|
|
|
|
export default async function ApiProxy(req, res) {
|
|
var addressline1 = req.query.addressline1 || "";
|
|
var town = req.query.town || "";
|
|
var postcode = req.query.postcode || "";
|
|
var token = await getToken();
|
|
|
|
console.log("whats my parmas:", req.query);
|
|
|
|
addressline1 = addressline1.replace(/\'/g, "''");
|
|
typeof town != "undefined" && (town = town.replace(/\'/g, "''"));
|
|
|
|
var searchResultsObj = [];
|
|
|
|
var appealTypeArray = [
|
|
{
|
|
"LogicalCollectionName": "pinswg_advertses",
|
|
"LogicalName": "pinswg_adverts",
|
|
"PrimaryIdAttribute": "pinswg_advertsid",
|
|
"UrlName": "adverts",
|
|
"MetadataId": "0735866b-5482-eb11-aac0-00224800be9c",
|
|
"appealTypeID": "846040018",
|
|
"NavigationProperty": "pinswg_AdvertsIds",
|
|
"value": "Adverts",
|
|
},
|
|
{
|
|
"LogicalCollectionName": "pinswg_callinss77s",
|
|
"LogicalName": "pinswg_callinss77",
|
|
"PrimaryIdAttribute": "pinswg_callinss77id",
|
|
"UrlName": "callinss77",
|
|
"MetadataId": "dd309e51-4982-eb11-aac0-00224800be9c",
|
|
"appealTypeID": "846040010",
|
|
"NavigationProperty": "pinswg_CallInsS77Ids",
|
|
"value": "Called In Applications - S77",
|
|
},
|
|
{
|
|
"LogicalCollectionName": "pinswg_commonlands",
|
|
"LogicalName": "pinswg_commonland",
|
|
"PrimaryIdAttribute": "pinswg_commonlandid",
|
|
"UrlName": "commonland",
|
|
"MetadataId": "4161a618-5082-eb11-aac0-00224800be9c",
|
|
"appealTypeID": "846040016",
|
|
"NavigationProperty": "pinswg_CommonLandIds",
|
|
"value": "Common Land",
|
|
},
|
|
{
|
|
"LogicalCollectionName":
|
|
"pinswg_communityinfrastructurelevys117118119s",
|
|
"LogicalName": "pinswg_communityinfrastructurelevys117118119",
|
|
"PrimaryIdAttribute": "pinswg_communityinfrastructurelevyid",
|
|
"UrlName": "communityinfrastructurelevys117118119",
|
|
"MetadataId": "0c309f3c-4882-eb11-aac0-00224800be9c",
|
|
"appealTypeID": "846040009",
|
|
"NavigationProperty": "pinswg_CommunityInfrastructureLevyIds",
|
|
"value": "Community Infrastructure Levy - S117, 118, & 119",
|
|
},
|
|
{
|
|
"LogicalCollectionName": "pinswg_compulsorypurchaseorderses",
|
|
"LogicalName": "pinswg_compulsorypurchaseorders",
|
|
"PrimaryIdAttribute": "pinswg_compulsorypurchaseordersid",
|
|
"UrlName": "compulsorypurchaseorders",
|
|
"MetadataId": "054da4c7-5582-eb11-aac0-00224800be9c",
|
|
"appealTypeID": "846040019",
|
|
"NavigationProperty": "pinswg_CompulsoryPurchaseOrdersIds",
|
|
"value": "Compulsory Purchase Orders",
|
|
},
|
|
{
|
|
"LogicalCollectionName": "pinswg_dnses",
|
|
"LogicalName": "pinswg_dns",
|
|
"PrimaryIdAttribute": "pinswg_dnsid",
|
|
"UrlName": "dns",
|
|
"MetadataId": "36f07225-4a82-eb11-aac0-00224800be9c",
|
|
"appealTypeID": "846040011",
|
|
"NavigationProperty": "pinswg_DNSIds",
|
|
"value": "Developments of National Significance",
|
|
},
|
|
{
|
|
"LogicalCollectionName": "pinswg_electricityacts",
|
|
"LogicalName": "pinswg_electricityact",
|
|
"PrimaryIdAttribute": "pinswg_electricityactid",
|
|
"UrlName": "electricityact",
|
|
"MetadataId": "6aedaab1-4a82-eb11-aac0-00224800be9c",
|
|
"appealTypeID": "846040012",
|
|
"NavigationProperty": "pinswg_ElectricityActIds",
|
|
"value": "Electricity Act",
|
|
},
|
|
{
|
|
"LogicalCollectionName":
|
|
"pinswg_enforcementlistedbuildingconservationaps",
|
|
"LogicalName":
|
|
"pinswg_enforcementlistedbuildingandconservationappeals39",
|
|
"PrimaryIdAttribute": "pinswg_enforcementlistedbuildingconseid",
|
|
"UrlName": "enforcementlistedbuildingconservationap",
|
|
"MetadataId": "c697be96-9481-eb11-aac0-00224800be9c",
|
|
"appealTypeID": "846040006",
|
|
"NavigationProperty": "pinswg_EnforcementListedBuildingConseIds",
|
|
"value":
|
|
"Enforcement Listed Building and Conservation Appeal - S39",
|
|
},
|
|
{
|
|
"LogicalCollectionName": "pinswg_enforcementnoticeappeals174s",
|
|
"LogicalName": "pinswg_enforcementnoticeappeals174",
|
|
"PrimaryIdAttribute": "pinswg_enforcementnoticeappeals174id",
|
|
"UrlName": "enforcementnoticeappeals174",
|
|
"MetadataId": "930a3cc4-9181-eb11-aac0-00224800be9c",
|
|
"appealTypeID": "846040005",
|
|
"NavigationProperty": "pinswg_EnforcementNoticeAppealS174Ids",
|
|
"value": "Enforcement Notice Appeal - S174",
|
|
},
|
|
{
|
|
"LogicalCollectionName": "pinswg_environmentalpermittings",
|
|
"LogicalName": "pinswg_environmentalpermitting",
|
|
"PrimaryIdAttribute": "pinswg_enforcementpermittingid",
|
|
"UrlName": "environmentalpermitting",
|
|
"MetadataId": "62d4aa9a-5682-eb11-aac0-00224800be9c",
|
|
"appealTypeID": "846040020",
|
|
"NavigationProperty": "pinswg_EnforcementPermittingIds",
|
|
"value": "Environmental Permitting",
|
|
},
|
|
// {
|
|
// "LogicalCollectionName": "pinswg_harbourrevisionorders",
|
|
// "LogicalName": "pinswg_harbourrevisionorder",
|
|
// "PrimaryIdAttribute": "pinswg_harbourrevisionorderid",
|
|
// "UrlName": "harbourrevisionorder",
|
|
// "MetadataId": "dc8dcd0d-4f82-eb11-aac0-00224800be9c",
|
|
// "appealTypeID": "846040014",
|
|
// "NavigationProperty": "pinswg_HarbourRevisionOrderIds",
|
|
// "value": "Harbour Revision Order",
|
|
// },
|
|
{
|
|
"LogicalCollectionName":
|
|
"pinswg_hedgeshedgerowstreepreservationreplacems",
|
|
"LogicalName": "pinswg_hedgeshedgerowstreepreservationreplacem",
|
|
"PrimaryIdAttribute": "pinswg_hedgeshedgerowstreepreservatioid",
|
|
"UrlName": "hedgeshedgerowstreepreservationreplacem",
|
|
"MetadataId": "60f38fed-5382-eb11-aac0-00224800be9c",
|
|
"appealTypeID": "846040017",
|
|
"NavigationProperty": "pinswg_HedgesHedgerowsTreePreservatioIds",
|
|
"value":
|
|
"High Hedges, Tree Preservation orders, Hedgerows, Tree Replacement Notice.",
|
|
},
|
|
{
|
|
"LogicalCollectionName": "pinswg_householderappealhases",
|
|
"LogicalName": "pinswg_householderappealhas",
|
|
"PrimaryIdAttribute": "pinswg_householderappealhasid",
|
|
"UrlName": "householderappealhas",
|
|
"MetadataId": "a6c728b0-9081-eb11-aac0-00224800be9c",
|
|
"appealTypeID": "846040004",
|
|
"NavigationProperty": "pinswg_HouseholderAppealHASIds",
|
|
"value": "Householder and Minor Commercial Appeals - HAS/CAS",
|
|
},
|
|
{
|
|
"LogicalCollectionName": "pinswg_lawfuldevelopmentcertificates",
|
|
"LogicalName": "pinswg_lawfuldevelopmentcertificateappeals194195",
|
|
"PrimaryIdAttribute": "pinswg_lawfuldevelopmentcertificatappid",
|
|
"UrlName": "lawfuldevelopmentcertificateappeals1941",
|
|
"MetadataId": "184e4861-9681-eb11-aac0-00224800be9c",
|
|
"appealTypeID": "846040008",
|
|
"NavigationProperty": "pinswg_LawfulDevelopmentCertificatAppIds",
|
|
"value": "Lawful Development Certificate Appeal - S194 + 195",
|
|
},
|
|
// {
|
|
// "LogicalCollectionName": "pinswg_ldps",
|
|
// "LogicalName": "pinswg_ldp",
|
|
// "PrimaryIdAttribute": "pinswg_ldpid",
|
|
// "UrlName": "ldp",
|
|
// "MetadataId": "af424d4d-5882-eb11-aac0-00224800be9c",
|
|
// "appealTypeID": "846040023",
|
|
// "NavigationProperty": "pinswg_LDPIds",
|
|
// },
|
|
{
|
|
"LogicalCollectionName":
|
|
"pinswg_enforcementlistedbuildingconservationaps",
|
|
"LogicalName": "pinswg_enforcementlistedbuildingandconservationap",
|
|
"PrimaryIdAttribute": "pinswg_enforcementlistedbuildingconseid",
|
|
"UrlName": "enforcementlistedbuildingconservationap",
|
|
"MetadataId": "c697be96-9481-eb11-aac0-00224800be9c",
|
|
"appealTypeID": "846040006",
|
|
"NavigationProperty": "pinswg_EnforcementListedBuildingConseIds",
|
|
},
|
|
{
|
|
"LogicalCollectionName": "pinswg_maintenanceoflands217s",
|
|
"LogicalName": "pinswg_maintenanceoflands217",
|
|
"PrimaryIdAttribute": "pinswg_maintenanceoflands217id",
|
|
"UrlName": "maintenanceoflands217",
|
|
"MetadataId": "bb302784-9581-eb11-aac0-00224800be9c",
|
|
"appealTypeID": "846040007",
|
|
"NavigationProperty": "pinswg_MaintenanceofLandS217Ids",
|
|
"value": "Maintenance of Land - S217",
|
|
},
|
|
{
|
|
"LogicalCollectionName": "pinswg_miscellaneouscaseworks",
|
|
"LogicalName": "pinswg_misccasework",
|
|
"PrimaryIdAttribute": "pinswg_miscellaneouscasewordid",
|
|
"UrlName": "miscellaneouscasework",
|
|
"MetadataId": "f519aa8e-5782-eb11-aac0-00224800be9c",
|
|
"appealTypeID": "846040022",
|
|
"NavigationProperty": "pinswg_MiscellaneousCasewordIds",
|
|
},
|
|
{
|
|
"LogicalCollectionName": "pinswg_nonvalidations",
|
|
"LogicalName": "pinswg_nonvalidation",
|
|
"PrimaryIdAttribute": "pinswg_nonvalidationid",
|
|
"UrlName": "nonvalidation",
|
|
"MetadataId": "37f31a93-5882-eb11-aac0-00224800be9c",
|
|
"appealTypeID": "846040024",
|
|
"NavigationProperty": "pinswg_NonValidationIds",
|
|
"value": "Non-Validation",
|
|
},
|
|
{
|
|
"LogicalCollectionName": "pinswg_planningappeals78s",
|
|
"LogicalName": "pinswg_planningappeals78",
|
|
"PrimaryIdAttribute": "pinswg_planningappeals78id",
|
|
"UrlName": "planningappeals78",
|
|
"MetadataId": "8d7f813a-4183-eb11-aac0-00224800be9c",
|
|
"appealTypeID": "846040000",
|
|
"NavigationProperty": "pinswg_PlanningAppealS78Ids",
|
|
"value": "Planning Appeal - S78",
|
|
},
|
|
{
|
|
"LogicalCollectionName": "pinswg_planningconditionss73s79s",
|
|
"LogicalName": "pinswg_planningconditionss73s79",
|
|
"PrimaryIdAttribute": "pinswg_planningconditionss73s79id",
|
|
"UrlName": "planningconditionss73s79",
|
|
"MetadataId": "093bf9ff-8d81-eb11-aac0-00224800be9c",
|
|
"appealTypeID": "846040001",
|
|
"NavigationProperty": "pinswg_PlanningConditionsS73S79Ids",
|
|
"value": "Planning Conditions - S73 + S79",
|
|
},
|
|
{
|
|
"LogicalCollectionName": "pinswg_planningobligationappeals106s",
|
|
"LogicalName": "pinswg_planningobligationappeals106",
|
|
"PrimaryIdAttribute": "pinswg_planningobligationappeals106id",
|
|
"UrlName": "planningobligationappeals106",
|
|
"MetadataId": "cb8beeae-8f81-eb11-aac0-00224800be9c",
|
|
"appealTypeID": "846040003",
|
|
"NavigationProperty": "pinswg_PlanningObligationAppealS106Ids",
|
|
"value": "Planning Obligation Appeal - S106",
|
|
},
|
|
{
|
|
"LogicalCollectionName": "pinswg_rows",
|
|
"LogicalName": "pinswg_row",
|
|
"PrimaryIdAttribute": "pinswg_rowid",
|
|
"UrlName": "row",
|
|
"MetadataId": "4ccc6e93-4f82-eb11-aac0-00224800be9c",
|
|
"appealTypeID": "846040015",
|
|
"NavigationProperty": "pinswg_ROWIds",
|
|
"value": "Rights of Way",
|
|
},
|
|
{
|
|
"LogicalCollectionName": "pinswg_transportandworkacts",
|
|
"LogicalName": "pinswg_transportandworksact",
|
|
"PrimaryIdAttribute": "pinswg_transportandworkactid",
|
|
"UrlName": "transportandworksact",
|
|
"MetadataId": "bc3edc4b-7d82-eb11-aac0-00224800be9c",
|
|
"appealTypeID": "846040013",
|
|
"NavigationProperty": "pinswg_TransportandWorkActIds",
|
|
"value": "Transport and Works Act",
|
|
},
|
|
{
|
|
"LogicalCollectionName": "pinswg_wayleaves",
|
|
"LogicalName": "pinswg_wayleave",
|
|
"PrimaryIdAttribute": "pinswg_wayleaveid",
|
|
"UrlName": "wayleave",
|
|
"MetadataId": "a0652117-5782-eb11-aac0-00224800be9c",
|
|
"appealTypeID": "846040021",
|
|
"NavigationProperty": "pinswg_WayleaveIds",
|
|
"value": "Wayleave",
|
|
},
|
|
];
|
|
|
|
const getSearchResultsObj = await Promise.all(
|
|
appealTypeArray.map(async (item) => {
|
|
let container = {};
|
|
|
|
var queryUrl =
|
|
item.LogicalCollectionName +
|
|
"?$count=true&$filter=" +
|
|
(addressline1 != ""
|
|
? "(contains(" +
|
|
(item.LogicalCollectionName == "pinswg_ldps" ||
|
|
item.LogicalCollectionName ==
|
|
"pinswg_harbourrevisionorders" ||
|
|
item.LogicalCollectionName == "pinswg_electricityacts" ||
|
|
item.LogicalCollectionName ==
|
|
"pinswg_transportandworkacts" ||
|
|
item.LogicalCollectionName == "pinswg_dnses"
|
|
? "pinswg_addressline1"
|
|
: "pinswg_siteaddressline1") +
|
|
", '" +
|
|
addressline1 +
|
|
"')) "
|
|
: "") +
|
|
(town != ""
|
|
? (addressline1 != "" ? " and " : "") +
|
|
" (contains(" +
|
|
(item.LogicalCollectionName == "pinswg_ldps" ||
|
|
item.LogicalCollectionName ==
|
|
"pinswg_harbourrevisionorders"
|
|
? "pinswg_town"
|
|
: item.LogicalCollectionName ==
|
|
"pinswg_transportandworkacts" ||
|
|
item.LogicalCollectionName ==
|
|
"pinswg_electricityacts" ||
|
|
item.LogicalCollectionName == "pinswg_dnses"
|
|
? "pinswg_addresstown"
|
|
: "pinswg_siteaddresstown") +
|
|
", '" +
|
|
town +
|
|
"')) "
|
|
: "") +
|
|
(postcode != ""
|
|
? (addressline1 != "" || town != "" ? " and " : "") +
|
|
" (contains(" +
|
|
(item.LogicalCollectionName == "pinswg_ldps" ||
|
|
item.LogicalCollectionName ==
|
|
"pinswg_harbourrevisionorders"
|
|
? "pinswg_postcode"
|
|
: item.LogicalCollectionName ==
|
|
"pinswg_transportandworkacts" ||
|
|
item.LogicalCollectionName ==
|
|
"pinswg_electricityacts" ||
|
|
item.LogicalCollectionName == "pinswg_dnses"
|
|
? "pinswg_postcode"
|
|
: "pinswg_siteaddresspostcode") +
|
|
", '" +
|
|
postcode +
|
|
"')) "
|
|
: "") +
|
|
"&$orderby=createdon desc&$select=modifiedon,_pinswg_appellant_value,pinswg_name," +
|
|
(item.LogicalCollectionName == "pinswg_ldps" ||
|
|
item.LogicalCollectionName == "pinswg_harbourrevisionorders"
|
|
? "pinswg_addresstown,pinswg_addressline1,pinswg_addresscounty,pinswg_addressline2,pinswg_addresspostcode"
|
|
: item.LogicalCollectionName == "pinswg_electricityacts" ||
|
|
item.LogicalCollectionName == "pinswg_dnses" ||
|
|
item.LogicalCollectionName ==
|
|
"pinswg_transportandworkacts"
|
|
? "pinswg_addresstown,pinswg_addressline1,pinswg_addresscounty,pinswg_addressline2,pinswg_postcode"
|
|
: item.LogicalCollectionName == "pinswg_rows"
|
|
? "pinswg_siteaddresstown,pinswg_siteaddressline1,pinswg_sitecounty,pinswg_siteaddressline2,pinswg_siteaddresspostcode"
|
|
: "pinswg_siteaddresstown,pinswg_siteaddressline1,pinswg_siteaddresscounty,pinswg_siteaddressline2,pinswg_siteaddresspostcode") +
|
|
"," +
|
|
(item.LogicalCollectionName == "pinswg_dnses" ||
|
|
item.LogicalCollectionName == "pinswg_transportandworkacts"
|
|
? "pinswg_dateofdecision"
|
|
: item.LogicalCollectionName == "pinswg_nonvalidations"
|
|
? "pinswg_decisionissueddate"
|
|
: item.LogicalCollectionName == "pinswg_electricityacts"
|
|
? "pinswg_datedecision"
|
|
: "pinswg_casedecisiondate") +
|
|
"," +
|
|
(item.LogicalCollectionName == "pinswg_planningappeals78s"
|
|
? "pinswg_dicision"
|
|
: item.LogicalCollectionName ==
|
|
"pinswg_transportandworkacts"
|
|
? "pinswg_decsision"
|
|
: item.LogicalCollectionName == "pinswg_nonvalidations"
|
|
? "pinswg_decisionissued"
|
|
: "pinswg_decision") +
|
|
"," +
|
|
(item.LogicalCollectionName == "pinswg_nonvalidations"
|
|
? ""
|
|
: "pinswg_dateeventrequested,") +
|
|
"statuscode,_" +
|
|
item.NavigationProperty.toLowerCase() +
|
|
"_value";
|
|
|
|
// console.log(
|
|
// "\n==========================================\n",
|
|
// "basic search: " + queryUrl,
|
|
// "\n\n",
|
|
// item.LogicalCollectionName,
|
|
// "\n\n",
|
|
// WEBAPI_URL + queryUrl + hashAPIPath(queryUrl),
|
|
// "\n==========================================\n"
|
|
// );
|
|
|
|
const resultObj = axios
|
|
.get(
|
|
WEBAPI_URL + queryUrl + hashAPIPath(queryUrl),
|
|
azureHeaders(token.access_token)
|
|
)
|
|
.then(({ data }) => {
|
|
data.value.map(async (key) => {
|
|
Object.assign(key, {
|
|
"pinswg_appealType": item.value,
|
|
"incidentid":
|
|
key[
|
|
"_" +
|
|
item.NavigationProperty.toLowerCase() +
|
|
"_value"
|
|
],
|
|
});
|
|
});
|
|
return searchResultsObj.push(data);
|
|
})
|
|
.catch((err) => {
|
|
console.log(consoleLogger(err));
|
|
res.status(400).json(err);
|
|
});
|
|
|
|
return resultObj;
|
|
})
|
|
);
|
|
|
|
searchResultsObj = jsonpath("$..[?(@ && @.pinswg_name)]", searchResultsObj);
|
|
|
|
const getIncidentResultsObj = await Promise.all(
|
|
searchResultsObj.map(async (key) => {
|
|
var queryUrl =
|
|
"incidents?$select=pinswg_publishtoweb,modifiedon,description,numberofchildincidents,_accountid_value,_customerid_value,_pinswg_associatedlpa_value,_ownerid_value,pinswg_appealcasetype,statuscode,ticketnumber,title, _primarycontactid_value,pinswg_lpareference&$expand=primarycontactid($select=fullname)&$filter=incidentid eq " +
|
|
key.incidentid +
|
|
" and pinswg_appealcasetype ne null &$orderby=createdon desc&$count=true";
|
|
|
|
const incidentObj = await axios
|
|
.get(
|
|
WEBAPI_URL + queryUrl + hashAPIPath(queryUrl),
|
|
azureHeaders(token.access_token)
|
|
)
|
|
.then(({ data }) => {
|
|
return data.value[0].pinswg_publishtoweb;
|
|
});
|
|
Object.assign(key, {
|
|
"pinswg_publishtoweb": incidentObj,
|
|
});
|
|
|
|
return incidentObj;
|
|
})
|
|
);
|
|
|
|
searchResultsObj = searchResultsObj.filter(
|
|
(arr) => arr.pinswg_publishtoweb
|
|
);
|
|
|
|
let searchResultsOutputObj = {};
|
|
Object.assign(searchResultsOutputObj, {
|
|
"@odata.count": searchResultsObj.length,
|
|
"value": searchResultsObj,
|
|
});
|
|
|
|
return res.status(200).json(searchResultsOutputObj);
|
|
}
|