Skip to content

Commit

Permalink
Added check for EC recipient code in case of AOO/UO onboarding
Browse files Browse the repository at this point in the history
  • Loading branch information
pierpaolo.didato@emeal.nttdata.com authored and pierpaolo.didato@emeal.nttdata.com committed Aug 28, 2024
1 parent 0f3e6e4 commit 95735d6
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1082,7 +1082,7 @@ public Uni<Boolean> checkManager(OnboardingUserRequest onboardingUserRequest) {
public Uni<CustomError> checkRecipientCode(String recipientCode, String originId) {
return onboardingUtils.getUoFromRecipientCode(recipientCode).onItem()
.transformToUni(uoResource ->
onboardingUtils.validationRecipientCode(originId, uoResource));
onboardingUtils.getValidationRecipientCodeError(originId, uoResource));
}

private static Uni<Long> updateOnboardingValues(String onboardingId, Onboarding onboarding) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import jakarta.inject.Inject;
import jakarta.ws.rs.WebApplicationException;
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;
import org.openapi.quarkus.party_registry_proxy_json.model.UOResource;

Expand All @@ -28,6 +29,10 @@ public class OnboardingUtils {
@Inject
UoApi uoApi;

@RestClient
@Inject
AooApi aooApi;

private static final String ADDITIONAL_INFORMATION_REQUIRED = "Additional Information is required when institutionType is GSP and productId is pagopa";
private static final String OTHER_NOTE_REQUIRED = "Other Note is required when other boolean are false";
private static final String BILLING_OR_RECIPIENT_CODE_REQUIRED = "Billing and/or recipient code are required";
Expand All @@ -46,13 +51,10 @@ public Uni<Onboarding> customValidationOnboardingData(Onboarding onboarding, Pro
}

private Uni<Void> checkRecipientCode(Onboarding onboarding) {
if (Objects.nonNull(onboarding.getInstitution())
&& InstitutionType.PA.equals(onboarding.getInstitution().getInstitutionType())
&& Objects.nonNull(onboarding.getBilling())
&& Objects.nonNull(onboarding.getBilling().getRecipientCode())) {
if (isInvoiceablePA(onboarding)) {
final String recipientCode = onboarding.getBilling().getRecipientCode();
return getUoFromRecipientCode(recipientCode)
.flatMap(uoResource -> validationRecipientCode(onboarding.getInstitution().getOriginId(), uoResource))
.onItem().transformToUni(uoResource -> validationRecipientCode(onboarding, uoResource))
.onItem().transformToUni(customError -> {
if (Objects.nonNull(customError)) {
return Uni.createFrom().failure(new InvalidRequestException(customError.getMessage()));
Expand All @@ -63,6 +65,22 @@ private Uni<Void> checkRecipientCode(Onboarding onboarding) {
return Uni.createFrom().nullItem();
}

private Uni<CustomError> validationRecipientCode(Onboarding onboarding, UOResource uoResource) {
switch (onboarding.getInstitution().getSubunitType()) {
case AOO -> {
return aooApi.findByUnicodeUsingGET(onboarding.getInstitution().getSubunitCode(), null)
.onItem().transformToUni(aooResource -> getValidationRecipientCodeError(aooResource.getCodiceIpa(), uoResource));
}
case UO -> {
return uoApi.findByUnicodeUsingGET1(onboarding.getInstitution().getSubunitCode(), null)
.onItem().transformToUni(innerUoResource -> getValidationRecipientCodeError(innerUoResource.getCodiceIpa(), uoResource));
}
default -> {
return getValidationRecipientCodeError(onboarding.getInstitution().getOriginId(), uoResource);
}
}
}

public Uni<UOResource> getUoFromRecipientCode(String recipientCode) {
return uoApi.findByUnicodeUsingGET1(recipientCode, null)
.onFailure(WebApplicationException.class)
Expand All @@ -74,8 +92,8 @@ public Uni<UOResource> getUoFromRecipientCode(String recipientCode) {
: Uni.createFrom().failure(ex));
}

public Uni<CustomError> validationRecipientCode(String originId, UOResource uoResource) {
if (!originId.equals(uoResource.getCodiceIpa())) {
public Uni<CustomError> getValidationRecipientCodeError(String originIdEC, UOResource uoResource) {
if (!originIdEC.equals(uoResource.getCodiceIpa())) {
return Uni.createFrom().item(DENIED_NO_ASSOCIATION);
}
if (Objects.isNull(uoResource.getCodiceFiscaleSfe())) {
Expand Down Expand Up @@ -141,4 +159,11 @@ private boolean isUO(Onboarding onboarding) {
&& Objects.nonNull(onboarding.getBilling().getTaxCodeInvoicing())
&& Objects.nonNull(onboarding.getInstitution().getTaxCode());
}

private boolean isInvoiceablePA(Onboarding onboarding) {
return Objects.nonNull(onboarding.getInstitution())
&& InstitutionType.PA.equals(onboarding.getInstitution().getInstitutionType())
&& Objects.nonNull(onboarding.getBilling())
&& Objects.nonNull(onboarding.getBilling().getRecipientCode());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -1633,7 +1633,7 @@ void checkRecipientCodeWithValidResponse() {
.thenReturn(Uni.createFrom().item(uoResource));

// Mock the response from onboardingUtils.validationRecipientCode
when(onboardingUtils.validationRecipientCode(eq(originId), eq(uoResource)))
when(onboardingUtils.getValidationRecipientCodeError(eq(originId), eq(uoResource)))
.thenReturn(Uni.createFrom().item(customError));

// Call the method under test
Expand Down

0 comments on commit 95735d6

Please sign in to comment.