From 140d2e471cdb078f0836a65f637e4d476d7b2d34 Mon Sep 17 00:00:00 2001 From: "pierpaolo.didato@emeal.nttdata.com" Date: Tue, 3 Sep 2024 16:21:07 +0200 Subject: [PATCH] Refactor method parent description for AOO/UO --- .../service/OnboardingServiceDefault.java | 49 +++++++++---------- .../service/util/OnboardingUtils.java | 2 + 2 files changed, 25 insertions(+), 26 deletions(-) diff --git a/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/service/OnboardingServiceDefault.java b/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/service/OnboardingServiceDefault.java index aede3b07f..945562c2e 100644 --- a/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/service/OnboardingServiceDefault.java +++ b/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/service/OnboardingServiceDefault.java @@ -208,10 +208,10 @@ private Uni fillUsersAndOnboarding(Onboarding onboarding, Li .replaceWith(product)) .onItem().transformToUni(product -> getRegistryResource(onboarding) .onItem().transformToUni(proxyResource -> onboardingUtils.customValidationOnboardingData(onboarding, product, proxyResource) - .onItem().transformToUni(ignored -> setIstatCode(onboarding, proxyResource))) + .onItem().transformToUni(ignored -> setIstatCode(onboarding, proxyResource) + .onItem().transformToUni(innerOnboarding -> addParentDescriptionForAooOrUo(onboarding, proxyResource)))) /* if product has some test environments, request must also onboard them (for ex. prod-interop-coll) */ .onItem().invoke(() -> onboarding.setTestEnvProductIds(product.getTestEnvProductIds())).onItem().invoke(() -> onboarding.setTestEnvProductIds(product.getTestEnvProductIds())) - .onItem().transformToUni(this::addParentDescriptionForAooOrUo) .onItem().transformToUni(current -> persistOnboarding(onboarding, userRequests, product)) /* Update onboarding data with users and start orchestration */ .onItem().transformToUni(currentOnboarding -> persistAndStartOrchestrationOnboarding(currentOnboarding, @@ -249,10 +249,10 @@ private Uni fillUsersAndOnboarding(Onboarding onboarding, Li .replaceWith(product)) .onItem().transformToUni(product -> getRegistryResource(onboarding) .onItem().transformToUni(proxyResource -> onboardingUtils.customValidationOnboardingData(onboarding, product, proxyResource) - .onItem().transformToUni(ignored -> setIstatCode(onboarding, proxyResource))) + .onItem().transformToUni(ignored -> setIstatCode(onboarding, proxyResource) + .onItem().transformToUni(innerOnboarding -> addParentDescriptionForAooOrUo(onboarding, proxyResource)))) /* if product has some test environments, request must also onboard them (for ex. prod-interop-coll) */ .onItem().invoke(() -> onboarding.setTestEnvProductIds(product.getTestEnvProductIds())) - .onItem().transformToUni(this::addParentDescriptionForAooOrUo) .onItem().transformToUni(this::setInstitutionTypeAndBillingData) .onItem().transformToUni(current -> persistOnboarding(onboarding, userRequests, product)) .onItem().call(onboardingPersisted -> Panache.withTransaction(() -> Token.persist(getToken(onboardingPersisted, product, contractImported)))) @@ -301,7 +301,7 @@ private Uni persistOnboarding(Onboarding onboarding, List addParentDescriptionForAooOrUo(Onboarding onboarding) { + private Uni addParentDescriptionForAooOrUo(Onboarding onboarding, OnboardingUtils.ProxyResource proxyResource) { Log.infof("Adding parent description AOO/UOO for: taxCode %s, subunitCode %s, type %s", onboarding.getInstitution().getTaxCode(), @@ -309,10 +309,12 @@ private Uni addParentDescriptionForAooOrUo(Onboarding onboarding) { onboarding.getInstitution().getInstitutionType()); if (InstitutionType.PA == onboarding.getInstitution().getInstitutionType()) { - if (InstitutionPaSubunitType.AOO == onboarding.getInstitution().getSubunitType()) { - return addParentDescriptionForAOO(onboarding); - } else if (InstitutionPaSubunitType.UO == onboarding.getInstitution().getSubunitType()) { - return addParentDescriptionForUO(onboarding); + if (AOO == proxyResource.getType()) { + AOOResource resource = (AOOResource) proxyResource.getResource(); + return addParentDescriptionForAOO(onboarding, resource); + } else if (UO == onboarding.getInstitution().getSubunitType()) { + UOResource resource = (UOResource) proxyResource.getResource(); + return addParentDescriptionForUO(onboarding, resource); } } return Uni.createFrom().item(onboarding); @@ -334,25 +336,20 @@ private Uni setIstatCode(Onboarding onboarding, OnboardingUtils.Prox }; } - private Uni addParentDescriptionForUO(Onboarding onboarding) { - return uoApi.findByUnicodeUsingGET1(onboarding.getInstitution().getSubunitCode(), null) - .onItem().invoke(uoResource -> LOG.infof("Founded parent %s for UO institution with subunitCode %s", uoResource.getDenominazioneEnte(), onboarding.getInstitution().getSubunitCode())) - .onItem().invoke(uoResource -> onboarding.getInstitution().setParentDescription(uoResource.getDenominazioneEnte())) - .onFailure(WebApplicationException.class).recoverWithUni(ex -> ((WebApplicationException) ex).getResponse().getStatus() == 404 - ? Uni.createFrom().failure(new ResourceNotFoundException(String.format(UO_NOT_FOUND.getMessage(), onboarding.getInstitution().getSubunitCode()))) - : Uni.createFrom().failure(ex)) - .replaceWith(onboarding); - + private Uni addParentDescriptionForUO(Onboarding onboarding, UOResource uoResource) { + LOG.infof("Founded parent %s for UO institution with subunitCode %s", uoResource.getDenominazioneEnte(), onboarding.getInstitution().getSubunitCode()); + return Uni.createFrom().item(() -> { + onboarding.getInstitution().setParentDescription(uoResource.getDenominazioneEnte()); + return onboarding; + }); } - private Uni addParentDescriptionForAOO(Onboarding onboarding) { - return aooApi.findByUnicodeUsingGET(onboarding.getInstitution().getSubunitCode(), null) - .onItem().invoke(aooResource -> LOG.infof("Founded parent %s for AOO institution with subunitCode %s", aooResource.getDenominazioneEnte(), onboarding.getInstitution().getSubunitCode())) - .onItem().invoke(aooResource -> onboarding.getInstitution().setParentDescription(aooResource.getDenominazioneEnte())) - .onFailure(WebApplicationException.class).recoverWithUni(ex -> ((WebApplicationException) ex).getResponse().getStatus() == 404 - ? Uni.createFrom().failure(new ResourceNotFoundException(String.format(AOO_NOT_FOUND.getMessage(), onboarding.getInstitution().getSubunitCode()))) - : Uni.createFrom().failure(ex)) - .replaceWith(onboarding); + private Uni addParentDescriptionForAOO(Onboarding onboarding, AOOResource aooResource) { + LOG.infof("Founded parent %s for AOO institution with subunitCode %s", aooResource.getDenominazioneEnte(), onboarding.getInstitution().getSubunitCode()); + return Uni.createFrom().item(() -> { + onboarding.getInstitution().setParentDescription(aooResource.getDenominazioneEnte()); + return onboarding; + }); } private Uni addReferencedOnboardingId(Onboarding onboarding) { diff --git a/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/service/util/OnboardingUtils.java b/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/service/util/OnboardingUtils.java index 011de9afd..bf0cd37c7 100644 --- a/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/service/util/OnboardingUtils.java +++ b/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/service/util/OnboardingUtils.java @@ -14,6 +14,7 @@ import jakarta.inject.Inject; import jakarta.ws.rs.WebApplicationException; import lombok.Builder; +import lombok.Data; import org.eclipse.microprofile.rest.client.inject.RestClient; import org.openapi.quarkus.party_registry_proxy_json.api.AooApi; import org.openapi.quarkus.party_registry_proxy_json.api.UoApi; @@ -169,6 +170,7 @@ private boolean isInvoiceablePA(Onboarding onboarding) { && Objects.nonNull(onboarding.getBilling().getRecipientCode()); } + @Data @Builder public static class ProxyResource { private InstitutionPaSubunitType type;