Files
pedwfrontend/actions/index.js
T

437 lines
17 KiB
JavaScript

import axios from "axios";
import https from "https";
//import {XMLHttpRequest} from 'xmlhttprequest';
process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = 0;
let BASE_URL;
const port = parseInt(process.env.PORT, 10) || 3000;
if (process.browser) {
BASE_URL = window.apiRoot;
} else {
BASE_URL = process.env.API_ROOT || `http://localhost:${port}`;
}
const WEBAPI_URL = "https://devcrm2016.llcdt.gov.wales/DVPINS";
const API_PATH = "/api/data/v8.2/";
const agent = new https.Agent({
rejectUnauthorized: false,
});
const crmHeaders = {
withCredentials: true,
headers: {
"Content-Type": "application/json; charset=utf-8",
"OData-MaxVersion": "4.0",
"OData-Version": "4.0",
"Accept": "application/json",
"Prefer": 'odata.include-annotations="*"',
"Authorization":
"Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IlVXelVaa0U3OEx0NVBGRkJ0LV9seVdoMjdjTSIsImtpZCI6IlVXelVaa0U3OEx0NVBGRkJ0LV9seVdoMjdjTSJ9.eyJhdWQiOiJodHRwczovL2RldmNybTIwMTYubGxjZHQuZ292LndhbGVzLyIsImlzcyI6Imh0dHA6Ly9mcy50ZXN0Lmdvdi53YWxlcy9hZGZzL3NlcnZpY2VzL3RydXN0IiwiaWF0IjoxNjMxMDAwMjUxLCJuYmYiOjE2MzEwMDAyNTEsImV4cCI6MTYzMTAyOTA1MSwidXBuIjpbIlJvYmVydC5Cb25kQHRlc3QuZ292LndhbGVzIiwicm9iZXJ0LmJvbmRAdGVzdC5nb3Yud2FsZXMiXSwicHJpbWFyeXNpZCI6IlMtMS01LTIxLTE4MDA4NDIwNzYtMjQ1NTYwNjU5LTQyMTU3NzU0NjktMTY2MjgiLCJ1bmlxdWVfbmFtZSI6IlhNXFxCb25kUiIsImFwcHR5cGUiOiJQdWJsaWMiLCJhcHBpZCI6IjQyN2ZhNzljLWI1ZmMtNDJhZC04M2Q0LTQxMGIwMzk0OGFiNiIsImF1dGhtZXRob2QiOiJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dzLzIwMDgvMDYvaWRlbnRpdHkvYXV0aGVudGljYXRpb25tZXRob2Qvd2luZG93cyIsImF1dGhfdGltZSI6IjIwMjEtMDktMDdUMDc6Mzc6MjIuMzM3WiIsInZlciI6IjEuMCJ9.L8husDSMXMtZxpxKDS0cpPplG6xoHQjSdd17qMfgKZaEUPUOKPy4rznxNwAMp7WxussNeK__nOKE9vHNgc5Nk4lzxbvcYy3jeE7bLWHsB5UYFa1FIrPZpzuEdPIgoWAzhTa4k-anzsA0YNMHpV6QHT14F9wkBTsT8MUtpT2BiNfbflQQ_xtQavp_pCww-1-guysM6USv5NJkuvrHpXjA5_HpaGbprLI8Or3Htjsdgq9c4uCxfjoAGZsjUmtvaIL-jQnkR6-ndYezo12tes7ql2iV4iZT4-fvcib8sUdzHkgFvNmyzMblhogUo8QciTBcvF7-syCfNzLG2vvWSZJ9_g",
},
};
export const getBasicSearch = (searchString) => {
console.log("got to axios", searchString);
console.log("api_root: ", BASE_URL);
return (
axios
//.get("https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/incidents?$select=_accountid_value,_customerid_value,pinswg_appealcasetype,statuscode,ticketnumber,title&$filter=contains(title, '" + searchString + "')&$count=true", crmHeaders)
//.get("https://jsonplaceholder.typicode.com/todos/1",{proxy:{protocol: 'http',host:'lon3.sme.zscloud.net',port: 80}})
// .get(BASE_URL + "/api/searchresults2", {
// httpsAgent: new https.Agent({ rejectUnauthorized: false }),
// })
.get(
WEBAPI_URL +
API_PATH +
"incidents?$select=_accountid_value,_customerid_value,pinswg_appealcasetype,statuscode,ticketnumber,title&$filter=contains(title, '" +
searchString +
"')&$count=true",
crmHeaders
)
.then((res) => res.data)
.catch((error) => {
console.log("thiserror", error);
})
);
};
export const getBasicSearchDetails = (appealType, caseReference) => {
return axios
.get(
WEBAPI_URL +
API_PATH +
"/pinswg_ " +
appealType +
"?$filter=pinswg_name eq '" +
caseReference +
"'&$count=true",
crmHeaders
)
.then((res) => res.data)
.catch((error) => {
console.log("thiserror", error);
});
};
export const getFormData = (whichForm) => {
console.log("got to axios", whichForm);
console.log("api_root: ", BASE_URL);
return (
axios
//.get("api/appealforms/pinswg_dns", {
//.get("api/appealforms/pinswg_planningobligationappeals106", {
//.get("api/appealforms/pinswg_planningconditionss73s79", {
//.get("api/appealforms/pinswg_row", {
//.get("api/appealforms/pinswg_transportandworkact", {
//.get("api/appealforms/pinswg_harbourrevisionorder", {
//.get("api/appealforms/pinswg_planningappeals78", {
//.get(api/appealforms/pinswg_householderappealhas", {
// .get(BASE_URL + "/api/appealforms/pinswg_" + whichForm, {
// httpsAgent: new https.Agent({ rejectUnauthorized: false }),
// })
.get(
WEBAPI_URL +
API_PATH +
"systemforms?$select=formid,name,formxml,type,objecttypecode&$filter=(objecttypecode%20eq%20%27pinswg_" +
whichForm +
"%27and%20type%20eq%202)&$count=true",
crmHeaders
)
.then((res) => res.data)
.catch((error) => {
console.log("thiserror", error);
})
);
};
export const getMandatoryFields = (whichForm) => {
return axios
.get(
WEBAPI_URL +
API_PATH +
"EntityDefinitions(LogicalName='pinswg_" +
whichForm +
"')/Attributes?$count=true&$select=LogicalName,RequiredLevel",
crmHeaders
)
.then((res) => res.data)
.catch((error) => {
console.log("thiserror", error);
});
};
export const getPickLists = (whichForm) => {
return axios
.get(
WEBAPI_URL +
API_PATH +
"EntityDefinitions(LogicalName='pinswg_" +
whichForm +
"')/Attributes/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?$select=LogicalName&$expand=OptionSet,GlobalOptionSet&$count=true",
crmHeaders
)
.then((res) => res.data)
.catch((error) => {
console.log("thiserror", error);
});
};
export const getAppealsTypes = () => {
console.log("got to axios: appeal types");
console.log("api_root: ", BASE_URL);
return (
axios
// .get(BASE_URL + "/api/lookups/pinswg_appealcasetype", {
// httpsAgent: new https.Agent({ rejectUnauthorized: false }),
// })
.get(
WEBAPI_URL +
API_PATH +
"stringmaps?$filter=attributename%20eq%20%27pinswg_appealcasetype%27&$count=true&$select=value,stringmapid,organizationid,attributevalue",
crmHeaders
)
.then((res) => res.data)
.catch((error) => {
console.log("thiserror", error);
})
);
};
export const getBasicSearch2 = (searchString) => {
var req = new XMLHttpRequest();
req.open(
"GET",
"https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/incidents?$select=_accountid_value,_customerid_value,pinswg_appealcasetype,statuscode,ticketnumber,title&$filter=contains(title, '" +
searchString +
"')&$count=true",
true
);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("Prefer", 'odata.include-annotations="*"');
req.onreadystatechange = function () {
if (this.readyState === 4) {
req.onreadystatechange = null;
if (this.status === 200) {
var results = JSON.parse(this.response);
var recordCount = results["@odata.count"];
for (var i = 0; i < results.value.length; i++) {
var _accountid_value = results.value[i]["_accountid_value"];
var _accountid_value_formatted =
results.value[i][
"_accountid_value@OData.Community.Display.V1.FormattedValue"
];
var _accountid_value_lookuplogicalname =
results.value[i][
"_accountid_value@Microsoft.Dynamics.CRM.lookuplogicalname"
];
var _customerid_value =
results.value[i]["_customerid_value"];
var _customerid_value_formatted =
results.value[i][
"_customerid_value@OData.Community.Display.V1.FormattedValue"
];
var _customerid_value_lookuplogicalname =
results.value[i][
"_customerid_value@Microsoft.Dynamics.CRM.lookuplogicalname"
];
var pinswg_appealcasetype =
results.value[i]["pinswg_appealcasetype"];
var pinswg_appealcasetype_formatted =
results.value[i][
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
];
var statuscode = results.value[i]["statuscode"];
var ticketnumber = results.value[i]["ticketnumber"];
var title = results.value[i]["title"];
}
} else {
console.log(this.statusText);
}
}
};
return req.send();
};
//get list of entitydefinitions
//https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/EntityDefinitions?$select=LogicalName
// get list of appealtypes
//https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/stringmaps?$filter=attributename%20eq%20%27pinswg_appealcasetype%27&$count=true
//get crm xml form for appealtype
//https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/systemforms?$select=formid,name,formxml&$filter=(objecttypecode%20eq%20%27pinswg_dns%27and%20type%20eq%202)&$count=true
// then use regex to remove the escape
// convert xml to json and return
// promise example
// var xml2js = require('xml2js');
// var xml = '<foo></foo>';
// // With parser
// var parser = new xml2js.Parser(/* options */);
// parser.parseStringPromise(data).then(function (result) {
// console.dir(result);
// console.log('Done');
// })
// .catch(function (err) {
// // Failed
// });
export const getAppealTypeDetail = (caseReference, appealcasetype) => {
console.log("got to axios", searchString);
console.log("api_root: ", BASE_URL);
// example appealcasetype type pinswg_householderappealhases
return axios
.get(
"https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/" +
appealcasetype +
"?$filter=pinswg_name eq '" +
caseReference +
"'",
{ httpsAgent: new https.Agent({ rejectUnauthorized: false }) }
)
.then((res) => res.data)
.catch((error) => {
console.log("thi serror", error);
});
};
//https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/pinswg_planningappeals78s?$filter=pinswg_name eq 'CAS-00015-L7J9H1'
export const getLPA = () => {
console.log("api_root: ", BASE_URL);
return (
axios
// .get(
// BASE_URL + "/api/lookups/pinswg_lpa",
// //.get("https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/accounts?$select=name",
// { httpsAgent: new https.Agent({ rejectUnauthorized: false }) }
// )
.get(
WEBAPI_URL + API_PATH + "accounts?$count=true&$select=name",
crmHeaders
)
.then((res) => res.data)
.catch((error) => {
console.log("thi serror", error);
})
);
};
export const getPersonalAccount = () => {
console.log("api_root: ", BASE_URL);
return axios
.get(
BASE_URL + "/api/lookups/personaldetails",
//.get("https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/contacts?$select=name",
{ httpsAgent: new https.Agent({ rejectUnauthorized: false }) }
)
.then((res) => res.data)
.catch((error) => {
console.log("thi serror", error);
});
};
function makeid(length) {
var result = "";
var characters =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
var charactersLength = characters.length;
for (var i = 0; i < length; i++) {
result += characters.charAt(
Math.floor(Math.random() * charactersLength)
);
}
return result;
}
export const createCase = (lpaType, appealType) => {
console.log();
const lastPart = makeid(6);
const middlePart = Math.floor(100000 + Math.random() * 900000);
return "CAS-" + middlePart + "-" + lastPart.toUpperCase();
};
// var req = new XMLHttpRequest();
// req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v8.2/incidents?$select=_accountid_value,_customerid_value,pinswg_appealcasetype,statuscode,ticketnumber,title&$filter=contains(title, '000')&$count=true", true);
// req.setRequestHeader("OData-MaxVersion", "4.0");
// req.setRequestHeader("OData-Version", "4.0");
// req.setRequestHeader("Accept", "application/json");
// req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
// req.setRequestHeader("Prefer", "odata.include-annotations=\"*\"");
// req.onreadystatechange = function() {
// if (this.readyState === 4) {
// req.onreadystatechange = null;
// if (this.status === 200) {
// var results = JSON.parse(this.response);
// var recordCount = results["@odata.count"];
// for (var i = 0; i < results.value.length; i++) {
// var _accountid_value = results.value[i]["_accountid_value"];
// var _accountid_value_formatted = results.value[i]["_accountid_value@OData.Community.Display.V1.FormattedValue"];
// var _accountid_value_lookuplogicalname = results.value[i]["_accountid_value@Microsoft.Dynamics.CRM.lookuplogicalname"];
// var _customerid_value = results.value[i]["_customerid_value"];
// var _customerid_value_formatted = results.value[i]["_customerid_value@OData.Community.Display.V1.FormattedValue"];
// var _customerid_value_lookuplogicalname = results.value[i]["_customerid_value@Microsoft.Dynamics.CRM.lookuplogicalname"];
// var pinswg_appealcasetype = results.value[i]["pinswg_appealcasetype"];
// var pinswg_appealcasetype_formatted = results.value[i]["pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"];
// var statuscode = results.value[i]["statuscode"];
// var ticketnumber = results.value[i]["ticketnumber"];
// var title = results.value[i]["title"];
// }
// } else {
// Xrm.Utility.alertDialog(this.statusText);
// }
// }
// };
// req.send();
// //jquery version to get case number from an lpa and an appeal type
// var entity = {};
// entity.caseorigincode = 3;
// entity["customerid_account@odata.bind"] = "/accounts(c75f6f84-49da-eb11-aabd-00224800d1bd)";
// entity.pinswg_appealcasetype = 846040004;
// $.ajax({
// type: "POST",
// contentType: "application/json; charset=utf-8",
// datatype: "json",
// url: Xrm.Page.context.getClientUrl() + "/api/data/v8.2/incidents",
// data: JSON.stringify(entity),
// beforeSend: function(XMLHttpRequest) {
// XMLHttpRequest.setRequestHeader("OData-MaxVersion", "4.0");
// XMLHttpRequest.setRequestHeader("OData-Version", "4.0");
// XMLHttpRequest.setRequestHeader("Accept", "application/json");
// XMLHttpRequest.setRequestHeader("Prefer", "odata.include-annotations=\"*\",return=representation");
// },
// async: true,
// success: function(data, textStatus, xhr) {
// var uri = xhr.getResponseHeader("OData-EntityId");
// var regExp = /\(([^)]+)\)/;
// var matches = regExp.exec(uri);
// var newEntityId = matches[1];
// //Handle returned attributes
// },
// error: function(xhr, textStatus, errorThrown) {
// Xrm.Utility.alertDialog(textStatus + " " + errorThrown);
// }
// });
export const getMyCases = () => {
return axios
.get(BASE_URL + "/api/lookups/myCases", {
httpsAgent: new https.Agent({ rejectUnauthorized: false }),
})
.then((res) => res.data)
.catch((error) => {
console.log("thi serror", error);
});
};
export const getMyRepresentations = () => {
return axios
.get(BASE_URL + "/api/lookups/myRepresentations", {
httpsAgent: new https.Agent({ rejectUnauthorized: false }),
})
.then((res) => res.data)
.catch((error) => {
console.log("thi serror", error);
});
};
export const getWatchedCases = () => {
return axios
.get(BASE_URL + "/api/lookups/watchedCases", {
httpsAgent: new https.Agent({ rejectUnauthorized: false }),
})
.then((res) => res.data)
.catch((error) => {
w;
console.log("thi serror", error);
});
};
export const getAwaitingSubmission = () => {
return axios
.get(BASE_URL + "/api/lookups/awaitingSubmission", {
httpsAgent: new https.Agent({ rejectUnauthorized: false }),
})
.then((res) => res.data)
.catch((error) => {
console.log("thi serror", error);
});
};