Skip to content

Commit

Permalink
DIAC-609 adding hearing id list and hearing id fields
Browse files Browse the repository at this point in the history
  • Loading branch information
JakeCohenSol committed Nov 22, 2024
1 parent 788bbf7 commit 5f3741b
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -665,6 +665,12 @@ public enum BailCaseFieldDefinition {
HAS_CASE_BEEN_FORCED_TO_HEARING(
"hasCaseBeenForcedToHearing", new TypeReference<YesOrNo>() {}),

CURRENT_HEARING_ID(
"currentHearingId", new TypeReference<String>() {}),

HEARING_ID_LIST(
"hearingIdList", new TypeReference<List<IdValue<String>>>(){}),

HEARING_RECORDING_DOCUMENTS(
"hearingRecordingDocuments", new TypeReference<List<IdValue<HearingRecordingDocument>>>(){});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Optional;
import java.util.ArrayList;

import com.microsoft.applicationinsights.boot.dependencies.apachecommons.lang3.StringUtils;
import org.springframework.stereotype.Component;
Expand Down Expand Up @@ -106,6 +107,18 @@ public PreSubmitCallbackResponse<BailCase> handle(
bailCase.write(SEND_DIRECTION_LIST, "Home Office");
bailCase.write(DATE_OF_COMPLIANCE, dueDate);
bailCase.write(UPLOAD_BAIL_SUMMARY_ACTION_AVAILABLE, YES);

String hearingId = bailCase.read(CURRENT_HEARING_ID, String.class)
.orElseThrow(() -> new IllegalStateException("hearing ID can not be null"));

Optional<List<IdValue<String>>> maybeHearingIdList =
bailCase.read(HEARING_ID_LIST);

final List<IdValue<String>> hearingIdList =
maybeHearingIdList.orElse(emptyList());

appendToHearingIdList(hearingIdList, hearingId);

} else {
CaseDetails<BailCase> caseDetailsBefore = callback.getCaseDetailsBefore().orElse(null);
BailCase bailCaseBefore = caseDetailsBefore == null ? null : caseDetailsBefore.getCaseData();
Expand Down Expand Up @@ -139,6 +152,23 @@ public PreSubmitCallbackResponse<BailCase> handle(

bailCase.write(PREVIOUS_LISTING_DETAILS, allPreviousListingDetails);
bailCase.write(HAS_BEEN_RELISTED, YES);

String previousHearingId = bailCaseBefore.read(CURRENT_HEARING_ID, String.class)
.orElseThrow(() -> new IllegalStateException("hearing ID can not be null"));

String currentHearingId = bailCase.read(CURRENT_HEARING_ID, String.class)
.orElseThrow(() -> new IllegalStateException("hearing ID can not be null"));

Optional<List<IdValue<String>>> maybeHearingIdList =
bailCase.read(HEARING_ID_LIST);

final List<IdValue<String>> hearingIdList =
maybeHearingIdList.orElse(emptyList());

if (!previousHearingId.equals(currentHearingId)) {
List<IdValue<String>> newHearingIdList = appendToHearingIdList(hearingIdList, currentHearingId);
bailCase.write(HEARING_ID_LIST, newHearingIdList);
}
}
}

Expand All @@ -147,6 +177,23 @@ public PreSubmitCallbackResponse<BailCase> handle(
return new PreSubmitCallbackResponse<>(bailCase);
}

public List<IdValue<String>> appendToHearingIdList(
List<IdValue<String>> existingHearingIdList,
String newHearingId
) {

final List<IdValue<String>> allHearingIds = new ArrayList<>();

int index = 1;
for (IdValue<String> existingHearingId : existingHearingIdList) {
allHearingIds.add(new IdValue<>(String.valueOf(index++), existingHearingId.getValue()));
}

allHearingIds.add(new IdValue<>(String.valueOf(index), newHearingId));

return allHearingIds;
}

private void updateListingLocValueByUsingRefDataLocValue(BailCase bailCase) {
YesOrNo isBailsLocationRefDataEnabled = bailCase.read(IS_BAILS_LOCATION_REFERENCE_DATA_ENABLED, YesOrNo.class)
.orElse(NO);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -381,6 +381,25 @@ void should_throw_exception_when_initial_listing_hearing_date_is_missing() {
assertEquals(response.getErrors(), expectedErrors);
}

@Test
void testAppendToHearingIdList() {
List<IdValue<String>> existingHearingIdList = new ArrayList<>();
existingHearingIdList.add(new IdValue<>("1", "12345"));
existingHearingIdList.add(new IdValue<>("2", "56789"));

String newHearingId = "12567";

List<IdValue<String>> result = listedHearingService.appendToHearingIdList(existingHearingIdList, newHearingId);

assertEquals(3, result.size(), "The list should contain three hearing IDs");
assertEquals("1", result.get(0).getId());
assertEquals("12345", result.get(0).getValue());
assertEquals("2", result.get(1).getId());
assertEquals("56789", result.get(1).getValue());
assertEquals("3", result.get(2).getId());
assertEquals("12567", result.get(2).getValue());
}

@Test
void should_throw_exception_when_initial_listing_hearing_duration_is_missing() {
when(bailCase.read(LISTING_EVENT, ListingEvent.class)).thenReturn(Optional.of(ListingEvent.RELISTING));
Expand Down

0 comments on commit 5f3741b

Please sign in to comment.