From f9c36725773e9a0101543fb01d819f1b49605c79 Mon Sep 17 00:00:00 2001 From: Nicole-Samuels Date: Mon, 18 May 2026 12:10:03 +0100 Subject: [PATCH 01/16] Added additional document page --- .../LegalRepDocumentUploadConfigurerTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurerTest.java b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurerTest.java index 18b2f60454..b95b7a70ba 100644 --- a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurerTest.java +++ b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurerTest.java @@ -46,6 +46,7 @@ void shouldConfigurePagesInCorrectOrder() { verifyAndCount(inOrder, pageBuilder, UploadAdditionalDocumentsPage.class, verificationCount); verifyAndCount(inOrder, pageBuilder, ExistingApplicationPage.class, verificationCount); +// verifyAndCount(inOrder, pageBuilder, UploadDocumentsPage.class, verificationCount); int numberOfPages = pageCaptor.getAllValues().size(); assertThat(verificationCount.get()).isEqualTo(numberOfPages); From b5ac28c1adcb6ccd25fc598291122006dba56eff Mon Sep 17 00:00:00 2001 From: Nicole-Samuels Date: Mon, 18 May 2026 16:39:34 +0100 Subject: [PATCH 02/16] Added new screen to configurer and updated test --- .../LegalRepDocument.java | 32 +++++++++++++ .../LegalRepDocumentType.java | 18 ++++++++ .../LegalRepDocumentUploadConfigurer.java | 3 +- .../UploadAdditionalDocumentsPage.java | 45 +++++++++++++++++++ .../LegalRepDocumentUploadConfigurerTest.java | 2 +- 5 files changed, 98 insertions(+), 2 deletions(-) create mode 100644 src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocument.java create mode 100644 src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentType.java create mode 100644 src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocument.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocument.java new file mode 100644 index 0000000000..033ba22b87 --- /dev/null +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocument.java @@ -0,0 +1,32 @@ +package uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload; + +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.Document; +import uk.gov.hmcts.ccd.sdk.type.FieldType; +import uk.gov.hmcts.reform.pcs.ccd.domain.enforcetheorder.warrantofrestitution.EvidenceDocumentType; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class LegalRepDocument { + + @CCD( + label = "Type of document", + typeOverride = FieldType.FixedList, + typeParameterOverride = "EvidenceDocumentType" + ) + private EvidenceDocumentType documentType; + + @CCD(label = "Document") + private Document document; + + @CCD(label = "Short description", + max = 62 + ) + private String description; +} diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentType.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentType.java new file mode 100644 index 0000000000..a660edd45d --- /dev/null +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentType.java @@ -0,0 +1,18 @@ +package uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import uk.gov.hmcts.ccd.sdk.api.HasLabel; + +@AllArgsConstructor +@Getter +public enum LegalRepDocumentType implements HasLabel { + + PHOTOGRAPHIC_EVIDENCE("Photographic evidence"), + POLICE_REPORT("Police report"), + WITNESS_STATEMENT("Witness statement"), + OTHER("Other document"); + + private final String label; + +} diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurer.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurer.java index 543c995060..e27314256c 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurer.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurer.java @@ -13,6 +13,7 @@ public class LegalRepDocumentUploadConfigurer implements PageConfigurer { public void configurePages(PageBuilder pageBuilder) { pageBuilder .add(new UploadAdditionalDocumentsInformationPage()) - .add(new ExistingApplicationPage()); + .add(new ExistingApplicationPage()) + .add(new UploadAdditionalDocumentsPage()); } } diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java new file mode 100644 index 0000000000..f62dc71ebd --- /dev/null +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java @@ -0,0 +1,45 @@ +package uk.gov.hmcts.reform.pcs.ccd.page.legalrepdocumentupload; + +import uk.gov.hmcts.reform.pcs.ccd.common.CcdPageConfiguration; +import uk.gov.hmcts.reform.pcs.ccd.common.PageBuilder; +import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase; +import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocumentUpload; +import uk.gov.hmcts.reform.pcs.ccd.page.CcdPage; + +public class UploadAdditionalDocumentsPage implements CcdPageConfiguration, CcdPage { + + public static final String DOCUMENT_DETAILS_CONTENT = """ +

+ You should only upload documents that are relevant to your application. +

+ +

+ Before you upload the document, give it a name that tells the court what it is, for example + ‘witness statement’, or ‘tenancy agreement’. +

+ +

+ You can upload the following file types: DOC/DOCX (Word), XLS/XLSM (Excel), PPT/PPTX (PowerPoint) + , PDF, RTF, TXT, CSV, JPG/JPEG, PNG, BMP, TIF/TIFF. +

+ """; + + @Override + public void addTo(PageBuilder pageBuilder) { + String pageKey = getPageKey(); + pageBuilder + .page(pageKey) + .pageLabel("Upload your documents") + .label(pageKey + "-line-separator", "---") + .label(pageKey + "-content", DOCUMENT_DETAILS_CONTENT) + .complex(PCSCase::getLegalRepDocumentUpload) + .mandatory(LegalRepDocumentUpload::getAdditionalDocuments) + .done() + .build(); + } + + @Override + public String getPageKey() { + return CcdPage.derivePageKey(this.getClass()); + } +} diff --git a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurerTest.java b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurerTest.java index e30e19ca7e..f4ddc6644d 100644 --- a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurerTest.java +++ b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurerTest.java @@ -46,7 +46,7 @@ void shouldConfigurePagesInCorrectOrder() { verifyAndCount(inOrder, pageBuilder, UploadAdditionalDocumentsInformationPage.class, verificationCount); verifyAndCount(inOrder, pageBuilder, ExistingApplicationPage.class, verificationCount); -// verifyAndCount(inOrder, pageBuilder, UploadDocumentsPage.class, verificationCount); + verifyAndCount(inOrder, pageBuilder, UploadAdditionalDocumentsPage.class, verificationCount); int numberOfPages = pageCaptor.getAllValues().size(); assertThat(verificationCount.get()).isEqualTo(numberOfPages); From c1a76a421014efb93e3bd17aa63143a192042eae Mon Sep 17 00:00:00 2001 From: Nicole-Samuels Date: Mon, 18 May 2026 16:43:53 +0100 Subject: [PATCH 03/16] Adding legal rep document upload class --- .../legalrepdocumentupload/LegalRepDocumentUpload.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUpload.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUpload.java index 254319f357..62f12ef38e 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUpload.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUpload.java @@ -7,6 +7,9 @@ import lombok.Data; import lombok.NoArgsConstructor; import uk.gov.hmcts.ccd.sdk.api.CCD; +import uk.gov.hmcts.ccd.sdk.type.ListValue; + +import java.util.List; @Builder @Data @@ -20,4 +23,10 @@ public class LegalRepDocumentUpload { ) @JsonProperty("DocumentUploadCategories") private DocumentUploadCategory uploadCategories; + + @CCD( + label = "Add document", + hint = "Upload a document to the system" + ) + private List> additionalDocuments; } From 4f9d0b552397a30b64309212082d4f2bfc2d2585 Mon Sep 17 00:00:00 2001 From: Nicole-Samuels Date: Tue, 19 May 2026 09:36:37 +0100 Subject: [PATCH 04/16] changed name of additional documents and updated document content --- .../LegalRepDocumentUpload.java | 2 +- .../UploadAdditionalDocumentsPage.java | 20 ++++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUpload.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUpload.java index 62f12ef38e..f98ba99fba 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUpload.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUpload.java @@ -28,5 +28,5 @@ public class LegalRepDocumentUpload { label = "Add document", hint = "Upload a document to the system" ) - private List> additionalDocuments; + private List> legalRepDocuments; } diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java index f62dc71ebd..b59e7270c7 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java @@ -14,14 +14,24 @@ public class UploadAdditionalDocumentsPage implements CcdPageConfiguration, CcdP

- Before you upload the document, give it a name that tells the court what it is, for example - ‘witness statement’, or ‘tenancy agreement’. + Before you upload the document, give it a name that tells the court what it is, + for example, ‘witness statement’, or ‘tenancy agreement’.

- You can upload the following file types: DOC/DOCX (Word), XLS/XLSM (Excel), PPT/PPTX (PowerPoint) - , PDF, RTF, TXT, CSV, JPG/JPEG, PNG, BMP, TIF/TIFF. + You can upload the following file types: DOC/DOCX (Word), XLS/XLSM + (Excel), PPT/PPTX (PowerPoint), PDF, RTF, TXT, CSV, JPG/JPEG, PNG, BMP, + TIF/TIFF.

+ +

+ Before you upload your documents +

+ +

+ Give your document a name that explains what it is. \s +

+ """; @Override @@ -33,7 +43,7 @@ public void addTo(PageBuilder pageBuilder) { .label(pageKey + "-line-separator", "---") .label(pageKey + "-content", DOCUMENT_DETAILS_CONTENT) .complex(PCSCase::getLegalRepDocumentUpload) - .mandatory(LegalRepDocumentUpload::getAdditionalDocuments) + .mandatory(LegalRepDocumentUpload::getLegalRepDocuments) .done() .build(); } From d2b7a2881f7cdb79b745bacb4ee3f7e2bc743629 Mon Sep 17 00:00:00 2001 From: Nicole-Samuels Date: Wed, 20 May 2026 10:49:16 +0100 Subject: [PATCH 05/16] updated the additional document page with common page content --- .../legalrepdocumentupload/UploadAdditionalDocumentsPage.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java index b59e7270c7..801f6004d5 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java @@ -5,6 +5,7 @@ import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase; import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocumentUpload; import uk.gov.hmcts.reform.pcs.ccd.page.CcdPage; +import uk.gov.hmcts.reform.pcs.ccd.page.CommonPageContent; public class UploadAdditionalDocumentsPage implements CcdPageConfiguration, CcdPage { @@ -44,6 +45,7 @@ public void addTo(PageBuilder pageBuilder) { .label(pageKey + "-content", DOCUMENT_DETAILS_CONTENT) .complex(PCSCase::getLegalRepDocumentUpload) .mandatory(LegalRepDocumentUpload::getLegalRepDocuments) + .label("uploadAdditionalDocuments-saveAndReturn", CommonPageContent.SAVE_AND_RETURN) .done() .build(); } @@ -52,4 +54,5 @@ public void addTo(PageBuilder pageBuilder) { public String getPageKey() { return CcdPage.derivePageKey(this.getClass()); } + } From 2ce7ec40ebf705c12aa516d2ddf1ec20fa755c08 Mon Sep 17 00:00:00 2001 From: Nicole-Samuels Date: Wed, 20 May 2026 16:39:56 +0100 Subject: [PATCH 06/16] Removed save and return common page content --- .../legalrepdocumentupload/UploadAdditionalDocumentsPage.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java index 801f6004d5..b59e7270c7 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java @@ -5,7 +5,6 @@ import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase; import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocumentUpload; import uk.gov.hmcts.reform.pcs.ccd.page.CcdPage; -import uk.gov.hmcts.reform.pcs.ccd.page.CommonPageContent; public class UploadAdditionalDocumentsPage implements CcdPageConfiguration, CcdPage { @@ -45,7 +44,6 @@ public void addTo(PageBuilder pageBuilder) { .label(pageKey + "-content", DOCUMENT_DETAILS_CONTENT) .complex(PCSCase::getLegalRepDocumentUpload) .mandatory(LegalRepDocumentUpload::getLegalRepDocuments) - .label("uploadAdditionalDocuments-saveAndReturn", CommonPageContent.SAVE_AND_RETURN) .done() .build(); } @@ -54,5 +52,4 @@ public void addTo(PageBuilder pageBuilder) { public String getPageKey() { return CcdPage.derivePageKey(this.getClass()); } - } From c875f9ebdcd8a717f570bf05adf0277bb29c427c Mon Sep 17 00:00:00 2001 From: Nicole-Samuels Date: Thu, 21 May 2026 14:33:39 +0100 Subject: [PATCH 07/16] HDPI-6404 Updated character limit and persisted case data --- .../LegalRepDocument.java | 2 +- .../LegalRepDocumentUploadDetails.java | 8 ++- .../LegalRepDocumentUploadConfigurer.java | 4 +- .../UploadAdditionalDocumentsPage.java | 55 +++++++++++++++++-- ...epDocumentUploadDetailsConfigurerTest.java | 6 +- 5 files changed, 67 insertions(+), 8 deletions(-) diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocument.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocument.java index 033ba22b87..2ddc653029 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocument.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocument.java @@ -26,7 +26,7 @@ public class LegalRepDocument { private Document document; @CCD(label = "Short description", - max = 62 + max = 60 ) private String description; } diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUploadDetails.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUploadDetails.java index cdee07e095..40d9a695d5 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUploadDetails.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUploadDetails.java @@ -7,6 +7,12 @@ import lombok.Data; import lombok.NoArgsConstructor; import uk.gov.hmcts.ccd.sdk.api.CCD; +import uk.gov.hmcts.ccd.sdk.type.ListValue; +import uk.gov.hmcts.reform.pcs.ccd.type.DynamicStringList; + +import java.util.List; + +import static uk.gov.hmcts.ccd.sdk.type.FieldType.DynamicRadioList; @Builder @Data @@ -22,7 +28,7 @@ public class LegalRepDocumentUploadDetails { ) @JsonProperty("DocumentUploadCategories") private DynamicStringList validCategories; - + @CCD( label = "Add document", diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurer.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurer.java index e27314256c..036c29ff63 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurer.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurer.java @@ -9,11 +9,13 @@ @AllArgsConstructor public class LegalRepDocumentUploadConfigurer implements PageConfigurer { + private final UploadAdditionalDocumentsPage uploadAdditionalDocumentsPage; + @Override public void configurePages(PageBuilder pageBuilder) { pageBuilder .add(new UploadAdditionalDocumentsInformationPage()) .add(new ExistingApplicationPage()) - .add(new UploadAdditionalDocumentsPage()); + .add(uploadAdditionalDocumentsPage); } } diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java index b59e7270c7..001f454808 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java @@ -1,13 +1,29 @@ package uk.gov.hmcts.reform.pcs.ccd.page.legalrepdocumentupload; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Component; +import uk.gov.hmcts.ccd.sdk.api.CaseDetails; +import uk.gov.hmcts.ccd.sdk.api.callback.AboutToStartOrSubmitResponse; +import uk.gov.hmcts.ccd.sdk.type.ListValue; import uk.gov.hmcts.reform.pcs.ccd.common.CcdPageConfiguration; import uk.gov.hmcts.reform.pcs.ccd.common.PageBuilder; import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase; -import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocumentUpload; +import uk.gov.hmcts.reform.pcs.ccd.domain.State; +import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocument; +import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocumentUploadDetails; import uk.gov.hmcts.reform.pcs.ccd.page.CcdPage; +import uk.gov.hmcts.reform.pcs.ccd.service.TextAreaValidationService; +import uk.gov.hmcts.reform.pcs.ccd.util.StringUtils; +import java.util.ArrayList; +import java.util.List; + +@Component +@AllArgsConstructor public class UploadAdditionalDocumentsPage implements CcdPageConfiguration, CcdPage { + private static final String DESCRIPTION_LABEL = "Short description"; + private final TextAreaValidationService textAreaValidationService; public static final String DOCUMENT_DETAILS_CONTENT = """

You should only upload documents that are relevant to your application. @@ -29,7 +45,7 @@ public class UploadAdditionalDocumentsPage implements CcdPageConfiguration, CcdP

- Give your document a name that explains what it is. \s + Give your document a name that explains what it is.

"""; @@ -42,8 +58,8 @@ public void addTo(PageBuilder pageBuilder) { .pageLabel("Upload your documents") .label(pageKey + "-line-separator", "---") .label(pageKey + "-content", DOCUMENT_DETAILS_CONTENT) - .complex(PCSCase::getLegalRepDocumentUpload) - .mandatory(LegalRepDocumentUpload::getLegalRepDocuments) + .complex(PCSCase::getLegalRepDocumentUploadDetails) + .mandatory(LegalRepDocumentUploadDetails::getLegalRepDocuments) .done() .build(); } @@ -52,4 +68,35 @@ public void addTo(PageBuilder pageBuilder) { public String getPageKey() { return CcdPage.derivePageKey(this.getClass()); } + + private AboutToStartOrSubmitResponse midEvent( + CaseDetails caseDetails, + CaseDetails caseDetailsBefore) { + + PCSCase caseData = caseDetails.getData(); + LegalRepDocumentUploadDetails caseLegalRepDocs = caseData.getLegalRepDocumentUploadDetails(); + + List errors = validateDocumentDescription(caseLegalRepDocs.getLegalRepDocuments(), DESCRIPTION_LABEL); + + return AboutToStartOrSubmitResponse.builder() + .errorMessageOverride(StringUtils.joinIfNotEmpty("\n", errors)) + .data(caseData) + .build(); + } + + public List validateDocumentDescription( + List> legalRepDocuments, + String label) { + + List validationErrorsList = new ArrayList<>(); + + for (int i = 0; i < legalRepDocuments.size(); i++) { + String documentDescription = legalRepDocuments.get(i).getValue().getDescription(); + String fieldLabel = "Legal Representative document %d".formatted(i + 1) + "'s " + label; + validationErrorsList.addAll(textAreaValidationService.validateSingleTextArea( + documentDescription, fieldLabel, TextAreaValidationService.EXTRA_SHORT_TEXT_LIMIT) + ); + } + return validationErrorsList; + } } diff --git a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadDetailsConfigurerTest.java b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadDetailsConfigurerTest.java index ba510606c9..bccd542b5b 100644 --- a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadDetailsConfigurerTest.java +++ b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadDetailsConfigurerTest.java @@ -5,6 +5,7 @@ import org.mockito.ArgumentCaptor; import org.mockito.InOrder; import org.mockito.InjectMocks; +import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.junit.jupiter.MockitoExtension; import uk.gov.hmcts.reform.pcs.ccd.common.CcdPageConfiguration; @@ -28,6 +29,9 @@ class LegalRepDocumentUploadDetailsConfigurerTest extends BasePageTest { @InjectMocks private LegalRepDocumentUploadConfigurer underTest; + @Mock + private UploadAdditionalDocumentsPage uploadAdditionalDocumentsPage; + @Test @SuppressWarnings("squid:S5961") void shouldConfigurePagesInCorrectOrder() { @@ -46,7 +50,7 @@ void shouldConfigurePagesInCorrectOrder() { verifyAndCount(inOrder, pageBuilder, UploadAdditionalDocumentsInformationPage.class, verificationCount); verifyAndCount(inOrder, pageBuilder, ExistingApplicationPage.class, verificationCount); - verifyAndCount(inOrder, pageBuilder, UploadAdditionalDocumentsPage.class, verificationCount); + verifyAndCount(inOrder, pageBuilder, uploadAdditionalDocumentsPage, verificationCount); int numberOfPages = pageCaptor.getAllValues().size(); assertThat(verificationCount.get()).isEqualTo(numberOfPages); From b26e3a6dc5c420af9771a2776c16fc669572435d Mon Sep 17 00:00:00 2001 From: Nicole-Samuels Date: Fri, 12 Jun 2026 16:22:14 +0100 Subject: [PATCH 08/16] Updated content for upload page --- .../legalrepdocumentupload/UploadAdditionalDocumentsPage.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java index 001f454808..78d110574e 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java @@ -26,12 +26,12 @@ public class UploadAdditionalDocumentsPage implements CcdPageConfiguration, CcdP private final TextAreaValidationService textAreaValidationService; public static final String DOCUMENT_DETAILS_CONTENT = """

- You should only upload documents that are relevant to your application. + You should only upload documents that are relevant to the claim.

Before you upload the document, give it a name that tells the court what it is, - for example, ‘witness statement’, or ‘tenancy agreement’. + for example ‘witness statement’, or ‘tenancy agreement’.

From 1337f7547353c8b4e3ee9d9b5d47fc98c4f61937 Mon Sep 17 00:00:00 2001 From: Nicole-Samuels Date: Wed, 17 Jun 2026 17:01:18 +0100 Subject: [PATCH 09/16] Updated title and spacing --- .../legalrepdocumentupload/UploadAdditionalDocumentsPage.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java index 78d110574e..cbbde5b764 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java @@ -40,7 +40,7 @@ public class UploadAdditionalDocumentsPage implements CcdPageConfiguration, CcdP TIF/TIFF.

-

+

Before you upload your documents

@@ -55,7 +55,7 @@ public void addTo(PageBuilder pageBuilder) { String pageKey = getPageKey(); pageBuilder .page(pageKey) - .pageLabel("Upload your documents") + .pageLabel("Upload additional documents") .label(pageKey + "-line-separator", "---") .label(pageKey + "-content", DOCUMENT_DETAILS_CONTENT) .complex(PCSCase::getLegalRepDocumentUploadDetails) From 8e38ef34ade39c8313be9592f42425d9a28badf5 Mon Sep 17 00:00:00 2001 From: Nicole-Samuels Date: Mon, 29 Jun 2026 14:36:29 +0100 Subject: [PATCH 10/16] Added LegalRepDocumentTypeWales --- .../LegalRepDocument.java | 13 ++++++-- .../LegalRepDocumentType.java | 11 +++++-- .../wales/LegalRepDocumentTypeWales.java | 23 ++++++++++++++ .../ccd/service/document/DocumentService.java | 30 +++++++++++++++++++ 4 files changed, 71 insertions(+), 6 deletions(-) create mode 100644 src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/wales/LegalRepDocumentTypeWales.java diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocument.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocument.java index 2ddc653029..2737ce7446 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocument.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocument.java @@ -7,7 +7,7 @@ import uk.gov.hmcts.ccd.sdk.api.CCD; import uk.gov.hmcts.ccd.sdk.type.Document; import uk.gov.hmcts.ccd.sdk.type.FieldType; -import uk.gov.hmcts.reform.pcs.ccd.domain.enforcetheorder.warrantofrestitution.EvidenceDocumentType; +import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.wales.LegalRepDocumentTypeWales; @Data @Builder @@ -18,9 +18,16 @@ public class LegalRepDocument { @CCD( label = "Type of document", typeOverride = FieldType.FixedList, - typeParameterOverride = "EvidenceDocumentType" + typeParameterOverride = "LegalRepDocumentType" ) - private EvidenceDocumentType documentType; + private LegalRepDocumentType legalRepDocumentType; + + @CCD( + label = "Type of document", + typeOverride = FieldType.FixedList, + typeParameterOverride = "LegalRepDocumentTypeWales" + ) + private LegalRepDocumentTypeWales legalRepDocumentTypeWales; @CCD(label = "Document") private Document document; diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentType.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentType.java index a660edd45d..795e829ee2 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentType.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentType.java @@ -8,10 +8,15 @@ @Getter public enum LegalRepDocumentType implements HasLabel { + RENT_STATEMENT("Rent or payments"), + TENANCY_AGREEMENT("Tenancy agreement"), + CORRESPONDENCE_FROM_DEFENDANT("Correspondence from defendant"), + CORRESPONDENCE_FROM_CLAIMANT("Correspondence from claimant"), PHOTOGRAPHIC_EVIDENCE("Photographic evidence"), - POLICE_REPORT("Police report"), - WITNESS_STATEMENT("Witness statement"), - OTHER("Other document"); + CERTIFICATE_OF_SUITABILITY_AS_LF("Certificate of suitability as litigation friend"), + LEGAL_AID_CERTIFICATE("Legal aid certificate"), + OTHER("Other document"), + WITNESS_STATEMENT("Witness statement"); private final String label; diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/wales/LegalRepDocumentTypeWales.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/wales/LegalRepDocumentTypeWales.java new file mode 100644 index 0000000000..b784d46ba7 --- /dev/null +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/wales/LegalRepDocumentTypeWales.java @@ -0,0 +1,23 @@ +package uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.wales; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import uk.gov.hmcts.ccd.sdk.api.HasLabel; + +@AllArgsConstructor +@Getter +public enum LegalRepDocumentTypeWales implements HasLabel { + + RENT_STATEMENT("Rent or payments"), + OCCUPATION_LICENCE("Occupation licence"), + CORRESPONDENCE_FROM_DEFENDANT("Correspondence from defendant"), + CORRESPONDENCE_FROM_CLAIMANT("Correspondence from claimant"), + PHOTOGRAPHIC_EVIDENCE("Photographic evidence"), + CERTIFICATE_OF_SUITABILITY_AS_LF("Certificate of suitability as litigation friend"), + LEGAL_AID_CERTIFICATE("Legal aid certificate"), + OTHER("Other document"), + WITNESS_STATEMENT("Witness statement"); + + private final String label; + +} diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java index 20072f1f42..da0657d628 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java @@ -22,6 +22,8 @@ import uk.gov.hmcts.reform.pcs.ccd.domain.enforcetheorder.EnforcementOrder; import uk.gov.hmcts.reform.pcs.ccd.domain.enforcetheorder.warrantofrestitution.EvidenceDocumentType; import uk.gov.hmcts.reform.pcs.ccd.domain.enforcetheorder.warrantofrestitution.EvidenceOfDefendants; +import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocumentType; +import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.wales.LegalRepDocumentTypeWales; import uk.gov.hmcts.reform.pcs.ccd.domain.wales.OccupationLicenceDetailsWales; import uk.gov.hmcts.reform.pcs.ccd.entity.ClaimEntity; import uk.gov.hmcts.reform.pcs.ccd.domain.wales.WalesDocuments; @@ -414,6 +416,34 @@ private DocumentType mapEvidenceDocumentTypeToDocumentType(EvidenceDocumentType }; } + private DocumentType mapLegalRepDocumentTypeToDocumentType(LegalRepDocumentType legalRepDocumentType) { + return switch (legalRepDocumentType) { + case RENT_STATEMENT -> DocumentType.RENT_STATEMENT; + case TENANCY_AGREEMENT -> DocumentType.TENANCY_AGREEMENT; + case CORRESPONDENCE_FROM_CLAIMANT -> DocumentType.CORRESPONDENCE_FROM_CLAIMANT; + case CORRESPONDENCE_FROM_DEFENDANT -> DocumentType.CORRESPONDENCE_FROM_DEFENDANT; + case PHOTOGRAPHIC_EVIDENCE -> DocumentType.PHOTOGRAPHIC_EVIDENCE; + case CERTIFICATE_OF_SUITABILITY_AS_LF -> DocumentType.CERTIFICATE_OF_SUITABILITY_AS_LF; + case LEGAL_AID_CERTIFICATE -> DocumentType.LEGAL_AID_CERTIFICATE; + case OTHER -> DocumentType.OTHER; + case WITNESS_STATEMENT -> DocumentType.WITNESS_STATEMENT; + }; + } + + private DocumentType mapLegalRepDocumentTypeToDocumentType(LegalRepDocumentTypeWales legalRepDocumentTypeWales) { + return switch (legalRepDocumentTypeWales) { + case RENT_STATEMENT -> DocumentType.RENT_STATEMENT; + case OCCUPATION_LICENCE -> DocumentType.OCCUPATION_LICENCE; + case CORRESPONDENCE_FROM_CLAIMANT -> DocumentType.CORRESPONDENCE_FROM_CLAIMANT; + case CORRESPONDENCE_FROM_DEFENDANT -> DocumentType.CORRESPONDENCE_FROM_DEFENDANT; + case PHOTOGRAPHIC_EVIDENCE -> DocumentType.PHOTOGRAPHIC_EVIDENCE; + case CERTIFICATE_OF_SUITABILITY_AS_LF -> DocumentType.CERTIFICATE_OF_SUITABILITY_AS_LF; + case LEGAL_AID_CERTIFICATE -> DocumentType.LEGAL_AID_CERTIFICATE; + case OTHER -> DocumentType.OTHER; + case WITNESS_STATEMENT -> DocumentType.WITNESS_STATEMENT; + }; + } + @Builder @Data private static class DocumentHolder { From c4b1eea4b1b28b505dc5e336ce8cf41d31146f5f Mon Sep 17 00:00:00 2001 From: Nicole-Samuels Date: Mon, 29 Jun 2026 16:15:24 +0100 Subject: [PATCH 11/16] updated submit method and document service --- .../LegalRepDocumentUpload.java | 31 ++++++++++++++- .../UploadAdditionalDocumentsPage.java | 38 ------------------- .../ccd/service/document/DocumentService.java | 36 ++++++++++++++++++ 3 files changed, 65 insertions(+), 40 deletions(-) diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/event/legalrepdocumentupload/LegalRepDocumentUpload.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/event/legalrepdocumentupload/LegalRepDocumentUpload.java index 5d0cdbd9f8..dd1e673128 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/event/legalrepdocumentupload/LegalRepDocumentUpload.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/event/legalrepdocumentupload/LegalRepDocumentUpload.java @@ -14,11 +14,13 @@ import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase; import uk.gov.hmcts.reform.pcs.ccd.domain.State; import uk.gov.hmcts.reform.pcs.ccd.domain.VerticalYesNo; +import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocument; import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocumentUploadDetails; import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.DocumentUploadCategory; import uk.gov.hmcts.reform.pcs.ccd.entity.PcsCaseEntity; import uk.gov.hmcts.reform.pcs.ccd.page.legalrepdocumentupload.LegalRepDocumentUploadConfigurer; import uk.gov.hmcts.reform.pcs.ccd.service.PcsCaseService; +import uk.gov.hmcts.reform.pcs.ccd.service.document.DocumentService; import uk.gov.hmcts.reform.pcs.ccd.type.DynamicStringList; import uk.gov.hmcts.reform.pcs.ccd.type.DynamicStringListElement; @@ -40,6 +42,7 @@ public class LegalRepDocumentUpload implements CCDConfig configBuilder) { @@ -131,7 +134,31 @@ GenAppType mapCategoryToGenAppType(DocumentUploadCategory category) { }; } - private SubmitResponse submit(EventPayload eventPayload) { - return SubmitResponse.defaultResponse(); + SubmitResponse submit(EventPayload eventPayload) { + Long caseReference = eventPayload.caseReference(); + PcsCaseEntity pcsCaseEntity = pcsCaseService.loadCase(caseReference); + PCSCase pcsCase = eventPayload.caseData(); + + List legalRepDocuments = documentService.createLegalRepDocuments(pcsCase); + + boolean isDocumentNull = legalRepDocuments.stream() + .anyMatch(doc -> doc == null || doc.getDocument() == null); + + if (isDocumentNull) { + return errorResponse("Your files were not submitted. Try again."); + } + + documentService.createDocumentEntitiesFromLegalRepDocuments(legalRepDocuments,pcsCaseEntity); + + return SubmitResponse.builder() + .build(); + } + + @SuppressWarnings("SameParameterValue") + private SubmitResponse errorResponse(String message) { + return SubmitResponse.builder() + .errors(List.of(message)) + .build(); } + } diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java index cbbde5b764..0509b17339 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java @@ -2,21 +2,13 @@ import lombok.AllArgsConstructor; import org.springframework.stereotype.Component; -import uk.gov.hmcts.ccd.sdk.api.CaseDetails; -import uk.gov.hmcts.ccd.sdk.api.callback.AboutToStartOrSubmitResponse; -import uk.gov.hmcts.ccd.sdk.type.ListValue; import uk.gov.hmcts.reform.pcs.ccd.common.CcdPageConfiguration; import uk.gov.hmcts.reform.pcs.ccd.common.PageBuilder; import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase; -import uk.gov.hmcts.reform.pcs.ccd.domain.State; -import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocument; import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocumentUploadDetails; import uk.gov.hmcts.reform.pcs.ccd.page.CcdPage; import uk.gov.hmcts.reform.pcs.ccd.service.TextAreaValidationService; -import uk.gov.hmcts.reform.pcs.ccd.util.StringUtils; -import java.util.ArrayList; -import java.util.List; @Component @AllArgsConstructor @@ -69,34 +61,4 @@ public String getPageKey() { return CcdPage.derivePageKey(this.getClass()); } - private AboutToStartOrSubmitResponse midEvent( - CaseDetails caseDetails, - CaseDetails caseDetailsBefore) { - - PCSCase caseData = caseDetails.getData(); - LegalRepDocumentUploadDetails caseLegalRepDocs = caseData.getLegalRepDocumentUploadDetails(); - - List errors = validateDocumentDescription(caseLegalRepDocs.getLegalRepDocuments(), DESCRIPTION_LABEL); - - return AboutToStartOrSubmitResponse.builder() - .errorMessageOverride(StringUtils.joinIfNotEmpty("\n", errors)) - .data(caseData) - .build(); - } - - public List validateDocumentDescription( - List> legalRepDocuments, - String label) { - - List validationErrorsList = new ArrayList<>(); - - for (int i = 0; i < legalRepDocuments.size(); i++) { - String documentDescription = legalRepDocuments.get(i).getValue().getDescription(); - String fieldLabel = "Legal Representative document %d".formatted(i + 1) + "'s " + label; - validationErrorsList.addAll(textAreaValidationService.validateSingleTextArea( - documentDescription, fieldLabel, TextAreaValidationService.EXTRA_SHORT_TEXT_LIMIT) - ); - } - return validationErrorsList; - } } diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java index da0657d628..f5168dc618 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java @@ -24,6 +24,8 @@ import uk.gov.hmcts.reform.pcs.ccd.domain.enforcetheorder.warrantofrestitution.EvidenceOfDefendants; import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocumentType; import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.wales.LegalRepDocumentTypeWales; +import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocument; +import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocumentUploadDetails; import uk.gov.hmcts.reform.pcs.ccd.domain.wales.OccupationLicenceDetailsWales; import uk.gov.hmcts.reform.pcs.ccd.entity.ClaimEntity; import uk.gov.hmcts.reform.pcs.ccd.domain.wales.WalesDocuments; @@ -451,4 +453,38 @@ private static class DocumentHolder { private DocumentType type; private String description; } + + public List createLegalRepDocuments(PCSCase pcsCase) { + LegalRepDocumentUploadDetails legalRepDocumentUploadDetails = pcsCase.getLegalRepDocumentUploadDetails(); + + return legalRepDocumentUploadDetails.getLegalRepDocuments().stream() + .map(ListValue::getValue).toList(); + } + + public DocumentType resolveDocumentType(LegalRepDocument legalRepDoc) { + if (legalRepDoc.getLegalRepDocumentTypeWales() != null) { + return mapLegalRepDocumentTypeToDocumentType(legalRepDoc.getLegalRepDocumentTypeWales()); + } + return mapLegalRepDocumentTypeToDocumentType(legalRepDoc.getLegalRepDocumentType()); + } + + public void createDocumentEntitiesFromLegalRepDocuments( + List legalRepDocuments, + PcsCaseEntity pcsCaseEntity + ) { + List documentEntities = legalRepDocuments.stream() + .map(legalRepDoc -> DocumentEntity.builder() + .pcsCase(pcsCaseEntity) + .claim(pcsCaseEntity.getClaims().getFirst()) + .url(legalRepDoc.getDocument().getUrl()) + .fileName(legalRepDoc.getDocument().getFilename()) + .binaryUrl(legalRepDoc.getDocument().getBinaryUrl()) + .categoryId(legalRepDoc.getDocument().getCategoryId()) + .description(legalRepDoc.getDescription()) + .type(resolveDocumentType(legalRepDoc)) + .build()) + .toList(); + + pcsCaseEntity.addDocuments(documentEntities); + } } From 15e0d1a51f727978a35732f2c1bd9d45580f05af Mon Sep 17 00:00:00 2001 From: Nicole-Samuels Date: Mon, 29 Jun 2026 16:22:50 +0100 Subject: [PATCH 12/16] removed duplicate import --- .../hmcts/reform/pcs/ccd/service/document/DocumentService.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java index 5e2f6396c1..2ec388d1de 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java @@ -29,7 +29,6 @@ import uk.gov.hmcts.reform.pcs.ccd.domain.wales.OccupationLicenceDetailsWales; import uk.gov.hmcts.reform.pcs.ccd.entity.ClaimEntity; import uk.gov.hmcts.reform.pcs.ccd.domain.wales.WalesDocuments; -import uk.gov.hmcts.reform.pcs.ccd.entity.ClaimEntity; import uk.gov.hmcts.reform.pcs.ccd.entity.DocumentEntity; import uk.gov.hmcts.reform.pcs.ccd.entity.GenAppEntity; import uk.gov.hmcts.reform.pcs.ccd.entity.PcsCaseEntity; From 66e96e10cbce57a541f0b090b34048a62f6836e1 Mon Sep 17 00:00:00 2001 From: Nicole-Samuels Date: Thu, 2 Jul 2026 09:15:03 +0100 Subject: [PATCH 13/16] Added LegalREpDocumentType for English and Welsh journey --- .../LegalRepDocumentUploadDetails.java | 4 ++++ .../legalrepdocumentupload/LegalRepDocumentUpload.java | 5 +++++ .../UploadAdditionalDocumentsPage.java | 9 ++++++++- .../reform/pcs/ccd/service/document/DocumentService.java | 1 - 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUploadDetails.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUploadDetails.java index 078fd96d8b..9b15da0203 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUploadDetails.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUploadDetails.java @@ -35,7 +35,11 @@ public class LegalRepDocumentUploadDetails { hint = "Upload a document to the system" ) private List> legalRepDocuments; + @CCD(searchable = false) private YesOrNo showExistingApplicationPage; + @CCD(searchable = false) + private YesOrNo isWales; + } diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/event/legalrepdocumentupload/LegalRepDocumentUpload.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/event/legalrepdocumentupload/LegalRepDocumentUpload.java index dd1e673128..27d9e51db5 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/event/legalrepdocumentupload/LegalRepDocumentUpload.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/event/legalrepdocumentupload/LegalRepDocumentUpload.java @@ -33,6 +33,7 @@ import uk.gov.hmcts.reform.pcs.ccd.entity.GenAppEntity; import uk.gov.hmcts.reform.pcs.ccd.domain.genapp.GenAppType; +import uk.gov.hmcts.reform.pcs.postcodecourt.model.LegislativeCountry; import static uk.gov.hmcts.reform.pcs.ccd.event.EventId.legalRepDocumentUpload; @@ -89,6 +90,10 @@ private PCSCase start(EventPayload eventPayload) { // By default, Main claim is always added caseData.getLegalRepDocumentUploadDetails().setShowExistingApplicationPage(validCategoryItems.size() >= 2 ? YesOrNo.YES : YesOrNo.NO); + + boolean isWalesClaim = pcsCaseEntity.getLegislativeCountry() == LegislativeCountry.WALES; + caseData.getLegalRepDocumentUploadDetails().setIsWales(isWalesClaim ? YesOrNo.YES : YesOrNo.NO); + return caseData; } diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java index 0509b17339..31d5ecd7d6 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java @@ -5,10 +5,12 @@ import uk.gov.hmcts.reform.pcs.ccd.common.CcdPageConfiguration; import uk.gov.hmcts.reform.pcs.ccd.common.PageBuilder; import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase; +import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocument; import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocumentUploadDetails; import uk.gov.hmcts.reform.pcs.ccd.page.CcdPage; import uk.gov.hmcts.reform.pcs.ccd.service.TextAreaValidationService; +import static uk.gov.hmcts.reform.pcs.ccd.ShowConditions.NEVER_SHOW; @Component @AllArgsConstructor @@ -51,7 +53,12 @@ public void addTo(PageBuilder pageBuilder) { .label(pageKey + "-line-separator", "---") .label(pageKey + "-content", DOCUMENT_DETAILS_CONTENT) .complex(PCSCase::getLegalRepDocumentUploadDetails) - .mandatory(LegalRepDocumentUploadDetails::getLegalRepDocuments) + .readonly(LegalRepDocumentUploadDetails::getIsWales, NEVER_SHOW) + .list(LegalRepDocumentUploadDetails::getLegalRepDocuments) + .mandatory(LegalRepDocument::getLegalRepDocumentType, "isWales = \"No\"") + .mandatory(LegalRepDocument::getLegalRepDocumentTypeWales, "isWales = \"Yes\"") + .mandatory(LegalRepDocument::getDocument) + .mandatory(LegalRepDocument::getDescription) .done() .build(); } diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java index 2ec388d1de..fc5b025107 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java @@ -474,7 +474,6 @@ public void createDocumentEntitiesFromLegalRepDocuments( List documentEntities = legalRepDocuments.stream() .map(legalRepDoc -> DocumentEntity.builder() .pcsCase(pcsCaseEntity) - .claim(pcsCaseEntity.getClaims().getFirst()) .url(legalRepDoc.getDocument().getUrl()) .fileName(legalRepDoc.getDocument().getFilename()) .binaryUrl(legalRepDoc.getDocument().getBinaryUrl()) From ce26670e5a22d0f3e308001530474d237e7b117a Mon Sep 17 00:00:00 2001 From: Nicole-Samuels Date: Thu, 2 Jul 2026 12:27:30 +0100 Subject: [PATCH 14/16] Updated DocumentService to ddded mapping to categoryId for legalRepDocuments --- .../hmcts/reform/pcs/ccd/service/document/DocumentService.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java index fc5b025107..b6040cf909 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java @@ -477,9 +477,10 @@ public void createDocumentEntitiesFromLegalRepDocuments( .url(legalRepDoc.getDocument().getUrl()) .fileName(legalRepDoc.getDocument().getFilename()) .binaryUrl(legalRepDoc.getDocument().getBinaryUrl()) - .categoryId(legalRepDoc.getDocument().getCategoryId()) .description(legalRepDoc.getDescription()) .type(resolveDocumentType(legalRepDoc)) + .categoryId(Optional.of(mapDocumentTypeToCategory(resolveDocumentType(legalRepDoc)) + .map(CaseFileCategory::getId)).toString()) .build()) .toList(); From 05ab99456df7e1e40f25b39707c1105c1ca1708b Mon Sep 17 00:00:00 2001 From: Nicole-Samuels Date: Thu, 2 Jul 2026 12:58:05 +0100 Subject: [PATCH 15/16] Updated DocumentService by removing Optional.of for categoryId mapping of legalRepDoc --- .../reform/pcs/ccd/service/document/DocumentService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java index b6040cf909..9cfd6f0806 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java @@ -479,8 +479,8 @@ public void createDocumentEntitiesFromLegalRepDocuments( .binaryUrl(legalRepDoc.getDocument().getBinaryUrl()) .description(legalRepDoc.getDescription()) .type(resolveDocumentType(legalRepDoc)) - .categoryId(Optional.of(mapDocumentTypeToCategory(resolveDocumentType(legalRepDoc)) - .map(CaseFileCategory::getId)).toString()) + .categoryId((mapDocumentTypeToCategory(resolveDocumentType(legalRepDoc)) + .map(CaseFileCategory::getId)).orElse(null)) .build()) .toList(); From 2f9927e6921a4bd18c2c403708705673fdf2fabc Mon Sep 17 00:00:00 2001 From: Nicole-Samuels Date: Thu, 2 Jul 2026 13:46:23 +0100 Subject: [PATCH 16/16] updated DocumentService for legalRepDocument --- .../ccd/service/document/DocumentService.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java index 9cfd6f0806..14f38679b9 100644 --- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java +++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java @@ -472,16 +472,24 @@ public void createDocumentEntitiesFromLegalRepDocuments( PcsCaseEntity pcsCaseEntity ) { List documentEntities = legalRepDocuments.stream() - .map(legalRepDoc -> DocumentEntity.builder() + .map(legalRepDoc -> { + + DocumentType resolvedDocumentType = resolveDocumentType(legalRepDoc); + + String categoryId = mapDocumentTypeToCategory(resolvedDocumentType) + .map(CaseFileCategory::getId) + .orElse(null); + + return DocumentEntity.builder() .pcsCase(pcsCaseEntity) .url(legalRepDoc.getDocument().getUrl()) .fileName(legalRepDoc.getDocument().getFilename()) .binaryUrl(legalRepDoc.getDocument().getBinaryUrl()) .description(legalRepDoc.getDescription()) - .type(resolveDocumentType(legalRepDoc)) - .categoryId((mapDocumentTypeToCategory(resolveDocumentType(legalRepDoc)) - .map(CaseFileCategory::getId)).orElse(null)) - .build()) + .type(resolvedDocumentType) + .categoryId(categoryId) + .build(); + }) .toList(); pcsCaseEntity.addDocuments(documentEntities);