Skip to content

Commit 60a2da7

Browse files
authored
feat: #1190 disturbance search frontend (#1220)
1 parent 3c820b6 commit 60a2da7

File tree

25 files changed

+1821
-69
lines changed

25 files changed

+1821
-69
lines changed

backend/src/main/java/ca/bc/gov/restapi/results/common/repository/GenericCodeRepository.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,7 @@ public interface GenericCodeRepository<T extends GenericCodeEntity>
1515
@Override
1616
List<T> findAll();
1717

18+
List<T> findAllByOrderByExpiryDateDesc();
19+
1820
List<T> findAllByExpiryDateAfter(LocalDate now);
1921
}

backend/src/main/java/ca/bc/gov/restapi/results/common/service/impl/AbstractCodeService.java

Lines changed: 32 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import ca.bc.gov.restapi.results.common.repository.OrgUnitRepository;
88
import ca.bc.gov.restapi.results.common.service.CodeService;
99
import ca.bc.gov.restapi.results.common.util.CodeConverterUtil;
10+
import java.time.LocalDate;
1011
import java.util.List;
1112
import java.util.Objects;
1213
import lombok.AccessLevel;
@@ -33,59 +34,70 @@ public abstract class AbstractCodeService implements CodeService {
3334

3435
@Override
3536
public List<CodeDescriptionDto> getAllSilvBaseCode() {
36-
return CodeConverterUtil.toCodeDescriptionDtos(silvBaseCodeRepository.findAll());
37+
return CodeConverterUtil.toCodeDescriptionDtos(
38+
silvBaseCodeRepository.findAllByOrderByExpiryDateDesc());
3739
}
3840

3941
@Override
4042
public List<CodeDescriptionDto> getAllSilvTechniqueCode() {
41-
return CodeConverterUtil.toCodeDescriptionDtos(silvTechniqueCodeRepository.findAll());
43+
return CodeConverterUtil.toCodeDescriptionDtos(
44+
silvTechniqueCodeRepository.findAllByOrderByExpiryDateDesc());
4245
}
4346

4447
@Override
4548
public List<CodeDescriptionDto> getAllSilvMethodCode() {
46-
return CodeConverterUtil.toCodeDescriptionDtos(silvMethodCodeRepository.findAll());
49+
return CodeConverterUtil.toCodeDescriptionDtos(
50+
silvMethodCodeRepository.findAllByOrderByExpiryDateDesc());
4751
}
4852

4953
@Override
5054
public List<CodeDescriptionDto> getAllSilvObjectiveCode() {
51-
return CodeConverterUtil.toCodeDescriptionDtos(silvObjectiveCodeRepository.findAll());
55+
return CodeConverterUtil.toCodeDescriptionDtos(
56+
silvObjectiveCodeRepository.findAllByOrderByExpiryDateDesc());
5257
}
5358

5459
@Override
5560
public List<CodeDescriptionDto> getAllSilvFundSrceCode() {
56-
return CodeConverterUtil.toCodeDescriptionDtos(silvFundSrceCodeRepository.findAll());
61+
return CodeConverterUtil.toCodeDescriptionDtos(
62+
silvFundSrceCodeRepository.findAllByOrderByExpiryDateDesc());
5763
}
5864

5965
@Override
6066
public List<CodeDescriptionDto> getAllSilvSystemCode() {
61-
return CodeConverterUtil.toCodeDescriptionDtos(silvSystemCodeRepository.findAll());
67+
return CodeConverterUtil.toCodeDescriptionDtos(
68+
silvSystemCodeRepository.findAllByOrderByExpiryDateDesc());
6269
}
6370

6471
@Override
6572
public List<CodeDescriptionDto> getAllSilvSystemVariantCode() {
66-
return CodeConverterUtil.toCodeDescriptionDtos(silvSystemVariantCodeRepository.findAll());
73+
return CodeConverterUtil.toCodeDescriptionDtos(
74+
silvSystemVariantCodeRepository.findAllByOrderByExpiryDateDesc());
6775
}
6876

6977
@Override
7078
public List<CodeDescriptionDto> getAllSilvCutPhaseCode() {
71-
return CodeConverterUtil.toCodeDescriptionDtos(silvCutPhaseCodeRepository.findAll());
79+
return CodeConverterUtil.toCodeDescriptionDtos(
80+
silvCutPhaseCodeRepository.findAllByOrderByExpiryDateDesc());
7281
}
7382

7483
@Override
7584
public List<CodeDescriptionDto> getAllDisturbanceCode() {
76-
return CodeConverterUtil.toCodeDescriptionDtos(disturbanceCodeRepository.findAll());
85+
return CodeConverterUtil.toCodeDescriptionDtos(
86+
disturbanceCodeRepository.findAllByOrderByExpiryDateDesc());
7787
}
7888

7989
@Override
8090
public List<CodeDescriptionDto> getAllOpenStatusCode() {
81-
return CodeConverterUtil.toCodeDescriptionDtos(openingStatusCodeRepository.findAll());
91+
return CodeConverterUtil.toCodeDescriptionDtos(
92+
openingStatusCodeRepository.findAllByOrderByExpiryDateDesc());
8293
}
8394

8495
@Override
8596
public List<CodeDescriptionDto> findAllCategories(boolean includeExpired) {
8697
log.info("Getting all open category codes. Include expired: {}", includeExpired);
8798
// Prefer converting entity results through the shared converter utility when possible.
88-
List<? extends GenericCodeEntity> entities = openCategoryCodeRepository.findAll();
99+
List<? extends GenericCodeEntity> entities =
100+
openCategoryCodeRepository.findAllByOrderByExpiryDateDesc();
89101

90102
log.info(
91103
"Found {} open category codes ({}cluding expired)",
@@ -98,13 +110,7 @@ public List<CodeDescriptionDto> findAllCategories(boolean includeExpired) {
98110
return CodeConverterUtil.toCodeDescriptionDtos(filtered);
99111
}
100112

101-
return entities.stream()
102-
.map(
103-
ent ->
104-
new CodeDescriptionDto(
105-
ent.getCode(),
106-
ent.isExpired() ? ent.getDescription() + " (Expired)" : ent.getDescription()))
107-
.toList();
113+
return CodeConverterUtil.toCodeDescriptionDtos(entities);
108114
}
109115

110116
@Override
@@ -117,11 +123,17 @@ public List<CodeDescriptionDto> findAllOrgUnits() {
117123
return List.of();
118124
}
119125

126+
LocalDate now = LocalDate.now();
120127
List<CodeDescriptionDto> orgUnits =
121128
orgUnitRepository.findAllByOrgUnitCodeIn(silvaConfiguration.getOrgUnits()).stream()
122129
.map(
123-
orgUnit ->
124-
new CodeDescriptionDto(orgUnit.getOrgUnitCode(), orgUnit.getOrgUnitName()))
130+
orgUnit -> {
131+
boolean expired =
132+
orgUnit.getExpiryDate() != null && orgUnit.getExpiryDate().isBefore(now);
133+
return new CodeDescriptionDto(
134+
orgUnit.getOrgUnitCode(),
135+
expired ? orgUnit.getOrgUnitName() + " (Expired)" : orgUnit.getOrgUnitName());
136+
})
125137
.toList();
126138

127139
log.info("Found {} org units by codes", orgUnits.size());

backend/src/main/java/ca/bc/gov/restapi/results/common/util/CodeConverterUtil.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,22 @@
1111
public class CodeConverterUtil {
1212

1313
/**
14-
* Convert a list of GenericCodeEntity to CodeDescriptionDto.
14+
* Convert a list of GenericCodeEntity to CodeDescriptionDto. Appends " (Expired)" to description
15+
* if entity is expired.
1516
*
1617
* @param codes List of code entities to convert.
1718
* @return List of CodeDescriptionDto.
1819
*/
1920
public static List<CodeDescriptionDto> toCodeDescriptionDtos(
2021
List<? extends GenericCodeEntity> codes) {
2122
return codes.stream()
22-
.map(entity -> new CodeDescriptionDto(entity.getCode(), entity.getDescription()))
23+
.map(
24+
entity ->
25+
new CodeDescriptionDto(
26+
entity.getCode(),
27+
entity.isExpired()
28+
? entity.getDescription() + " (Expired)"
29+
: entity.getDescription()))
2330
.toList();
2431
}
2532
}

frontend/src/__test__/components/ActivitySearchSection/ActivitySearchInput.test.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ describe('ActivitySearchInput', () => {
310310
expect(screen.getByText('File ID')).toBeInTheDocument();
311311
expect(screen.getByTestId('forest-client-multiselect')).toBeInTheDocument();
312312
expect(screen.getByText('Opening status')).toBeInTheDocument();
313-
expect(screen.getByText('Intra-agency number')).toBeInTheDocument();
313+
expect(screen.getByText('Inter-agency number')).toBeInTheDocument();
314314
});
315315
});
316316

@@ -421,7 +421,7 @@ describe('ActivitySearchInput', () => {
421421
});
422422
});
423423

424-
it('handles Intra-agency number input change', async () => {
424+
it('handles Inter-agency number input change', async () => {
425425
const user = userEvent.setup();
426426
const { wrapper } = renderWithProviders();
427427
render(
@@ -441,10 +441,10 @@ describe('ActivitySearchInput', () => {
441441
await user.click(moreFiltersButton);
442442

443443
await waitFor(() => {
444-
const intraAgencyInput = screen.getByPlaceholderText(
445-
'Enter intra-agency number'
444+
const interAgencyInput = screen.getByPlaceholderText(
445+
'Enter inter-agency number'
446446
);
447-
expect(intraAgencyInput).toBeInTheDocument();
447+
expect(interAgencyInput).toBeInTheDocument();
448448
});
449449
});
450450

0 commit comments

Comments
 (0)