diff --git a/app/src/main/resources/swagger/api-docs.json b/app/src/main/resources/swagger/api-docs.json index 49fcf6886..9093cdad9 100644 --- a/app/src/main/resources/swagger/api-docs.json +++ b/app/src/main/resources/swagger/api-docs.json @@ -3327,6 +3327,49 @@ }, "components" : { "schemas" : { + "AdditionalInformations" : { + "title" : "AdditionalInformations", + "type" : "object", + "properties" : { + "agentOfPublicService" : { + "type" : "boolean" + }, + "agentOfPublicServiceNote" : { + "type" : "boolean", + "description" : "agentOfPublicService Note", + "example" : false + }, + "belongRegulatedMarket" : { + "type" : "boolean", + "description" : "The institution belongs to a regulated market", + "example" : false + }, + "establishedByRegulatoryProvision" : { + "type" : "boolean", + "description" : "The institution is a company established by a regulatory provision", + "example" : false + }, + "establishedByRegulatoryProvisionNote" : { + "type" : "string", + "description" : "establishedByRegulatoryProvision Note" + }, + "ipa" : { + "type" : "boolean" + }, + "ipaCode" : { + "type" : "string", + "description" : "IPA code" + }, + "otherNote" : { + "type" : "string", + "description" : "Other note" + }, + "regulatedMarketNote" : { + "type" : "string", + "description" : "regulatedMarket Note" + } + } + }, "Attribute" : { "title" : "Attribute", "type" : "object", @@ -3769,6 +3812,10 @@ "required" : [ "address", "fiscalCode", "id", "institutionType", "mailAddress", "name", "recipientCode", "vatNumber", "zipCode" ], "type" : "object", "properties" : { + "additionalInformations" : { + "description" : "Institution's additional informations", + "$ref" : "#/components/schemas/AdditionalInformations" + }, "address" : { "type" : "string", "description" : "Institution's physical address" diff --git a/connector-api/src/main/java/it/pagopa/selfcare/dashboard/connector/model/institution/AdditionalInformations.java b/connector-api/src/main/java/it/pagopa/selfcare/dashboard/connector/model/institution/AdditionalInformations.java new file mode 100644 index 000000000..92c80fafb --- /dev/null +++ b/connector-api/src/main/java/it/pagopa/selfcare/dashboard/connector/model/institution/AdditionalInformations.java @@ -0,0 +1,18 @@ +package it.pagopa.selfcare.dashboard.connector.model.institution; + +import lombok.Data; + +@Data +public class AdditionalInformations { + + private boolean belongRegulatedMarket; + private String regulatedMarketNote; + private boolean isIpa; + private String ipaCode; + private boolean establishedByRegulatoryProvision; + private String establishedByRegulatoryProvisionNote; + private boolean isAgentOfPublicService; + private String agentOfPublicServiceNote; + private String otherNote; + +} diff --git a/connector-api/src/main/java/it/pagopa/selfcare/dashboard/connector/model/institution/InstitutionInfo.java b/connector-api/src/main/java/it/pagopa/selfcare/dashboard/connector/model/institution/InstitutionInfo.java index 0d2e4ebc3..139203828 100644 --- a/connector-api/src/main/java/it/pagopa/selfcare/dashboard/connector/model/institution/InstitutionInfo.java +++ b/connector-api/src/main/java/it/pagopa/selfcare/dashboard/connector/model/institution/InstitutionInfo.java @@ -34,6 +34,7 @@ public class InstitutionInfo { private String aooParentCode; private String parentDescription; private String rootParentId; + private AdditionalInformations additionalInformations; @Override public boolean equals(Object o) { diff --git a/connector/rest/src/main/java/it/pagopa/selfcare/dashboard/connector/rest/PartyConnectorImpl.java b/connector/rest/src/main/java/it/pagopa/selfcare/dashboard/connector/rest/PartyConnectorImpl.java index 97fff3e95..dc0096f32 100644 --- a/connector/rest/src/main/java/it/pagopa/selfcare/dashboard/connector/rest/PartyConnectorImpl.java +++ b/connector/rest/src/main/java/it/pagopa/selfcare/dashboard/connector/rest/PartyConnectorImpl.java @@ -95,6 +95,9 @@ class PartyConnectorImpl implements PartyConnector { institutionInfo.setPaymentServiceProvider(institution.getPaymentServiceProvider()); institutionInfo.setDataProtectionOfficer(institution.getDataProtectionOfficer()); institutionInfo.setBilling(institution.getBilling()); + if(institutionUpdate.getAdditionalInformations() != null) { + institutionInfo.setAdditionalInformations(institutionUpdate.getAdditionalInformations()); + } return institutionInfo; }; protected static final Function RELATIONSHIP_INFO_TO_USER_INFO_FUNCTION = relationshipInfo -> { diff --git a/connector/rest/src/main/java/it/pagopa/selfcare/dashboard/connector/rest/model/InstitutionUpdate.java b/connector/rest/src/main/java/it/pagopa/selfcare/dashboard/connector/rest/model/InstitutionUpdate.java index 681fcc657..bb29ae125 100644 --- a/connector/rest/src/main/java/it/pagopa/selfcare/dashboard/connector/rest/model/InstitutionUpdate.java +++ b/connector/rest/src/main/java/it/pagopa/selfcare/dashboard/connector/rest/model/InstitutionUpdate.java @@ -1,6 +1,7 @@ package it.pagopa.selfcare.dashboard.connector.rest.model; import it.pagopa.selfcare.commons.base.utils.InstitutionType; +import it.pagopa.selfcare.dashboard.connector.model.institution.AdditionalInformations; import it.pagopa.selfcare.dashboard.connector.model.institution.DataProtectionOfficer; import it.pagopa.selfcare.dashboard.connector.model.institution.PaymentServiceProvider; import lombok.Data; @@ -16,5 +17,6 @@ public class InstitutionUpdate { private String taxCode; private PaymentServiceProvider paymentServiceProvider; private DataProtectionOfficer dataProtectionOfficer; + private AdditionalInformations additionalInformations; } diff --git a/connector/rest/src/test/java/it/pagopa/selfcare/dashboard/connector/rest/PartyConnectorImplTest.java b/connector/rest/src/test/java/it/pagopa/selfcare/dashboard/connector/rest/PartyConnectorImplTest.java index b15828604..35e55b4a9 100644 --- a/connector/rest/src/test/java/it/pagopa/selfcare/dashboard/connector/rest/PartyConnectorImplTest.java +++ b/connector/rest/src/test/java/it/pagopa/selfcare/dashboard/connector/rest/PartyConnectorImplTest.java @@ -239,7 +239,7 @@ void getOnBoardedInstitution() { InstitutionInfo institutionInfo = partyConnector.getOnBoardedInstitution(institutionId); // then assertNotNull(institutionInfo); - checkNotNullFields(institutionInfo, "paymentServiceProvider", "dataProtectionOfficer","city","country","county"); + checkNotNullFields(institutionInfo, "paymentServiceProvider", "dataProtectionOfficer","city","country","county","additionalInformations"); assertEquals(onboardingData.getDescription(), institutionInfo.getDescription()); assertEquals(onboardingData.getDigitalAddress(), institutionInfo.getDigitalAddress()); assertEquals(onboardingData.getExternalId(), institutionInfo.getExternalId()); diff --git a/connector/rest/src/test/resources/stubs/ms-core/mappings/getUserInstitutionRelationships_fullyValued.json b/connector/rest/src/test/resources/stubs/ms-core/mappings/getUserInstitutionRelationships_fullyValued.json index 6a29b827d..96a9e858b 100644 --- a/connector/rest/src/test/resources/stubs/ms-core/mappings/getUserInstitutionRelationships_fullyValued.json +++ b/connector/rest/src/test/resources/stubs/ms-core/mappings/getUserInstitutionRelationships_fullyValued.json @@ -25,6 +25,17 @@ "address": "via del campo", "zipCode": "string", "taxCode": "string", + "additionalInformations" : { + "belongRegulatedMarket" : true, + "regulatedMarketNote" : "string", + "isIpa" : true, + "ipaCode" : "string", + "establishedByRegulatoryProvision" : true, + "establishedByRegulatoryProvisionNote" : "string", + "isAgentOfPublicService" : true, + "agentOfPublicServiceNote" : "string", + "otherNote" : "string" + }, "paymentServiceProvider": { "abiCode": "string", "businessRegisterNumber": "string", diff --git a/connector/rest/src/test/resources/stubs/party-management/mappings/getRelationshipById_fullyValued.json b/connector/rest/src/test/resources/stubs/party-management/mappings/getRelationshipById_fullyValued.json index 62c400790..ea721c021 100644 --- a/connector/rest/src/test/resources/stubs/party-management/mappings/getRelationshipById_fullyValued.json +++ b/connector/rest/src/test/resources/stubs/party-management/mappings/getRelationshipById_fullyValued.json @@ -28,6 +28,17 @@ "address": "via del campo", "zipCode": "20100", "taxCode": "string", + "additionalInformations" : { + "belongRegulatedMarket" : true, + "regulatedMarketNote" : "string", + "isIpa" : true, + "ipaCode" : "string", + "establishedByRegulatoryProvision" : true, + "establishedByRegulatoryProvisionNote" : "string", + "isAgentOfPublicService" : true, + "agentOfPublicServiceNote" : "string", + "otherNote" : "string" + }, "paymentServiceProvider": { "abiCode": "string", "businessRegisterNumber": "string", diff --git a/connector/rest/src/test/resources/stubs/party-process/mappings/getUserInstitutionRelationships_fullyValued.json b/connector/rest/src/test/resources/stubs/party-process/mappings/getUserInstitutionRelationships_fullyValued.json index 16d004589..a86dcee0b 100644 --- a/connector/rest/src/test/resources/stubs/party-process/mappings/getUserInstitutionRelationships_fullyValued.json +++ b/connector/rest/src/test/resources/stubs/party-process/mappings/getUserInstitutionRelationships_fullyValued.json @@ -25,6 +25,17 @@ "address": "via del campo", "zipCode": "string", "taxCode": "string", + "additionalInformations" : { + "belongRegulatedMarket" : true, + "regulatedMarketNote" : "string", + "isIpa" : true, + "ipaCode" : "string", + "establishedByRegulatoryProvision" : true, + "establishedByRegulatoryProvisionNote" : "string", + "isAgentOfPublicService" : true, + "agentOfPublicServiceNote" : "string", + "otherNote" : "string" + }, "paymentServiceProvider": { "abiCode": "string", "businessRegisterNumber": "string", diff --git a/web/src/main/java/it/pagopa/selfcare/dashboard/web/model/mapper/OnboardingRequestMapper.java b/web/src/main/java/it/pagopa/selfcare/dashboard/web/model/mapper/OnboardingRequestMapper.java index c0dada582..0a696b90d 100644 --- a/web/src/main/java/it/pagopa/selfcare/dashboard/web/model/mapper/OnboardingRequestMapper.java +++ b/web/src/main/java/it/pagopa/selfcare/dashboard/web/model/mapper/OnboardingRequestMapper.java @@ -1,9 +1,6 @@ package it.pagopa.selfcare.dashboard.web.model.mapper; -import it.pagopa.selfcare.dashboard.connector.model.institution.DataProtectionOfficer; -import it.pagopa.selfcare.dashboard.connector.model.institution.InstitutionInfo; -import it.pagopa.selfcare.dashboard.connector.model.institution.PaymentServiceProvider; -import it.pagopa.selfcare.dashboard.connector.model.institution.RelationshipState; +import it.pagopa.selfcare.dashboard.connector.model.institution.*; import it.pagopa.selfcare.dashboard.connector.model.user.CertifiedField; import it.pagopa.selfcare.dashboard.connector.model.user.User; import it.pagopa.selfcare.dashboard.connector.model.user.WorkContact; @@ -65,6 +62,7 @@ public static OnboardingRequestResource.InstitutionInfo toResource(InstitutionIn }); resource.setPspData(toResource(model.getPaymentServiceProvider())); resource.setDpoData(toResource(model.getDataProtectionOfficer())); + resource.setAdditionalInformations(toResource(model.getAdditionalInformations())); return resource; }).orElse(null); } @@ -95,6 +93,23 @@ public static OnboardingRequestResource.InstitutionInfo.DpoData toResource(DataP }).orElse(null); } + public static OnboardingRequestResource.InstitutionInfo.AdditionalInformations toResource(AdditionalInformations model) { + return Optional.ofNullable(model) + .map(additionaInformations -> { + final OnboardingRequestResource.InstitutionInfo.AdditionalInformations resource = new OnboardingRequestResource.InstitutionInfo.AdditionalInformations(); + resource.setIpa(additionaInformations.isIpa()); + resource.setIpaCode(additionaInformations.getIpaCode()); + resource.setOtherNote(additionaInformations.getOtherNote()); + resource.setBelongRegulatedMarket(additionaInformations.isBelongRegulatedMarket()); + resource.setRegulatedMarketNote(additionaInformations.getRegulatedMarketNote()); + resource.setAgentOfPublicService(additionaInformations.isAgentOfPublicService()); + resource.setAgentOfPublicServiceNote(additionaInformations.isAgentOfPublicService()); + resource.setEstablishedByRegulatoryProvision(additionaInformations.isEstablishedByRegulatoryProvision()); + resource.setEstablishedByRegulatoryProvisionNote(additionaInformations.getEstablishedByRegulatoryProvisionNote()); + return resource; + }).orElse(null); + } + public static OnboardingRequestResource.UserInfo toResource(User model, String institutionId) { return Optional.ofNullable(model) diff --git a/web/src/main/java/it/pagopa/selfcare/dashboard/web/model/onboarding/OnboardingRequestResource.java b/web/src/main/java/it/pagopa/selfcare/dashboard/web/model/onboarding/OnboardingRequestResource.java index 936bc51e3..df89e9631 100644 --- a/web/src/main/java/it/pagopa/selfcare/dashboard/web/model/onboarding/OnboardingRequestResource.java +++ b/web/src/main/java/it/pagopa/selfcare/dashboard/web/model/onboarding/OnboardingRequestResource.java @@ -86,6 +86,39 @@ public static class InstitutionInfo { @ApiModelProperty(value = "${swagger.dashboard.institutions.model.dpoData}") private DpoData dpoData; + @ApiModelProperty(value = "${swagger.dashboard.institutions.model.additionalInformations}") + private AdditionalInformations additionalInformations; + + @Data + public static class AdditionalInformations{ + @ApiModelProperty(value = "${swagger.dashboard.institutions.model.additionalInformations.belongRegulatedMarket}") + private boolean belongRegulatedMarket; + + @ApiModelProperty(value = "${swagger.dashboard.institutions.model.additionalInformations.regulatedMarketNote}") + private String regulatedMarketNote; + + @ApiModelProperty(value = "${swagger.dashboard.institutions.model.additionalInformations.isIpa}") + private boolean isIpa; + + @ApiModelProperty(value = "${swagger.dashboard.institutions.model.additionalInformations.ipaCode}") + private String ipaCode; + + @ApiModelProperty(value = "${swagger.dashboard.institutions.model.additionalInformations.establishedByRegulatoryProvision}") + private boolean establishedByRegulatoryProvision; + + @ApiModelProperty(value = "${swagger.dashboard.institutions.model.additionalInformations.establishedByRegulatoryProvisionNote}") + private String establishedByRegulatoryProvisionNote; + + @ApiModelProperty(value = "${swagger.dashboard.institutions.model.additionalInformations.isAgentOfPublicService}") + private boolean isAgentOfPublicService; + + @ApiModelProperty(value = "${swagger.dashboard.institutions.model.additionalInformations.agentOfPublicServiceNote}") + private boolean agentOfPublicServiceNote; + + @ApiModelProperty(value = "${swagger.dashboard.institutions.model.additionalInformations.otherNote}") + private String otherNote; + } + @Data public static class PspData { diff --git a/web/src/main/resources/swagger/swagger_en.properties b/web/src/main/resources/swagger/swagger_en.properties index c400ff810..3698cf469 100644 --- a/web/src/main/resources/swagger/swagger_en.properties +++ b/web/src/main/resources/swagger/swagger_en.properties @@ -174,4 +174,14 @@ swagger.dashboard.support.model.email=User's email swagger.dashboard.support.model.productId=Product's identifier swagger.dashboard.delegation.model.institutionToName=Partner's name swagger.dashboard.institutions.partners=Retrieve institution's delegations -swagger.dashboard.institutions.delegations=Retrieve list of delegation using to \ No newline at end of file +swagger.dashboard.institutions.delegations=Retrieve list of delegation using to +swagger.dashboard.institutions.model.additionalInformations.belongRegulatedMarket=The institution belongs to a regulated market +swagger.dashboard.institutions.model.additionalInformations.regulatedMarketNote=regulatedMarket Note +swagger.dashboard.institutions.model.additionalInformations.isIpa=The institution is registered on IPA +swagger.dashboard.institutions.model.additionalInformations.ipaCode=IPA code +swagger.dashboard.institutions.model.additionalInformations.establishedByRegulatoryProvision=The institution is a company established by a regulatory provision +swagger.dashboard.institutions.model.additionalInformations.establishedByRegulatoryProvisionNote=establishedByRegulatoryProvision Note +swagger.dashboard.institutions.model.additionalInformations.isAgentOfPublicService=The institution is an agent of a public service +swagger.dashboard.institutions.model.additionalInformations.agentOfPublicServiceNote=agentOfPublicService Note +swagger.dashboard.institutions.model.additionalInformations.otherNote=Other note +swagger.dashboard.institutions.model.additionalInformations=Institution's additional informations \ No newline at end of file