diff --git a/source/frontend/src/features/acquisition/list/AcquisitionListView.tsx b/source/frontend/src/features/acquisition/list/AcquisitionListView.tsx
index 475c3b7589..51757891d1 100644
--- a/source/frontend/src/features/acquisition/list/AcquisitionListView.tsx
+++ b/source/frontend/src/features/acquisition/list/AcquisitionListView.tsx
@@ -1,5 +1,5 @@
import { isEmpty } from 'lodash';
-import React, { useCallback, useEffect } from 'react';
+import React, { useCallback, useEffect, useMemo } from 'react';
import { Col, Row } from 'react-bootstrap';
import { FaFileExcel, FaPlus } from 'react-icons/fa';
import { useHistory } from 'react-router';
@@ -11,14 +11,21 @@ import { StyledIconButton } from '@/components/common/buttons/IconButton';
import { PaddedScrollable, StyledAddButton } from '@/components/common/styles';
import * as CommonStyled from '@/components/common/styles';
import TooltipWrapper from '@/components/common/TooltipWrapper';
+import * as API from '@/constants/API';
+import { ACQUISITION_FILE_STATUS_TYPES } from '@/constants/API';
import Claims from '@/constants/claims';
import { useApiAcquisitionFile } from '@/hooks/pims-api/useApiAcquisitionFile';
import { useAcquisitionProvider } from '@/hooks/repositories/useAcquisitionProvider';
-import useKeycloakWrapper from '@/hooks/useKeycloakWrapper';
+import { useUserInfoRepository } from '@/hooks/repositories/useUserInfoRepository';
+import useKeycloakWrapper, { IUserInfo } from '@/hooks/useKeycloakWrapper';
+import useLookupCodeHelpers from '@/hooks/useLookupCodeHelpers';
import { useSearch } from '@/hooks/useSearch';
+import { MultiSelectOption } from '@/interfaces/MultiSelectOption';
import { ApiGen_Concepts_AcquisitionFile } from '@/models/api/generated/ApiGen_Concepts_AcquisitionFile';
import { toFilteredApiPaginateParams } from '@/utils/CommonFunctions';
-import { generateMultiSortCriteria } from '@/utils/utils';
+import { mapLookupCode } from '@/utils/mapLookupCode';
+import { formatApiPersonNames } from '@/utils/personUtils';
+import { exists, formatGuid, generateMultiSortCriteria } from '@/utils/utils';
import { useAcquisitionFileExport } from '../hooks/useAcquisitionFileExport';
import { AcquisitionFilter } from './AcquisitionFilter/AcquisitionFilter';
@@ -33,8 +40,34 @@ export const AcquisitionListView: React.FunctionComponent<
React.PropsWithChildren
> = () => {
const history = useHistory();
+ const { hasClaim, obj } = useKeycloakWrapper();
+ const { sub } = obj.userInfo as IUserInfo;
+ const formattedGuid = formatGuid(sub);
+
+ const lookupCodes = useLookupCodeHelpers();
+ const { retrieveUserInfo, retrieveUserInfoResponse } = useUserInfoRepository();
const { getAcquisitionFiles } = useApiAcquisitionFile();
- const { hasClaim } = useKeycloakWrapper();
+ const {
+ getAllAcquisitionFileTeamMembers: { response: team, execute: loadAcquisitionTeam },
+ } = useAcquisitionProvider();
+
+ const pimsRegionsTypes = lookupCodes.getOptionsByType(API.REGION_TYPES);
+ const pimsRegionOptions: MultiSelectOption[] = pimsRegionsTypes.map(x => {
+ return { id: x.code as string, text: x.label };
+ });
+
+ const acquisitionStatusOptions = lookupCodes
+ .getByType(ACQUISITION_FILE_STATUS_TYPES)
+ .map(c => mapLookupCode(c));
+
+ const userRegionsIds: string[] =
+ retrieveUserInfoResponse?.userRegions.map(x => x.regionCode.toString()) ?? [];
+ const userRegionsOptions: MultiSelectOption[] = pimsRegionsTypes
+ .filter(opt => userRegionsIds.includes(opt.code))
+ .map(x => {
+ return { id: x.code as string, text: x.label };
+ });
+
const {
results,
filter,
@@ -50,7 +83,7 @@ export const AcquisitionListView: React.FunctionComponent<
setPageSize,
loading,
} = useSearch(
- new AcquisitionFilterModel().toApi(),
+ new AcquisitionFilterModel(userRegionsOptions).toApi(),
getAcquisitionFiles,
'No matching results can be found. Try widening your search criteria.',
);
@@ -80,20 +113,35 @@ export const AcquisitionListView: React.FunctionComponent<
[setFilter],
);
+ const handleResetFilter = useCallback(() => {
+ setFilter(new AcquisitionFilterModel(userRegionsOptions).toApi());
+ }, [setFilter, userRegionsOptions]);
+
+ const acquisitionTeamOptions = useMemo(() => {
+ if (exists(team)) {
+ return team?.map(x => ({
+ id: x.personId ? `P-${x.personId}` : `O-${x.organizationId}`,
+ text: x.personId ? formatApiPersonNames(x.person) : x.organization?.name ?? '',
+ }));
+ } else {
+ return [];
+ }
+ }, [team]);
+
useEffect(() => {
if (error) {
toast.error(error?.message);
}
}, [error]);
- const {
- getAllAcquisitionFileTeamMembers: { response: team, execute: loadAcquisitionTeam },
- } = useAcquisitionProvider();
-
useEffect(() => {
loadAcquisitionTeam();
}, [loadAcquisitionTeam]);
+ useEffect(() => {
+ formattedGuid && retrieveUserInfo(formattedGuid);
+ }, [formattedGuid, retrieveUserInfo]);
+
return (