Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
05d6c29
HDPI-2983: build case details tab classes
gmmagruder May 11, 2026
9d0f9a6
HDPI-2983: create CaseDetailsTabView and allow draft data to be viewe…
gmmagruder May 11, 2026
4c0e1e5
HDPI-2983: add more claim details to CaseDetailsTabView
gmmagruder May 12, 2026
35238c1
HDPI-2983: move details tab classes into separate directory and build…
gmmagruder May 12, 2026
7e7bbe2
HDPI-2983: get label for secureOrFlexibleMandatoryGroundsAlt
gmmagruder May 12, 2026
a5cc784
Merge branch 'HDPI-2978-summary-tab' into HDPI-2983-build-case-detail…
gmmagruder May 15, 2026
be13cf7
HDPI-2983: fix spelling mistake
gmmagruder May 15, 2026
3bdf586
HDPI-2983: apply shared tab details classes to case details tab
gmmagruder May 15, 2026
fa73d17
HDPI-2983: move grounds and rent arrears tab details builder into sha…
gmmagruder May 15, 2026
aa71cc5
HDPI-2983: move claimant information and reasons for possession tab d…
gmmagruder May 15, 2026
cb0a253
HDPI-2983: build claimant details and move defendant details into sha…
gmmagruder May 18, 2026
69ba8a8
HDPI-2983: build mortgage, suspension of right to buy and demotion of…
gmmagruder May 18, 2026
c751ab3
HDPI-2983: add extra details for defendants tab details for case deta…
gmmagruder May 19, 2026
ceee783
HDPI-2983: fix buildSuspensionOfRightToBuyTabDetails null pointer exc…
gmmagruder May 19, 2026
19df78b
HDPI-2983: show additional mortgage in case details tab
gmmagruder May 19, 2026
dfc39ba
HDPI-2983: reverse changes
gmmagruder May 19, 2026
7a86a6a
HDPI-2983: add other description for assured tenancy grounds
gmmagruder May 19, 2026
ef1bd13
HDPI-2983: fix merge conflicts
gmmagruder May 19, 2026
ddfb797
HDPI-2983: fix draft demotion of tenancy and suspend of right to buy …
gmmagruder May 19, 2026
15832b7
HDPI-2983: fix notice table bug and remove costs table since it has b…
gmmagruder May 19, 2026
c91eebe
HDPI-2983: add buildReasonsForPossession back into case summary
gmmagruder May 19, 2026
492debf
HDPI-2983: add additional reasons for possession into case details tab
gmmagruder May 19, 2026
c57c1b9
HDPI-2983: fix bug where demotion of tenancy and suspension wasn't di…
gmmagruder May 19, 2026
8b0f4f3
HDPI-2983: update tests
gmmagruder May 19, 2026
c2e839a
HDPI-2983: fix merge conflicts
gmmagruder May 19, 2026
76eb724
HDPI-2983: update ClaimGroundSummaryBuilderTest
gmmagruder May 19, 2026
704af27
HDPI-2983: add AdditionalDefendantInformationTabDetailsBuilderTest
gmmagruder May 19, 2026
ffa9bd5
HDPI-2983: add DefendantInformationTabDetailsBuilderTest
gmmagruder May 20, 2026
c99cf62
HDPI-2983: add ClaimantInformationTabDetailsBuilderTest
gmmagruder May 20, 2026
6ff1f2d
HDPI-2983: add GroundsBuilderTest and ReasonsForPossessionTabDetailsB…
gmmagruder May 20, 2026
af237e9
HDPI-2983: add RentArrearsTabDetailsBuilderTest
gmmagruder May 20, 2026
566d991
HDPI-2983: update CaseSummaryTabViewTest
gmmagruder May 20, 2026
8c59689
HDPI-2983: update CaseTypeTest and DraftCaseJsonMergerTest
gmmagruder May 20, 2026
0002be4
HDPI-2983: update CaseView tests and fix checkstyle
gmmagruder May 20, 2026
243bf10
HDPI-2983: update RentArrearsTabDetails for case details tab and add …
gmmagruder May 20, 2026
69605ea
HDPI-2983: fix RentArrearsTabDetails for case details tab
gmmagruder May 20, 2026
e50c5c7
HDPI-2983: fix to view rent details and documents after submit in cas…
gmmagruder May 20, 2026
7b18915
HDPI-2983: fix null pointer exception
gmmagruder May 20, 2026
83b3430
HDPI-2983: update CaseTabViewTest
gmmagruder May 20, 2026
b4bfe5d
HDPI-2983: add placeholder for date submitted while case is in draft
gmmagruder May 20, 2026
b1431a3
HDPI-2983: update RentArrearsTabDetailsBuilderTest
gmmagruder May 20, 2026
baed0dd
HDPI-2983: fix unit test
gmmagruder May 21, 2026
4b54815
HDPI-2983: update tests coverage in RentArrearsTabDetailsBuilderTest
gmmagruder May 21, 2026
6cc35a0
HDPI-2983: add CaseDetailsTabViewTest
gmmagruder May 21, 2026
d4a6e85
HDPI-2983: update view tests
gmmagruder May 21, 2026
0c440cb
HDPI-2983: fix styling
gmmagruder May 21, 2026
a30f532
HDPI-2983: fix merge conflicts
gmmagruder May 21, 2026
f5341ee
HDPI-2983: add timezone to submitted date
gmmagruder May 21, 2026
4252f2c
HDPI-2983: add timezone tests
gmmagruder May 21, 2026
ad5ec26
HDPI-2983: address review comments
gmmagruder May 21, 2026
332ed36
HDPI-2983: fix label
gmmagruder May 21, 2026
0a44c92
HDPI-2983: fix label
gmmagruder May 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 58 additions & 6 deletions src/main/java/uk/gov/hmcts/reform/pcs/ccd/CaseType.java
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,14 @@ public void configure(final ConfigBuilder<PCSCase, State, UserRole> builder) {
.label("nextStepsMarkdownLabel", null, "${nextStepsMarkdown}")
.field("nextStepsMarkdown", NEVER_SHOW);

buildCasePartiesTab(builder);

buildCaseDetailsTab(builder);

builder.tab("caseFileView", "Case File View")
.showCondition(ShowConditions.stateNotEquals(AWAITING_SUBMISSION_TO_HMCTS))
.field(PCSCase::getCaseFileView, null, "#ARGUMENT(CaseFileView)");

buildSummaryTab(builder);

builder.tab("CaseHistory", "History")
Expand All @@ -89,17 +97,11 @@ public void configure(final ConfigBuilder<PCSCase, State, UserRole> builder) {
.showCondition(ShowConditions.stateNotEquals(AWAITING_SUBMISSION_TO_HMCTS))
.field("waysToPay");

builder.tab("caseFileView", "Case File View")
.showCondition(ShowConditions.stateNotEquals(AWAITING_SUBMISSION_TO_HMCTS))
.field(PCSCase::getCaseFileView, null, "#ARGUMENT(CaseFileView)");

builder.tab("caseLinks", "Linked Cases")
.forRoles(UserRole.PCS_SOLICITOR)
.field(PCSCase::getLinkedCasesComponentLauncher, null, "#ARGUMENT(LinkedCases)")
.field(PCSCase::getCaseLinks, "LinkedCasesComponentLauncher!=\"\"", "#ARGUMENT(LinkedCases)");

buildCasePartiesTab(builder);

configureCaseFileCategories(builder);
}

Expand Down Expand Up @@ -152,4 +154,54 @@ private void buildSummaryTab(ConfigBuilder<PCSCase, State, UserRole> builder) {
"## Notice")
.field("summaryTab_NoticeDetails");
}

private void buildCaseDetailsTab(ConfigBuilder<PCSCase, State, UserRole> builder) {
builder.tab("caseDetails", "Case Details")
.label("Case details", null, "### Case details")
.field("detailsTab_ClaimDetails")
.field("detailsTab_PropertyAddress")
.field("detailsTab_GroundsForPossessionDetails")
.field("detailsTab_DateClaimSubmitted")
.field("detailsTab_TenancyLicenceDetails")
.field("detailsTab_NoticeDetails")
.field("detailsTab_ActionsTakenDetails")
.field("detailsTab_RentArrearsDetails")
.field("detailsTab_ReasonsForPossessionDetails")
.field("detailsTab_ApplicationsDetails")
.label(
"Claimant Details",
"detailsTab_ClaimantInformation!=\"\"",
"### Claimant Details"
)
.field("detailsTab_ClaimantInformation")
.field("detailsTab_ClaimantAddress")
.field("detailsTab_ClaimantContactDetails")
.field("detailsTab_ClaimantCircumstances")
.label(
"Defendant Details",
"detailsTab_DefendantInformationDetails!=\"\"",
"### Defendant Details"
)
.field("detailsTab_DefendantInformationDetails")
.field("detailsTab_AdditionalDefendants")
.field("detailsTab_DefendantCircumstanceDetails")
.label(
"Underlessee or mortgagee",
"detailsTab_MortgageDetails!=\"\"",
"### Underlessee or mortgagee entitled to claim relief against forfeiture"
)
.field("detailsTab_MortgageDetails")
.label(
"Demotion of tenancy",
"detailsTab_DemotionOfTenancyDetails!=\"\"",
"### Demotion of tenancy"
)
.field("detailsTab_DemotionOfTenancyDetails")
.label(
"Suspension of right to buy",
"detailsTab_SuspensionOfRightToBuyDetails!=\"\"",
"### Suspension of right to buy"
)
.field("detailsTab_SuspensionOfRightToBuyDetails");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import uk.gov.hmcts.reform.pcs.ccd.domain.respondpossessionclaim.PossessionClaimResponse;
import uk.gov.hmcts.reform.pcs.ccd.domain.statementoftruth.StatementOfTruthDetails;
import uk.gov.hmcts.reform.pcs.ccd.domain.tabs.CasePartiesTab;
import uk.gov.hmcts.reform.pcs.ccd.domain.tabs.details.CaseDetailsTab;
import uk.gov.hmcts.reform.pcs.ccd.domain.tabs.summary.SummaryTab;
import uk.gov.hmcts.reform.pcs.ccd.domain.wales.ASBQuestionsDetailsWales;
import uk.gov.hmcts.reform.pcs.ccd.domain.wales.EstateManagementGroundsWales;
Expand Down Expand Up @@ -612,4 +613,8 @@ public class PCSCase {
@JsonUnwrapped(prefix = "summaryTab_")
@CCD(searchable = false)
private SummaryTab summaryTab;

@JsonUnwrapped(prefix = "detailsTab_")
@CCD
private CaseDetailsTab caseDetailsTab;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package uk.gov.hmcts.reform.pcs.ccd.domain.tabs.details;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import uk.gov.hmcts.ccd.sdk.api.CCD;

@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ActionsTakenTabDetails {

@CCD(label = "Pre-action protocol followed?")
private String preactionProtocolFollowed;

@CCD(label = "Explain why you have not followed the pre-action protocol")
private String preActionProtocolIncompleteExplanation;

@CCD(label = "Mediation attempted?")
private String mediationAttempted;

@CCD(label = "Settlement attempted?")
private String settlementAttempted;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package uk.gov.hmcts.reform.pcs.ccd.domain.tabs.details;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import uk.gov.hmcts.ccd.sdk.api.CCD;

@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ApplicationsTabDetails {

@CCD(label = "Are you planning to make an application at the same time as your claim?")
private String planToMakeGeneralApplication;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
package uk.gov.hmcts.reform.pcs.ccd.domain.tabs.details;

import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import uk.gov.hmcts.ccd.sdk.api.CCD;
import uk.gov.hmcts.ccd.sdk.type.AddressUK;
import uk.gov.hmcts.ccd.sdk.type.ListValue;
import uk.gov.hmcts.reform.pcs.ccd.domain.tabs.shared.AdditionalDefendantInformationTabDetails;
import uk.gov.hmcts.reform.pcs.ccd.domain.tabs.shared.ClaimantInformationTabDetails;
import uk.gov.hmcts.reform.pcs.ccd.domain.tabs.shared.DefendantInformationTabDetails;
import uk.gov.hmcts.reform.pcs.ccd.domain.tabs.shared.GroundsForPossessionTabDetails;
import uk.gov.hmcts.reform.pcs.ccd.domain.tabs.shared.ReasonsForPossessionTabDetails;
import uk.gov.hmcts.reform.pcs.ccd.domain.tabs.shared.RentArrearsTabDetails;

import java.util.List;

@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonNaming(PropertyNamingStrategies.UpperCamelCaseStrategy.class)
public class CaseDetailsTab {

@CCD(label = "Claim details")
private ClaimTabDetails claimDetails;

@CCD(label = "Address of property to be repossessed")
private AddressUK propertyAddress;

@CCD(label = "Grounds for possession")
private GroundsForPossessionTabDetails groundsForPossessionDetails;

@CCD(label = "Date claim Submitted")
private String dateClaimSubmitted;

@CCD(label = "Tenancy, occupation contract or licence details")
private TenancyLicenceTabDetails tenancyLicenceDetails;

@CCD(label = "Notice details")
private NoticeTabDetails noticeDetails;

@CCD(label = "Actions already taken")
private ActionsTakenTabDetails actionsTakenDetails;

@CCD(label = "Details of rent arrears")
private RentArrearsTabDetails rentArrearsDetails;

@CCD(label = "Reasons for possession")
private ReasonsForPossessionTabDetails reasonsForPossessionDetails;

@CCD(label = "Applications")
private ApplicationsTabDetails applicationsDetails;

@CCD(label = "Claimant")
private ClaimantInformationTabDetails claimantInformation;

@CCD(label = "Claimant address for service")
private AddressUK claimantAddress;

@CCD(label = "Claimant contact details")
private ClaimantContactTabDetails claimantContactDetails;

@CCD(label = "Claimant circumstances")
private ClaimantCircumstancesTabDetails claimantCircumstances;

@CCD(label = "Defendant 1")
private DefendantInformationTabDetails defendantInformationDetails;

@CCD(label = "Additional defendant")
private List<ListValue<AdditionalDefendantInformationTabDetails>> additionalDefendants;

@CCD(label = "Defendants’ circumstances")
private DefendantCircumstanceTabDetails defendantCircumstanceDetails;

@CCD(label = "Underlessee or mortgagee")
private List<ListValue<UnderlesseeOrMortgageInformationTabDetails>> mortgageDetails;

@CCD(label = "Demotion of tenancy claim")
private DemotionOfTenancyTabDetails demotionOfTenancyDetails;

@CCD(label = "Suspension of right to buy")
private SuspensionOfRightToBuyTabDetails suspensionOfRightToBuyDetails;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package uk.gov.hmcts.reform.pcs.ccd.domain.tabs.details;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import uk.gov.hmcts.ccd.sdk.api.CCD;

@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ClaimTabDetails {
@CCD(label = "Claimant type")
private String claimantType;

@CCD(label = "Claim against trespassers?")
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There seems to be a difference between Figma and Excel, Figma shows to have the label you already have and Excel says to have label 'Is your claim a trespass claim?'. I think it needs clarifying which one to follow

private String trespassClaim;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package uk.gov.hmcts.reform.pcs.ccd.domain.tabs.details;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import uk.gov.hmcts.ccd.sdk.api.CCD;

@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ClaimantCircumstancesTabDetails {

@CCD(label = "Is there any information you’d like to provide about ${claimantNamePossessiveForm} circumstances?")
private String claimantCircumstancesGiven;

@CCD(label = "Claimant circumstances")
private String claimantCircumstancesDetails;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package uk.gov.hmcts.reform.pcs.ccd.domain.tabs.details;


import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import uk.gov.hmcts.ccd.sdk.api.CCD;

@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ClaimantContactTabDetails {

@CCD(label = "Email address for notifications")
private String emailAddress;

Comment thread
gmmagruder marked this conversation as resolved.
@CCD(label = "Do you want to provide a phone number for urgent updates about your case?")
private String phoneNumberProvided;

@CCD(label = "Contact phone number")
private String phoneNumber;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package uk.gov.hmcts.reform.pcs.ccd.domain.tabs.details;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import uk.gov.hmcts.ccd.sdk.api.CCD;

@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class DefendantCircumstanceTabDetails {

@CCD(
label = "Is there any information you're required to provide, or you want to provide, "
+ "about the defendants’ circumstances?"
)
private String defendantCircumstancesGiven;

@CCD(label = "Defendants’ circumstances")
private String defendantCircumstances;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package uk.gov.hmcts.reform.pcs.ccd.domain.tabs.details;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import uk.gov.hmcts.ccd.sdk.api.CCD;

@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class DemotionOfTenancyTabDetails {

@CCD(
label = "Section of the Housing Act demotion of tenancy claim made under"
)
private String housingAct;

@CCD(
label = "Have you served the defendants with a statement of the express terms which will "
+ "apply to the demoted tenancy?"
)
private String statementOfExpressTermsServed;

@CCD(label = "Details of terms")
private String terms;

@CCD(label = "Reasons for requesting a demotion of tenancy order")
private String reasons;
}
Loading