Skip to content

Commit

Permalink
feat: move validRoles to new ProductUtils class
Browse files Browse the repository at this point in the history
  • Loading branch information
manuraf committed Oct 1, 2024
1 parent 75c0938 commit 92323ba
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@
import static it.pagopa.selfcare.onboarding.common.ProductId.PROD_PAGOPA;
import static it.pagopa.selfcare.onboarding.constants.CustomError.*;
import static it.pagopa.selfcare.onboarding.util.ErrorMessage.*;
import static it.pagopa.selfcare.product.utils.ProductUtils.validRoles;

@ApplicationScoped
public class OnboardingServiceDefault implements OnboardingService {
Expand Down Expand Up @@ -304,8 +305,8 @@ private Uni<OnboardingUtils.ProxyResource> getRegistryResource(Onboarding onboar
private Uni<Onboarding> persistOnboarding(Onboarding onboarding, List<UserRequest> userRequests, Product product, List<AggregateInstitutionRequest>aggregates) {
/* I have to retrieve onboarding id for saving reference to pdv */
return Panache.withTransaction(() -> Onboarding.persist(onboarding).replaceWith(onboarding)
.onItem().transformToUni(onboardingPersisted -> validationRole(userRequests, validRoles(product))
.onItem().transformToUni(ignore -> validateUserAggregatesRoles(aggregates, validRoles(product)))
.onItem().transformToUni(onboardingPersisted -> validationRole(userRequests, validRoles(product, PHASE_ADDITION_ALLOWED.ONBOARDING))
.onItem().transformToUni(ignore -> validateUserAggregatesRoles(aggregates, validRoles(product, PHASE_ADDITION_ALLOWED.ONBOARDING)))
.onItem().transformToUni(ignore -> retrieveAndSetUserAggregatesResources(onboardingPersisted, product, aggregates))
.onItem().transformToUni(ignore -> retrieveUserResources(userRequests, product))
.onItem().invoke(onboardingPersisted::setUsers).replaceWith(onboardingPersisted)));
Expand Down Expand Up @@ -549,14 +550,6 @@ private String retrieveProductRole(UserRequest userInfo, Map<PartyRole, ProductR
}
}

private List<PartyRole> validRoles(Product product) {
return product.getRoleMappings().entrySet().stream()
.filter(entry -> Objects.nonNull(entry.getValue().getPhasesAdditionAllowed()) &&
entry.getValue().getPhasesAdditionAllowed().contains(PHASE_ADDITION_ALLOWED.ONBOARDING))
.map(Map.Entry::getKey)
.collect(Collectors.toList());
}

private Uni<List<UserRequest>> validationRole(List<UserRequest> users, List<PartyRole> validRoles) {

List<UserRequest> usersNotValidRole = users.stream()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import it.pagopa.selfcare.onboarding.service.profile.OnboardingTestProfile;
import it.pagopa.selfcare.onboarding.service.strategy.OnboardingValidationStrategy;
import it.pagopa.selfcare.onboarding.service.util.OnboardingUtils;
import it.pagopa.selfcare.product.entity.PHASE_ADDITION_ALLOWED;
import it.pagopa.selfcare.product.entity.Product;
import it.pagopa.selfcare.product.entity.ProductRole;
import it.pagopa.selfcare.product.entity.ProductRoleInfo;
Expand Down Expand Up @@ -969,6 +970,7 @@ Product createDummyProduct(String productId, boolean hasParent) {
productRole.setCode("admin");
ProductRoleInfo productRoleInfo = new ProductRoleInfo();
productRoleInfo.setRoles(List.of(productRole));
productRoleInfo.setPhasesAdditionAllowed(List.of(PHASE_ADDITION_ALLOWED.ONBOARDING.value));
roleMapping.put(manager.getRole(), productRoleInfo);
productResource.setRoleMappings(roleMapping);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ public class ProductRoleInfo {
/**
* List of phases where addition of the role is allowed
*/
private List<PHASE_ADDITION_ALLOWED> phasesAdditionAllowed;
private List<String> phasesAdditionAllowed;
private List<ProductRole> roles;

public boolean isMultiroleAllowed() {
Expand All @@ -20,11 +20,11 @@ public void setMultiroleAllowed(boolean multiroleAllowed) {
this.multiroleAllowed = multiroleAllowed;
}

public List<PHASE_ADDITION_ALLOWED> getPhasesAdditionAllowed() {
public List<String> getPhasesAdditionAllowed() {
return phasesAdditionAllowed;
}

public void setPhasesAdditionAllowed(List<PHASE_ADDITION_ALLOWED> phasesAdditionAllowed) {
public void setPhasesAdditionAllowed(List<String> phasesAdditionAllowed) {
this.phasesAdditionAllowed = phasesAdditionAllowed;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package it.pagopa.selfcare.product.utils;

import it.pagopa.selfcare.onboarding.common.PartyRole;
import it.pagopa.selfcare.product.entity.PHASE_ADDITION_ALLOWED;
import it.pagopa.selfcare.product.entity.Product;

import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;

public class ProductUtils {

/**
* Returns list of product's PartyRole associates with that PHASE_ADDITION_ALLOWED
* @param product Product
* @param phase phase
* @return List<PartyRole>
*/
public static List<PartyRole> validRoles(Product product, PHASE_ADDITION_ALLOWED phase) {
if (Objects.isNull(product)) {
throw new IllegalArgumentException("Product must not be null!");
}
return Optional.ofNullable(product.getRoleMappings())
.orElse(Map.of())
.entrySet().stream()
.filter(entry -> Objects.nonNull(entry.getValue().getPhasesAdditionAllowed()) &&
entry.getValue().getPhasesAdditionAllowed().contains(phase.value))
.map(Map.Entry::getKey)
.collect(Collectors.toList());

}
}

0 comments on commit 92323ba

Please sign in to comment.