77import ca .bc .gov .restapi .results .common .repository .OrgUnitRepository ;
88import ca .bc .gov .restapi .results .common .service .CodeService ;
99import ca .bc .gov .restapi .results .common .util .CodeConverterUtil ;
10+ import java .time .LocalDate ;
1011import java .util .List ;
1112import java .util .Objects ;
1213import 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 ());
0 commit comments