Skip to content

Commit 18bb758

Browse files
committed
Merge origin/HDPI-3794-End-of-journey-CYA-and-SOT-BE into access-fix
2 parents cf236e2 + 4942d46 commit 18bb758

4 files changed

Lines changed: 102 additions & 1 deletion

File tree

src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/respondpossessionclaim/DefendantResponses.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,24 +115,29 @@ public class DefendantResponses {
115115
private LanguageUsed languageUsed;
116116

117117
private EqualityAndDiversityQuestionsChoice equalityAndDiversityQuestionsChoice;
118+
118119
@CCD
119120
private VerticalYesNo otherConsiderations;
120121

121122
@CCD(max = 6400)
122123
private String otherConsiderationsDetails;
123-
124+
124125
@CCD
125126
private VerticalYesNo makeCounterClaim;
126127

127128
@CCD
128129
private VerticalYesNo counterClaimWantToUploadFiles;
130+
129131
@CCD(
130132
access = {DefendantSolicitorAccess.class},
131133
typeOverride = FieldType.MultiSelectList,
132134
typeParameterOverride = "RespondToClaimSection"
133135
)
134136
private List<RespondToClaimSection> completedSections;
135137

138+
@CCD
139+
private RTCStatementOfTruth statementOfTruth;
140+
136141
@CCD
137142
private DefendantResponseStatus status;
138143
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package uk.gov.hmcts.reform.pcs.ccd.domain.respondpossessionclaim;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Data;
6+
import lombok.NoArgsConstructor;
7+
import uk.gov.hmcts.ccd.sdk.api.CCD;
8+
import uk.gov.hmcts.reform.pcs.ccd.domain.VerticalYesNo;
9+
10+
@Builder
11+
@Data
12+
@NoArgsConstructor
13+
@AllArgsConstructor
14+
public class RTCStatementOfTruth {
15+
16+
@CCD
17+
private VerticalYesNo accepted;
18+
19+
@CCD(max = 100)
20+
private String fullName;
21+
22+
}

src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/respondpossessionclaim/DefendantResponseService.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import uk.gov.hmcts.reform.pcs.ccd.domain.respondpossessionclaim.DefendantResponses;
1414
import uk.gov.hmcts.reform.pcs.ccd.domain.respondpossessionclaim.PossessionClaimResponse;
1515
import uk.gov.hmcts.reform.pcs.ccd.entity.ClaimEntity;
16+
import uk.gov.hmcts.reform.pcs.ccd.entity.claim.StatementOfTruthEntity;
1617
import uk.gov.hmcts.reform.pcs.ccd.entity.party.PartyEntity;
1718
import uk.gov.hmcts.reform.pcs.ccd.entity.respondpossessionclaim.CounterClaimEntity;
1819
import uk.gov.hmcts.reform.pcs.ccd.entity.respondpossessionclaim.CounterClaimPartyEntity;
@@ -30,6 +31,8 @@
3031
import java.util.UUID;
3132
import java.util.function.Supplier;
3233

34+
import static uk.gov.hmcts.reform.pcs.ccd.util.YesOrNoConverter.toYesOrNo;
35+
3336
/**
3437
* Service for managing defendant responses.
3538
* Handles saving defendant responses to the defendant_response table with optimal concurrency.
@@ -169,6 +172,8 @@ private void saveDefendantResponseInternal(
169172

170173
buildAndLinkChildEntities(responseEntity, responses);
171174

175+
buildStatementOfTruth(responses, responseEntity);
176+
172177
CounterClaimEntity savedCounterClaim = saveCounterClaim(responses, partyRef, claimRef, submittedAt);
173178

174179
DefendantResponseEntity savedResponse = defendantResponseRepository.save(responseEntity);
@@ -313,6 +318,18 @@ private CounterClaimEntity saveCounterClaim(DefendantResponses responses,
313318
return counterClaimRepository.save(counterClaimEntity);
314319
}
315320

321+
private void buildStatementOfTruth(DefendantResponses responses, DefendantResponseEntity responseEntity) {
322+
if (responses.getStatementOfTruth() == null || responses.getStatementOfTruth().getAccepted() == null) {
323+
return;
324+
}
325+
StatementOfTruthEntity sot = StatementOfTruthEntity.builder()
326+
.accepted(toYesOrNo(responses.getStatementOfTruth().getAccepted()))
327+
.fullName(responses.getStatementOfTruth().getFullName())
328+
.completedDate(LocalDateTime.now(utcClock))
329+
.build();
330+
responseEntity.setStatementOfTruth(sot);
331+
}
332+
316333
public boolean hasSubmittedResponse(long caseReference) {
317334
UUID userId = securityContextService.getCurrentUserId();
318335
if (userId == null) {

src/test/java/uk/gov/hmcts/reform/pcs/ccd/service/DefendantResponseServiceTest.java

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import uk.gov.hmcts.reform.pcs.ccd.domain.respondpossessionclaim.HouseholdCircumstances;
2727
import uk.gov.hmcts.reform.pcs.ccd.domain.respondpossessionclaim.PaymentAgreement;
2828
import uk.gov.hmcts.reform.pcs.ccd.domain.respondpossessionclaim.PossessionClaimResponse;
29+
import uk.gov.hmcts.reform.pcs.ccd.domain.respondpossessionclaim.RTCStatementOfTruth;
2930
import uk.gov.hmcts.reform.pcs.ccd.domain.respondpossessionclaim.ReasonableAdjustments;
3031
import uk.gov.hmcts.reform.pcs.ccd.entity.ClaimEntity;
3132
import uk.gov.hmcts.reform.pcs.ccd.entity.PcsCaseEntity;
@@ -1393,6 +1394,62 @@ void shouldThrowExceptionWhenCurrentUserIdIsNull_WithPartyId() {
13931394
verify(defendantResponseRepository, never()).save(any());
13941395
}
13951396

1397+
@Test
1398+
void shouldSaveStatementOfTruthWhenAccepted() {
1399+
// Given
1400+
when(securityContextService.getCurrentUserId()).thenReturn(USER_ID);
1401+
stubPartyLookup();
1402+
stubClaimLookup();
1403+
1404+
DefendantResponses responses = DefendantResponses.builder()
1405+
.statementOfTruth(RTCStatementOfTruth.builder()
1406+
.accepted(VerticalYesNo.YES)
1407+
.fullName("John Doe")
1408+
.build())
1409+
.build();
1410+
1411+
PossessionClaimResponse possessionClaimResponse = PossessionClaimResponse.builder()
1412+
.defendantResponses(responses)
1413+
.build();
1414+
1415+
// When
1416+
underTest.saveDefendantResponse(CASE_REFERENCE, possessionClaimResponse);
1417+
1418+
// Then
1419+
verify(defendantResponseRepository).save(responseCaptor.capture());
1420+
DefendantResponseEntity saved = responseCaptor.getValue();
1421+
1422+
assertThat(saved.getStatementOfTruth()).isNotNull();
1423+
assertThat(saved.getStatementOfTruth().getAccepted()).isEqualTo(YesOrNo.YES);
1424+
assertThat(saved.getStatementOfTruth().getFullName()).isEqualTo("John Doe");
1425+
assertThat(saved.getStatementOfTruth().getCompletedDate()).isEqualTo("2026-04-22T21:00");
1426+
}
1427+
1428+
@Test
1429+
void shouldNotSaveStatementOfTruthWhenAcceptedIsNull() {
1430+
// Given
1431+
when(securityContextService.getCurrentUserId()).thenReturn(USER_ID);
1432+
stubPartyLookup();
1433+
stubClaimLookup();
1434+
1435+
DefendantResponses responses = DefendantResponses.builder()
1436+
.statementOfTruth(RTCStatementOfTruth.builder()
1437+
.accepted(null)
1438+
.build())
1439+
.build();
1440+
1441+
PossessionClaimResponse possessionClaimResponse = PossessionClaimResponse.builder()
1442+
.defendantResponses(responses)
1443+
.build();
1444+
1445+
// When
1446+
underTest.saveDefendantResponse(CASE_REFERENCE, possessionClaimResponse);
1447+
1448+
// Then
1449+
verify(defendantResponseRepository).save(responseCaptor.capture());
1450+
assertThat(responseCaptor.getValue().getStatementOfTruth()).isNull();
1451+
}
1452+
13961453
@ParameterizedTest(name = "counterClaimWantToUploadFiles={0}")
13971454
@MethodSource("counterClaimWantToUploadFilesPersistenceScenarios")
13981455
void shouldPersistCounterClaimWantToUploadFiles(VerticalYesNo counterClaimWantToUploadFiles) {

0 commit comments

Comments
 (0)