From 791c47e8738f157a665b9f5ca17d3d9c635bbdc2 Mon Sep 17 00:00:00 2001 From: BushraAbdullahi Date: Fri, 7 Mar 2025 11:12:47 +0000 Subject: [PATCH 1/5] change model names to adhere to naming convention --- .../gateways/PersonalRelationshipsGateway.kt | 6 +++--- .../{LinkedPrisoner.kt => PRLinkedPrisoner.kt} | 0 ...Response.kt => PRPrisonerContactRestrictionsResponse.kt} | 2 +- .../services/GetVisitorRestrictionsServiceTest.kt | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) rename src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/{LinkedPrisoner.kt => PRLinkedPrisoner.kt} (100%) rename src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/{PrisonerContactRestrictionsResponse.kt => PRPrisonerContactRestrictionsResponse.kt} (83%) diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/PersonalRelationshipsGateway.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/PersonalRelationshipsGateway.kt index 845c4c1ce..16bbf5e7a 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/PersonalRelationshipsGateway.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/PersonalRelationshipsGateway.kt @@ -13,7 +13,7 @@ import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.LinkedPrisoner import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRDetailedContact import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRPaginatedPrisonerContacts -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PrisonerContactRestrictionsResponse +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRPrisonerContactRestrictionsResponse @Component class PersonalRelationshipsGateway( @@ -48,9 +48,9 @@ class PersonalRelationshipsGateway( } } - fun getPrisonerContactRestrictions(prisonerContactId: Long): Response { + fun getPrisonerContactRestrictions(prisonerContactId: Long): Response { val result = - webClient.request( + webClient.request( HttpMethod.GET, "/prisoner-contact/$prisonerContactId/restriction", authenticationHeader(), diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/LinkedPrisoner.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRLinkedPrisoner.kt similarity index 100% rename from src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/LinkedPrisoner.kt rename to src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRLinkedPrisoner.kt diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PrisonerContactRestrictionsResponse.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRPrisonerContactRestrictionsResponse.kt similarity index 83% rename from src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PrisonerContactRestrictionsResponse.kt rename to src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRPrisonerContactRestrictionsResponse.kt index b3599eed8..48d460c3f 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PrisonerContactRestrictionsResponse.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRPrisonerContactRestrictionsResponse.kt @@ -1,6 +1,6 @@ package uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships -data class PrisonerContactRestrictionsResponse( +data class PRPrisonerContactRestrictionsResponse( var prisonerContactRestrictions: MutableList? = mutableListOf(), var contactGlobalRestrictions: List? = listOf(), ) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/GetVisitorRestrictionsServiceTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/GetVisitorRestrictionsServiceTest.kt index 2d54f0be0..a6081d3e7 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/GetVisitorRestrictionsServiceTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/GetVisitorRestrictionsServiceTest.kt @@ -17,9 +17,9 @@ import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.ContactGlobalRestriction import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.LinkedPrisoner import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.LinkedPrisonerRelationship +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRPrisonerContactRestrictionsResponse import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PrisonerContactRestriction import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PrisonerContactRestrictions -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PrisonerContactRestrictionsResponse import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.prisoneroffendersearch.POSPrisoner import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.roleconfig.ConsumerFilters @@ -96,7 +96,7 @@ class GetVisitorRestrictionsServiceTest( updatedTime = "2024-01-02T12:00:00Z", ) - val prisonerContactRestrictions = PrisonerContactRestrictionsResponse(prisonerContactRestrictionsResponse, listOf(contactGlobalRestrictionsResponse)) + val prisonerContactRestrictions = PRPrisonerContactRestrictionsResponse(prisonerContactRestrictionsResponse, listOf(contactGlobalRestrictionsResponse)) beforeEach { Mockito.reset(personalRelationshipsGateway) Mockito.reset(getPersonService) From 08b88245d67e548a20f4179e6a6128d6627e45b3 Mon Sep 17 00:00:00 2001 From: BushraAbdullahi Date: Fri, 7 Mar 2025 12:10:25 +0000 Subject: [PATCH 2/5] update class names --- .../v1/person/VisitRestrictionsController.kt | 4 ++-- .../gateways/PersonalRelationshipsGateway.kt | 10 ++++----- .../personalRelationships/PRLinkedPrisoner.kt | 2 +- ...ns.kt => PRPrisonerContactRestrictions.kt} | 10 ++++----- .../PRPrisonerContactRestrictionsResponse.kt | 4 ++-- .../services/GetVisitorRestrictionsService.kt | 8 +++---- .../person/VisitRestrictionsControllerTest.kt | 12 +++++----- .../GetVisitorRestrictionsServiceTest.kt | 22 +++++++++---------- 8 files changed, 36 insertions(+), 36 deletions(-) rename src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/{PrisonerContactRestrictions.kt => PRPrisonerContactRestrictions.kt} (83%) diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/controllers/v1/person/VisitRestrictionsController.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/controllers/v1/person/VisitRestrictionsController.kt index 5c4e90057..e0a85285c 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/controllers/v1/person/VisitRestrictionsController.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/controllers/v1/person/VisitRestrictionsController.kt @@ -17,7 +17,7 @@ import uk.gov.justice.digital.hmpps.hmppsintegrationapi.exception.EntityNotFound import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.DataResponse import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.PersonVisitRestriction import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PrisonerContactRestrictions +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRPrisonerContactRestrictions import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.roleconfig.ConsumerFilters import uk.gov.justice.digital.hmpps.hmppsintegrationapi.services.GetVisitRestrictionsForPersonService import uk.gov.justice.digital.hmpps.hmppsintegrationapi.services.GetVisitorRestrictionsService @@ -74,7 +74,7 @@ class VisitRestrictionsController( @Parameter(description = "A HMPPS identifier") @PathVariable hmppsId: String, @Parameter(description = "A contact ID") @PathVariable contactId: String, @RequestAttribute filters: ConsumerFilters?, - ): DataResponse { + ): DataResponse { val stringifiedContactId = contactId.toLongOrNull() ?: throw ValidationException("Invalid contact ID") val response = getVisitorRestrictionsService.execute(hmppsId, stringifiedContactId, filters) diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/PersonalRelationshipsGateway.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/PersonalRelationshipsGateway.kt index 16bbf5e7a..40c4f44ea 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/PersonalRelationshipsGateway.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/PersonalRelationshipsGateway.kt @@ -10,8 +10,8 @@ import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.WebClientWrap import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.WebClientWrapper.WebClientWrapperResponse import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.Response import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.LinkedPrisoner import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRDetailedContact +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRLinkedPrisoner import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRPaginatedPrisonerContacts import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRPrisonerContactRestrictionsResponse @@ -25,9 +25,9 @@ class PersonalRelationshipsGateway( @Autowired lateinit var hmppsAuthGateway: HmppsAuthGateway - fun getLinkedPrisoner(contactId: Long): Response> { + fun getLinkedPrisoner(contactId: Long): Response> { val result = - webClient.request>( + webClient.request>( HttpMethod.GET, "/contact/$contactId/linked-prisoners", authenticationHeader(), @@ -129,8 +129,8 @@ class PersonalRelationshipsGateway( } } - fun mapToLinkedPrisoner(result: WebClientWrapper.WebClientWrapperResponse.Success>): List { - val mappedResult: List = mapper.convertValue(result.data, object : TypeReference>() {}) + fun mapToLinkedPrisoner(result: WebClientWrapper.WebClientWrapperResponse.Success>): List { + val mappedResult: List = mapper.convertValue(result.data, object : TypeReference>() {}) return mappedResult } diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRLinkedPrisoner.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRLinkedPrisoner.kt index ba7528d31..da19e6a0d 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRLinkedPrisoner.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRLinkedPrisoner.kt @@ -3,7 +3,7 @@ package uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelation import com.fasterxml.jackson.annotation.JsonProperty import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.interfaces.IRelationship -data class LinkedPrisoner( +data class PRLinkedPrisoner( @JsonProperty("prisonerNumber") val prisonerNumber: String, @JsonProperty("lastName") diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PrisonerContactRestrictions.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRPrisonerContactRestrictions.kt similarity index 83% rename from src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PrisonerContactRestrictions.kt rename to src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRPrisonerContactRestrictions.kt index 05d6d600f..a6499d472 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PrisonerContactRestrictions.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRPrisonerContactRestrictions.kt @@ -2,12 +2,12 @@ package uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelation import com.fasterxml.jackson.annotation.JsonProperty -data class PrisonerContactRestrictions( - var prisonerContactRestrictions: MutableList? = mutableListOf(), - var contactGlobalRestrictions: ContactGlobalRestriction? = null, +data class PRPrisonerContactRestrictions( + var prisonerContactRestrictions: MutableList? = mutableListOf(), + var contactGlobalRestrictions: PRContactGlobalRestriction? = null, ) -data class PrisonerContactRestriction( +data class PRPrisonerContactRestriction( val prisonerContactRestrictionId: Long, val prisonerContactId: Long, val contactId: Long, @@ -25,7 +25,7 @@ data class PrisonerContactRestriction( val updatedTime: String, ) -data class ContactGlobalRestriction( +data class PRContactGlobalRestriction( @JsonProperty("contactRestrictionId") val contactRestrictionId: Long, @JsonProperty("contactId") diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRPrisonerContactRestrictionsResponse.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRPrisonerContactRestrictionsResponse.kt index 48d460c3f..8d66f50b8 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRPrisonerContactRestrictionsResponse.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRPrisonerContactRestrictionsResponse.kt @@ -1,6 +1,6 @@ package uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships data class PRPrisonerContactRestrictionsResponse( - var prisonerContactRestrictions: MutableList? = mutableListOf(), - var contactGlobalRestrictions: List? = listOf(), + var prisonerContactRestrictions: MutableList? = mutableListOf(), + var contactGlobalRestrictions: List? = listOf(), ) diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/GetVisitorRestrictionsService.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/GetVisitorRestrictionsService.kt index dd157ff83..36d3845b7 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/GetVisitorRestrictionsService.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/GetVisitorRestrictionsService.kt @@ -7,7 +7,7 @@ import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.PersonalRelatio import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.Response import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PrisonerContactRestrictions +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRPrisonerContactRestrictions import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.roleconfig.ConsumerFilters @Service @@ -20,7 +20,7 @@ class GetVisitorRestrictionsService( hmppsId: String, contactId: Long, filters: ConsumerFilters?, - ): Response { + ): Response { val personResponse = getPersonService.getPrisoner(hmppsId, filters) if (personResponse.errors.isNotEmpty()) { @@ -28,7 +28,7 @@ class GetVisitorRestrictionsService( } val prisonId = personResponse.data?.prisonId - val consumerPrisonFilterCheck = consumerPrisonAccessService.checkConsumerHasPrisonAccess(prisonId, filters) + val consumerPrisonFilterCheck = consumerPrisonAccessService.checkConsumerHasPrisonAccess(prisonId, filters) if (consumerPrisonFilterCheck.errors.isNotEmpty()) { return consumerPrisonFilterCheck } @@ -47,7 +47,7 @@ class GetVisitorRestrictionsService( val linkedPrisonerIds = linkedPrisoner.relationships?.map { it.prisonerContactId } - val restrictionsResult = PrisonerContactRestrictions() + val restrictionsResult = PRPrisonerContactRestrictions() if (linkedPrisonerIds != null) { for (prisonerContactId in linkedPrisonerIds) { val gatewayResult = personalRelationshipsGateway.getPrisonerContactRestrictions(prisonerContactId!!) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/controllers/v1/person/VisitRestrictionsControllerTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/controllers/v1/person/VisitRestrictionsControllerTest.kt index 5729bc58c..c3e059a67 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/controllers/v1/person/VisitRestrictionsControllerTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/controllers/v1/person/VisitRestrictionsControllerTest.kt @@ -19,9 +19,9 @@ import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.PersonVisit import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.Response import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.ContactGlobalRestriction -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PrisonerContactRestriction -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PrisonerContactRestrictions +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRContactGlobalRestriction +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRPrisonerContactRestriction +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRPrisonerContactRestrictions import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.roleconfig.ConsumerFilters import uk.gov.justice.digital.hmpps.hmppsintegrationapi.services.GetVisitRestrictionsForPersonService import uk.gov.justice.digital.hmpps.hmppsintegrationapi.services.GetVisitorRestrictionsService @@ -43,7 +43,7 @@ internal class VisitRestrictionsControllerTest( val restrictionsPath = "/v1/persons/$hmppsId/visitor/$contactId/restrictions" val prisonerContactRestrictionsResponse = mutableListOf( - PrisonerContactRestriction( + PRPrisonerContactRestriction( prisonerContactRestrictionId = 123456L, prisonerContactId = 123456L, contactId = 123456L, @@ -63,7 +63,7 @@ internal class VisitRestrictionsControllerTest( ) val contactGlobalRestrictionsResponse = - ContactGlobalRestriction( + PRContactGlobalRestriction( contactRestrictionId = 1L, contactId = 123L, restrictionType = "BAN", @@ -79,7 +79,7 @@ internal class VisitRestrictionsControllerTest( updatedTime = "2024-01-02T12:00:00Z", ) - val prisonerContactRestrictions = PrisonerContactRestrictions(prisonerContactRestrictionsResponse, contactGlobalRestrictionsResponse) + val prisonerContactRestrictions = PRPrisonerContactRestrictions(prisonerContactRestrictionsResponse, contactGlobalRestrictionsResponse) val mockMvc = IntegrationAPIMockMvc(springMockMvc) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/GetVisitorRestrictionsServiceTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/GetVisitorRestrictionsServiceTest.kt index a6081d3e7..33fcc714f 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/GetVisitorRestrictionsServiceTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/GetVisitorRestrictionsServiceTest.kt @@ -14,12 +14,12 @@ import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.PersonalRelatio import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.Response import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.ContactGlobalRestriction -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.LinkedPrisoner import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.LinkedPrisonerRelationship +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRContactGlobalRestriction +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRLinkedPrisoner +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRPrisonerContactRestriction +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRPrisonerContactRestrictions import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRPrisonerContactRestrictionsResponse -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PrisonerContactRestriction -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PrisonerContactRestrictions import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.prisoneroffendersearch.POSPrisoner import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.roleconfig.ConsumerFilters @@ -40,10 +40,10 @@ class GetVisitorRestrictionsServiceTest( val filters = ConsumerFilters(null) val posPrisoner = POSPrisoner(firstName = "Test", lastName = "Person", prisonId = prisonId, prisonerNumber = hmppsId) val listOfRelationships = listOf(LinkedPrisonerRelationship(prisonerContactId = contactId, relationshipTypeCode = "FAM", relationshipTypeDescription = "Family", relationshipToPrisonerCode = "SON", relationshipToPrisonerDescription = "Son")) - val listOfLinkedPrisoners = listOf(LinkedPrisoner(prisonerNumber = hmppsId, relationships = listOfRelationships, firstName = "Test", lastName = "Person", middleNames = null)) + val listOfLinkedPrisoners = listOf(PRLinkedPrisoner(prisonerNumber = hmppsId, relationships = listOfRelationships, firstName = "Test", lastName = "Person", middleNames = null)) val prisonerContactRestrictionsResponse = mutableListOf( - PrisonerContactRestriction( + PRPrisonerContactRestriction( prisonerContactRestrictionId = 1L, prisonerContactId = contactId, contactId = contactId, @@ -60,7 +60,7 @@ class GetVisitorRestrictionsServiceTest( updatedBy = "admin", updatedTime = "2024-01-02T12:00:00Z", ), - PrisonerContactRestriction( + PRPrisonerContactRestriction( prisonerContactRestrictionId = 2L, prisonerContactId = contactId, contactId = contactId, @@ -80,7 +80,7 @@ class GetVisitorRestrictionsServiceTest( ) val contactGlobalRestrictionsResponse = - ContactGlobalRestriction( + PRContactGlobalRestriction( contactRestrictionId = 1L, contactId = contactId, restrictionType = "Restriction 1", @@ -131,7 +131,7 @@ class GetVisitorRestrictionsServiceTest( whenever(getPersonService.getPrisoner(hmppsId, consumerFilters)).thenReturn(Response(data = posPrisoner.toPersonInPrison(), errors = emptyList())) - whenever(consumerPrisonAccessService.checkConsumerHasPrisonAccess>(wrongPrisonId, consumerFilters)).thenReturn( + whenever(consumerPrisonAccessService.checkConsumerHasPrisonAccess>(wrongPrisonId, consumerFilters)).thenReturn( Response(data = null, errors = listOf(UpstreamApiError(UpstreamApi.NOMIS, UpstreamApiError.Type.ENTITY_NOT_FOUND, "Not found"))), ) @@ -157,7 +157,7 @@ class GetVisitorRestrictionsServiceTest( whenever(personalRelationshipsGateway.getPrisonerContactRestrictions(contactId)).thenReturn(Response(data = prisonerContactRestrictions, errors = emptyList())) val expectedMappedResponse = - PrisonerContactRestrictions( + PRPrisonerContactRestrictions( prisonerContactRestrictions = prisonerContactRestrictionsResponse, contactGlobalRestrictions = contactGlobalRestrictionsResponse, ) @@ -170,7 +170,7 @@ class GetVisitorRestrictionsServiceTest( it("returns multiple relationships and queries getPrisonerContactRestrictions accordingly") { val scopedPrisonerContactId = 123457L val listOfManyRelationships = listOf(LinkedPrisonerRelationship(prisonerContactId = contactId, relationshipTypeCode = "FAM", relationshipTypeDescription = "Family", relationshipToPrisonerCode = "SON", relationshipToPrisonerDescription = "Son"), LinkedPrisonerRelationship(prisonerContactId = scopedPrisonerContactId, relationshipTypeCode = "FAM", relationshipTypeDescription = "Family", relationshipToPrisonerCode = "BRO", relationshipToPrisonerDescription = "Brother")) - val listOfLinkedPrisonerWithManyRelationships = listOf(LinkedPrisoner(prisonerNumber = "A1234AA", relationships = listOfManyRelationships, firstName = "Test", lastName = "Person", middleNames = null)) + val listOfLinkedPrisonerWithManyRelationships = listOf(PRLinkedPrisoner(prisonerNumber = "A1234AA", relationships = listOfManyRelationships, firstName = "Test", lastName = "Person", middleNames = null)) whenever(personalRelationshipsGateway.getLinkedPrisoner(contactId)).thenReturn(Response(data = listOfLinkedPrisonerWithManyRelationships, errors = emptyList())) whenever(personalRelationshipsGateway.getPrisonerContactRestrictions(contactId)).thenReturn(Response(data = prisonerContactRestrictions, errors = emptyList())) From 9cea8052b4e9080ebdff53b47b3f3505074dbb0d Mon Sep 17 00:00:00 2001 From: BushraAbdullahi Date: Mon, 10 Mar 2025 10:42:49 +0000 Subject: [PATCH 3/5] update class name --- .../models/personalRelationships/PRLinkedPrisoner.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRLinkedPrisoner.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRLinkedPrisoner.kt index da19e6a0d..2e2bf3cd1 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRLinkedPrisoner.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRLinkedPrisoner.kt @@ -16,7 +16,7 @@ data class PRLinkedPrisoner( val relationships: List?, ) -data class LinkedPrisonerRelationship( +data class PRLinkedPrisonerRelationship( @JsonProperty("relationshipTypeCode") override val relationshipTypeCode: String?, @JsonProperty("relationshipTypeDescription") From 7a698ede3cd935a9d96df58f126a90de31cba893 Mon Sep 17 00:00:00 2001 From: BushraAbdullahi Date: Mon, 10 Mar 2025 12:03:02 +0000 Subject: [PATCH 4/5] fix tests --- .../models/personalRelationships/PRLinkedPrisoner.kt | 2 +- .../services/GetVisitorRestrictionsServiceTest.kt | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRLinkedPrisoner.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRLinkedPrisoner.kt index 2e2bf3cd1..82809f058 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRLinkedPrisoner.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRLinkedPrisoner.kt @@ -13,7 +13,7 @@ data class PRLinkedPrisoner( @JsonProperty("middleNames") val middleNames: String?, @JsonProperty("relationships") - val relationships: List?, + val relationships: List?, ) data class PRLinkedPrisonerRelationship( diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/GetVisitorRestrictionsServiceTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/GetVisitorRestrictionsServiceTest.kt index 33fcc714f..f1648c81f 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/GetVisitorRestrictionsServiceTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/GetVisitorRestrictionsServiceTest.kt @@ -14,9 +14,9 @@ import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.PersonalRelatio import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.Response import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.LinkedPrisonerRelationship import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRContactGlobalRestriction import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRLinkedPrisoner +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRLinkedPrisonerRelationship import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRPrisonerContactRestriction import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRPrisonerContactRestrictions import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRPrisonerContactRestrictionsResponse @@ -39,7 +39,7 @@ class GetVisitorRestrictionsServiceTest( val contactId = 123456L val filters = ConsumerFilters(null) val posPrisoner = POSPrisoner(firstName = "Test", lastName = "Person", prisonId = prisonId, prisonerNumber = hmppsId) - val listOfRelationships = listOf(LinkedPrisonerRelationship(prisonerContactId = contactId, relationshipTypeCode = "FAM", relationshipTypeDescription = "Family", relationshipToPrisonerCode = "SON", relationshipToPrisonerDescription = "Son")) + val listOfRelationships = listOf(PRLinkedPrisonerRelationship(prisonerContactId = contactId, relationshipTypeCode = "FAM", relationshipTypeDescription = "Family", relationshipToPrisonerCode = "SON", relationshipToPrisonerDescription = "Son")) val listOfLinkedPrisoners = listOf(PRLinkedPrisoner(prisonerNumber = hmppsId, relationships = listOfRelationships, firstName = "Test", lastName = "Person", middleNames = null)) val prisonerContactRestrictionsResponse = mutableListOf( @@ -169,7 +169,7 @@ class GetVisitorRestrictionsServiceTest( it("returns multiple relationships and queries getPrisonerContactRestrictions accordingly") { val scopedPrisonerContactId = 123457L - val listOfManyRelationships = listOf(LinkedPrisonerRelationship(prisonerContactId = contactId, relationshipTypeCode = "FAM", relationshipTypeDescription = "Family", relationshipToPrisonerCode = "SON", relationshipToPrisonerDescription = "Son"), LinkedPrisonerRelationship(prisonerContactId = scopedPrisonerContactId, relationshipTypeCode = "FAM", relationshipTypeDescription = "Family", relationshipToPrisonerCode = "BRO", relationshipToPrisonerDescription = "Brother")) + val listOfManyRelationships = listOf(PRLinkedPrisonerRelationship(prisonerContactId = contactId, relationshipTypeCode = "FAM", relationshipTypeDescription = "Family", relationshipToPrisonerCode = "SON", relationshipToPrisonerDescription = "Son"), PRLinkedPrisonerRelationship(prisonerContactId = scopedPrisonerContactId, relationshipTypeCode = "FAM", relationshipTypeDescription = "Family", relationshipToPrisonerCode = "BRO", relationshipToPrisonerDescription = "Brother")) val listOfLinkedPrisonerWithManyRelationships = listOf(PRLinkedPrisoner(prisonerNumber = "A1234AA", relationships = listOfManyRelationships, firstName = "Test", lastName = "Person", middleNames = null)) whenever(personalRelationshipsGateway.getLinkedPrisoner(contactId)).thenReturn(Response(data = listOfLinkedPrisonerWithManyRelationships, errors = emptyList())) From f7c5bdd9bb3598d2eed74287cc934efee0758ed1 Mon Sep 17 00:00:00 2001 From: BushraAbdullahi Date: Tue, 11 Mar 2025 10:55:35 +0000 Subject: [PATCH 5/5] refactor models --- .../v1/person/VisitRestrictionsController.kt | 4 +- .../gateways/PersonalRelationshipsGateway.kt | 6 +- .../hmpps/PrisonerContactRestrictions.kt | 55 +++++++++++++++++++ .../PRPrisonerContactRestrictions.kt | 44 ++++++++++++++- .../PRPrisonerContactRestrictionsResponse.kt | 6 -- .../services/GetVisitorRestrictionsService.kt | 15 +++-- .../person/VisitRestrictionsControllerTest.kt | 12 ++-- .../GetVisitorRestrictionsServiceTest.kt | 47 +++++++++------- 8 files changed, 143 insertions(+), 46 deletions(-) create mode 100644 src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/hmpps/PrisonerContactRestrictions.kt delete mode 100644 src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRPrisonerContactRestrictionsResponse.kt diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/controllers/v1/person/VisitRestrictionsController.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/controllers/v1/person/VisitRestrictionsController.kt index e0a85285c..58d0f9b0e 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/controllers/v1/person/VisitRestrictionsController.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/controllers/v1/person/VisitRestrictionsController.kt @@ -16,8 +16,8 @@ import org.springframework.web.bind.annotation.RestController import uk.gov.justice.digital.hmpps.hmppsintegrationapi.exception.EntityNotFoundException import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.DataResponse import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.PersonVisitRestriction +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.PrisonerContactRestrictions import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRPrisonerContactRestrictions import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.roleconfig.ConsumerFilters import uk.gov.justice.digital.hmpps.hmppsintegrationapi.services.GetVisitRestrictionsForPersonService import uk.gov.justice.digital.hmpps.hmppsintegrationapi.services.GetVisitorRestrictionsService @@ -74,7 +74,7 @@ class VisitRestrictionsController( @Parameter(description = "A HMPPS identifier") @PathVariable hmppsId: String, @Parameter(description = "A contact ID") @PathVariable contactId: String, @RequestAttribute filters: ConsumerFilters?, - ): DataResponse { + ): DataResponse { val stringifiedContactId = contactId.toLongOrNull() ?: throw ValidationException("Invalid contact ID") val response = getVisitorRestrictionsService.execute(hmppsId, stringifiedContactId, filters) diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/PersonalRelationshipsGateway.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/PersonalRelationshipsGateway.kt index 40c4f44ea..b4c5f1912 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/PersonalRelationshipsGateway.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/gateways/PersonalRelationshipsGateway.kt @@ -13,7 +13,7 @@ import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRDetailedContact import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRLinkedPrisoner import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRPaginatedPrisonerContacts -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRPrisonerContactRestrictionsResponse +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRPrisonerContactRestrictions @Component class PersonalRelationshipsGateway( @@ -48,9 +48,9 @@ class PersonalRelationshipsGateway( } } - fun getPrisonerContactRestrictions(prisonerContactId: Long): Response { + fun getPrisonerContactRestrictions(prisonerContactId: Long): Response { val result = - webClient.request( + webClient.request( HttpMethod.GET, "/prisoner-contact/$prisonerContactId/restriction", authenticationHeader(), diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/hmpps/PrisonerContactRestrictions.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/hmpps/PrisonerContactRestrictions.kt new file mode 100644 index 000000000..285ec3dc7 --- /dev/null +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/hmpps/PrisonerContactRestrictions.kt @@ -0,0 +1,55 @@ +package uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps + +import com.fasterxml.jackson.annotation.JsonProperty + +data class PrisonerContactRestrictions( + var prisonerContactRestrictions: MutableList? = mutableListOf(), + var contactGlobalRestrictions: ContactGlobalRestriction? = null, +) + +data class PrisonerContactRestriction( + val prisonerContactRestrictionId: Long, + val prisonerContactId: Long, + val contactId: Long, + val prisonerNumber: String, + val restrictionType: String, + val restrictionTypeDescription: String, + val startDate: String, + val expiryDate: String, + val comments: String, + val enteredByUsername: String, + val enteredByDisplayName: String, + val createdBy: String, + val createdTime: String, + val updatedBy: String, + val updatedTime: String, +) + +data class ContactGlobalRestriction( + @JsonProperty("contactRestrictionId") + val contactRestrictionId: Long, + @JsonProperty("contactId") + val contactId: Long, + @JsonProperty("restrictionType") + val restrictionType: String, + @JsonProperty("restrictionTypeDescription") + val restrictionTypeDescription: String, + @JsonProperty("startDate") + val startDate: String, + @JsonProperty("expiryDate") + val expiryDate: String, + @JsonProperty("comments") + val comments: String, + @JsonProperty("enteredByUsername") + val enteredByUsername: String, + @JsonProperty("enteredByDisplayName") + val enteredByDisplayName: String, + @JsonProperty("createdBy") + val createdBy: String, + @JsonProperty("createdTime") + val createdTime: String, + @JsonProperty("updatedBy") + val updatedBy: String, + @JsonProperty("updatedTime") + val updatedTime: String, +) diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRPrisonerContactRestrictions.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRPrisonerContactRestrictions.kt index a6499d472..6e3c33878 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRPrisonerContactRestrictions.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRPrisonerContactRestrictions.kt @@ -1,10 +1,12 @@ package uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships import com.fasterxml.jackson.annotation.JsonProperty +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.ContactGlobalRestriction +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.PrisonerContactRestriction data class PRPrisonerContactRestrictions( var prisonerContactRestrictions: MutableList? = mutableListOf(), - var contactGlobalRestrictions: PRContactGlobalRestriction? = null, + var contactGlobalRestrictions: List? = listOf(), ) data class PRPrisonerContactRestriction( @@ -23,7 +25,26 @@ data class PRPrisonerContactRestriction( val createdTime: String, val updatedBy: String, val updatedTime: String, -) +) { + fun toPrisonerContactRestriction() = + PrisonerContactRestriction( + prisonerContactRestrictionId = this.prisonerContactRestrictionId, + prisonerContactId = this.prisonerContactId, + contactId = this.contactId, + prisonerNumber = this.prisonerNumber, + restrictionType = this.restrictionType, + restrictionTypeDescription = this.restrictionTypeDescription, + startDate = this.startDate, + expiryDate = this.expiryDate, + comments = this.comments, + enteredByUsername = this.enteredByUsername, + enteredByDisplayName = this.enteredByDisplayName, + createdBy = this.createdBy, + createdTime = this.createdTime, + updatedBy = this.updatedBy, + updatedTime = this.updatedTime, + ) +} data class PRContactGlobalRestriction( @JsonProperty("contactRestrictionId") @@ -52,4 +73,21 @@ data class PRContactGlobalRestriction( val updatedBy: String, @JsonProperty("updatedTime") val updatedTime: String, -) +) { + fun toContactGlobalRestriction() = + ContactGlobalRestriction( + contactRestrictionId = this.contactRestrictionId, + contactId = this.contactId, + restrictionType = this.restrictionType, + restrictionTypeDescription = this.restrictionTypeDescription, + startDate = this.startDate, + expiryDate = this.expiryDate, + comments = this.comments, + enteredByUsername = this.enteredByUsername, + enteredByDisplayName = this.enteredByDisplayName, + createdBy = this.createdBy, + createdTime = this.createdTime, + updatedBy = this.updatedBy, + updatedTime = this.updatedTime, + ) +} diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRPrisonerContactRestrictionsResponse.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRPrisonerContactRestrictionsResponse.kt deleted file mode 100644 index 8d66f50b8..000000000 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/models/personalRelationships/PRPrisonerContactRestrictionsResponse.kt +++ /dev/null @@ -1,6 +0,0 @@ -package uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships - -data class PRPrisonerContactRestrictionsResponse( - var prisonerContactRestrictions: MutableList? = mutableListOf(), - var contactGlobalRestrictions: List? = listOf(), -) diff --git a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/GetVisitorRestrictionsService.kt b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/GetVisitorRestrictionsService.kt index 36d3845b7..f4610b56a 100644 --- a/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/GetVisitorRestrictionsService.kt +++ b/src/main/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/GetVisitorRestrictionsService.kt @@ -4,10 +4,10 @@ import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Service import uk.gov.justice.digital.hmpps.hmppsintegrationapi.common.ConsumerPrisonAccessService import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.PersonalRelationshipsGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.PrisonerContactRestrictions import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.Response import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRPrisonerContactRestrictions import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.roleconfig.ConsumerFilters @Service @@ -20,7 +20,7 @@ class GetVisitorRestrictionsService( hmppsId: String, contactId: Long, filters: ConsumerFilters?, - ): Response { + ): Response { val personResponse = getPersonService.getPrisoner(hmppsId, filters) if (personResponse.errors.isNotEmpty()) { @@ -28,7 +28,7 @@ class GetVisitorRestrictionsService( } val prisonId = personResponse.data?.prisonId - val consumerPrisonFilterCheck = consumerPrisonAccessService.checkConsumerHasPrisonAccess(prisonId, filters) + val consumerPrisonFilterCheck = consumerPrisonAccessService.checkConsumerHasPrisonAccess(prisonId, filters) if (consumerPrisonFilterCheck.errors.isNotEmpty()) { return consumerPrisonFilterCheck } @@ -47,14 +47,17 @@ class GetVisitorRestrictionsService( val linkedPrisonerIds = linkedPrisoner.relationships?.map { it.prisonerContactId } - val restrictionsResult = PRPrisonerContactRestrictions() + val restrictionsResult = PrisonerContactRestrictions() if (linkedPrisonerIds != null) { for (prisonerContactId in linkedPrisonerIds) { val gatewayResult = personalRelationshipsGateway.getPrisonerContactRestrictions(prisonerContactId!!) if (gatewayResult.errors.isEmpty() && gatewayResult.data != null) { - gatewayResult.data.prisonerContactRestrictions?.let { restrictionsResult.prisonerContactRestrictions?.addAll(it) } + gatewayResult.data.prisonerContactRestrictions?.let { it -> restrictionsResult.prisonerContactRestrictions?.addAll(it.map { it.toPrisonerContactRestriction() }) } if (prisonerContactId == linkedPrisonerIds.first()) { - restrictionsResult.contactGlobalRestrictions = gatewayResult.data.contactGlobalRestrictions?.first() + restrictionsResult.contactGlobalRestrictions = + gatewayResult.data.contactGlobalRestrictions + ?.first() + ?.toContactGlobalRestriction() } } diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/controllers/v1/person/VisitRestrictionsControllerTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/controllers/v1/person/VisitRestrictionsControllerTest.kt index c3e059a67..9af940c74 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/controllers/v1/person/VisitRestrictionsControllerTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/controllers/v1/person/VisitRestrictionsControllerTest.kt @@ -15,13 +15,13 @@ import org.springframework.test.web.servlet.MockMvc import uk.gov.justice.digital.hmpps.hmppsintegrationapi.common.ConsumerPrisonAccessService import uk.gov.justice.digital.hmpps.hmppsintegrationapi.extensions.removeWhitespaceAndNewlines import uk.gov.justice.digital.hmpps.hmppsintegrationapi.helpers.IntegrationAPIMockMvc +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.ContactGlobalRestriction import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.PersonVisitRestriction +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.PrisonerContactRestriction +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.PrisonerContactRestrictions import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.Response import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRContactGlobalRestriction -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRPrisonerContactRestriction -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRPrisonerContactRestrictions import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.roleconfig.ConsumerFilters import uk.gov.justice.digital.hmpps.hmppsintegrationapi.services.GetVisitRestrictionsForPersonService import uk.gov.justice.digital.hmpps.hmppsintegrationapi.services.GetVisitorRestrictionsService @@ -43,7 +43,7 @@ internal class VisitRestrictionsControllerTest( val restrictionsPath = "/v1/persons/$hmppsId/visitor/$contactId/restrictions" val prisonerContactRestrictionsResponse = mutableListOf( - PRPrisonerContactRestriction( + PrisonerContactRestriction( prisonerContactRestrictionId = 123456L, prisonerContactId = 123456L, contactId = 123456L, @@ -63,7 +63,7 @@ internal class VisitRestrictionsControllerTest( ) val contactGlobalRestrictionsResponse = - PRContactGlobalRestriction( + ContactGlobalRestriction( contactRestrictionId = 1L, contactId = 123L, restrictionType = "BAN", @@ -79,7 +79,7 @@ internal class VisitRestrictionsControllerTest( updatedTime = "2024-01-02T12:00:00Z", ) - val prisonerContactRestrictions = PRPrisonerContactRestrictions(prisonerContactRestrictionsResponse, contactGlobalRestrictionsResponse) + val prisonerContactRestrictions = PrisonerContactRestrictions(prisonerContactRestrictionsResponse, contactGlobalRestrictionsResponse) val mockMvc = IntegrationAPIMockMvc(springMockMvc) diff --git a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/GetVisitorRestrictionsServiceTest.kt b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/GetVisitorRestrictionsServiceTest.kt index f1648c81f..a2f0fe97e 100644 --- a/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/GetVisitorRestrictionsServiceTest.kt +++ b/src/test/kotlin/uk/gov/justice/digital/hmpps/hmppsintegrationapi/services/GetVisitorRestrictionsServiceTest.kt @@ -11,6 +11,8 @@ import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.bean.override.mockito.MockitoBean import uk.gov.justice.digital.hmpps.hmppsintegrationapi.common.ConsumerPrisonAccessService import uk.gov.justice.digital.hmpps.hmppsintegrationapi.gateways.PersonalRelationshipsGateway +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.PrisonerContactRestriction +import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.PrisonerContactRestrictions import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.Response import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApi import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.hmpps.UpstreamApiError @@ -19,7 +21,6 @@ import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelations import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRLinkedPrisonerRelationship import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRPrisonerContactRestriction import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRPrisonerContactRestrictions -import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.personalRelationships.PRPrisonerContactRestrictionsResponse import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.prisoneroffendersearch.POSPrisoner import uk.gov.justice.digital.hmpps.hmppsintegrationapi.models.roleconfig.ConsumerFilters @@ -80,23 +81,26 @@ class GetVisitorRestrictionsServiceTest( ) val contactGlobalRestrictionsResponse = - PRContactGlobalRestriction( - contactRestrictionId = 1L, - contactId = contactId, - restrictionType = "Restriction 1", - restrictionTypeDescription = "Description for Restriction 1", - startDate = "2024-01-01", - expiryDate = "2025-01-01", - comments = "Some comments", - enteredByUsername = "user123", - enteredByDisplayName = "User Name", - createdBy = "admin", - createdTime = "2024-01-01T12:00:00Z", - updatedBy = "admin", - updatedTime = "2024-01-02T12:00:00Z", + listOf( + PRContactGlobalRestriction( + contactRestrictionId = 1L, + contactId = contactId, + restrictionType = "Restriction 1", + restrictionTypeDescription = "Description for Restriction 1", + startDate = "2024-01-01", + expiryDate = "2025-01-01", + comments = "Some comments", + enteredByUsername = "user123", + enteredByDisplayName = "User Name", + createdBy = "admin", + createdTime = "2024-01-01T12:00:00Z", + updatedBy = "admin", + updatedTime = "2024-01-02T12:00:00Z", + ), ) - val prisonerContactRestrictions = PRPrisonerContactRestrictionsResponse(prisonerContactRestrictionsResponse, listOf(contactGlobalRestrictionsResponse)) + val prisonerContactRestrictions = PRPrisonerContactRestrictions(prisonerContactRestrictionsResponse, contactGlobalRestrictionsResponse) + beforeEach { Mockito.reset(personalRelationshipsGateway) Mockito.reset(getPersonService) @@ -131,7 +135,7 @@ class GetVisitorRestrictionsServiceTest( whenever(getPersonService.getPrisoner(hmppsId, consumerFilters)).thenReturn(Response(data = posPrisoner.toPersonInPrison(), errors = emptyList())) - whenever(consumerPrisonAccessService.checkConsumerHasPrisonAccess>(wrongPrisonId, consumerFilters)).thenReturn( + whenever(consumerPrisonAccessService.checkConsumerHasPrisonAccess>(wrongPrisonId, consumerFilters)).thenReturn( Response(data = null, errors = listOf(UpstreamApiError(UpstreamApi.NOMIS, UpstreamApiError.Type.ENTITY_NOT_FOUND, "Not found"))), ) @@ -156,10 +160,13 @@ class GetVisitorRestrictionsServiceTest( whenever(personalRelationshipsGateway.getLinkedPrisoner(contactId)).thenReturn(Response(data = listOfLinkedPrisoners, errors = emptyList())) whenever(personalRelationshipsGateway.getPrisonerContactRestrictions(contactId)).thenReturn(Response(data = prisonerContactRestrictions, errors = emptyList())) + val prisonerContactRestrictionsList = mutableListOf() + prisonerContactRestrictionsList.addAll(prisonerContactRestrictionsResponse.map { it.toPrisonerContactRestriction() }) + val expectedMappedResponse = - PRPrisonerContactRestrictions( - prisonerContactRestrictions = prisonerContactRestrictionsResponse, - contactGlobalRestrictions = contactGlobalRestrictionsResponse, + PrisonerContactRestrictions( + prisonerContactRestrictions = prisonerContactRestrictionsList, + contactGlobalRestrictions = contactGlobalRestrictionsResponse.first().toContactGlobalRestriction(), ) val response = getVisitorRestrictionsService.execute(hmppsId, contactId, filters)