Skip to content

Commit 6bd918e

Browse files
authored
fix(search): prevent keyword search from bypassing document sets (#6015)
1 parent 68fba03 commit 6bd918e

File tree

2 files changed

+34
-20
lines changed

2 files changed

+34
-20
lines changed

forms-flow-web/src/components/FOI/Dashboard/IAO/KeywordSearch/DataGridKeywordSearch.js

Lines changed: 30 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
updateSortModel,
1010
getFullName,
1111
LightTooltip,
12-
pagecountcellTooltipRender,
12+
pagecountcellTooltipRender,
1313
getClosedDate,
1414
formatRequestType
1515
} from "../../utils";
@@ -57,7 +57,7 @@ const DataGridKeywordSearch = ({ userDetail }) => {
5757

5858
const hyperlinkTooltipRenderCell = (params) => {
5959
let link;
60-
if (params.row.ministryrequestid) {
60+
if (params.row.ministryrequestid) {
6161
link = "./foirequests/" + params.row.id + "/ministryrequest/" + params.row.ministryrequestid;
6262
} else {
6363
link = "./reviewrequest/" + params.row.id;
@@ -81,7 +81,7 @@ const DataGridKeywordSearch = ({ userDetail }) => {
8181

8282
const hyperlinkRenderCell = (params) => {
8383
let link;
84-
if (params.row.ministryrequestid) {
84+
if (params.row.ministryrequestid) {
8585
link = "./foirequests/" + params.row.id + "/ministryrequest/" + params.row.ministryrequestid;
8686
} else {
8787
link = "./reviewrequest/" + params.row.id;
@@ -94,33 +94,43 @@ const DataGridKeywordSearch = ({ userDetail }) => {
9494
};
9595

9696
const goToRecordsRenderCell = (params) => {
97+
if (!params?.row?.ministryrequestid) return null;
98+
99+
const searchParams = new URLSearchParams();
100+
97101
const keywordSearchParam = keywordSearchParamsRef.current;
98-
let link;
99-
if (params.row.ministryrequestid && keywordSearchParam?.keywords?.length > 0) {
102+
if (keywordSearchParam?.keywords?.length > 0) {
100103
const keywords = keywordSearchParam.keywords
101-
.filter(keyword => keyword.category.toUpperCase() !== "NOT")
102-
.map(keyword => `"${keyword.text}"`)
103-
.join(" ");
104-
let queryString= {"query": keywords };
105-
const queryStringParam = new URLSearchParams(queryString).toString();
106-
const formattedQueryString = queryStringParam.replace(/\+/g, '%20');
107-
link = `${DOC_REVIEWER_WEB_URL}/foi/${params.row.ministryrequestid}?${formattedQueryString}`;
104+
.filter(k => k.category?.toUpperCase() !== "NOT")
105+
.map(k => `"${k.text}"`)
106+
.join(" ");
107+
108+
searchParams.set("query", keywords);
108109
}
110+
111+
const setId = Number(params?.row?.documentsetid);
112+
if (Number.isInteger(setId) && setId > 0) {
113+
searchParams.set("documentsetid", setId.toString());
114+
}
115+
116+
const href = `${DOC_REVIEWER_WEB_URL}/foi/${params.row.ministryrequestid}?${searchParams
117+
.toString()
118+
.replace(/\+/g, "%20")}`;
119+
109120
return (
110121
<Link
111-
href={link}
122+
href={href}
112123
target="_blank"
113124
rel="noopener noreferrer"
114-
onClick={(e) => {
115-
e.stopPropagation();
116-
}}
125+
onClick={(e) => e.stopPropagation()}
117126
>
118127
<div className="MuiDataGrid-cellContent">Go to records</div>
119128
</Link>
120129
);
121130
};
122131

123132

133+
124134
const IAOColumns = [
125135
{
126136
field: "applicantName",
@@ -149,7 +159,7 @@ const DataGridKeywordSearch = ({ userDetail }) => {
149159
cellClassName: 'foi-advanced-search-result-cell',
150160
valueGetter: (params) => params.row.requestnumber,
151161
width: 160,
152-
},
162+
},
153163
{
154164
field: "requeststatus",
155165
headerName: "CURRENT STATE",
@@ -185,7 +195,7 @@ const DataGridKeywordSearch = ({ userDetail }) => {
185195
flex: 1,
186196
},
187197
];
188-
198+
189199
const defaultTableInfo = {
190200
columns: IAOColumns,
191201
sort: [
@@ -198,7 +208,7 @@ const DataGridKeywordSearch = ({ userDetail }) => {
198208
};
199209

200210
const tableInfo = defaultTableInfo;
201-
211+
202212
const classes = useStyles();
203213

204214
const defaultRowsState = { page: 0, pageSize: 10 };
@@ -224,7 +234,7 @@ const DataGridKeywordSearch = ({ userDetail }) => {
224234
// });
225235

226236
}
227-
237+
228238
}, [rowsState, sortModel]);
229239

230240
const columnsRef = React.useRef(tableInfo?.columns || []);

request-management-api/request_api/models/FOIMinistryRequests.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1626,6 +1626,7 @@ def getrequestsdetailsforsearch(cls,requestnumbers):
16261626
,FMR.description
16271627
,PA.iaocode AS programareacode
16281628
,FR.requesttype
1629+
,FRRG.document_set_id
16291630
FROM public."FOIMinistryRequests" FMR INNER JOIN (
16301631
SELECT
16311632
DISTINCT FMR.foiministryrequestid as ministryrequestid
@@ -1638,6 +1639,8 @@ def getrequestsdetailsforsearch(cls,requestnumbers):
16381639
JOIN public."FOIRequestApplicantMappings" FRAM ON FRAM.foirequest_id=MaxRequestVersions.requestid
16391640
JOIN public."FOIRequestApplicants" FRA ON FRA.foirequestapplicantid=FRAM.foirequestapplicantid
16401641
LEFT JOIN public."ProgramAreas" PA ON FMR.programareaid = PA.programareaid
1642+
LEFT JOIN public."FOIRequestRecordGroup" FRRG ON FRRG.ministry_request_id = FMR.foiministryrequestid
1643+
AND FRRG.request_id = FMR.foirequest_id
16411644
JOIN public."FOIRequests" FR ON FMR.foirequest_id = FR.foirequestid AND FMR.version = FR.version"""
16421645
result = db.session.execute(text(query),{"csvrequestnumbers":csvrequestnumbers})
16431646
rows = result.fetchall()
@@ -1666,6 +1669,7 @@ def getrequestsdetailsforsearch(cls,requestnumbers):
16661669
requestdetail["description"]=row["description"]
16671670
requestdetail["requestType"]=row["requesttype"]
16681671
requestdetail["bcgovcode"]=row["programareacode"]
1672+
requestdetail["documentsetid"]=row["document_set_id"]
16691673
requestdetails.append(requestdetail)
16701674

16711675
except Exception as ex:

0 commit comments

Comments
 (0)