Merged PR 1811: use ticket number not title/reference/pinswg_name

Related work items: #18356
This commit is contained in:
Robert Bond
2025-08-12 08:42:11 +00:00
27 changed files with 226 additions and 89 deletions
+1
View File
@@ -41,6 +41,7 @@ const Case = (props) => {
docsOffline={props.props.docsOffline}
documentDetailsObj={props.documentDetailsObj}
showFilteredDocs={props.showFilteredDocs}
ticketnumber={props.ticketnumber}
/>
{showRepresentations == true && (
<RepresentationList
+45 -35
View File
@@ -268,7 +268,7 @@ let MakeRepresentation = (props) => {
resultsObj = jsonpath({
path:
'$..[?(@ && @.ticketnumber=="' +
currentView.caseReference.currentReference +
currentView.caseReference.ticketnumber +
'")]',
json: setCaseResultsObj,
eval: true,
@@ -296,8 +296,8 @@ let MakeRepresentation = (props) => {
})
: jsonpath({
path:
'$..[?(@ && @.pinswg_name =="' +
currentView.caseReference.currentReference +
'$..[?(@ && @.ticketnumber =="' +
currentView.caseReference.ticketnumber +
'")]',
json: setCaseDetailsObj,
eval: true,
@@ -767,6 +767,26 @@ let MakeRepresentation = (props) => {
return blobList;
};
const buildAddressStr = (detailsObj) => {
const toTitleCase = (str) =>
str.toLowerCase().replace(/\b\w/g, (char) => char.toUpperCase());
return [
detailsObj?.pinswg_siteaddressline1 ||
detailsObj?.pinswg_addressline1,
detailsObj?.pinswg_siteaddressline2 ||
detailsObj?.pinswg_addressline2,
detailsObj?.pinswg_siteaddresstown ||
detailsObj?.pinswg_addresstown,
detailsObj?.pinswg_siteaddresspostcode ||
detailsObj?.pinswg_postcode,
detailsObj?.pinswg_siteaddresscounty ||
detailsObj?.pinswg_addresscounty,
]
.filter((v) => !!v && v.trim()) // remove empty/whitespace-only values
.map((v) => toTitleCase(v.trim())) // title-case each segment
.join(" ");
};
const updateRepresentation = async (
values,
sendSavedEmail,
@@ -790,7 +810,6 @@ let MakeRepresentation = (props) => {
"caseRef": props.props.currentView.caseReference.currentReference,
"casereference":
props.props.currentView.caseReference.currentReference,
"ticketnumber": props.props.currentView.caseReference.ticketnumber,
"pinswg_questionnaireduedate":
detailsObj.pinswg_questionnaireduedate,
"pinswg_statementduedate":
@@ -808,14 +827,7 @@ let MakeRepresentation = (props) => {
"lastname": props.props.accountDetails.accountDetails.lastname,
"emailAddress":
props.props.accountDetails.accountDetails.emailaddress1,
"siteAddress":
detailsObj.pinswg_siteaddressline1 +
(detailsObj.pinswg_siteaddressline2 != null
? " " + detailsObj.pinswg_siteaddressline2 + " "
: " ") +
detailsObj.pinswg_siteaddresstown +
" " +
detailsObj.pinswg_siteaddresspostcode,
"siteAddress": buildAddressStr(detailsObj),
"pinswg_siteaddressline1": detailsObj.pinswg_siteaddressline1,
"pinswg_siteaddressline2": detailsObj.pinswg_siteaddressline2,
"pinswg_siteaddresstown": detailsObj.pinswg_siteaddresstown,
@@ -859,7 +871,6 @@ let MakeRepresentation = (props) => {
props.props.currentView.caseReference.repDetails.appealType,
"casereference":
props.props.currentView.caseReference.currentReference,
"ticketnumber": props.props.currentView.caseReference.ticketnumber,
"incidentID":
props.props.currentView.caseReference.incidentid ||
props.props.currentView.caseReference.repDetails.incidentid,
@@ -947,7 +958,10 @@ let MakeRepresentation = (props) => {
var detailsObj = {};
detailsObj = jsonpath({
path: '$..[?(@ && @.pinswg_name=="' + caseReference + '")]',
path:
'$..[?(@ && @.ticketnumber=="' +
currentView.caseReference.ticketnumber +
'")]',
json: setCaseDetailsObj,
eval: true,
});
@@ -979,15 +993,16 @@ let MakeRepresentation = (props) => {
"ticketnumber":
props.props.currentView.caseReference.ticketnumber,
"pinswg_questionnaireduedate":
detailsObj.pinswg_questionnaireduedate,
detailsObj?.pinswg_questionnaireduedate,
"pinswg_endofrepresentationperiod":
detailsObj.pinswg_endofrepresentationperiod,
detailsObj?.pinswg_endofrepresentationperiod,
"pinswg_applicationacceptedasvalid":
detailsObj.pinswg_applicationacceptedasvalid,
"pinswg_statementduedate": detailsObj.pinswg_statementduedate,
"pinswg_statementsduedate": detailsObj.pinswg_statementsduedate,
detailsObj?.pinswg_applicationacceptedasvalid,
"pinswg_statementduedate": detailsObj?.pinswg_statementduedate,
"pinswg_statementsduedate":
detailsObj?.pinswg_statementsduedate,
"pinswg_finalcommentsduedate":
detailsObj.pinswg_finalcommentsduedate,
detailsObj?.pinswg_finalcommentsduedate,
"pinswg_name":
props.props.currentView.caseReference.currentReference,
"firstname":
@@ -995,19 +1010,12 @@ let MakeRepresentation = (props) => {
"lastname": props.props.accountDetails.accountDetails.lastname,
"emailAddress":
props.props.accountDetails.accountDetails.emailaddress1,
"siteAddress":
detailsObj.pinswg_siteaddressline1 +
(detailsObj.pinswg_siteaddressline2 != null
? " " + detailsObj.pinswg_siteaddressline2 + " "
: " ") +
detailsObj.pinswg_siteaddresstown +
" " +
detailsObj.pinswg_siteaddresspostcode,
"pinswg_siteaddressline1": detailsObj.pinswg_siteaddressline1,
"pinswg_siteaddressline2": detailsObj.pinswg_siteaddressline2,
"pinswg_siteaddresstown": detailsObj.pinswg_siteaddresstown,
"siteAddress": buildAddressStr(detailsObj),
"pinswg_siteaddressline1": detailsObj?.pinswg_siteaddressline1,
"pinswg_siteaddressline2": detailsObj?.pinswg_siteaddressline2,
"pinswg_siteaddresstown": detailsObj?.pinswg_siteaddresstown,
"pinswg_siteaddresspostcode":
detailsObj.pinswg_siteaddresspostcode,
detailsObj?.pinswg_siteaddresspostcode,
"pinswg_lpareference": resultsObj?.pinswg_lpareference || "",
"_pinswg_appellant_value":
detailsObj["_pinswg_appellant_value"],
@@ -1072,7 +1080,7 @@ let MakeRepresentation = (props) => {
console.log("has errors:", props.invalid);
Object.assign(values, {
"locale": router.locale,
"repComplete": currentView.caseReference.currentReference,
"repComplete": currentView.caseReference.ticketnumber,
});
props.invalid == false &&
updateRepresentation(values, false, false);
@@ -1094,7 +1102,7 @@ let MakeRepresentation = (props) => {
generateRepPDF(
values,
props.props.accountDetails.containerID,
currentView.caseReference.ticketnumber
currentView.caseReference.currentReference
).then((data) => {
console.log(data);
data.status == "success" &&
@@ -1173,7 +1181,9 @@ let MakeRepresentation = (props) => {
dataObj,
[{}],
values.containerID,
props.ticketnumber + "/" + dataObj.repfile_name
props.props.currentView.caseReference.ticketnumber +
"/" +
dataObj.repfile_name
).then((data) => {
return data;
});
@@ -196,7 +196,8 @@ const RepAgent = (props) => {
"myrepresentations:add-files-label"
)}
ticketnumber={
props.props.ticketnumber
props.currentView.caseReference
.ticketnumber
}
hint={"sdsd"}
fileList={
@@ -188,7 +188,10 @@ const RepAppellant = (props) => {
label={t(
"myrepresentations:add-files-label"
)}
ticketnumber={props.props.ticketnumber}
ticketnumber={
props.currentView.caseReference
.ticketnumber
}
hint={"sdsd"}
fileList={
props.currentView.fileList
@@ -35,6 +35,9 @@ let RepCapacitySelection = (props) => {
currentType={currentType}
casesObj={casesObj}
caseReference={props.props.caseReference}
ticketnumber={
props.props.currentView.caseReference.ticketnumber
}
searchResultsObj={props.props.searchResultsObj}
myRepresentations={props.props.myRepresentations}
props={props}
@@ -10,7 +10,7 @@ const RepDetails = (props) => {
const { currentType, casesObj } = props;
let { caseReference } = props;
let { caseReference, ticketnumber } = props;
let setCaseDetailsObj = router.query.hasOwnProperty("state")
? router.query.state == "edit"
@@ -29,7 +29,7 @@ const RepDetails = (props) => {
: caseReference;
detailsObj = jsonpath({
path: '$..[?(@ && @.pinswg_name=="' + caseReference + '")]',
path: '$..[?(@ && @.ticketnumber=="' + ticketnumber + '")]',
json: setCaseDetailsObj,
eval: true,
});
@@ -188,7 +188,8 @@ const RepInterestedPartyPerson = (props) => {
"myrepresentations:add-files-label"
)}
ticketnumber={
props.props.ticketnumber
props.currentView.caseReference
.ticketnumber
}
hint={"sdsd"}
fileList={
@@ -353,7 +353,7 @@ let RepLPA = (props) => {
"myrepresentations:add-files-label"
)}
ticketnumber={
props.props.ticketnumber
props.currentView.caseReference.ticketnumber
}
hint={"sdsd"}
fileList={
@@ -84,7 +84,10 @@ const RepLandOwner = (props) => {
label={t(
"myrepresentations:add-files-label"
)}
ticketnumber={props.props.ticketnumber}
ticketnumber={
props.currentView.caseReference
.ticketnumber
}
hint={"sdsd"}
fileList={[]}
setFilesForRepresentation={[]}
@@ -1213,7 +1213,10 @@ let Enforcement_Questionnaire = (props) => {
name={"representationDocuments"}
id={"representationDocuments"}
label={t("myrepresentations:add-files-label")}
ticketnumber={props.props.props.ticketnumber}
ticketnumber={
props.props.currentView.caseReference
.ticketnumber
}
hint={"sdsd"}
fileList={
props.currentView.fileList
@@ -1022,7 +1022,10 @@ let S78_Questionnaire = (props) => {
name={"representationDocuments"}
id={"representationDocuments"}
label={t("myrepresentations:add-files-label")}
ticketnumber={props.props.props.ticketnumber}
ticketnumber={
props.props.currentView.caseReference
.ticketnumber
}
hint={"sdsd"}
fileList={
props.currentView.fileList
+4 -4
View File
@@ -177,13 +177,13 @@ const CaseSummary = (props) => {
currentType == "searchResultsObj"
? (casesObj = jsonpath({
path: '$..[?(@ && @.title=="' + caseReference + '")]',
path: '$..[?(@ && @.ticketnumber=="' + ticketnumber + '")]',
json: searchResultsObj,
eval: true,
}))
: currentType == "watchedCases"
? (casesObj = jsonpath({
path: '$..[?(@ && @.pinswg_title=="' + caseReference + '")]',
path: '$..[?(@ && @.ticketnumber=="' + ticketnumber + '")]',
json: setCaseQueryObj,
eval: true,
}))
@@ -467,13 +467,13 @@ const CaseSummary = (props) => {
case:
currentType ==
"searchResultsObj"
? detailsObj.pinswg_name
? detailsObj.ticketnumber
: currentType ==
"watchedCases"
? casesObj.pinswg_title
: currentType ==
"directResultsObj"
? casesObj.ticketnumber
? detailsObj.ticketnumber
: casesObj.reference,
},
}}
+9 -2
View File
@@ -4,8 +4,14 @@ import CRMError from "./crmError";
import DNSSearchResults from "./search/dnssearchresults";
export default function Search(props) {
const { searchString, searchResultsObj, myportal, watchedCases, showMap } =
props;
const {
searchString,
searchResultsObj,
myportal,
watchedCases,
showMap,
showLoginCheck,
} = props;
let { t } = useTranslation();
const router = useRouter();
@@ -41,6 +47,7 @@ export default function Search(props) {
myportal={myportal}
watchedCases={watchedCases}
showMap={showMap}
showLoginCheck={showLoginCheck}
/>
</div>
</div>
+5 -5
View File
@@ -239,9 +239,8 @@ const TopThree = (props) => {
: showTopThreeArr[key][
"_pinswg_case_value@OData.Community.Display.V1.FormattedValue"
]
: showTopThreeArr[key][
"_pinswg_watchedcase_value@OData.Community.Display.V1.FormattedValue"
],
: showTopThreeArr[key]
.ticketnumber,
"currentType": topThreeType,
"incidentid": getIncidentId(
@@ -255,7 +254,8 @@ const TopThree = (props) => {
});
}}
>
{topThreeType != "watchedCases"
{showTopThreeArr[key].pinswg_title}
{/* {topThreeType != "watchedCases"
? topThreeType != "myRepresentations"
? topThreeType == "mySubmittedReps"
? showTopThreeArr[key].pinswg_title
@@ -265,7 +265,7 @@ const TopThree = (props) => {
]
: showTopThreeArr[key][
"_pinswg_watchedcase_value@OData.Community.Display.V1.FormattedValue"
]}{" "}
]}{" "} */}
</Link>
)}
{topThreeType == "watchedCases" && !props.myReps && (
+5 -4
View File
@@ -36,6 +36,8 @@ import {
setMyRepresentationsDetails,
} from "../../store/myRepresentations/action";
import RepsOnResults from "../search/repsonresults";
const ViewAllResults = (props) => {
const {
searchString,
@@ -268,10 +270,7 @@ const ViewAllResults = (props) => {
? currentView.viewKey ==
"myRepresentations"
? resultsArr[key].caseRef
: currentView.viewKey ==
"mySubmittedReps"
? resultsArr[key].pinswg_title
: resultsArr[key].ticketnumber
: resultsArr[key].pinswg_title
: resultsArr[key][
"_pinswg_watchedcase_value@OData.Community.Display.V1.FormattedValue"
]}
@@ -284,6 +283,8 @@ const ViewAllResults = (props) => {
</span>
</>
)}
<RepsOnResults detailsObj={resultsArr[key]} />
</>
)}
</dd>
+2 -2
View File
@@ -247,8 +247,8 @@ const SearchResults = (props) => {
resultsArrPaged.map((item, key) => {
let detailsObj = jsonpath({
path:
'$..value[?(@ && @.pinswg_name=="' +
item.pinswg_name +
'$..value[?(@ && @.ticketnumber=="' +
item.ticketnumber +
'")]',
json: searchDetailsObj,
+53 -2
View File
@@ -32,6 +32,8 @@ import {
setWatchedCasesDetails,
} from "../../store/watchedCases/action";
import { getDetailsProxy, getSearchDetailsPaged } from "../utils";
import RepsOnResults from "./repsonresults";
import { signIn, useSession } from "next-auth/react";
const DNSSearchResults = (props) => {
const {
@@ -49,11 +51,13 @@ const DNSSearchResults = (props) => {
setWatchedCases,
setWatchedCasesDetails,
showMap,
showLoginCheck,
} = props;
let { t } = useTranslation();
const router = useRouter();
const { locale } = router;
const { data: session } = useSession();
var resultsArr = searchResultsObj.value || [];
@@ -300,8 +304,8 @@ const DNSSearchResults = (props) => {
resultsArr.map((item, key) => {
let detailsObj = jsonpath({
path:
'$..value[?(@ && @.pinswg_name=="' +
item.title +
'$..value[?(@ && @.ticketnumber=="' +
item.ticketnumber +
'")]',
json: searchDetailsObj,
eval: true,
@@ -340,6 +344,8 @@ const DNSSearchResults = (props) => {
"appealType":
item.pinswg_appealcasetype,
"showMap": showMap,
"showLoginCheck":
props.showLoginCheck,
});
}}
>
@@ -557,6 +563,51 @@ const DNSSearchResults = (props) => {
)}
</dd>
)}
{(showLoginCheck == "true" ||
showLoginCheck == true) &&
!session && (
<dd className="govuk-summary-list__value govuk-!-font-size-14 govuk-summary-list__action">
<span className="results-visually-hidden">
{t(
"case:watch-this-case-link"
)}
</span>
<button
className="govuk-summary-list__actionLink watchLink"
onClick={() => {
confirm(
t(
"case:trying-to-watch-case-label"
) +
item.title +
"\n\n" +
t(
"case:trying-to-watch-case-redirect-label"
)
) &&
// signIn("email");
signIn(
undefined,
{
callbackUrl:
"/myportal/searchresults?q=" +
searchString +
"&toWatch=" +
item.incidentid +
"_" +
item.pinswg_appealcasetype,
}
);
}}
title={t(
"case:watch-this-case-link"
)}
>
<span className="eye"></span>
</button>
</dd>
)}
</div>
);
})
+2 -2
View File
@@ -244,8 +244,8 @@ const SearchResults = (props) => {
resultsArr.map((item, key) => {
let detailsObj = jsonpath({
path:
'$..value[?(@ && @.pinswg_name=="' +
item.title +
'$..value[?(@ && @.ticketnumber=="' +
item.ticketnumber +
'")]',
json: searchDetailsObj,
eval: true,
+9
View File
@@ -34,6 +34,15 @@ export const getFormCollectionByID = (appealTypeID) => {
return collectionName[0];
};
export const getNavigationPropertyByPrimaryAttribute = (primaryAttribute) => {
const collectionName = jsonpath({
path: "$..[?(@ && @.PrimaryIdAttribute =='" + primaryAttribute + "')]",
json: data,
eval: true,
});
return collectionName[0];
};
export const getFormIDByLogicalName = (appealTypeLogicalName) => {
const collectionName = jsonpath({
path: "$..[?(@ && @.LogicalName =='" + appealTypeLogicalName + "')]",