From 87d95db4f8f16515e7dc503cb9b377da5ed7df39 Mon Sep 17 00:00:00 2001 From: debolina-seal Date: Tue, 7 Jul 2026 11:03:12 +0100 Subject: [PATCH 1/6] FACT-2551-Welsh-language --- ...ProfessionalInformationControllerTest.java | 142 ++++++++++++++++++ .../fact/data/api/dto/CourtDxCodeDto.java | 14 ++ .../reform/fact/data/api/dto/CourtFaxDto.java | 14 ++ .../fact/data/api/entities/CourtDxCode.java | 7 + .../fact/data/api/entities/CourtFax.java | 7 + .../CourtProfessionalInformationService.java | 2 + ...pdate_contact_description_type_name_cy.sql | 136 +++++++++++++++++ ...add_welsh_translations_for_court_types.sql | 15 ++ ...1.42__update_area_of_law_types_name_cy.sql | 33 ++++ ...1.43__add_welsh_columns_for_dx_and_fax.sql | 6 + ...urtProfessionalInformationServiceTest.java | 12 ++ 11 files changed, 388 insertions(+) create mode 100644 src/main/resources/db/migration/V1.40__update_contact_description_type_name_cy.sql create mode 100644 src/main/resources/db/migration/V1.41__add_welsh_translations_for_court_types.sql create mode 100644 src/main/resources/db/migration/V1.42__update_area_of_law_types_name_cy.sql create mode 100644 src/main/resources/db/migration/V1.43__add_welsh_columns_for_dx_and_fax.sql diff --git a/src/integrationTest/java/uk/gov/hmcts/reform/fact/data/api/controllers/CourtProfessionalInformationControllerTest.java b/src/integrationTest/java/uk/gov/hmcts/reform/fact/data/api/controllers/CourtProfessionalInformationControllerTest.java index 434075a0..9db1c519 100644 --- a/src/integrationTest/java/uk/gov/hmcts/reform/fact/data/api/controllers/CourtProfessionalInformationControllerTest.java +++ b/src/integrationTest/java/uk/gov/hmcts/reform/fact/data/api/controllers/CourtProfessionalInformationControllerTest.java @@ -64,11 +64,13 @@ private CourtProfessionalInformationDetailsDto sampleProfessionalInformationDeta CourtDxCodeDto dxCode = CourtDxCodeDto.builder() .dxCode("444") .explanation("Main DX") + .explanationCy("Prif DX") .build(); CourtFaxDto fax = CourtFaxDto.builder() .faxNumber("01234567890") .description("Primary fax") + .descriptionCy("Prif ffacs") .build(); return CourtProfessionalInformationDetailsDto.builder() @@ -90,11 +92,13 @@ private CourtProfessionalInformationDetailsDto wrapProfessionalInformation( CourtDxCodeDto dxCode = CourtDxCodeDto.builder() .dxCode("444") .explanation("Main DX") + .explanationCy("Prif DX") .build(); CourtFaxDto fax = CourtFaxDto.builder() .faxNumber("01234567890") .description("Primary fax") + .descriptionCy("Prif ffacs") .build(); return buildDetails(professionalInformation, codes, List.of(dxCode), List.of(fax)); @@ -291,10 +295,12 @@ void postProfessionalInformationInvalidDxCodeCharactersReturnsBadRequest() throw List.of(CourtDxCodeDto.builder() .dxCode("120551 Marylebone 9$") .explanation("Valid explanation") + .explanationCy("Esboniad dilys") .build()), List.of(CourtFaxDto.builder() .faxNumber("0207 111 1111") .description("Fax") + .descriptionCy("Ffacs") .build()) ); @@ -322,10 +328,12 @@ void postProfessionalInformationInvalidDxCodeTooLongReturnsBadRequest() throws E List.of(CourtDxCodeDto.builder() .dxCode(longCode) .explanation("Valid explanation") + .explanationCy("Esboniad dilys") .build()), List.of(CourtFaxDto.builder() .faxNumber("0207 111 1111") .description("Fax") + .descriptionCy("Ffacs") .build()) ); @@ -353,10 +361,12 @@ void postProfessionalInformationInvalidDxExplanationTooLongReturnsBadRequest() t List.of(CourtDxCodeDto.builder() .dxCode("120551 Marylebone 9") .explanation(longExplanation) + .explanationCy("Esboniad hir") .build()), List.of(CourtFaxDto.builder() .faxNumber("0207 111 1111") .description("Fax") + .descriptionCy("Ffacs") .build()) ); @@ -386,10 +396,12 @@ void postProfessionalInformationInvalidGbsReturnsBadRequest() throws Exception { List.of(CourtDxCodeDto.builder() .dxCode("120551 Marylebone 9") .explanation("Valid explanation") + .explanationCy("Esboniad dilys") .build()), List.of(CourtFaxDto.builder() .faxNumber("0207 111 1111") .description("Fax") + .descriptionCy("Ffacs") .build()) ); @@ -416,10 +428,12 @@ void postProfessionalInformationInvalidFaxDescriptionReturnsBadRequest() throws List.of(CourtDxCodeDto.builder() .dxCode("120551 Marylebone 9") .explanation("Valid explanation") + .explanationCy("Esboniad dilys") .build()), List.of(CourtFaxDto.builder() .faxNumber("0207 111 1111") .description("Invalid 😊") + .descriptionCy("Ffacs") .build()) ); @@ -446,10 +460,12 @@ void postProfessionalInformationInvalidFaxNumberReturnsBadRequest() throws Excep List.of(CourtDxCodeDto.builder() .dxCode("120551 Marylebone 9") .explanation("Valid explanation") + .explanationCy("Esboniad dilys") .build()), List.of(CourtFaxDto.builder() .faxNumber("012") .description("Fax") + .descriptionCy("Ffacs") .build()) ); @@ -477,6 +493,7 @@ void postProfessionalInformationNullDxEntryReturnsBadRequest() throws Exception List.of(CourtFaxDto.builder() .faxNumber("0207 111 1111") .description("Fax") + .descriptionCy("Ffacs") .build()) ); @@ -503,6 +520,7 @@ void postProfessionalInformationNullFaxEntryReturnsBadRequest() throws Exception List.of(CourtDxCodeDto.builder() .dxCode("120551 Marylebone 9") .explanation("Valid explanation") + .explanationCy("Esboniad dilys") .build()), Arrays.asList((CourtFaxDto) null) ); @@ -514,6 +532,130 @@ void postProfessionalInformationNullFaxEntryReturnsBadRequest() throws Exception .andExpect(jsonPath("$['faxNumbers[0]']").value("must not be null")); } + @Test + @DisplayName("POST /courts/{courtId}/v1/professional-information returns 400 when DX explanationCy is missing") + void postProfessionalInformationMissingDxExplanationCyReturnsBadRequest() throws Exception { + CourtProfessionalInformationDetailsDto invalid = buildDetails( + ProfessionalInformationDto.builder() + .interviewRooms(true) + .interviewRoomCount(2) + .interviewPhoneNumber("0207 123 4567") + .videoHearings(true) + .commonPlatform(false) + .accessScheme(true) + .build(), + CourtCodesDto.builder().gbs("123").build(), + List.of(CourtDxCodeDto.builder() + .dxCode("120551 Marylebone 9") + .explanation("Valid explanation") + .build()), + List.of(CourtFaxDto.builder() + .faxNumber("0207 111 1111") + .description("Fax") + .descriptionCy("Ffacs") + .build()) + ); + + mockMvc.perform(post("/courts/{courtId}/v1/professional-information", courtId) + .contentType(MediaType.APPLICATION_JSON) + .content(objectMapper.writeValueAsString(invalid))) + .andExpect(status().isBadRequest()) + .andExpect(jsonPath("$['dxCodes[0].explanationCyPresentWhenExplanationProvided']").exists()); + } + + @Test + @DisplayName("POST /courts/{courtId}/v1/professional-information returns 400 when fax descriptionCy is missing") + void postProfessionalInformationMissingFaxDescriptionCyReturnsBadRequest() throws Exception { + CourtProfessionalInformationDetailsDto invalid = buildDetails( + ProfessionalInformationDto.builder() + .interviewRooms(true) + .interviewRoomCount(2) + .interviewPhoneNumber("0207 123 4567") + .videoHearings(true) + .commonPlatform(false) + .accessScheme(true) + .build(), + CourtCodesDto.builder().gbs("123").build(), + List.of(CourtDxCodeDto.builder() + .dxCode("120551 Marylebone 9") + .explanation("Valid explanation") + .explanationCy("Esboniad dilys") + .build()), + List.of(CourtFaxDto.builder() + .faxNumber("0207 111 1111") + .description("Fax") + .build()) + ); + + mockMvc.perform(post("/courts/{courtId}/v1/professional-information", courtId) + .contentType(MediaType.APPLICATION_JSON) + .content(objectMapper.writeValueAsString(invalid))) + .andExpect(status().isBadRequest()) + .andExpect(jsonPath("$['faxNumbers[0].descriptionCyPresentWhenDescriptionProvided']").exists()); + } + + @Test + @DisplayName("POST /courts/{courtId}/v1/professional-information returns 400 when DX explanation is missing") + void postProfessionalInformationMissingDxExplanationReturnsBadRequest() throws Exception { + CourtProfessionalInformationDetailsDto invalid = buildDetails( + ProfessionalInformationDto.builder() + .interviewRooms(true) + .interviewRoomCount(2) + .interviewPhoneNumber("0207 123 4567") + .videoHearings(true) + .commonPlatform(false) + .accessScheme(true) + .build(), + CourtCodesDto.builder().gbs("123").build(), + List.of(CourtDxCodeDto.builder() + .dxCode("120551 Marylebone 9") + .explanationCy("Esboniad dilys") + .build()), + List.of(CourtFaxDto.builder() + .faxNumber("0207 111 1111") + .description("Fax") + .descriptionCy("Ffacs") + .build()) + ); + + mockMvc.perform(post("/courts/{courtId}/v1/professional-information", courtId) + .contentType(MediaType.APPLICATION_JSON) + .content(objectMapper.writeValueAsString(invalid))) + .andExpect(status().isBadRequest()) + .andExpect(jsonPath("$['dxCodes[0].explanationCyPresentWhenExplanationProvided']").exists()); + } + + @Test + @DisplayName("POST /courts/{courtId}/v1/professional-information returns 400 when fax description is missing") + void postProfessionalInformationMissingFaxDescriptionReturnsBadRequest() throws Exception { + CourtProfessionalInformationDetailsDto invalid = buildDetails( + ProfessionalInformationDto.builder() + .interviewRooms(true) + .interviewRoomCount(2) + .interviewPhoneNumber("0207 123 4567") + .videoHearings(true) + .commonPlatform(false) + .accessScheme(true) + .build(), + CourtCodesDto.builder().gbs("123").build(), + List.of(CourtDxCodeDto.builder() + .dxCode("120551 Marylebone 9") + .explanation("Valid explanation") + .explanationCy("Esboniad dilys") + .build()), + List.of(CourtFaxDto.builder() + .faxNumber("0207 111 1111") + .descriptionCy("Ffacs") + .build()) + ); + + mockMvc.perform(post("/courts/{courtId}/v1/professional-information", courtId) + .contentType(MediaType.APPLICATION_JSON) + .content(objectMapper.writeValueAsString(invalid))) + .andExpect(status().isBadRequest()) + .andExpect(jsonPath("$['faxNumbers[0].descriptionCyPresentWhenDescriptionProvided']").exists()); + } + @Test @DisplayName("POST /courts/{courtId}/v1/professional-information returns 400 for invalid UUID") void postProfessionalInformationInvalidUuid() throws Exception { diff --git a/src/main/java/uk/gov/hmcts/reform/fact/data/api/dto/CourtDxCodeDto.java b/src/main/java/uk/gov/hmcts/reform/fact/data/api/dto/CourtDxCodeDto.java index cdbc3c4b..86e9c70a 100644 --- a/src/main/java/uk/gov/hmcts/reform/fact/data/api/dto/CourtDxCodeDto.java +++ b/src/main/java/uk/gov/hmcts/reform/fact/data/api/dto/CourtDxCodeDto.java @@ -1,6 +1,7 @@ package uk.gov.hmcts.reform.fact.data.api.dto; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.AssertTrue; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Size; @@ -9,6 +10,7 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import org.apache.commons.lang3.StringUtils; import uk.gov.hmcts.reform.fact.data.api.entities.CourtDxCode; import uk.gov.hmcts.reform.fact.data.api.entities.validation.ValidationConstants; @@ -31,10 +33,22 @@ public class CourtDxCodeDto { message = ValidationConstants.GENERIC_DESCRIPTION_REGEX_MESSAGE) private String explanation; + @Schema(description = "Welsh language explanation of the DX code") + @Size(max = 250, message = "DX Welsh explanation must be {max} characters or fewer") + @Pattern(regexp = ValidationConstants.GENERIC_DESCRIPTION_REGEX, + message = ValidationConstants.GENERIC_DESCRIPTION_REGEX_MESSAGE) + private String explanationCy; + + @AssertTrue(message = "DX explanation and Welsh explanation must be provided together") + public boolean isExplanationCyPresentWhenExplanationProvided() { + return StringUtils.isBlank(explanation) == StringUtils.isBlank(explanationCy); + } + public static CourtDxCodeDto fromEntity(CourtDxCode entity) { return CourtDxCodeDto.builder() .dxCode(entity.getDxCode()) .explanation(entity.getExplanation()) + .explanationCy(entity.getExplanationCy()) .build(); } } diff --git a/src/main/java/uk/gov/hmcts/reform/fact/data/api/dto/CourtFaxDto.java b/src/main/java/uk/gov/hmcts/reform/fact/data/api/dto/CourtFaxDto.java index b95c0b19..fe980b6c 100644 --- a/src/main/java/uk/gov/hmcts/reform/fact/data/api/dto/CourtFaxDto.java +++ b/src/main/java/uk/gov/hmcts/reform/fact/data/api/dto/CourtFaxDto.java @@ -1,6 +1,7 @@ package uk.gov.hmcts.reform.fact.data.api.dto; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.AssertTrue; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Size; @@ -9,6 +10,7 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import org.apache.commons.lang3.StringUtils; import uk.gov.hmcts.reform.fact.data.api.entities.CourtFax; import uk.gov.hmcts.reform.fact.data.api.entities.validation.ValidationConstants; @@ -30,10 +32,22 @@ public class CourtFaxDto { message = ValidationConstants.GENERIC_DESCRIPTION_REGEX_MESSAGE) private String description; + @Schema(description = "Welsh language fax description") + @Size(max = 250, message = "Welsh fax description must be {max} characters or fewer") + @Pattern(regexp = ValidationConstants.GENERIC_DESCRIPTION_REGEX, + message = ValidationConstants.GENERIC_DESCRIPTION_REGEX_MESSAGE) + private String descriptionCy; + + @AssertTrue(message = "Fax description and Welsh fax description must be provided together") + public boolean isDescriptionCyPresentWhenDescriptionProvided() { + return StringUtils.isBlank(description) == StringUtils.isBlank(descriptionCy); + } + public static CourtFaxDto fromEntity(CourtFax entity) { return CourtFaxDto.builder() .faxNumber(entity.getFaxNumber()) .description(entity.getDescription()) + .descriptionCy(entity.getDescriptionCy()) .build(); } } diff --git a/src/main/java/uk/gov/hmcts/reform/fact/data/api/entities/CourtDxCode.java b/src/main/java/uk/gov/hmcts/reform/fact/data/api/entities/CourtDxCode.java index b45b8ca7..19bfa99d 100644 --- a/src/main/java/uk/gov/hmcts/reform/fact/data/api/entities/CourtDxCode.java +++ b/src/main/java/uk/gov/hmcts/reform/fact/data/api/entities/CourtDxCode.java @@ -72,4 +72,11 @@ public class CourtDxCode implements AuditableCourtEntity { @Column(length = 250) private String explanation; + @Schema(description = "The Welsh language explanation") + @Size(max = 250) + @Pattern(regexp = ValidationConstants.GENERIC_DESCRIPTION_REGEX, + message = ValidationConstants.GENERIC_DESCRIPTION_REGEX_MESSAGE) + @Column(name = "explanation_cy", length = 250) + private String explanationCy; + } diff --git a/src/main/java/uk/gov/hmcts/reform/fact/data/api/entities/CourtFax.java b/src/main/java/uk/gov/hmcts/reform/fact/data/api/entities/CourtFax.java index 5e90b197..2018cf73 100644 --- a/src/main/java/uk/gov/hmcts/reform/fact/data/api/entities/CourtFax.java +++ b/src/main/java/uk/gov/hmcts/reform/fact/data/api/entities/CourtFax.java @@ -70,4 +70,11 @@ public class CourtFax implements AuditableCourtEntity { @Column(name = "description", length = 250) private String description; + @Schema(description = "Welsh language description") + @Size(max = 250, message = "Welsh fax description must be {max} characters or fewer") + @Pattern(regexp = ValidationConstants.GENERIC_DESCRIPTION_REGEX, + message = ValidationConstants.GENERIC_DESCRIPTION_REGEX_MESSAGE) + @Column(name = "description_cy", length = 250) + private String descriptionCy; + } diff --git a/src/main/java/uk/gov/hmcts/reform/fact/data/api/services/CourtProfessionalInformationService.java b/src/main/java/uk/gov/hmcts/reform/fact/data/api/services/CourtProfessionalInformationService.java index 2288dc8a..70d5e72f 100644 --- a/src/main/java/uk/gov/hmcts/reform/fact/data/api/services/CourtProfessionalInformationService.java +++ b/src/main/java/uk/gov/hmcts/reform/fact/data/api/services/CourtProfessionalInformationService.java @@ -217,6 +217,7 @@ private List replaceCourtDxCodes(UUID courtId, Court court, List replaceCourtFaxNumbers(UUID courtId, Court court, List Date: Tue, 7 Jul 2026 11:38:40 +0100 Subject: [PATCH 2/6] functional test fix --- .../CourtProfessionalInformationControllerFunctionalTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/functionalTest/java/uk/gov/hmcts/reform/fact/functional/controllers/CourtProfessionalInformationControllerFunctionalTest.java b/src/functionalTest/java/uk/gov/hmcts/reform/fact/functional/controllers/CourtProfessionalInformationControllerFunctionalTest.java index 84eca715..05dd7f66 100644 --- a/src/functionalTest/java/uk/gov/hmcts/reform/fact/functional/controllers/CourtProfessionalInformationControllerFunctionalTest.java +++ b/src/functionalTest/java/uk/gov/hmcts/reform/fact/functional/controllers/CourtProfessionalInformationControllerFunctionalTest.java @@ -204,6 +204,7 @@ void shouldUpdateExistingProfessionalInformation() throws Exception { final CourtDxCodeDto updatedDxCode = new CourtDxCodeDto(); updatedDxCode.setDxCode("999999 Updated 1"); updatedDxCode.setExplanation("Updated explanation"); + updatedDxCode.setExplanationCy("Updated Welsh explanation"); final CourtProfessionalInformationDetailsDto updatedDetails = new CourtProfessionalInformationDetailsDto(); From 7abbe73a94ca857935eb06b95ab1400c99c9241e Mon Sep 17 00:00:00 2001 From: debolina-seal Date: Tue, 7 Jul 2026 12:22:08 +0100 Subject: [PATCH 3/6] functional test fix --- .../CourtProfessionalInformationControllerFunctionalTest.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/functionalTest/java/uk/gov/hmcts/reform/fact/functional/controllers/CourtProfessionalInformationControllerFunctionalTest.java b/src/functionalTest/java/uk/gov/hmcts/reform/fact/functional/controllers/CourtProfessionalInformationControllerFunctionalTest.java index 05dd7f66..a164c683 100644 --- a/src/functionalTest/java/uk/gov/hmcts/reform/fact/functional/controllers/CourtProfessionalInformationControllerFunctionalTest.java +++ b/src/functionalTest/java/uk/gov/hmcts/reform/fact/functional/controllers/CourtProfessionalInformationControllerFunctionalTest.java @@ -64,18 +64,22 @@ void shouldCreateProfessionalInformationWithAllValidFields() throws Exception { final CourtDxCodeDto dxCode1 = new CourtDxCodeDto(); dxCode1.setDxCode("120551 Marylebone 9"); dxCode1.setExplanation("(County Court) primary"); + dxCode1.setExplanationCy("(FamilyCourt) primary"); final CourtDxCodeDto dxCode2 = new CourtDxCodeDto(); dxCode2.setDxCode("703360 Hanley 3"); dxCode2.setExplanation("(Crown Court) secondary"); + dxCode2.setExplanationCy("(FamilyCourt) secondary"); final CourtFaxDto fax1 = new CourtFaxDto(); fax1.setFaxNumber("0207 222 3333"); fax1.setDescription("General enquiries"); + fax1.setDescriptionCy("Ymholiadau cyffredinol"); final CourtFaxDto fax2 = new CourtFaxDto(); fax2.setFaxNumber("0207 444 5555"); fax2.setDescription("Urgent matters"); + fax2.setDescriptionCy("Ymholiadau cyffredinol"); final CourtProfessionalInformationDetailsDto professionalInfoDetails = new CourtProfessionalInformationDetailsDto(); From 713956144750cf1b0233a2a75edb8b6b5f043d89 Mon Sep 17 00:00:00 2001 From: debolina-seal Date: Tue, 7 Jul 2026 17:37:42 +0100 Subject: [PATCH 4/6] testing support change --- .gitignore | 1 + .../reform/fact/data/api/services/TestingSupportService.java | 2 ++ 2 files changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 4af56c94..ff8d42ba 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,7 @@ applicationinsights-agent-*.jar *.log .env +.env-test AGENTS.md scripts/ diff --git a/src/main/java/uk/gov/hmcts/reform/fact/data/api/services/TestingSupportService.java b/src/main/java/uk/gov/hmcts/reform/fact/data/api/services/TestingSupportService.java index a0365f55..7eed72a4 100644 --- a/src/main/java/uk/gov/hmcts/reform/fact/data/api/services/TestingSupportService.java +++ b/src/main/java/uk/gov/hmcts/reform/fact/data/api/services/TestingSupportService.java @@ -453,6 +453,8 @@ private void setAccessibilityOptions(final UUID courtId, final Random random) { HearingEnhancementEquipment.values().length)]) .accessibleToiletDescription(ACCESSIBLE_TOILET_DESCRIPTIONS.get(random.nextInt( ACCESSIBLE_TOILET_DESCRIPTIONS.size()))) + .accessibleToiletDescriptionCy(ACCESSIBLE_TOILET_DESCRIPTIONS.get(random.nextInt( + ACCESSIBLE_TOILET_DESCRIPTIONS.size()))) .build(); if (!courtAccessibilityOptions.getAccessibleEntrance().booleanValue()) { From add301e5e5d70dccd199d3d003b923b44b952c2d Mon Sep 17 00:00:00 2001 From: debolina-seal Date: Wed, 8 Jul 2026 10:31:23 +0100 Subject: [PATCH 5/6] testing support change --- .../reform/fact/data/api/services/TestingSupportService.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/uk/gov/hmcts/reform/fact/data/api/services/TestingSupportService.java b/src/main/java/uk/gov/hmcts/reform/fact/data/api/services/TestingSupportService.java index 7eed72a4..ef68adf8 100644 --- a/src/main/java/uk/gov/hmcts/reform/fact/data/api/services/TestingSupportService.java +++ b/src/main/java/uk/gov/hmcts/reform/fact/data/api/services/TestingSupportService.java @@ -777,7 +777,6 @@ private List createDxCodes(final Random random) { if (random.nextBoolean()) { CourtDxCodeDto code = CourtDxCodeDto.builder() .dxCode(rndAlphaNumeric(6, random)) - .explanation(COURT_TYPES.stream().findAny().map(CourtType::getName).orElse("General") + " DX code") .build(); dxCodes.add(code); } @@ -792,7 +791,6 @@ private List createFaxNumbers(final Random random) { faxNumbers.add( CourtFaxDto.builder() .faxNumber(rndPhoneNumber(random)) - .description(i == 0 ? "Fax number" : "Urgent documents fax number") .build() ); } From 5e9bef585ac5e90be4a4d46cd7185dc490a04e4a Mon Sep 17 00:00:00 2001 From: debolina-seal Date: Wed, 8 Jul 2026 17:02:26 +0100 Subject: [PATCH 6/6] Addressing RC --- ...act_description_type_and_misc_name_cy.sql} | 56 +++++++++++++++++++ ...add_welsh_translations_for_court_types.sql | 15 ----- ...1.42__update_area_of_law_types_name_cy.sql | 33 ----------- ...1.43__add_welsh_columns_for_dx_and_fax.sql | 6 -- 4 files changed, 56 insertions(+), 54 deletions(-) rename src/main/resources/db/migration/{V1.40__update_contact_description_type_name_cy.sql => V1.40__update_contact_description_type_and_misc_name_cy.sql} (82%) delete mode 100644 src/main/resources/db/migration/V1.41__add_welsh_translations_for_court_types.sql delete mode 100644 src/main/resources/db/migration/V1.42__update_area_of_law_types_name_cy.sql delete mode 100644 src/main/resources/db/migration/V1.43__add_welsh_columns_for_dx_and_fax.sql diff --git a/src/main/resources/db/migration/V1.40__update_contact_description_type_name_cy.sql b/src/main/resources/db/migration/V1.40__update_contact_description_type_and_misc_name_cy.sql similarity index 82% rename from src/main/resources/db/migration/V1.40__update_contact_description_type_name_cy.sql rename to src/main/resources/db/migration/V1.40__update_contact_description_type_and_misc_name_cy.sql index fe2b6b20..6d252547 100644 --- a/src/main/resources/db/migration/V1.40__update_contact_description_type_name_cy.sql +++ b/src/main/resources/db/migration/V1.40__update_contact_description_type_and_misc_name_cy.sql @@ -134,3 +134,59 @@ FROM ( ('Transcripts', 'Trawsgrifiadau') ) AS v(name, name_cy) WHERE cdt.name = v.name; + +ALTER TABLE court_types + ADD COLUMN IF NOT EXISTS name_cy VARCHAR; + +UPDATE court_types ct +SET name_cy = v.name_cy + FROM ( + VALUES + ('Magistrates'' Court', 'Llys Ynadon'), + ('Family Court', 'Llys Teulu'), + ('Tribunal', 'Tribiwnlys'), + ('County Court', 'Llys Sirol'), + ('Crown Court', 'Llys y Goron') +) AS v(name, name_cy) +WHERE ct.name = v.name; + +UPDATE area_of_law_types aolt +SET name_cy = v.name_cy + FROM ( + VALUES + ('Divorce', 'Ysgariad'), + ('Civil partnership', 'Partneriaeth sifil'), + ('High Court District Registry', 'Cofrestrfa Ddosbarth yr Uchel Lys'), + ('Adoption', 'Mabwysiadu'), + ('Social security', 'Nawdd Cymdeithasol'), + ('Housing possession', 'Meddiannu eiddo'), + ('Money claims', 'Hawliadau am arian'), + ('Employment', 'Cyflogaeth'), + ('Tax', 'Treth'), + ('Children', 'Plant'), + ('Domestic violence', 'Trais domestig'), + ('Crime', 'Trosedd'), + ('Civil', 'Sifil'), + ('Single justice procedure', 'Y Weithdrefn Un Ynad'), + ('High Court', 'Yr Uchel Lys'), + ('Court Of Appeal', 'Y Llys Apêl'), + ('Financial Remedy', 'Rhwymedi Ariannol'), + ('Business and Property', 'Busnes ac Eiddo'), + ('Bankruptcy', 'Methdaliad'), + ('Immigration', 'Mewnfudo'), + ('Probate', 'Profiant'), + ('Forced marriage', 'Priodas dan orfod'), + ('FGM', 'Anffurfio Organau Cenhedlu Benywod (FGM)'), + ('Pathfinder – for Private Law Proceedings', 'Cynllun Braenaru – ar gyfer Achosion Cyfraith Breifat'), + ('Domestic Abuse Protection Order (DAPOs)', 'Gorchymyn Diogelu Rhag Cam-drin Domestig (DAPOs)'), + ('Benefits', 'Budd-daliadau') +) AS v(name, name_cy) +WHERE aolt.name = v.name; + +ALTER TABLE court_dxcodes + ADD COLUMN IF NOT EXISTS explanation_cy VARCHAR(250); + +ALTER TABLE court_fax + ADD COLUMN IF NOT EXISTS description_cy VARCHAR(250); + + diff --git a/src/main/resources/db/migration/V1.41__add_welsh_translations_for_court_types.sql b/src/main/resources/db/migration/V1.41__add_welsh_translations_for_court_types.sql deleted file mode 100644 index a43aa34a..00000000 --- a/src/main/resources/db/migration/V1.41__add_welsh_translations_for_court_types.sql +++ /dev/null @@ -1,15 +0,0 @@ -ALTER TABLE court_types - ADD COLUMN IF NOT EXISTS name_cy VARCHAR; - -UPDATE court_types ct -SET name_cy = v.name_cy -FROM ( - VALUES - ('Magistrates'' Court', 'Llys Ynadon'), - ('Family Court', 'Llys Teulu'), - ('Tribunal', 'Tribiwnlys'), - ('County Court', 'Llys Sirol'), - ('Crown Court', 'Llys y Goron') -) AS v(name, name_cy) -WHERE ct.name = v.name; - diff --git a/src/main/resources/db/migration/V1.42__update_area_of_law_types_name_cy.sql b/src/main/resources/db/migration/V1.42__update_area_of_law_types_name_cy.sql deleted file mode 100644 index 77ff4087..00000000 --- a/src/main/resources/db/migration/V1.42__update_area_of_law_types_name_cy.sql +++ /dev/null @@ -1,33 +0,0 @@ -UPDATE area_of_law_types aolt -SET name_cy = v.name_cy -FROM ( - VALUES - ('Divorce', 'Ysgariad'), - ('Civil partnership', 'Partneriaeth sifil'), - ('High Court District Registry', 'Cofrestrfa Ddosbarth yr Uchel Lys'), - ('Adoption', 'Mabwysiadu'), - ('Social security', 'Nawdd Cymdeithasol'), - ('Housing possession', 'Meddiannu eiddo'), - ('Money claims', 'Hawliadau am arian'), - ('Employment', 'Cyflogaeth'), - ('Tax', 'Treth'), - ('Children', 'Plant'), - ('Domestic violence', 'Trais domestig'), - ('Crime', 'Trosedd'), - ('Civil', 'Sifil'), - ('Single justice procedure', 'Y Weithdrefn Un Ynad'), - ('High Court', 'Yr Uchel Lys'), - ('Court Of Appeal', 'Y Llys Apêl'), - ('Financial Remedy', 'Rhwymedi Ariannol'), - ('Business and Property', 'Busnes ac Eiddo'), - ('Bankruptcy', 'Methdaliad'), - ('Immigration', 'Mewnfudo'), - ('Probate', 'Profiant'), - ('Forced marriage', 'Priodas dan orfod'), - ('FGM', 'Anffurfio Organau Cenhedlu Benywod (FGM)'), - ('Pathfinder – for Private Law Proceedings', 'Cynllun Braenaru – ar gyfer Achosion Cyfraith Breifat'), - ('Domestic Abuse Protection Order (DAPOs)', 'Gorchymyn Diogelu Rhag Cam-drin Domestig (DAPOs)'), - ('Benefits', 'Budd-daliadau') -) AS v(name, name_cy) -WHERE aolt.name = v.name; - diff --git a/src/main/resources/db/migration/V1.43__add_welsh_columns_for_dx_and_fax.sql b/src/main/resources/db/migration/V1.43__add_welsh_columns_for_dx_and_fax.sql deleted file mode 100644 index 286d1137..00000000 --- a/src/main/resources/db/migration/V1.43__add_welsh_columns_for_dx_and_fax.sql +++ /dev/null @@ -1,6 +0,0 @@ -ALTER TABLE court_dxcodes - ADD COLUMN IF NOT EXISTS explanation_cy VARCHAR(250); - -ALTER TABLE court_fax - ADD COLUMN IF NOT EXISTS description_cy VARCHAR(250); -