From 2e1b1199e751678f55a8a9e3a367a16b57c7ae0e Mon Sep 17 00:00:00 2001 From: Milos Despotovic Date: Wed, 6 Dec 2023 14:51:37 -0800 Subject: [PATCH 1/4] Add requestFlags param to advanced search --- request-management-api/request_api/resources/advancedsearch.py | 1 + request-management-api/request_api/services/dashboardservice.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/request-management-api/request_api/resources/advancedsearch.py b/request-management-api/request_api/resources/advancedsearch.py index 61233e686..ca5cdc130 100644 --- a/request-management-api/request_api/resources/advancedsearch.py +++ b/request-management-api/request_api/resources/advancedsearch.py @@ -43,6 +43,7 @@ def get(): 'requeststate': flask.request.args.getlist('requestState[]'), 'requeststatus': flask.request.args.getlist('requestStatus[]'), 'requesttype': flask.request.args.getlist('requestType[]'), + 'requestflags': flask.request.args.getlist('requestFlags[]'), 'publicbody': flask.request.args.getlist('publicBodies[]'), 'daterangetype': flask.request.args.get('dateRangeType', None, type=str), diff --git a/request-management-api/request_api/services/dashboardservice.py b/request-management-api/request_api/services/dashboardservice.py index 5a89ac3c6..2d69c0525 100644 --- a/request-management-api/request_api/services/dashboardservice.py +++ b/request-management-api/request_api/services/dashboardservice.py @@ -166,7 +166,7 @@ def getministryrequestqueuepagination (self, groups=None, page=1, size=10, sorti return jsonify({'data': requestqueue, 'meta': meta}) - def advancedsearch(self, params={'usertype': 'iao', 'groups':None, 'page':1, 'size':10, 'sortingitems':[], 'sortingorders':[], 'requeststate':[], 'requeststatus':[], 'requesttype':[], 'publicbody':[], 'daterangetype':None, 'fromdate':None, 'todate':None, 'search':None, 'keywords':[], 'userid':None}): + def advancedsearch(self, params={'usertype': 'iao', 'groups':None, 'page':1, 'size':10, 'sortingitems':[], 'sortingorders':[], 'requeststate':[], 'requeststatus':[], 'requesttype':[], 'requestflags':[], 'publicbody':[], 'daterangetype':None, 'fromdate':None, 'todate':None, 'search':None, 'keywords':[], 'userid':None}): userid = AuthHelper.getuserid() if (params['usertype'] == "iao"): From b42f5956ec72804b7425926887c625f8f0fa555c Mon Sep 17 00:00:00 2001 From: Milos Despotovic Date: Wed, 6 Dec 2023 14:52:27 -0800 Subject: [PATCH 2/4] Add requestFlags filters to FOIMinistryRequest model --- .../request_api/models/FOIMinistryRequests.py | 46 +++++++++++++++++-- 1 file changed, 42 insertions(+), 4 deletions(-) diff --git a/request-management-api/request_api/models/FOIMinistryRequests.py b/request-management-api/request_api/models/FOIMinistryRequests.py index cb601bd7f..89f7039e7 100644 --- a/request-management-api/request_api/models/FOIMinistryRequests.py +++ b/request-management-api/request_api/models/FOIMinistryRequests.py @@ -27,6 +27,7 @@ from request_api.utils.enums import StateName from .FOIMinistryRequestSubjectCodes import FOIMinistryRequestSubjectCode from .SubjectCodes import SubjectCode +from .FOIRequestOIPC import FOIRequestOIPC class FOIMinistryRequest(db.Model): # Name of the table in our database @@ -364,7 +365,7 @@ def getrequestssubquery(cls, groups, filterfields, keyword, additionalfilter, us if(len(filterfields) > 0 and keyword is not None): filtercondition = [] - if(keyword != "restricted" and keyword.lower() != "oipc"): + if(keyword != "restricted"): for field in filterfields: filtercondition.append(FOIMinistryRequest.findfield(field, iaoassignee, ministryassignee).ilike('%'+keyword+'%')) else: @@ -491,7 +492,8 @@ def getrequestssubquery(cls, groups, filterfields, keyword, additionalfilter, us FOIRestrictedMinistryRequest.isrestricted.label('isiaorestricted'), ministry_restricted_requests.isrestricted.label('isministryrestricted'), SubjectCode.name.label('subjectcode'), - FOIMinistryRequest.isoipcreview.label('isoipcreview') + FOIMinistryRequest.isoipcreview.label('isoipcreview'), + FOIRequestOIPC.oipcno.label('oipc_number') ] basequery = _session.query( @@ -562,6 +564,10 @@ def getrequestssubquery(cls, groups, filterfields, keyword, additionalfilter, us SubjectCode, SubjectCode.subjectcodeid == FOIMinistryRequestSubjectCode.subjectcodeid, isouter=True + ).join( + FOIRequestOIPC, + and_(FOIRequestOIPC.foiministryrequest_id == FOIMinistryRequest.foiministryrequestid, FOIRequestOIPC.foiministryrequestversion_id == FOIMinistryRequest.version), + isouter=True ).filter(or_(FOIMinistryRequest.requeststatusid != 3, and_(FOIMinistryRequest.isoipcreview == True, FOIMinistryRequest.requeststatusid == 3))) if(additionalfilter == 'watchingRequests'): @@ -668,7 +674,9 @@ def findfield(cls, x, iaoassignee, ministryassignee): 'ministry': func.upper(ProgramArea.bcgovcode), 'requestPageCount': FOIMinistryRequest.requestpagecount, 'closedate': FOIMinistryRequest.closedate, - 'subjectcode': SubjectCode.name + 'subjectcode': SubjectCode.name, + 'isoipcreview': FOIMinistryRequest.isoipcreview, + 'oipc_number': FOIRequestOIPC.oipcno }.get(x, FOIMinistryRequest.axisrequestid) @classmethod @@ -1038,7 +1046,8 @@ def getbasequery(cls, iaoassignee, ministryassignee, userid=None, requestby='IAO FOIRestrictedMinistryRequest.isrestricted.label('isiaorestricted'), ministry_restricted_requests.isrestricted.label('isministryrestricted'), SubjectCode.name.label('subjectcode'), - FOIMinistryRequest.isoipcreview.label('isoipcreview') + FOIMinistryRequest.isoipcreview.label('isoipcreview'), + FOIRequestOIPC.oipcno.label('oipc_number') ] basequery = _session.query( @@ -1109,6 +1118,10 @@ def getbasequery(cls, iaoassignee, ministryassignee, userid=None, requestby='IAO SubjectCode, SubjectCode.subjectcodeid == FOIMinistryRequestSubjectCode.subjectcodeid, isouter=True + ).join( + FOIRequestOIPC, + and_(FOIRequestOIPC.foiministryrequest_id == FOIMinistryRequest.foiministryrequestid, FOIRequestOIPC.foiministryrequestversion_id == FOIMinistryRequest.version), + isouter=True ) if(isiaorestrictedfilemanager == True or isministryrestrictedfilemanager == True): @@ -1200,6 +1213,11 @@ def getfilterforadvancedsearch(cls, params, iaoassignee, ministryassignee): requesttypecondition = FOIMinistryRequest.getfilterforrequesttype(params, iaoassignee, ministryassignee) filtercondition.append(requesttypecondition) + #request flags: restricted, oipc, phased + if(len(params['requestflags']) > 0): + requestflagscondition = FOIMinistryRequest.getfilterforrequestflags(params, iaoassignee, ministryassignee) + filtercondition.append(requestflagscondition) + #public body: EDUC, etc. if(len(params['publicbody']) > 0): publicbodycondition = FOIMinistryRequest.getfilterforpublicbody(params, iaoassignee, ministryassignee) @@ -1246,6 +1264,26 @@ def getfilterforrequesttype(cls, params, iaoassignee, ministryassignee): requesttypecondition.append(FOIMinistryRequest.findfield('requestType', iaoassignee, ministryassignee) == type) return or_(*requesttypecondition) + @classmethod + def getfilterforrequestflags(cls, params, iaoassignee, ministryassignee): + #request flags: restricted, oipc, phased + requestflagscondition = [] + #alias for getting ministry restricted flag from FOIRestrictedMinistryRequest + ministry_restricted_requests = aliased(FOIRestrictedMinistryRequest) + + for flag in params['requestflags']: + if (flag.lower() == 'restricted'): + if(iaoassignee): + requestflagscondition.append(FOIRestrictedMinistryRequest.isrestricted == True) + elif (ministryassignee): + requestflagscondition.append(ministry_restricted_requests.isrestricted == True) + if (flag.lower() == 'oipc'): + requestflagscondition.append(FOIMinistryRequest.findfield('isoipcreview', iaoassignee, ministryassignee) == True) + if (flag.lower() == 'phased'): + # requestflagscondition.append(FOIMinistryRequest.findfield('isphasedrelease', iaoassignee, ministryassignee) == True) + continue + return or_(*requestflagscondition) + @classmethod def getfilterforpublicbody(cls, params, iaoassignee, ministryassignee): #public body: EDUC, etc. From 78826f91254d029a4e5eb65fd216f2d9fbf89a5d Mon Sep 17 00:00:00 2001 From: Milos Despotovic Date: Wed, 6 Dec 2023 14:53:15 -0800 Subject: [PATCH 3/4] Add requestFlags to advanced search service and enums --- .../src/apiManager/services/FOI/foiAdvancedSearchServices.js | 2 ++ .../src/components/FOI/Dashboard/IAO/AdvancedSearch/enum.js | 1 + .../components/FOI/Dashboard/Ministry/AdvancedSearch/enum.js | 1 + 3 files changed, 4 insertions(+) diff --git a/forms-flow-web/src/apiManager/services/FOI/foiAdvancedSearchServices.js b/forms-flow-web/src/apiManager/services/FOI/foiAdvancedSearchServices.js index cbb9fc669..e7fb181d5 100644 --- a/forms-flow-web/src/apiManager/services/FOI/foiAdvancedSearchServices.js +++ b/forms-flow-web/src/apiManager/services/FOI/foiAdvancedSearchServices.js @@ -13,6 +13,7 @@ export const fetchAdvancedSearchData = ({ requestState = [], requestStatus = [], requestType = [], + requestFlags = [], dateRangeType = null, fromDate = null, toDate = null, @@ -41,6 +42,7 @@ export const fetchAdvancedSearchData = ({ requestState: requestState, requestStatus: requestStatus, requestType: requestType, + requestFlags: requestFlags, dateRangeType: dateRangeType, fromDate: fromDate, toDate: toDate, diff --git a/forms-flow-web/src/components/FOI/Dashboard/IAO/AdvancedSearch/enum.js b/forms-flow-web/src/components/FOI/Dashboard/IAO/AdvancedSearch/enum.js index ad08f9752..ee6686a63 100644 --- a/forms-flow-web/src/components/FOI/Dashboard/IAO/AdvancedSearch/enum.js +++ b/forms-flow-web/src/components/FOI/Dashboard/IAO/AdvancedSearch/enum.js @@ -6,6 +6,7 @@ const SearchFilter = Object.freeze({ APPLICANT_NAME: "applicantname", ASSIGNEE_NAME: "assigneename", SUBJECT_CODE: "subjectcode", + OIPC_NUMBER: "oipc_number" }); const DateRangeTypes = Object.freeze([ diff --git a/forms-flow-web/src/components/FOI/Dashboard/Ministry/AdvancedSearch/enum.js b/forms-flow-web/src/components/FOI/Dashboard/Ministry/AdvancedSearch/enum.js index 95a4f8ca8..4afb63782 100644 --- a/forms-flow-web/src/components/FOI/Dashboard/Ministry/AdvancedSearch/enum.js +++ b/forms-flow-web/src/components/FOI/Dashboard/Ministry/AdvancedSearch/enum.js @@ -6,6 +6,7 @@ const SearchFilter = Object.freeze({ APPLICANT_NAME: "applicantname", ASSIGNEE_NAME: "ministryassigneename", SUBJECT_CODE: "subjectcode", + OIPC_NUMBER: "oipc_number" }); const DateRangeTypes = Object.freeze([ From c8a7c5bd9a84e370a075d81126bcc9321a36ec3a Mon Sep 17 00:00:00 2001 From: Milos Despotovic Date: Wed, 6 Dec 2023 14:58:35 -0800 Subject: [PATCH 4/4] Add OIPC number filter and request flags column to advanced search --- .../IAO/AdvancedSearch/SearchComponent.js | 220 ++++++++++++----- .../AdvancedSearch/SearchComponent.js | 222 +++++++++++++----- 2 files changed, 315 insertions(+), 127 deletions(-) diff --git a/forms-flow-web/src/components/FOI/Dashboard/IAO/AdvancedSearch/SearchComponent.js b/forms-flow-web/src/components/FOI/Dashboard/IAO/AdvancedSearch/SearchComponent.js index 56c04bd31..5983654d2 100644 --- a/forms-flow-web/src/components/FOI/Dashboard/IAO/AdvancedSearch/SearchComponent.js +++ b/forms-flow-web/src/components/FOI/Dashboard/IAO/AdvancedSearch/SearchComponent.js @@ -100,12 +100,12 @@ const AdvancedSearch = ({ userDetail }) => { const tooltipContentRight = { "title": "Advanced Search", - "content": "To conduct an Advanced Search using one of the six filter buttons, you must also enter one or more key words." + "content": "To conduct an Advanced Search using one of the seven filter buttons, you must also enter one or more key words." }; const tooltipContentLeft = { "title": "Advanced Search", - "content": "Use one or more fields from the following sections on their own or to narrow your search: Request State/Status/Type, Date Range, or Public Body." + "content": "Use one or more fields from the following sections on their own or to narrow your search: Request State/Status/Type/Flags, Date Range, or Public Body." }; @@ -181,6 +181,23 @@ const AdvancedSearch = ({ userDetail }) => { } }); + const initialRequestFlags = { + restricted: false, + oipc: false, + phased: false + }; + const [requestFlags, setRequestFlags] = useState(() => { + if (Object.keys(advancedSearchParams).length > 0 && advancedSearchParams.requestFlags.length > 0) { + let savedRequestFlags = {...initialRequestFlags} + advancedSearchParams.requestFlags.forEach(type => { + savedRequestFlags[type] = true; + }); + return savedRequestFlags; + } else { + return initialRequestFlags; + } + }); + const [selectedDateRangeType, setSelectedDateRangeType] = useState(advancedSearchParams?.dateRangeType || ""); const [fromDate, setFromDate] = useState(advancedSearchParams?.fromDate || ""); const [toDate, setToDate] = useState(advancedSearchParams?.toDate || ""); @@ -233,6 +250,7 @@ const AdvancedSearch = ({ userDetail }) => { keywords: keywordsMode ? keywords : [searchText.trim()], requestState: getTrueKeysFromCheckboxObject(requestState), requestType: getTrueKeysFromCheckboxObject(requestTypes), + requestFlags: getTrueKeysFromCheckboxObject(requestFlags), requestStatus: getTrueKeysFromCheckboxObject(requestStatus), dateRangeType: selectedDateRangeType || null, fromDate: fromDate || null, @@ -258,6 +276,7 @@ const AdvancedSearch = ({ userDetail }) => { const noSearchCriteria = () => { let selectedRequestStates = getTrueKeysFromCheckboxObject(requestState); let selectedRequestTypes = getTrueKeysFromCheckboxObject(requestTypes); + let selectedRequestFlags = getTrueKeysFromCheckboxObject(requestFlags); let selectedRequestStatus = getTrueKeysFromCheckboxObject(requestStatus); return ((keywords.length===0 && keywordsMode) || (!searchText && !keywordsMode)) && !fromDate @@ -265,6 +284,7 @@ const AdvancedSearch = ({ userDetail }) => { && selectedPublicBodies.length===0 && selectedRequestStates.length===0 && selectedRequestTypes.length===0 + && selectedRequestFlags.length===0 && selectedRequestStatus.length===0; }; @@ -275,6 +295,7 @@ const AdvancedSearch = ({ userDetail }) => { setSearchFilterSelected(); setRequestState(intitialRequestState); setRequestTypes(initialRequestTypes); + setRequestFlags(initialRequestFlags); setRequestStatus(intitialRequestStatus); setFromDate(""); setToDate(""); @@ -323,6 +344,13 @@ const AdvancedSearch = ({ userDetail }) => { }); }; + const handleRequestFlagsChange = (event) => { + setRequestFlags({ + ...requestFlags, + [event.target.name]: event.target.checked, + }); + }; + const handleSelectedDateRangeTypeChange = (event) => { const type = event.target.value; setSelectedDateRangeType(type); @@ -491,73 +519,84 @@ const AdvancedSearch = ({ userDetail }) => { Filter by + + + + clickSearchFilter(SearchFilter.REQUEST_DESCRIPTION) + } + clicked={ + searchFilterSelected === SearchFilter.REQUEST_DESCRIPTION + } + /> + - - - clickSearchFilter(SearchFilter.REQUEST_DESCRIPTION) - } - clicked={ - searchFilterSelected === SearchFilter.REQUEST_DESCRIPTION - } - /> - + + clickSearchFilter(SearchFilter.ID_NUM)} + clicked={searchFilterSelected === SearchFilter.ID_NUM} + /> + - - clickSearchFilter(SearchFilter.ID_NUM)} - clicked={searchFilterSelected === SearchFilter.ID_NUM} - /> - + + + clickSearchFilter(SearchFilter.AXIS_REQUEST_NUM) + } + clicked={ + searchFilterSelected === SearchFilter.AXIS_REQUEST_NUM + } + /> + - - - clickSearchFilter(SearchFilter.AXIS_REQUEST_NUM) - } - clicked={ - searchFilterSelected === SearchFilter.AXIS_REQUEST_NUM - } - /> - + + clickSearchFilter(SearchFilter.APPLICANT_NAME)} + clicked={searchFilterSelected === SearchFilter.APPLICANT_NAME} + /> + - - clickSearchFilter(SearchFilter.APPLICANT_NAME)} - clicked={searchFilterSelected === SearchFilter.APPLICANT_NAME} - /> - + + clickSearchFilter(SearchFilter.ASSIGNEE_NAME)} + clicked={searchFilterSelected === SearchFilter.ASSIGNEE_NAME} + /> + - - clickSearchFilter(SearchFilter.ASSIGNEE_NAME)} - clicked={searchFilterSelected === SearchFilter.ASSIGNEE_NAME} - /> - + + clickSearchFilter(SearchFilter.SUBJECT_CODE)} + clicked={searchFilterSelected === SearchFilter.SUBJECT_CODE} + /> + - - clickSearchFilter(SearchFilter.SUBJECT_CODE)} - clicked={searchFilterSelected === SearchFilter.SUBJECT_CODE} - /> + + clickSearchFilter(SearchFilter.OIPC_NUMBER)} + clicked={searchFilterSelected === SearchFilter.OIPC_NUMBER} + /> + @@ -731,6 +770,61 @@ const AdvancedSearch = ({ userDetail }) => { /> + + + + Request Flags + + + + + + + } + label="Restricted" + /> + + } + label="OIPC" + /> + + } + label="Phased" + /> + + diff --git a/forms-flow-web/src/components/FOI/Dashboard/Ministry/AdvancedSearch/SearchComponent.js b/forms-flow-web/src/components/FOI/Dashboard/Ministry/AdvancedSearch/SearchComponent.js index 68f82525b..19ea4c5b6 100644 --- a/forms-flow-web/src/components/FOI/Dashboard/Ministry/AdvancedSearch/SearchComponent.js +++ b/forms-flow-web/src/components/FOI/Dashboard/Ministry/AdvancedSearch/SearchComponent.js @@ -100,12 +100,12 @@ const AdvancedSearch = ({ userDetail }) => { const tooltipContentRight = { "title": "Advanced Search", - "content": "To conduct an Advanced Search using one of the six filter buttons, you must also enter one or more key words." + "content": "To conduct an Advanced Search using one of the seven filter buttons, you must also enter one or more key words." }; const tooltipContentLeft = { "title": "Advanced Search", - "content": "Use one or more fields from the following sections on their own or to narrow your search: Request State/Status/Type, Date Range, or Public Body." + "content": "Use one or more fields from the following sections on their own or to narrow your search: Request State/Status/Type/Flags, Date Range, or Public Body." }; const [searchFilterSelected, setSearchFilterSelected] = useState(advancedSearchParams?.search || null); @@ -183,6 +183,23 @@ const AdvancedSearch = ({ userDetail }) => { return initialRequestTypes; } }); + + const initialRequestFlags = { + restricted: false, + oipc: false, + phased: false + }; + const [requestFlags, setRequestFlags] = useState(() => { + if (Object.keys(advancedSearchParams).length > 0 && advancedSearchParams.requestFlags.length > 0) { + let savedRequestFlags = {...initialRequestFlags} + advancedSearchParams.requestFlags.forEach(type => { + savedRequestFlags[type] = true; + }); + return savedRequestFlags; + } else { + return initialRequestFlags; + } + }); const [selectedDateRangeType, setSelectedDateRangeType] = useState(advancedSearchParams?.dateRangeType || ""); const [fromDate, setFromDate] = useState(advancedSearchParams?.fromDate || ""); const [toDate, setToDate] = useState(advancedSearchParams?.toDate || ""); @@ -234,6 +251,7 @@ const AdvancedSearch = ({ userDetail }) => { keywords: keywordsMode ? keywords : [searchText.trim()], requestState: getTrueKeysFromCheckboxObject(requestState), requestType: getTrueKeysFromCheckboxObject(requestTypes), + requestFlags: getTrueKeysFromCheckboxObject(requestFlags), requestStatus: getTrueKeysFromCheckboxObject(requestStatus), dateRangeType: selectedDateRangeType || null, fromDate: fromDate || null, @@ -259,6 +277,7 @@ const AdvancedSearch = ({ userDetail }) => { const noSearchCriteria = () => { let selectedRequestStates = getTrueKeysFromCheckboxObject(requestState); let selectedRequestTypes = getTrueKeysFromCheckboxObject(requestTypes); + let selectedRequestFlags = getTrueKeysFromCheckboxObject(requestFlags); let selectedRequestStatus = getTrueKeysFromCheckboxObject(requestStatus); return ((keywords.length===0 && keywordsMode) || (!searchText && !keywordsMode)) && !fromDate @@ -266,6 +285,7 @@ const AdvancedSearch = ({ userDetail }) => { && selectedPublicBodies.length===0 && selectedRequestStates.length===0 && selectedRequestTypes.length===0 + && selectedRequestFlags.length===0 && selectedRequestStatus.length===0; }; @@ -276,6 +296,7 @@ const AdvancedSearch = ({ userDetail }) => { setSearchFilterSelected(); setRequestState(intitialRequestState); setRequestTypes(initialRequestTypes); + setRequestFlags(initialRequestFlags); setRequestStatus(intitialRequestStatus); setFromDate(""); setToDate(""); @@ -336,6 +357,13 @@ const AdvancedSearch = ({ userDetail }) => { }); }; + const handleRequestFlagsChange = (event) => { + setRequestFlags({ + ...requestFlags, + [event.target.name]: event.target.checked, + }); + }; + const handleSelectedDateRangeTypeChange = (event) => { const type = event.target.value; setSelectedDateRangeType(type); @@ -504,73 +532,84 @@ const AdvancedSearch = ({ userDetail }) => { Filter by + + + + clickSearchFilter(SearchFilter.REQUEST_DESCRIPTION) + } + clicked={ + searchFilterSelected === SearchFilter.REQUEST_DESCRIPTION + } + /> + - - - clickSearchFilter(SearchFilter.REQUEST_DESCRIPTION) - } - clicked={ - searchFilterSelected === SearchFilter.REQUEST_DESCRIPTION - } - /> - - - - clickSearchFilter(SearchFilter.ID_NUM)} - clicked={searchFilterSelected === SearchFilter.ID_NUM} - /> - + + clickSearchFilter(SearchFilter.ID_NUM)} + clicked={searchFilterSelected === SearchFilter.ID_NUM} + /> + - - - clickSearchFilter(SearchFilter.AXIS_REQUEST_NUM) - } - clicked={ - searchFilterSelected === SearchFilter.AXIS_REQUEST_NUM - } - /> - + + + clickSearchFilter(SearchFilter.AXIS_REQUEST_NUM) + } + clicked={ + searchFilterSelected === SearchFilter.AXIS_REQUEST_NUM + } + /> + - - clickSearchFilter(SearchFilter.APPLICANT_NAME)} - clicked={searchFilterSelected === SearchFilter.APPLICANT_NAME} - /> - + + clickSearchFilter(SearchFilter.APPLICANT_NAME)} + clicked={searchFilterSelected === SearchFilter.APPLICANT_NAME} + /> + - - clickSearchFilter(SearchFilter.ASSIGNEE_NAME)} - clicked={searchFilterSelected === SearchFilter.ASSIGNEE_NAME} - /> - + + clickSearchFilter(SearchFilter.ASSIGNEE_NAME)} + clicked={searchFilterSelected === SearchFilter.ASSIGNEE_NAME} + /> + - - clickSearchFilter(SearchFilter.SUBJECT_CODE)} - clicked={searchFilterSelected === SearchFilter.SUBJECT_CODE} - /> + + clickSearchFilter(SearchFilter.SUBJECT_CODE)} + clicked={searchFilterSelected === SearchFilter.SUBJECT_CODE} + /> + + + + clickSearchFilter(SearchFilter.OIPC_NUMBER)} + clicked={searchFilterSelected === SearchFilter.OIPC_NUMBER} + /> + @@ -733,6 +772,61 @@ const AdvancedSearch = ({ userDetail }) => { /> + + + + Request Flags + + + + + + + } + label="Restricted" + /> + + } + label="OIPC" + /> + + } + label="Phased" + /> + +