Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
…into feature/SELC-5420
  • Loading branch information
pierpaolo.didato@emeal.nttdata.com authored and pierpaolo.didato@emeal.nttdata.com committed Sep 3, 2024
2 parents 580b251 + bfae9ca commit e07302b
Show file tree
Hide file tree
Showing 15 changed files with 128 additions and 43 deletions.
2 changes: 1 addition & 1 deletion apps/onboarding-cdc/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
<quarkus.platform.version>3.5.2</quarkus.platform.version>
<skipITs>true</skipITs>
<surefire-plugin.version>3.1.2</surefire-plugin.version>
<onboarding-sdk.version>0.1.18</onboarding-sdk.version>
<onboarding-sdk.version>0.1.19</onboarding-sdk.version>
<quarkus-openapi-generator.version>2.4.1</quarkus-openapi-generator.version>
</properties>
<dependencyManagement>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -502,7 +502,8 @@
"PSP",
"AS",
"REC",
"CON"
"CON",
"PRV"
],
"type": "string"
},
Expand Down
2 changes: 1 addition & 1 deletion apps/onboarding-functions/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
<quarkus.platform.version>3.5.1</quarkus.platform.version>
<skipITs>true</skipITs>
<surefire-plugin.version>3.1.2</surefire-plugin.version>
<onboarding-sdk.version>0.1.18</onboarding-sdk.version>
<onboarding-sdk.version>0.1.19</onboarding-sdk.version>
<mapstruct.version>1.5.5.Final</mapstruct.version>
</properties>

Expand Down
18 changes: 9 additions & 9 deletions apps/onboarding-functions/src/main/openapi/core.json
Original file line number Diff line number Diff line change
Expand Up @@ -2011,7 +2011,7 @@
"style" : "simple",
"schema" : {
"type" : "string",
"enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP" ]
"enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP", "PRV"]
}
} ],
"responses" : {
Expand Down Expand Up @@ -2492,7 +2492,7 @@
},
"institutionType" : {
"type" : "string",
"enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP" ]
"enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP","PRV" ]
},
"origin" : {
"type" : "string"
Expand Down Expand Up @@ -2742,7 +2742,7 @@
},
"institutionType" : {
"type" : "string",
"enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP" ]
"enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP", "PRV" ]
},
"productId" : {
"type" : "string"
Expand Down Expand Up @@ -2851,7 +2851,7 @@
},
"institutionType" : {
"type" : "string",
"enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP" ]
"enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP", "PRV" ]
},
"origin" : {
"type" : "string",
Expand Down Expand Up @@ -2889,7 +2889,7 @@
},
"institutionType" : {
"type" : "string",
"enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP" ]
"enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP", "PRV" ]
},
"subunitCode" : {
"type" : "string"
Expand Down Expand Up @@ -3004,7 +3004,7 @@
},
"institutionType" : {
"type" : "string",
"enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP" ]
"enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP", "PRV" ]
},
"onboardings" : {
"type" : "object",
Expand Down Expand Up @@ -3146,7 +3146,7 @@
},
"institutionType" : {
"type" : "string",
"enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP" ]
"enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP", "PRV" ]
},
"onboarding" : {
"type" : "array",
Expand Down Expand Up @@ -3248,7 +3248,7 @@
},
"institutionType" : {
"type" : "string",
"enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP" ]
"enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP", "PRV" ]
},
"istatCode" : {
"type" : "string"
Expand Down Expand Up @@ -3358,7 +3358,7 @@
},
"institutionType" : {
"type" : "string",
"enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP" ]
"enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP", "PRV" ]
},
"ivassCode" : {
"type" : "string"
Expand Down
2 changes: 1 addition & 1 deletion apps/onboarding-ms/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<quarkus.platform.version>3.11.2</quarkus.platform.version>
<skipITs>true</skipITs>
<surefire-plugin.version>3.1.2</surefire-plugin.version>
<onboarding-sdk.version>0.1.18</onboarding-sdk.version>
<onboarding-sdk.version>0.1.19</onboarding-sdk.version>
<quarkus-openapi-generator.version>2.4.1</quarkus-openapi-generator.version>
</properties>
<dependencyManagement>
Expand Down
2 changes: 1 addition & 1 deletion apps/onboarding-ms/src/main/docs/openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -1764,7 +1764,7 @@
}
},
"InstitutionType" : {
"enum" : [ "PA", "PG", "GSP", "SA", "PT", "SCP", "PSP", "AS", "REC", "CON" ],
"enum" : [ "PA", "PG", "GSP", "SA", "PT", "SCP", "PSP", "AS", "REC", "CON", "PRV" ],
"type" : "string"
},
"LocalDateTime" : {
Expand Down
1 change: 1 addition & 0 deletions apps/onboarding-ms/src/main/docs/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1248,6 +1248,7 @@ components:
- AS
- REC
- CON
- PRV
type: string
LocalDateTime:
format: date-time
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1095,7 +1095,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,11 +14,14 @@
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;

import java.util.Objects;

import static it.pagopa.selfcare.onboarding.common.InstitutionPaSubunitType.EC;
import static it.pagopa.selfcare.onboarding.common.InstitutionPaSubunitType.UO;
import static it.pagopa.selfcare.onboarding.constants.CustomError.*;

@ApplicationScoped
Expand All @@ -28,6 +31,9 @@ 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 +52,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 +66,23 @@ private Uni<Void> checkRecipientCode(Onboarding onboarding) {
return Uni.createFrom().nullItem();
}

private Uni<CustomError> validationRecipientCode(Onboarding onboarding, UOResource uoResource) {

switch ((onboarding.getInstitution().getSubunitType() != null) ? onboarding.getInstitution().getSubunitType() : EC ) {
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 +94,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 @@ -136,9 +156,16 @@ private Uni<Onboarding> additionalChecksForProduct(Onboarding onboarding, Produc

private boolean isUO(Onboarding onboarding) {
return Objects.nonNull(onboarding.getInstitution().getSubunitCode())
&& onboarding.getInstitution().getSubunitType().equals(InstitutionPaSubunitType.UO)
&& UO.equals(onboarding.getInstitution().getSubunitType())
&& Objects.nonNull(onboarding.getBilling())
&& 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());
}
}
2 changes: 1 addition & 1 deletion apps/onboarding-ms/src/main/openapi/core.json
Original file line number Diff line number Diff line change
Expand Up @@ -1967,7 +1967,7 @@
"style" : "simple",
"schema" : {
"type" : "string",
"enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP" ]
"enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP", "PRV" ]
}
} ],
"responses" : {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -509,7 +509,8 @@
"PSP",
"AS",
"REC",
"CON"
"CON",
"PRV"
],
"type": "string"
},
Expand Down
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
Loading

0 comments on commit e07302b

Please sign in to comment.