Skip to content

Commit

Permalink
Merge branch 'master' into feat/CIV-14262
Browse files Browse the repository at this point in the history
  • Loading branch information
Omaira-Melo-Hmcts committed Jul 22, 2024
2 parents d60924e + b88d42d commit 1454272
Show file tree
Hide file tree
Showing 2 changed files with 203 additions and 159 deletions.
75 changes: 36 additions & 39 deletions src/main/java/uk/gov/hmcts/reform/civil/helpers/LocationHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import uk.gov.hmcts.reform.civil.enums.CaseCategory;
import uk.gov.hmcts.reform.civil.model.CaseData;
import uk.gov.hmcts.reform.civil.model.ClaimValue;
import uk.gov.hmcts.reform.civil.model.Party;
Expand All @@ -27,6 +26,7 @@
import java.util.stream.Stream;

import static uk.gov.hmcts.reform.civil.enums.CaseCategory.SPEC_CLAIM;
import static uk.gov.hmcts.reform.civil.enums.CaseCategory.UNSPEC_CLAIM;

@Slf4j
@Component
Expand Down Expand Up @@ -61,62 +61,59 @@ private Optional<RequestedCourt> getCaseManagementLocationDefault(CaseData caseD
Supplier<Party.Type> getDefendantType;
Supplier<Optional<RequestedCourt>> getDefendantCourt;
if (leadDefendantIs1) {
log.debug("Case {}, lead defendant is 1", caseData.getLegacyCaseReference());
log.info("Case {}, lead defendant is 1", caseData.getLegacyCaseReference());
getDefendantType = caseData.getRespondent1()::getType;
getDefendantCourt = () -> Optional.ofNullable(caseData.getRespondent1DQ())
.map(Respondent1DQ::getRespondent1DQRequestedCourt);
} else {
log.debug("Case {}, lead defendant is 2", caseData.getLegacyCaseReference());
log.info("Case {}, lead defendant is 2", caseData.getLegacyCaseReference());
getDefendantType = caseData.getRespondent2()::getType;
getDefendantCourt = () -> Optional.ofNullable(caseData.getRespondent2DQ())
.map(Respondent2DQ::getRespondent2DQRequestedCourt);
}

if (CaseCategory.SPEC_CLAIM.equals(caseData.getCaseAccessCategory())
&& EnumSet.of(Party.Type.INDIVIDUAL, Party.Type.SOLE_TRADER).contains(getDefendantType.get())) {
log.debug(
"Case {}, defendant is a person, so their court request has priority",
caseData.getLegacyCaseReference()
);
getDefendantCourt.get()
.filter(this::hasInfo)
.ifPresent(requestedCourt -> {
log.debug("Case {}, Defendant has requested a court", caseData.getLegacyCaseReference());
prioritized.add(requestedCourt);
});
if (SPEC_CLAIM.equals(caseData.getCaseAccessCategory())
&& ccmccAmount.compareTo(getClaimValue(caseData)) >= 0) {
if (!isLegalAdvisorSdo) {
log.info("Case {}, specified claim under 1000, CML set to CCMCC", caseData.getLegacyCaseReference());
return Optional.of(RequestedCourt.builder().caseLocation(getCcmccCaseLocation()).build());
} else {
log.info("Case {}, specified claim under 1000, Legal advisor, CML set to preferred location", caseData.getLegacyCaseReference());
assignSpecPreferredCourt(caseData, getDefendantType, getDefendantCourt, prioritized);
return prioritized.stream().findFirst();
}
}

if (SPEC_CLAIM.equals(caseData.getCaseAccessCategory()) && ccmccAmount.compareTo(getClaimValue(caseData)) <= 0) {
assignSpecPreferredCourt(caseData, getDefendantType, getDefendantCourt, prioritized);
return prioritized.stream().findFirst();
}

if (UNSPEC_CLAIM.equals(caseData.getCaseAccessCategory())) {
getClaimantRequestedCourt(caseData).ifPresent(requestedCourt -> {
log.debug("Case {}, Claimant has requested a court", caseData.getLegacyCaseReference());
log.info("Case {}, Claimant has requested a court", caseData.getLegacyCaseReference());
prioritized.add(requestedCourt);
});
return prioritized.stream().findFirst();
}

Optional<RequestedCourt> byParties = prioritized.stream().findFirst();
if (!isLegalAdvisorSdo
&& ccmccAmount.compareTo(getClaimValue(caseData)) >= 0) {
return Optional.of(byParties.map(requestedCourt -> requestedCourt.toBuilder()
.caseLocation(getCcmccCaseLocation()).build())
.orElseGet(() -> RequestedCourt.builder()
.caseLocation(getCcmccCaseLocation())
.build()));
} else {
return byParties;
}
} else {
log.debug(
"Case {}, defendant is a group, so claimant's court request has priority",
caseData.getLegacyCaseReference()
);
getClaimantRequestedCourt(caseData)
return Optional.empty();
}

private void assignSpecPreferredCourt(CaseData caseData, Supplier<Party.Type> getDefendantType,
Supplier<Optional<RequestedCourt>> getDefendantCourt, List<RequestedCourt> prioritized) {
if (PEOPLE.contains(getDefendantType.get())) {
getDefendantCourt.get()
.filter(this::hasInfo)
.ifPresent(requestedCourt -> {
log.debug("Case {}, Claimant has requested a court", caseData.getLegacyCaseReference());
log.info("Case {}, Defendant has requested a court", caseData.getLegacyCaseReference());
prioritized.add(requestedCourt);
});
getDefendantCourt.get().ifPresent(requestedCourt -> {
log.debug("Case {}, Defendant has requested a court", caseData.getLegacyCaseReference());
prioritized.add(requestedCourt);
});
return prioritized.stream().findFirst();
}
getClaimantRequestedCourt(caseData).ifPresent(requestedCourt -> {
log.info("Case {}, Claimant has requested a court", caseData.getLegacyCaseReference());
prioritized.add(requestedCourt);
});
}

private boolean hasInfo(RequestedCourt requestedCourt) {
Expand Down
Loading

0 comments on commit 1454272

Please sign in to comment.