From 67f9aae1e8f869fb1e35b2bfb35ef898b2c7f7ab Mon Sep 17 00:00:00 2001 From: Peter Wilson <40563223+peter-bcl@users.noreply.github.com> Date: Wed, 5 Mar 2025 13:23:34 +0000 Subject: [PATCH] BR-20 - Warning Details and Warning Type Changes BR-20 - Warning Details and Warning Type Changes --- .../breachnoticeapi/entity/BreachNoticeEntity.kt | 1 + .../entity/BreachNoticeRequirementEntity.kt | 3 +++ .../hmpps/breachnoticeapi/model/BreachNotice.kt | 1 + .../breachnoticeapi/model/BreachNoticeDetails.kt | 3 ++- .../breachnoticeapi/model/BreachNoticeRequirement.kt | 5 +++-- .../breachnoticeapi/service/BreachNoticeService.kt | 11 ++++++++++- .../db/migration/V1_2__requirement_date_range.sql | 3 +++ .../db/migration/V1_3__condition_being_enforced.sql | 1 + src/main/resources/templates/NAT_Breach_Template.html | 2 +- 9 files changed, 25 insertions(+), 5 deletions(-) create mode 100644 src/main/resources/db/migration/V1_2__requirement_date_range.sql create mode 100644 src/main/resources/db/migration/V1_3__condition_being_enforced.sql diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/breachnoticeapi/entity/BreachNoticeEntity.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/breachnoticeapi/entity/BreachNoticeEntity.kt index 9584f25..afb1348 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/breachnoticeapi/entity/BreachNoticeEntity.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/breachnoticeapi/entity/BreachNoticeEntity.kt @@ -68,4 +68,5 @@ data class BreachNoticeEntity( val breachNoticeRequirementList: List = emptyList(), var optionalNumberChecked: Boolean? = null, var optionalNumber: String? = null, + val conditionBeingEnforced: String? = null, ) diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/breachnoticeapi/entity/BreachNoticeRequirementEntity.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/breachnoticeapi/entity/BreachNoticeRequirementEntity.kt index 7d8e695..02f7189 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/breachnoticeapi/entity/BreachNoticeRequirementEntity.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/breachnoticeapi/entity/BreachNoticeRequirementEntity.kt @@ -12,6 +12,7 @@ import org.springframework.data.annotation.CreatedDate import org.springframework.data.annotation.LastModifiedBy import org.springframework.data.annotation.LastModifiedDate import org.springframework.data.jpa.domain.support.AuditingEntityListener +import java.time.LocalDate import java.time.LocalDateTime import java.util.* @@ -29,6 +30,8 @@ data class BreachNoticeRequirementEntity( val requirementTypeMainCategoryDescription: String? = null, val requirementTypeSubCategoryDescription: String? = null, val rejectionReason: String? = null, + val fromDate: LocalDate? = null, + val toDate: LocalDate? = null, @CreatedBy var createdByUser: String? = null, @CreatedDate diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/breachnoticeapi/model/BreachNotice.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/breachnoticeapi/model/BreachNotice.kt index d8803b7..d5f30b4 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/breachnoticeapi/model/BreachNotice.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/breachnoticeapi/model/BreachNotice.kt @@ -41,4 +41,5 @@ data class BreachNotice( val breachNoticeRequirementList: List = emptyList(), val optionalNumberChecked: Boolean? = null, val optionalNumber: String? = null, + val conditionBeingEnforced: String? = null, ) diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/breachnoticeapi/model/BreachNoticeDetails.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/breachnoticeapi/model/BreachNoticeDetails.kt index 781c8b3..e51a9d3 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/breachnoticeapi/model/BreachNoticeDetails.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/breachnoticeapi/model/BreachNoticeDetails.kt @@ -12,7 +12,7 @@ data class BreachNoticeDetails( val titleAndFullName: String? = null, val dateOfLetter: LocalDate? = null, val referenceNumber: String? = null, - val responseRequiredByDate: LocalDate? = null, + val responseRequiredDate: LocalDate? = null, val breachNoticeTypeCode: String? = null, val breachNoticeTypeDescription: String? = null, val breachConditionTypeCode: String? = null, @@ -41,4 +41,5 @@ data class BreachNoticeDetails( val breachNoticeRequirementList: List = emptyList(), val optionalNumberChecked: Boolean? = null, val optionalNumber: String? = null, + val conditionBeingEnforced: String? = null, ) diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/breachnoticeapi/model/BreachNoticeRequirement.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/breachnoticeapi/model/BreachNoticeRequirement.kt index 3ba8302..1f102db 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/breachnoticeapi/model/BreachNoticeRequirement.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/breachnoticeapi/model/BreachNoticeRequirement.kt @@ -1,5 +1,6 @@ package uk.gov.justice.digital.hmpps.breachnoticeapi.model +import java.time.LocalDate import java.util.* data class BreachNoticeRequirement( @@ -8,6 +9,6 @@ data class BreachNoticeRequirement( val requirementTypeMainCategoryDescription: String? = null, val requirementTypeSubCategoryDescription: String? = null, val rejectionReason: String? = null, - val fromDate: String? = null, - val toDate: String? = null, + val fromDate: LocalDate? = null, + val toDate: LocalDate? = null, ) diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/breachnoticeapi/service/BreachNoticeService.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/breachnoticeapi/service/BreachNoticeService.kt index 368c28a..da1ad4e 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/breachnoticeapi/service/BreachNoticeService.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/breachnoticeapi/service/BreachNoticeService.kt @@ -77,6 +77,7 @@ class BreachNoticeService( nextAppointmentSaved = nextAppointmentSaved, useDefaultAddress = useDefaultAddress, useDefaultReplyAddress = useDefaultReplyAddress, + conditionBeingEnforced = conditionBeingEnforced, breachNoticeContactList = breachNoticeContactList.map { it.toEntity( existingEntity.breachNoticeContactList.find { existingContactEnitiy -> @@ -160,6 +161,7 @@ class BreachNoticeService( breachNoticeRequirementList = breachNoticeRequirementList.map { it.toModel() }, optionalNumberChecked = optionalNumberChecked, optionalNumber = optionalNumber, + conditionBeingEnforced = conditionBeingEnforced, ) fun getBreachNoticeById(uuid: UUID) = breachNoticeRepository.findById(uuid).getOrNull()?.let { @@ -169,7 +171,7 @@ class BreachNoticeService( titleAndFullName = it.titleAndFullName, dateOfLetter = it.dateOfLetter, referenceNumber = it.referenceNumber, - responseRequiredByDate = it.responseRequiredDate, + responseRequiredDate = it.responseRequiredDate, breachNoticeTypeCode = it.breachNoticeTypeCode, breachNoticeTypeDescription = it.breachNoticeTypeDescription, breachConditionTypeCode = it.breachConditionTypeCode, @@ -196,6 +198,7 @@ class BreachNoticeService( breachNoticeRequirementList = it.breachNoticeRequirementList.map { it.toModel() }, optionalNumberChecked = it.optionalNumberChecked, optionalNumber = it.optionalNumber, + conditionBeingEnforced = it.conditionBeingEnforced, ) } @@ -258,6 +261,8 @@ class BreachNoticeService( requirementTypeMainCategoryDescription = requirementTypeMainCategoryDescription, requirementTypeSubCategoryDescription = requirementTypeSubCategoryDescription, rejectionReason = rejectionReason, + fromDate = fromDate, + toDate = toDate, ) private fun BreachNoticeRequirement.toEntity(existingEntity: BreachNoticeRequirementEntity? = null) = existingEntity?.copy( @@ -265,11 +270,15 @@ class BreachNoticeService( requirementTypeMainCategoryDescription = requirementTypeMainCategoryDescription, requirementTypeSubCategoryDescription = requirementTypeSubCategoryDescription, rejectionReason = rejectionReason, + fromDate = fromDate, + toDate = toDate, ) ?: BreachNoticeRequirementEntity( requirementId = requirementId, requirementTypeMainCategoryDescription = requirementTypeMainCategoryDescription, requirementTypeSubCategoryDescription = requirementTypeSubCategoryDescription, rejectionReason = rejectionReason, + fromDate = fromDate, + toDate = toDate, ) fun getBreachNoticeAsPdf(id: UUID, breachNoticeDetails: BreachNoticeDetails?, draft: Boolean): ByteArray? { diff --git a/src/main/resources/db/migration/V1_2__requirement_date_range.sql b/src/main/resources/db/migration/V1_2__requirement_date_range.sql new file mode 100644 index 0000000..19413bb --- /dev/null +++ b/src/main/resources/db/migration/V1_2__requirement_date_range.sql @@ -0,0 +1,3 @@ +ALTER TABLE public.breach_notice_requirement ADD from_date timestamp without time zone NULL; +ALTER TABLE public.breach_notice_requirement ADD to_date timestamp without time zone NULL; + diff --git a/src/main/resources/db/migration/V1_3__condition_being_enforced.sql b/src/main/resources/db/migration/V1_3__condition_being_enforced.sql new file mode 100644 index 0000000..063ce49 --- /dev/null +++ b/src/main/resources/db/migration/V1_3__condition_being_enforced.sql @@ -0,0 +1 @@ +ALTER TABLE public.breach_notice ADD condition_being_enforced varchar(200) NULL; \ No newline at end of file diff --git a/src/main/resources/templates/NAT_Breach_Template.html b/src/main/resources/templates/NAT_Breach_Template.html index abf16b6..77c46de 100644 --- a/src/main/resources/templates/NAT_Breach_Template.html +++ b/src/main/resources/templates/NAT_Breach_Template.html @@ -230,7 +230,7 @@

You must contact me immediately to explain your reason (s) AND provide me with acceptable -supporting evidence for your breach, by {responseDate}. If +supporting evidence for your breach, by {responseDate}. If you do not provide me with an acceptable reason and acceptable supporting evidence by this date, your failure to comply will remain as a breach of this Order.