From 745b51839a6849f034b0fa860952cdcc9ee69356 Mon Sep 17 00:00:00 2001 From: rdbsolutions Date: Wed, 28 Sep 2022 10:13:36 +0100 Subject: [PATCH] decopled crm for new appeals - all made on storage --- .env.local | 2 +- actions/azurestorage.js | 44 +++++-- actions/index.js | 109 +++++++++++++++--- components/myportal.js | 4 +- .../myportal/awaitingsubmissionfromblob.js | 90 +++++++++++---- components/newappeal/buildsection.js | 14 +-- components/newappeal/createCase.js | 20 +++- components/utils/index.js | 16 +++ data/collections.json | 84 +++++++++----- pages/api/file/createcase_api.js | 82 +++++++++++++ .../api/file/getawaitingsubmissionfromblob.js | 1 - pages/api/file/updatecase_api.js | 56 +++++++++ pages/myportal/[appealtypes].js | 5 +- pages/myportal/index.js | 8 +- pages/newappeal/[appealtypes].js | 15 ++- 15 files changed, 451 insertions(+), 99 deletions(-) create mode 100644 pages/api/file/createcase_api.js create mode 100644 pages/api/file/updatecase_api.js diff --git a/.env.local b/.env.local index fdfc86cd..af89d049 100644 --- a/.env.local +++ b/.env.local @@ -44,7 +44,7 @@ RELAYPATH = "dev-pedw-hc" GOOGLE_TAG_MANAGER = GTM-T78CBC3 -SHOWLOGIN = "false" +SHOWLOGIN = "true" SHOWREPRESENTATIONS = false SHOWFILEUPLOAD = "false" SHOWMAPS = "true" diff --git a/actions/azurestorage.js b/actions/azurestorage.js index 36b89743..eeb42cd0 100644 --- a/actions/azurestorage.js +++ b/actions/azurestorage.js @@ -78,6 +78,7 @@ export const getBlobs = async (containerName, casefolderID) => { "path": blob.name, "documentType": blobDocumentType, "versionId": blob.versionId, + "caseObj": casefolderID + "/" + casefolderID + "_case.json", "isCurrentVersion": blob.isCurrentVersion, "contentLength": blob.properties.contentLength, "contentType": blob.contentType, @@ -137,7 +138,7 @@ export const createBlob = async (formContent, containerName, caseref) => { let caseID = formContent.pinswg_name; const content = JSON.stringify(formContent); - const blobName = caseID + "/" + caseID + ".json"; + const blobName = caseID + "/" + caseID + "_appeal.json"; console.log("blobName:", blobName); const blockBlobClient = containerClient.getBlockBlobClient(blobName); @@ -280,6 +281,8 @@ export const downloadAllProgressFiles = async ( let blobClient = {}; let downloadedBlob = {}; let downloaded = ""; + let caseBlob = {}; + let caseDownloaded = ""; let blobCount = 0; for (const prop in progressBlobObj) { @@ -295,8 +298,29 @@ export const downloadAllProgressFiles = async ( downloaded = downloaded.substring(0, downloaded.length - 1); - //console.log(downloaded); - return '{ "@odata.count": ' + blobCount + ',"value": [' + downloaded + "]}"; + for (const prop in progressBlobObj) { + //console.log(`${prop}: ${progressBlobObj[prop].caseObj}`); + blobClient = containerClient.getBlobClient( + progressBlobObj[prop].caseObj + ); + caseBlob = await blobClient.download(0); + caseDownloaded = + caseDownloaded + + (await streamToBuffer(caseBlob.readableStreamBody)) + + ","; + } + + caseDownloaded = caseDownloaded.substring(0, caseDownloaded.length - 1); + + return ( + '{ "@odata.count": ' + + blobCount + + ',"value": [' + + downloaded + + '],"case":[' + + caseDownloaded + + "]}" + ); }; const streamToBuffer = async (readableStream) => { @@ -324,7 +348,6 @@ export const getCaseBlob = async ( creds ); - console.log("have got to create case"); containerClient.createIfNotExists(); let blobCount = 0; @@ -335,7 +358,7 @@ export const getCaseBlob = async ( } const content = JSON.stringify(formContent); - const blobName = caseReference + "/case/" + caseReference + ".json"; + const blobName = caseReference + "/case/" + caseReference + "_case.json"; console.log("blobName:", blobName); const blockBlobClient = containerClient.getBlockBlobClient(blobName); @@ -365,16 +388,18 @@ export const getProgressBlobs = async (containerName, caseReference) => { blobCount++; } - //console.log("this is the caasefolder:", caseReference, blobCount); + console.log("this is the caasefolder:", caseReference, blobCount); let blobObj = []; for await (const blob of containerClient.listBlobsFlat({ - prefix: caseReference + "/" + caseReference + ".json", + prefix: caseReference + "/" + caseReference + "_appeal.json", })) { + console.log("in here"); blobObj.push({ "name": blob.name.split("/")[1], "path": blob.name, "versionId": blob.versionId, + "caseObj": caseReference + "/" + caseReference + "_case.json", "isCurrentVersion": blob.isCurrentVersion, "contentLength": blob.properties.contentLength, "contentType": blob.contentType, @@ -444,6 +469,11 @@ export const getAllProgressBlobs = async (containerName) => { "name": blob.name.split("/")[1], "path": blob.name, "versionId": blob.versionId, + "caseObj": + blob.name.split("/")[0] + + "/case/" + + blob.name.split("/")[0] + + "_case.json", "isCurrentVersion": blob.isCurrentVersion, "contentLength": blob.properties.contentLength, "contentType": blob.contentType, diff --git a/actions/index.js b/actions/index.js index f1d38b78..43c39593 100644 --- a/actions/index.js +++ b/actions/index.js @@ -743,21 +743,6 @@ export const getAwaitingSubmissionProxy = (loggedInUserId) => { }); }; -export const getAwaitingSubmissionFromBlobProxy = (containerName) => { - return axios - .get( - BASE_URL + - "/api/file/getawaitingsubmissionfromblob?container=" + - containerName - ) - .then((res) => { - return res.data; - }) - .catch((error) => { - //console.log("API call error", error); - }); -}; - export const getAwaitingSubmission = (loggedInUserId) => { return axios .get( @@ -792,6 +777,21 @@ export const getAwaitingSubmissionFromBlob = (containerName) => { }); }; +export const getAwaitingSubmissionFromBlobProxy = (containerName) => { + return axios + .get( + BASE_URL + + "/api/file/getawaitingsubmissionfromblob?container=" + + containerName + ) + .then((res) => { + return res.data; + }) + .catch((error) => { + //console.log("API call error", error); + }); +}; + export const getPortalModuleDetails = (appealType, caseReference) => { //console.log( // BASE_URL + @@ -934,6 +934,45 @@ export const createNewCase = ( }); }; +export const createNewCaseBlob = ( + appealTypeId, + lpaID, + contactid, + createBody, + containerName, + lpaName +) => { + appealTypeId = parseInt(appealTypeId); + + var data = createBody; + + data.pinswg_lpaname = lpaName; + + var queryUrl = + "/api/file/createcase_api?appealTypeId=" + + appealTypeId + + "&lpaID=" + + lpaID + + "&contactid=" + + contactid + + "&containername=" + + containerName; + + var config = { + method: "post", + url: BASE_URL + queryUrl, + data: data, + }; + + return axios(config) + .then((res) => { + return res.data; + }) + .catch((error) => { + console.log("this serror", error); + }); +}; + export const updateCase = async ( incidentId, updateBody, @@ -972,6 +1011,44 @@ export const updateCase = async ( }); }; +export const updateCaseBlob = async ( + incidentId, + updateBody, + updateFormCollection, + primaryAttribute, + caseReference +) => { + var data = updateBody; + + var appealObj = await getAppealID( + caseReference, + updateFormCollection, + primaryAttribute + ); + + var queryUrl = + "/api/file/updatecase_api?updateFormCollection=" + + updateFormCollection + + "&appealObj=" + + appealObj; + + var config = { + method: "post", + url: queryUrl, + data: updateBody, + }; + + //console.log(data); + + return axios(config) + .then((res) => { + return res.data; + }) + .catch((error) => { + //console.log("API call error", error); + }); +}; + export const patchCase = async (incidentid) => { var queryUrl = "/api/endpoint/patchcase_api?incidentid=" + incidentid; var config = { @@ -1232,7 +1309,7 @@ export const downloadBlob = (containerName, blobName) => { { responseType: "blob" } ) .then((response) => { - console.log("Downloaded blob content:"); + //console.log("Downloaded blob content:"); res.setHeader( "content-disposition", diff --git a/components/myportal.js b/components/myportal.js index 54c50776..1703c185 100644 --- a/components/myportal.js +++ b/components/myportal.js @@ -94,7 +94,7 @@ const MyPortal = (props) => {
- {props.awaitingSubmission.awaitingSubmission[ + {/* {props.awaitingSubmission.awaitingSubmission[ "@odata.count" ] > 0 && ( { props.awaitingSubmission } /> - )} + )} */} {props.awaitingSubmission .awaitingSubmissionFromBlob["@odata.count"] > 0 && ( diff --git a/components/myportal/awaitingsubmissionfromblob.js b/components/myportal/awaitingsubmissionfromblob.js index 8f4fab9d..cdd48f31 100644 --- a/components/myportal/awaitingsubmissionfromblob.js +++ b/components/myportal/awaitingsubmissionfromblob.js @@ -3,7 +3,12 @@ import { useRouter } from "next/router"; import useTranslation from "next-translate/useTranslation"; import TopThree from "./topthree"; import { connect } from "react-redux"; -import { setCurrentView } from "../../store/currentView/action"; +import { + setCurrentView, + setCurrentReference, +} from "../../store/currentView/action"; +import jsonpath from "jsonpath"; +import transLookup from "../../data/lookuptranslations.json"; import { deleteAwaitingSubmissionsFromBlob, getAwaitingSubmissionFromBlobProxy, @@ -21,6 +26,7 @@ const AwaitingSubmissionFromBlob = (props) => { let topthreeRow = []; let showTopThreeArr = props.awaitingSubmissionFromBlob.value; + let showTopThreeArrDets = props.awaitingSubmissionFromBlob.case; const deleteCaseItem = (containerID, caseID) => { let cookies = parseCookies(); @@ -40,6 +46,13 @@ const AwaitingSubmissionFromBlob = (props) => { let topThreeOnlyArr = showTopThreeArr; console.log(showTopThreeArr); Object.keys(topThreeOnlyArr).map((key, index) => { + console.log(key, showTopThreeArr[key].pinswg_appealcasetype); + + console.log("subsssss:", showTopThreeArr[key]); + let urlname = getFormCollectionByID( + showTopThreeArr[key].pinswg_appealcasetype + ).UrlName; + topthreeRow.push(
@@ -52,10 +65,7 @@ const AwaitingSubmissionFromBlob = (props) => { ? "/fymhorth/parhauigyflwyno" : "/myportal" + "/" + - getFormCollectionByID( - showTopThreeArr[key] - .pinswg_appealcasetype - ).UrlName + + urlname + "?lpa=" + showTopThreeArr[key][ "_pinswg_associatedlpa_value" @@ -73,25 +83,14 @@ const AwaitingSubmissionFromBlob = (props) => { className="govuk-link--no-underline" data-id={index} onClick={() => { - setCurrentReference({ + props.setCurrentReference({ "currentReference": - topThreeType != "watchedCases" - ? topThreeType != - "myRepresentations" - ? showTopThreeArr[key] - .ticketnumber - : showTopThreeArr[key][ - "_pinswg_case_value@OData.Community.Display.V1.FormattedValue" - ] - : showTopThreeArr[key][ - "_pinswg_watchedcase_value@OData.Community.Display.V1.FormattedValue" - ], - "currentType": topThreeType, + showTopThreeArr[key].ticketnumber, - "incidentid": getIncidentId( - topThreeType, - showTopThreeArr[key] - ), + "currentType": "awaitingSubmission", + + "incidentid": + showTopThreeArr[key].incidentid, "appealType": showTopThreeArr[key] @@ -103,6 +102,14 @@ const AwaitingSubmissionFromBlob = (props) => {
+
+ Appeal type:{" "} + { + getFormCollectionByID( + showTopThreeArr[key].pinswg_appealcasetype + ).value + } +
{t("myportal:case-address")}:{" "} {_.isEmpty(showTopThreeArr) @@ -131,6 +138,42 @@ const AwaitingSubmissionFromBlob = (props) => { .pinswg_siteaddresstown : "")}
+ {showTopThreeArrDets[key].pinswg_appellantagent != null && ( +
+ {showTopThreeArrDets[key].pinswg_appellantagent != + 846040000 && Raised by: } + {showTopThreeArrDets[key].pinswg_appellantagent != + 846040000 && + (showTopThreeArrDets[key] + .pinswg_agentcompanyname != null && + showTopThreeArrDets[key] + .pinswg_agentcompanyname + ", ") + + showTopThreeArrDets[key] + .pinswg_agentfirstname + + " " + + showTopThreeArrDets[key] + .pinswg_agentlastname} +
+ )} + {showTopThreeArrDets[key].pinswg_appellantfirstname != + null && ( +
+ On behalf of: + {showTopThreeArrDets[key] + .pinswg_appellantfirstname + + " " + + showTopThreeArrDets[key] + .pinswg_appellantlastname} +
+ )} + {router.locale == "cy" + ? jsonpath.query( + transLookup, + '$..[?(@.value=="' + + showTopThreeArrDets[key]["pinswg_lpaname"] + + '")].value_cy' + ) + : showTopThreeArrDets[key]["pinswg_lpaname"] || ""}
{ setCurrentView: (currentView) => { dispatch(setCurrentView(currentView)); }, + setCurrentReference: (currentReference) => { + dispatch(setCurrentReference(currentReference)); + }, setAwaitingSubmissionFromBlob: (awaitingSubmission) => { dispatch(setAwaitingSubmissionFromBlob(awaitingSubmission)); }, diff --git a/components/newappeal/buildsection.js b/components/newappeal/buildsection.js index fc09a85c..d7ff67f8 100644 --- a/components/newappeal/buildsection.js +++ b/components/newappeal/buildsection.js @@ -177,13 +177,13 @@ let BuildSection = (props) => { let updateFormCollection = appTypeCollection.LogicalCollectionName; let primaryAttribute = appTypeCollection.PrimaryIdAttribute; - updateCase( - incidentId, - updateBody, - updateFormCollection, - primaryAttribute, - props.appealType.caseReference.ticketnumber - ); + // updateCase( + // incidentId, + // updateBody, + // updateFormCollection, + // primaryAttribute, + // props.appealType.caseReference.ticketnumber + // ); sendSavedEmail == true && sendEmail( diff --git a/components/newappeal/createCase.js b/components/newappeal/createCase.js index 51b93a17..c818eb8f 100644 --- a/components/newappeal/createCase.js +++ b/components/newappeal/createCase.js @@ -14,7 +14,7 @@ import { import { getFormCollectionByID } from "../utils"; import FileUpload from "./fileupload"; import Aboutyou from "./aboutyou"; -import { createNewCase, consoleLogger } from "../../actions"; +import { createNewCase, createNewCaseBlob, consoleLogger } from "../../actions"; import { FieldsTranslations } from "../elements"; let CreateCase = (props) => { @@ -448,14 +448,22 @@ let CreateCase = (props) => { delete values.confirmHASCAS; - console.log(appTypeCollection); - - createNewCase( + // createNewCase( + // appTypeCollection.appealTypeID, + // values.lpaTypes, + // props.loggedInUser, + // values, + // props.containerID + // ) + createNewCaseBlob( appTypeCollection.appealTypeID, values.lpaTypes, props.loggedInUser, values, - props.containerID + props.containerID, + props1.LPAData.LPAData.value.filter((obj) => { + return obj.accountid === values.lpaTypes; + })[0].name ) .then((data) => { router.replace( @@ -467,7 +475,7 @@ let CreateCase = (props) => { "&apt=" + whichAppealType + "&id=" + - data.incidentid + data.ticketnumber ); return data; }) diff --git a/components/utils/index.js b/components/utils/index.js index 68b90dc9..fb314ce5 100644 --- a/components/utils/index.js +++ b/components/utils/index.js @@ -1,4 +1,5 @@ import jsonpath from "jsonpath"; +import { v4 as uuidv4 } from "uuid"; import data from "../../data/collections.json"; import { getBasicSearchDetails, @@ -341,3 +342,18 @@ export const getProgressObj = ( //console.log(progObj); return progObj; }; + +export const getTempCaseRef = () => { + function randomString(length) { + return Math.random().toString(36).substr(2, length); + } + + const randomGUID = uuidv4(); + + return ( + "TMP-" + + randomString(5).toUpperCase() + + "-" + + randomString(6).toUpperCase() + ); +}; diff --git a/data/collections.json b/data/collections.json index 7d15f8fa..8ea26447 100644 --- a/data/collections.json +++ b/data/collections.json @@ -7,7 +7,8 @@ "UrlName": "dns", "MetadataId": "36f07225-4a82-eb11-aac0-00224800be9c", "appealTypeID": "846040011", - "NavigationProperty": "pinswg_DNSIds" + "NavigationProperty": "pinswg_DNSIds", + "value": "Developments of National Significance" }, { "LogicalCollectionName": "pinswg_planningobligationappeals106s", @@ -16,7 +17,8 @@ "UrlName": "planningobligationappeals106", "MetadataId": "cb8beeae-8f81-eb11-aac0-00224800be9c", "appealTypeID": "846040003", - "NavigationProperty": "pinswg_PlanningObligationAppealS106Ids" + "NavigationProperty": "pinswg_PlanningObligationAppealS106Ids", + "value": "Planning Obligation Appeal - S106" }, { "LogicalCollectionName": "pinswg_planningconditionss73s79s", @@ -25,7 +27,8 @@ "UrlName": "planningconditionss73s79", "MetadataId": "093bf9ff-8d81-eb11-aac0-00224800be9c", "appealTypeID": "846040001", - "NavigationProperty": "pinswg_PlanningConditionsS73S79Ids" + "NavigationProperty": "pinswg_PlanningConditionsS73S79Ids", + "value": "Planning Conditions - S73 + S79" }, { "LogicalCollectionName": "pinswg_rows", @@ -34,7 +37,8 @@ "UrlName": "row", "MetadataId": "4ccc6e93-4f82-eb11-aac0-00224800be9c", "appealTypeID": "846040015", - "NavigationProperty": "pinswg_ROWIds" + "NavigationProperty": "pinswg_ROWIds", + "value": "Rights of Way" }, { "LogicalCollectionName": "pinswg_transportandworkacts", @@ -43,7 +47,8 @@ "UrlName": "transportandworkact", "MetadataId": "bc3edc4b-7d82-eb11-aac0-00224800be9c", "appealTypeID": "846040013", - "NavigationProperty": "" + "NavigationProperty": "", + "value": "Transport and Works Act" }, { "LogicalCollectionName": "pinswg_transportandworkacts", @@ -52,7 +57,8 @@ "UrlName": "transportandworkact", "MetadataId": "bc3edc4b-7d82-eb11-aac0-00224800be9c", "appealTypeID": "846040013", - "NavigationProperty": "pinswg_TransportandWorkActIdspinswg_TransportandWorkActIds" + "NavigationProperty": "pinswg_TransportandWorkActIdspinswg_TransportandWorkActIds", + "value": "Transport and Works Act" }, { "LogicalCollectionName": "pinswg_transportandworkacts", @@ -61,7 +67,8 @@ "UrlName": "transportandworksact", "MetadataId": "bc3edc4b-7d82-eb11-aac0-00224800be9c", "appealTypeID": "846040013", - "NavigationProperty": "pinswg_TransportandWorkActIdspinswg_TransportandWorkActIds" + "NavigationProperty": "pinswg_TransportandWorkActIdspinswg_TransportandWorkActIds", + "value": "Transport and Works Act" }, { "LogicalCollectionName": "pinswg_harbourrevisionorders", @@ -70,7 +77,8 @@ "UrlName": "harbourrevisionorder", "MetadataId": "dc8dcd0d-4f82-eb11-aac0-00224800be9c", "appealTypeID": "846040014", - "NavigationProperty": "pinswg_HarbourRevisionOrderIds" + "NavigationProperty": "pinswg_HarbourRevisionOrderIds", + "value": "Harbour Revision Order" }, { "LogicalCollectionName": "pinswg_miscellaneouscaseworks", @@ -106,7 +114,8 @@ "UrlName": "planningappeals78", "MetadataId": "8d7f813a-4183-eb11-aac0-00224800be9c", "appealTypeID": "846040000", - "NavigationProperty": "pinswg_PlanningAppealS78Ids" + "NavigationProperty": "pinswg_PlanningAppealS78Ids", + "value": "Planning Appeal - S78" }, { "LogicalCollectionName": "pinswg_lawfuldevelopmentcertificates", @@ -124,7 +133,8 @@ "UrlName": "lawfuldevelopmentcertificateappeals1941", "MetadataId": "184e4861-9681-eb11-aac0-00224800be9c", "appealTypeID": "846040008", - "NavigationProperty": "pinswg_LawfulDevelopmentCertificatAppIds" + "NavigationProperty": "pinswg_LawfulDevelopmentCertificatAppIds", + "value": "Lawful Development Certificate Appeal - S194 + 195" }, { "LogicalCollectionName": "pinswg_lawfuldevelopmentcertificates", @@ -133,7 +143,8 @@ "UrlName": "lawfuldevelopmentcertificate", "MetadataId": "184e4861-9681-eb11-aac0-00224800be9c", "appealTypeID": "846040008", - "NavigationProperty": "pinswg_LawfulDevelopmentCertificatAppIds" + "NavigationProperty": "pinswg_LawfulDevelopmentCertificatAppIds", + "value": "Lawful Development Certificate Appeal - S194 + 195" }, { "LogicalCollectionName": "pinswg_householderappealhases", @@ -142,7 +153,8 @@ "UrlName": "householderappealhas", "MetadataId": "a6c728b0-9081-eb11-aac0-00224800be9c", "appealTypeID": "846040004", - "NavigationProperty": "pinswg_HouseholderAppealHASIds" + "NavigationProperty": "pinswg_HouseholderAppealHASIds", + "value": "Householder and Minor Commercial Appeals - HAS/CAS" }, { "LogicalCollectionName": "pinswg_enforcementlistedbuildingconservationaps", @@ -160,7 +172,8 @@ "UrlName": "enforcementlistedbuildingconservationap", "MetadataId": "c697be96-9481-eb11-aac0-00224800be9c", "appealTypeID": "846040006", - "NavigationProperty": "pinswg_EnforcementListedBuildingConseIds" + "NavigationProperty": "pinswg_EnforcementListedBuildingConseIds", + "value": "Enforcement Listed Building and Conservation Appeal - S39" }, { "LogicalCollectionName": "pinswg_enforcementlistedbuildingconservationaps", @@ -178,7 +191,8 @@ "UrlName": "callinss77", "MetadataId": "dd309e51-4982-eb11-aac0-00224800be9c", "appealTypeID": "846040010", - "NavigationProperty": "pinswg_CallInsS77Ids" + "NavigationProperty": "pinswg_CallInsS77Ids", + "value": "Called In Applications - S77" }, { "LogicalCollectionName": "pinswg_commonlands", @@ -187,7 +201,8 @@ "UrlName": "commonland", "MetadataId": "4161a618-5082-eb11-aac0-00224800be9c", "appealTypeID": "846040016", - "NavigationProperty": "pinswg_CommonLandIds" + "NavigationProperty": "pinswg_CommonLandIds", + "value": "Common Land" }, { "LogicalCollectionName": "pinswg_advertses", @@ -196,7 +211,8 @@ "UrlName": "adverts", "MetadataId": "0735866b-5482-eb11-aac0-00224800be9c", "appealTypeID": "846040018", - "NavigationProperty": "pinswg_AdvertsIds" + "NavigationProperty": "pinswg_AdvertsIds", + "value": "Adverts" }, { "LogicalCollectionName": "pinswg_hedgeshedgerowstreepreservationreplacems", @@ -205,7 +221,8 @@ "UrlName": "hedgeshedgerowstreepreservationreplacem", "MetadataId": "60f38fed-5382-eb11-aac0-00224800be9c", "appealTypeID": "846040017", - "NavigationProperty": "pinswg_HedgesHedgerowsTreePreservatioIds" + "NavigationProperty": "pinswg_HedgesHedgerowsTreePreservatioIds", + "value": "High Hedges, Tree Preservation orders, Hedgerows, Tree Replacement Notice." }, { "LogicalCollectionName": "pinswg_hedgeshedgerowstreepreservationreplacems", @@ -214,7 +231,8 @@ "UrlName": "hedgeshedgerowstreepreservationreplacem", "MetadataId": "60f38fed-5382-eb11-aac0-00224800be9c", "appealTypeID": "846040017", - "NavigationProperty": "pinswg_HedgesHedgerowsTreePreservatioIds" + "NavigationProperty": "pinswg_HedgesHedgerowsTreePreservatioIds", + "value": "High Hedges, Tree Preservation orders, Hedgerows, Tree Replacement Notice." }, { "LogicalCollectionName": "pinswg_hedgeshedgerowstreepreservationreplacems", @@ -223,7 +241,8 @@ "UrlName": "hedgeshedgerowstreepreservationreplacem", "MetadataId": "60f38fed-5382-eb11-aac0-00224800be9c", "appealTypeID": "846040017", - "NavigationProperty": "pinswg_HedgesHedgerowsTreePreservatioIds" + "NavigationProperty": "pinswg_HedgesHedgerowsTreePreservatioIds", + "value": "High Hedges, Tree Preservation orders, Hedgerows, Tree Replacement Notice." }, { "LogicalCollectionName": "pinswg_compulsorypurchaseorderses", @@ -232,7 +251,8 @@ "UrlName": "compulsorypurchaseorders", "MetadataId": "054da4c7-5582-eb11-aac0-00224800be9c", "appealTypeID": "846040019", - "NavigationProperty": "pinswg_CompulsoryPurchaseOrdersIds" + "NavigationProperty": "pinswg_CompulsoryPurchaseOrdersIds", + "value": "Compulsory Purchase Orders" }, { "LogicalCollectionName": "pinswg_communityinfrastructurelevys117118119s", @@ -241,7 +261,8 @@ "UrlName": "communityinfrastructurelevys117118119", "MetadataId": "0c309f3c-4882-eb11-aac0-00224800be9c", "appealTypeID": "846040009", - "NavigationProperty": "pinswg_CommunityInfrastructureLevyIds" + "NavigationProperty": "pinswg_CommunityInfrastructureLevyIds", + "value": "Community Infrastructure Levy - S117, 118, & 119" }, { "LogicalCollectionName": "pinswg_objectiveconfigs", @@ -259,7 +280,8 @@ "UrlName": "nonvalidation", "MetadataId": "37f31a93-5882-eb11-aac0-00224800be9c", "appealTypeID": "846040024", - "NavigationProperty": "pinswg_NonValidationIds" + "NavigationProperty": "pinswg_NonValidationIds", + "value": "Non-Validation" }, { "LogicalCollectionName": "pinswg_caseinvolvements", @@ -304,7 +326,8 @@ "UrlName": "wayleave", "MetadataId": "a0652117-5782-eb11-aac0-00224800be9c", "appealTypeID": "846040021", - "NavigationProperty": "pinswg_WayleaveIds" + "NavigationProperty": "pinswg_WayleaveIds", + "value": "Wayleave" }, { "LogicalCollectionName": "pinswg_listedbuildingandconservationareaconsens", @@ -313,7 +336,8 @@ "UrlName": "listedbuildingandconservationareaconsen", "MetadataId": "4cd95405-8f81-eb11-aac0-00224800be9c", "appealTypeID": "846040025", - "NavigationProperty": "pinswg_ListedBuildingandConservationrIds" + "NavigationProperty": "pinswg_ListedBuildingandConservationrIds", + "value": "Listed Building and Conservation Area Consent" }, { "LogicalCollectionName": "pinswg_environmentalpermittings", @@ -322,7 +346,8 @@ "UrlName": "environmentalpermitting", "MetadataId": "62d4aa9a-5682-eb11-aac0-00224800be9c", "appealTypeID": "846040020", - "NavigationProperty": "pinswg_EnforcementPermittingIds" + "NavigationProperty": "pinswg_EnforcementPermittingIds", + "value": "Environmental Permitting" }, { "LogicalCollectionName": "pinswg_enforcementnoticeappeals174s", @@ -331,7 +356,8 @@ "UrlName": "enforcementnoticeappeals174", "MetadataId": "930a3cc4-9181-eb11-aac0-00224800be9c", "appealTypeID": "846040005", - "NavigationProperty": "pinswg_EnforcementNoticeAppealS174Ids" + "NavigationProperty": "pinswg_EnforcementNoticeAppealS174Ids", + "value": "Enforcement Notice Appeal - S174" }, { "LogicalCollectionName": "pinswg_ldps", @@ -349,7 +375,8 @@ "UrlName": "maintenanceoflands217", "MetadataId": "bb302784-9581-eb11-aac0-00224800be9c", "appealTypeID": "846040007", - "NavigationProperty": "pinswg_MaintenanceofLandS217Ids" + "NavigationProperty": "pinswg_MaintenanceofLandS217Ids", + "value": "Maintenance of Land - S217" }, { "LogicalCollectionName": "pinswg_electricityacts", @@ -358,7 +385,8 @@ "UrlName": "electricityact", "MetadataId": "6aedaab1-4a82-eb11-aac0-00224800be9c", "appealTypeID": "846040012", - "NavigationProperty": "pinswg_ElectricityActIds" + "NavigationProperty": "pinswg_ElectricityActIds", + "value": "Electricity Act" } ] } \ No newline at end of file diff --git a/pages/api/file/createcase_api.js b/pages/api/file/createcase_api.js new file mode 100644 index 00000000..1f057e59 --- /dev/null +++ b/pages/api/file/createcase_api.js @@ -0,0 +1,82 @@ +import axios from "axios"; +import CryptoJS from "crypto-js"; +import _ from "lodash"; +import { getToken, azureHeadersPaged, consoleLogger } from "../../../actions"; +import { getCaseBlob, createBlob } from "../../../actions/azurestorage"; +import { getTempCaseRef } from "../../../components/utils"; +import { v4 as uuidv4 } from "uuid"; + +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; +}; + +export default async function ApiProxy(req, res) { + var createCaseBody = req.body; + var contactid = req.query.contactid; + var appealTypeId = req.query.appealTypeId; + var containerName = req.query.containername; + var lpaID = req.query.lpaID; + var queryUrl = "incidents"; + var token = await getToken(); + var tempCaseRef = getTempCaseRef(); + + var data = { + "title": tempCaseRef, + "ticketnumber": tempCaseRef, + "incidentid": uuidv4(), + "statecode": 0, + "statuscode": 1, + "caseorigincode": 3, + "servicestage": 1, + "customerid_contact@odata.bind": "/contacts(" + contactid + ")", + "pinswg_appealcasetype": appealTypeId, + "pinswg_AssociatedLPA@odata.bind": "/accounts(" + lpaID + ")", + }; + var newData = Object.assign(data, createCaseBody); + + delete newData.lpaTypes; + delete newData.appealTypes; + + console.log("/////Create Case:\n", newData, "\n//////////////"); + + var newAppealObj = { + "pinswg_name": tempCaseRef, + "pinswg_appealcasetype": appealTypeId, + "_pinswg_associatedlpa_value": lpaID, + }; + + // var config = { + // method: "post", + // url: WEBAPI_URL + queryUrl + hashAPIPath(queryUrl), + // headers: { + // "OData-MaxVersion": "4.0", + // "OData-Version": "4.0", + // "Accept": "application/json", + // "Prefer": 'odata.include-annotations="*",return=representation', + // "Authorization": "Bearer " + token.access_token, + // "Content-Type": "application/json", + // }, + // data: JSON.stringify(newData), + // }; + var apiResponse = _.isEmpty(req.query) + ? res.status(400).json() + : (getCaseBlob(containerName, tempCaseRef, newData), + createBlob(JSON.stringify(newAppealObj), containerName), + res.status(200).json(newData)); + + return apiResponse; +} diff --git a/pages/api/file/getawaitingsubmissionfromblob.js b/pages/api/file/getawaitingsubmissionfromblob.js index ff336196..62ffd08a 100644 --- a/pages/api/file/getawaitingsubmissionfromblob.js +++ b/pages/api/file/getawaitingsubmissionfromblob.js @@ -24,7 +24,6 @@ ApiProxy.get(async (req, res) => { //if (hashAPIPath(checkquerypath) == "&hash=" + checkHash) { const blobObj = await getAllProgressBlobs(containerName) .then((data) => { - //console.log(data); return downloadAllProgressFiles(containerName, data); }) .then((data) => { diff --git a/pages/api/file/updatecase_api.js b/pages/api/file/updatecase_api.js new file mode 100644 index 00000000..babcfa88 --- /dev/null +++ b/pages/api/file/updatecase_api.js @@ -0,0 +1,56 @@ +import axios from "axios"; +import CryptoJS from "crypto-js"; +import { getToken, patchCase } from "../../../actions"; + +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; +}; + +export default async function ApiProxy(req, res) { + var data = JSON.stringify(req.body); + var appealObj = req.query.appealObj; + var incidentID = req.query.incident; + + var updateFormCollection = req.query.updateFormCollection; + var queryUrl = updateFormCollection + "(" + appealObj + ")"; + + var token = await getToken(); + + var config = { + method: "patch", + url: WEBAPI_URL + queryUrl + hashAPIPath(queryUrl), + headers: { + "OData-MaxVersion": "4.0", + "OData-Version": "4.0", + "Accept": "application/json", + "Prefer": 'odata.include-annotations="*"', + "Authorization": "Bearer " + token.access_token, + "Content-Type": "application/json", + }, + data: data, + }; + + //console.log("update case:", data); + + return axios(config) + .then(({ data }) => { + res.status(200).json(data); + }) + .catch((error) => { + res.status(400); + }); +} diff --git a/pages/myportal/[appealtypes].js b/pages/myportal/[appealtypes].js index f94df480..ef12a30e 100644 --- a/pages/myportal/[appealtypes].js +++ b/pages/myportal/[appealtypes].js @@ -243,7 +243,7 @@ export const getServerSideProps = wrapper.getServerSideProps( query.casereference ); - // console.log("/////////\nappeal type data:", appealTypeData); + //console.log("/////////\nappeal type data:", appealTypeData); // // Removed to make progress from Blob not CRM @@ -295,9 +295,10 @@ export const getServerSideProps = wrapper.getServerSideProps( store.dispatch(setCaseReference(caseReference)); store.dispatch(setForm(xmlStr, mandatoryFieldsData, pickListData)); store.dispatch(setAppealType(appealTypeData)); - store.dispatch(setFilesForAppeal(blobList)); store.dispatch(setContainerID(thisSession.user.id)); + store.dispatch(setFilesForAppeal(blobList)); + return { props: { url: process.env.API_ROOT }, }; diff --git a/pages/myportal/index.js b/pages/myportal/index.js index 737526ef..32eeb868 100644 --- a/pages/myportal/index.js +++ b/pages/myportal/index.js @@ -198,6 +198,12 @@ export const getServerSideProps = wrapper.getServerSideProps( await getAwaitingSubmissionFromBlob(thisSession.user.id), ]); + // console.log( + // "/////////////////////////\n ", + // awaitingSubmissionFromBlob.value, + // awaitingSubmissionFromBlob.case + // ); + if (_.has(accountDetails, "errorCode") != false) { return { redirect: { @@ -234,7 +240,7 @@ export const getServerSideProps = wrapper.getServerSideProps( ); store.dispatch( - setAwaitingSubmissionDetails(awaitingSubmissionDetails) + setAwaitingSubmissionDetails(awaitingSubmissionFromBlob) ); store.dispatch(setContainerID(thisSession.user.id)); diff --git a/pages/newappeal/[appealtypes].js b/pages/newappeal/[appealtypes].js index 7fd4e21e..f5ab781d 100644 --- a/pages/newappeal/[appealtypes].js +++ b/pages/newappeal/[appealtypes].js @@ -9,6 +9,7 @@ import xpath from "xpath"; import { getCase, getAppealsTypes, + getAppealsTypesForNewAppeal, getMandatoryFields, getPickLists, getFilesFromBlob, @@ -232,14 +233,12 @@ export const getServerSideProps = wrapper.getServerSideProps( console.log("logged ident:", loggedInUserIdent, loggedInUserEmail); const [ - caseReferenceData, appealTypeData, mandatoryFieldsData, pickListData, //blobList, ] = await Promise.all([ - await getCase(query.id), - await getAppealsTypes(), + await getAppealsTypesForNewAppeal(), await getMandatoryFields(query.appealtypes), await getPickLists(query.appealtypes), @@ -248,12 +247,16 @@ export const getServerSideProps = wrapper.getServerSideProps( const blobProgress = await getProgressFromBlob( loggedInUserIdent, - caseReferenceData.ticketnumber + query.id ); - console.log("anything here", loggedInUser, query.id, caseReferenceData); + console.log("anything here", loggedInUser, query.id, blobProgress); - let caseReference = caseReferenceData; //caseReferenceData.ticketnumber; + let caseReference = {}; + + caseReference.ticketnumber = query.id; + caseReference.incidentid = query.id; + caseReference.caseDetails = blobProgress; //searchDetailsObj; var path = require("path"); const configDirectory = path.resolve(process.cwd(), "data/formsxml");