diff --git a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/functions/OnboardingFunctions.java b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/functions/OnboardingFunctions.java index aeb4e577d..b3415ef1e 100644 --- a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/functions/OnboardingFunctions.java +++ b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/functions/OnboardingFunctions.java @@ -189,31 +189,31 @@ public void saveToken(@DurableActivityTrigger(name = "onboardingString") String @FunctionName(SEND_MAIL_REGISTRATION_FOR_CONTRACT) public void sendMailRegistrationForContract(@DurableActivityTrigger(name = "onboardingString") String onboardingWorkflowString, final ExecutionContext context) { context.getLogger().info(String.format(FORMAT_LOGGER_ONBOARDING_STRING, SEND_MAIL_REGISTRATION_FOR_CONTRACT, onboardingWorkflowString)); - service.sendMailRegistrationForContract(context, readOnboardingWorkflowValue(objectMapper, onboardingWorkflowString)); + service.sendMailRegistrationForContract(readOnboardingWorkflowValue(objectMapper, onboardingWorkflowString)); } @FunctionName(SEND_MAIL_REGISTRATION_FOR_CONTRACT_WHEN_APPROVE_ACTIVITY) public void sendMailRegistrationForContractWhenApprove(@DurableActivityTrigger(name = "onboardingString") String onboardingWorkflowString, final ExecutionContext context) { context.getLogger().info(String.format(FORMAT_LOGGER_ONBOARDING_STRING, SEND_MAIL_REGISTRATION_FOR_CONTRACT_WHEN_APPROVE_ACTIVITY, onboardingWorkflowString)); - service.sendMailRegistrationForContractWhenApprove(context, readOnboardingWorkflowValue(objectMapper, onboardingWorkflowString)); + service.sendMailRegistrationForContractWhenApprove(readOnboardingWorkflowValue(objectMapper, onboardingWorkflowString)); } @FunctionName(SEND_MAIL_REGISTRATION_REQUEST_ACTIVITY) public void sendMailRegistration(@DurableActivityTrigger(name = "onboardingString") String onboardingString, final ExecutionContext context) { context.getLogger().info(String.format(FORMAT_LOGGER_ONBOARDING_STRING, SEND_MAIL_REGISTRATION_REQUEST_ACTIVITY, onboardingString)); - service.sendMailRegistration(context, readOnboardingValue(objectMapper, onboardingString)); + service.sendMailRegistration(readOnboardingValue(objectMapper, onboardingString)); } @FunctionName(SEND_MAIL_REGISTRATION_APPROVE_ACTIVITY) public void sendMailRegistrationApprove(@DurableActivityTrigger(name = "onboardingString") String onboardingString, final ExecutionContext context) { context.getLogger().info(String.format(FORMAT_LOGGER_ONBOARDING_STRING, SEND_MAIL_REGISTRATION_APPROVE_ACTIVITY, onboardingString)); - service.sendMailRegistrationApprove(context, readOnboardingValue(objectMapper, onboardingString)); + service.sendMailRegistrationApprove(readOnboardingValue(objectMapper, onboardingString)); } @FunctionName(SEND_MAIL_ONBOARDING_APPROVE_ACTIVITY) public void sendMailOnboardingApprove(@DurableActivityTrigger(name = "onboardingString") String onboardingString, final ExecutionContext context) { context.getLogger().info(String.format(FORMAT_LOGGER_ONBOARDING_STRING, SEND_MAIL_ONBOARDING_APPROVE_ACTIVITY, onboardingString)); - service.sendMailOnboardingApprove(context, readOnboardingValue(objectMapper, onboardingString)); + service.sendMailOnboardingApprove(readOnboardingValue(objectMapper, onboardingString)); } @FunctionName(CREATE_INSTITUTION_ACTIVITY) @@ -222,22 +222,22 @@ public String createInstitutionAndPersistInstitutionId(@DurableActivityTrigger(n return completionService.createInstitutionAndPersistInstitutionId(readOnboardingValue(objectMapper, onboardingString)); } - @FunctionName(CREATE_ONBOARDING_ACTIVITY) - public void createOnboarding(@DurableActivityTrigger(name = "onboardingString") String onboardingString, final ExecutionContext context) { - context.getLogger().info(String.format(FORMAT_LOGGER_ONBOARDING_STRING, CREATE_ONBOARDING_ACTIVITY, onboardingString)); - completionService.persistOnboarding(readOnboardingValue(objectMapper, onboardingString)); - } - @FunctionName(STORE_ONBOARDING_ACTIVATEDAT) public void storeOnboardingActivatedAt(@DurableActivityTrigger(name = "onboardingString") String onboardingString, final ExecutionContext context) { context.getLogger().info(String.format(FORMAT_LOGGER_ONBOARDING_STRING, STORE_ONBOARDING_ACTIVATEDAT, onboardingString)); completionService.persistActivatedAt(readOnboardingValue(objectMapper, onboardingString)); } + @FunctionName(CREATE_ONBOARDING_ACTIVITY) + public void createOnboarding(@DurableActivityTrigger(name = "onboardingString") String onboardingString, final ExecutionContext context) { + context.getLogger().info(String.format(FORMAT_LOGGER_ONBOARDING_STRING, CREATE_ONBOARDING_ACTIVITY, onboardingString)); + completionService.persistOnboarding(readOnboardingValue(objectMapper, onboardingString)); + } + @FunctionName(SEND_MAIL_COMPLETION_ACTIVITY) public void sendMailCompletion(@DurableActivityTrigger(name = "onboardingString") String onboardingWorkflowString, final ExecutionContext context) { context.getLogger().info(String.format(FORMAT_LOGGER_ONBOARDING_STRING, SEND_MAIL_COMPLETION_ACTIVITY, onboardingWorkflowString)); - completionService.sendCompletedEmail(context, readOnboardingWorkflowValue(objectMapper, onboardingWorkflowString)); + completionService.sendCompletedEmail(readOnboardingWorkflowValue(objectMapper, onboardingWorkflowString)); } @FunctionName(SEND_MAIL_REJECTION_ACTIVITY) @@ -255,7 +255,7 @@ public void createOnboardedUsers(@DurableActivityTrigger(name = "onboardingStrin @FunctionName(SEND_MAIL_COMPLETION_AGGREGATE_ACTIVITY) public void sendMailCompletionAggregate(@DurableActivityTrigger(name = "onboardingString") String onboardingString, final ExecutionContext context) { context.getLogger().info(String.format(FORMAT_LOGGER_ONBOARDING_STRING, SEND_MAIL_COMPLETION_AGGREGATE_ACTIVITY, onboardingString)); - completionService.sendCompletedEmailAggregate(context, readOnboardingValue(objectMapper, onboardingString)); + completionService.sendCompletedEmailAggregate(readOnboardingValue(objectMapper, onboardingString)); } @FunctionName(CREATE_AGGREGATE_ONBOARDING_REQUEST_ACTIVITY) diff --git a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/CompletionService.java b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/CompletionService.java index ffd2244d5..1a845f403 100644 --- a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/CompletionService.java +++ b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/CompletionService.java @@ -15,9 +15,9 @@ public interface CompletionService { void persistActivatedAt(Onboarding onboarding); - void sendCompletedEmail(ExecutionContext context, OnboardingWorkflow onboardingWorkflow); + void sendCompletedEmail(OnboardingWorkflow onboardingWorkflow); - void sendCompletedEmailAggregate(ExecutionContext context, Onboarding onboarding); + void sendCompletedEmailAggregate(Onboarding onboarding); void persistUsers(Onboarding onboarding); diff --git a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/CompletionServiceDefault.java b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/CompletionServiceDefault.java index 13d65dc16..c3aa021f9 100644 --- a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/CompletionServiceDefault.java +++ b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/CompletionServiceDefault.java @@ -1,7 +1,5 @@ package it.pagopa.selfcare.onboarding.service; -import com.microsoft.applicationinsights.TelemetryClient; -import com.microsoft.applicationinsights.TelemetryConfiguration; import com.microsoft.azure.functions.ExecutionContext; import it.pagopa.selfcare.onboarding.common.InstitutionPaSubunitType; import it.pagopa.selfcare.onboarding.common.InstitutionType; @@ -21,7 +19,6 @@ import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import jakarta.ws.rs.WebApplicationException; -import jakarta.ws.rs.core.Context; import jakarta.ws.rs.core.Response; import org.apache.commons.lang3.StringUtils; import org.eclipse.microprofile.config.inject.ConfigProperty; @@ -36,14 +33,15 @@ import java.time.LocalDateTime; import java.time.ZoneId; -import java.util.*; +import java.util.Collections; +import java.util.List; +import java.util.Objects; +import java.util.Optional; import java.util.stream.Collectors; import static it.pagopa.selfcare.onboarding.common.PartyRole.MANAGER; import static it.pagopa.selfcare.onboarding.common.WorkflowType.CONFIRMATION_AGGREGATE; -import static it.pagopa.selfcare.onboarding.service.NotificationEventServiceDefault.*; import static it.pagopa.selfcare.onboarding.service.OnboardingService.USERS_FIELD_LIST; -import static it.pagopa.selfcare.onboarding.utils.Utils.TelemetryConstants.*; import static jakarta.ws.rs.core.Response.Status.Family.SUCCESSFUL; @ApplicationScoped @@ -79,7 +77,6 @@ public class CompletionServiceDefault implements CompletionService { private final NotificationService notificationService; private final ProductService productService; private final OnboardingMapper onboardingMapper; - private final TelemetryClient telemetryClient; private final boolean hasToSendEmail; private final boolean forceInstitutionCreation; @@ -92,13 +89,10 @@ public CompletionServiceDefault(ProductService productService, OnboardingRepository onboardingRepository, TokenRepository tokenRepository, @ConfigProperty(name = "onboarding-functions.persist-users.send-mail") boolean hasToSendEmail, - @ConfigProperty(name = "onboarding-functions.force-institution-persist")boolean forceInstitutionCreation, - @Context @ConfigProperty(name = "onboarding-functions.appinsights.connection-string") String appInsightsConnectionString) { + @ConfigProperty(name = "onboarding-functions.force-institution-persist")boolean forceInstitutionCreation) { this.institutionMapper = institutionMapper; this.onboardingRepository = onboardingRepository; this.tokenRepository = tokenRepository; - TelemetryConfiguration telemetryConfiguration = TelemetryConfiguration.createDefault(); - telemetryConfiguration.setConnectionString(appInsightsConnectionString); this.productService = productService; this.notificationService = notificationService; this.onboardingMapper = onboardingMapper; @@ -106,8 +100,6 @@ public CompletionServiceDefault(ProductService productService, this.productMapper = productMapper; this.hasToSendEmail = hasToSendEmail; this.forceInstitutionCreation = forceInstitutionCreation; - this.telemetryClient = new TelemetryClient(telemetryConfiguration); - this.telemetryClient.getContext().getOperation().setName(OPERATION_NAME); } @Override @@ -144,20 +136,14 @@ public InstitutionResponse createOrRetrieveInstitution(Onboarding onboarding) { } @Override - public void sendCompletedEmail(ExecutionContext context, OnboardingWorkflow onboardingWorkflow) { + public void sendCompletedEmail(OnboardingWorkflow onboardingWorkflow) { Onboarding onboarding = onboardingWorkflow.getOnboarding(); List destinationMails = getDestinationMails(onboarding); destinationMails.add(onboarding.getInstitution().getDigitalAddress()); Product product = productService.getProductIsValid(onboarding.getProductId()); - try { - notificationService.sendCompletedEmail(onboarding.getInstitution().getDescription(), - destinationMails, product, onboarding.getInstitution().getInstitutionType(), - onboardingWorkflow); - telemetryClient.trackEvent(EVENT_ONBOARDING_FN_NAME, onboardingEventMap(onboarding), Map.of(EVENT_SEND_COMPLETION_FN_SUCCESS, 1D)); - } catch (Exception e) { - telemetryClient.trackEvent(EVENT_ONBOARDING_FN_NAME, onboardingEventFailureMap(onboarding, e), Map.of(EVENT_SEND_COMPLETION_FN_FAILURE, 1D)); - context.getLogger().severe(String.format("Impossible to send completion email for onboarding with ID %s %s", onboarding.getId(), Arrays.toString(e.getStackTrace()))); - } + notificationService.sendCompletedEmail(onboarding.getInstitution().getDescription(), + destinationMails, product, onboarding.getInstitution().getInstitutionType(), + onboardingWorkflow); } @Override @@ -191,13 +177,7 @@ public String createDelegation(Onboarding onboarding) { public void sendMailRejection(ExecutionContext context, Onboarding onboarding) { List destinationMails = Collections.singletonList(onboarding.getInstitution().getDigitalAddress()); Product product = productService.getProductIsValid(onboarding.getProductId()); - try { - notificationService.sendMailRejection(destinationMails, product, onboarding.getReasonForReject()); - telemetryClient.trackEvent(EVENT_ONBOARDING_FN_NAME, onboardingEventMap(onboarding), Map.of(EVENT_SEND_REJECTION_FN_SUCCESS, 1D)); - } catch (Exception e) { - telemetryClient.trackEvent(EVENT_ONBOARDING_FN_NAME, onboardingEventFailureMap(onboarding, e), Map.of(EVENT_SEND_REJECTION_FN_FAILURE, 1D)); - context.getLogger().severe(String.format("Impossible to send rejection email for onboarding with ID %s %s", onboarding.getId(), Arrays.toString(e.getStackTrace()))); - } + notificationService.sendMailRejection(destinationMails, product, onboarding.getReasonForReject()); } @Override @@ -210,7 +190,7 @@ public void persistOnboarding(Onboarding onboarding) { Optional.ofNullable(onboarding.getActivatedAt()) .ifPresent(date -> onboardingRequest.setActivatedAt(date.atZone(ZoneId.systemDefault()).toOffsetDateTime())); - if(Objects.nonNull(onboarding.getBilling())) { + if (Objects.nonNull(onboarding.getBilling())) { BillingRequest billingRequest = new BillingRequest(); billingRequest.recipientCode(onboarding.getBilling().getRecipientCode()); billingRequest.publicServices(onboarding.getBilling().isPublicServices()); @@ -236,16 +216,10 @@ public void persistActivatedAt(Onboarding onboarding) { } @Override - public void sendCompletedEmailAggregate(ExecutionContext context, Onboarding onboarding) { + public void sendCompletedEmailAggregate(Onboarding onboarding) { List destinationMails = getDestinationMails(onboarding); destinationMails.add(onboarding.getInstitution().getDigitalAddress()); - try { - notificationService.sendCompletedEmailAggregate(onboarding.getAggregator().getDescription(), destinationMails); - telemetryClient.trackEvent(EVENT_ONBOARDING_FN_NAME, onboardingEventMap(onboarding), Map.of(EVENT_SEND_COMPLETION_AGGREGATE_FN_SUCCESS, 1D)); - } catch (Exception e) { - telemetryClient.trackEvent(EVENT_ONBOARDING_FN_NAME, onboardingEventFailureMap(onboarding, e), Map.of(EVENT_SEND_COMPLETION_AGGREGATE_FN_FAILURE, 1D)); - context.getLogger().severe(String.format("Impossible to send completion aggregate email for onboarding with ID %s %s", onboarding.getId(), Arrays.toString(e.getStackTrace()))); - } + notificationService.sendCompletedEmailAggregate(onboarding.getAggregator().getDescription(), destinationMails); } @Override @@ -259,7 +233,7 @@ public String createAggregateOnboardingRequest(OnboardingAggregateOrchestratorIn @Override public void sendTestEmail(ExecutionContext context) { - notificationService.sendTestEmail(context); + notificationService.sendTestEmail(context); } private static DelegationRequest getDelegationRequest(Onboarding onboarding) { diff --git a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/OnboardingService.java b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/OnboardingService.java index e72e55a4a..488541ce9 100644 --- a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/OnboardingService.java +++ b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/OnboardingService.java @@ -1,7 +1,5 @@ package it.pagopa.selfcare.onboarding.service; -import com.microsoft.applicationinsights.TelemetryClient; -import com.microsoft.applicationinsights.TelemetryConfiguration; import com.microsoft.azure.functions.ExecutionContext; import eu.europa.esig.dss.enumerations.DigestAlgorithm; import eu.europa.esig.dss.model.DSSDocument; @@ -24,9 +22,7 @@ import it.pagopa.selfcare.product.service.ProductService; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; -import jakarta.ws.rs.core.Context; import org.bson.Document; -import org.eclipse.microprofile.config.inject.ConfigProperty; import org.eclipse.microprofile.rest.client.inject.RestClient; import org.openapi.quarkus.user_registry_json.api.UserApi; import org.openapi.quarkus.user_registry_json.model.CertifiableFieldResourceOfstring; @@ -38,13 +34,14 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.Optional; import java.util.stream.Collectors; -import static it.pagopa.selfcare.onboarding.service.NotificationEventServiceDefault.*; import static it.pagopa.selfcare.onboarding.utils.Utils.ALLOWED_WORKFLOWS_FOR_INSTITUTION_NOTIFICATIONS; import static it.pagopa.selfcare.onboarding.utils.Utils.CONTRACT_FILENAME_FUNC; -import static it.pagopa.selfcare.onboarding.utils.Utils.TelemetryConstants.*; @ApplicationScoped public class OnboardingService { @@ -69,26 +66,20 @@ public class OnboardingService { private final TokenRepository tokenRepository; private final MailTemplatePathConfig mailTemplatePathConfig; private final MailTemplatePlaceholdersConfig mailTemplatePlaceholdersConfig; - private final TelemetryClient telemetryClient; public OnboardingService(ProductService productService, ContractService contractService, OnboardingRepository repository, MailTemplatePathConfig mailTemplatePathConfig, MailTemplatePlaceholdersConfig mailTemplatePlaceholdersConfig, TokenRepository tokenRepository, - NotificationService notificationService, - @Context @ConfigProperty(name = "onboarding-functions.appinsights.connection-string") String appInsightsConnectionString) { + NotificationService notificationService) { this.contractService = contractService; this.repository = repository; this.tokenRepository = tokenRepository; - TelemetryConfiguration telemetryConfiguration = TelemetryConfiguration.createDefault(); - telemetryConfiguration.setConnectionString(appInsightsConnectionString); this.productService = productService; this.notificationService = notificationService; this.mailTemplatePathConfig = mailTemplatePathConfig; this.mailTemplatePlaceholdersConfig = mailTemplatePlaceholdersConfig; - this.telemetryClient = new TelemetryClient(telemetryConfiguration); - this.telemetryClient.getContext().getOperation().setName(OPERATION_NAME); } public Optional getOnboarding(String onboardingId) { @@ -157,95 +148,63 @@ private void saveToken(OnboardingWorkflow onboardingWorkflow, Product product, S tokenRepository.persist(token); } - public void sendMailRegistration(ExecutionContext context, Onboarding onboarding) { + public void sendMailRegistration(Onboarding onboarding) { SendMailInput sendMailInput = builderWithProductAndUserRequest(onboarding); - try { - notificationService.sendMailRegistration(onboarding.getInstitution().getDescription(), - onboarding.getInstitution().getDigitalAddress(), - sendMailInput.userRequestName, sendMailInput.userRequestSurname, - sendMailInput.product.getTitle()); - telemetryClient.trackEvent(EVENT_ONBOARDING_FN_NAME, onboardingEventMap(onboarding), Map.of(EVENT_SEND_REGISTRATION_FN_SUCCESS, 1D)); - } catch (Exception e) { - telemetryClient.trackEvent(EVENT_ONBOARDING_FN_NAME, onboardingEventFailureMap(onboarding, e), Map.of(EVENT_SEND_REGISTRATION_FN_FAILURE, 1D)); - context.getLogger().severe(String.format("Impossible to send registration email for onboarding with ID %s %s", onboarding.getId(), Arrays.toString(e.getStackTrace()))); - } + notificationService.sendMailRegistration(onboarding.getInstitution().getDescription(), + onboarding.getInstitution().getDigitalAddress(), + sendMailInput.userRequestName, sendMailInput.userRequestSurname, + sendMailInput.product.getTitle()); } - public void sendMailRegistrationForContract(ExecutionContext context, OnboardingWorkflow onboardingWorkflow) { + public void sendMailRegistrationForContract(OnboardingWorkflow onboardingWorkflow) { + Onboarding onboarding = onboardingWorkflow.getOnboarding(); SendMailInput sendMailInput = builderWithProductAndUserRequest(onboarding); + final String templatePath = onboardingWorkflow.emailRegistrationPath(mailTemplatePathConfig); final String confirmTokenUrl = onboardingWorkflow.getConfirmTokenUrl(mailTemplatePlaceholdersConfig); - try { - notificationService.sendMailRegistrationForContract(onboarding.getId(), - onboarding.getInstitution().getDigitalAddress(), - sendMailInput, - templatePath, - confirmTokenUrl); - telemetryClient.trackEvent(EVENT_ONBOARDING_FN_NAME, onboardingEventMap(onboarding), Map.of(EVENT_SEND_REGISTRATION_CONTRACT_FN_SUCCESS, 1D)); - } catch (Exception e) { - telemetryClient.trackEvent(EVENT_ONBOARDING_FN_NAME, onboardingEventFailureMap(onboarding, e), Map.of(EVENT_SEND_REGISTRATION_CONTRACT_FN_FAILURE, 1D)); - context.getLogger().severe(String.format("Impossible to send registration contract email for onboarding with ID %s %s", onboarding.getId(), Arrays.toString(e.getStackTrace()))); - } + + notificationService.sendMailRegistrationForContract(onboarding.getId(), + onboarding.getInstitution().getDigitalAddress(), + sendMailInput, + templatePath, + confirmTokenUrl); } - public void sendMailRegistrationForContractAggregator(ExecutionContext context, Onboarding onboarding) { + public void sendMailRegistrationForContractAggregator(Onboarding onboarding) { SendMailInput sendMailInput = builderWithProductAndUserRequest(onboarding); - try { - notificationService.sendMailRegistrationForContractAggregator(onboarding.getId(), - onboarding.getInstitution().getDigitalAddress(), - sendMailInput.userRequestName, sendMailInput.userRequestSurname, - sendMailInput.product.getTitle()); - telemetryClient.trackEvent(EVENT_ONBOARDING_FN_NAME, onboardingEventMap(onboarding), Map.of(EVENT_SEND_REGISTRATION_AGGREGATOR_FN_SUCCESS, 1D)); - } catch (Exception e) { - telemetryClient.trackEvent(EVENT_ONBOARDING_FN_NAME, onboardingEventFailureMap(onboarding, e), Map.of(EVENT_SEND_REGISTRATION_AGGREGATOR_FN_FAILURE, 1D)); - context.getLogger().severe(String.format("Impossible to send registration contract aggregator email for onboarding with ID %s %s", onboarding.getId(), Arrays.toString(e.getStackTrace()))); - } + notificationService.sendMailRegistrationForContractAggregator(onboarding.getId(), + onboarding.getInstitution().getDigitalAddress(), + sendMailInput.userRequestName, sendMailInput.userRequestSurname, + sendMailInput.product.getTitle()); } - public void sendMailRegistrationForContractWhenApprove(ExecutionContext context, OnboardingWorkflow onboardingWorkflow) { + public void sendMailRegistrationForContractWhenApprove(OnboardingWorkflow onboardingWorkflow) { Onboarding onboarding = onboardingWorkflow.getOnboarding(); Product product = productService.getProduct(onboarding.getProductId()); - try { - notificationService.sendMailRegistrationForContract(onboarding.getId(), - onboarding.getInstitution().getDigitalAddress(), - onboarding.getInstitution().getDescription(), "", - product.getTitle(), "description", - onboardingWorkflow.emailRegistrationPath(mailTemplatePathConfig), - onboardingWorkflow.getConfirmTokenUrl(mailTemplatePlaceholdersConfig)); - telemetryClient.trackEvent(EVENT_ONBOARDING_FN_NAME, onboardingEventMap(onboarding), Map.of(EVENT_SEND_REGISTRATION_CONTRACT_APPROVE_FN_SUCCESS, 1D)); - } catch (Exception e) { - telemetryClient.trackEvent(EVENT_ONBOARDING_FN_NAME, onboardingEventFailureMap(onboarding, e), Map.of(EVENT_SEND_REGISTRATION_CONTRACT_APPROVE_FN_FAILURE, 1D)); - context.getLogger().severe(String.format("Impossible to send registration contract email in case of approve for onboarding with ID %s %s", onboarding.getId(), Arrays.toString(e.getStackTrace()))); - } + notificationService.sendMailRegistrationForContract(onboarding.getId(), + onboarding.getInstitution().getDigitalAddress(), + onboarding.getInstitution().getDescription(), "", + product.getTitle(), "description", + onboardingWorkflow.emailRegistrationPath(mailTemplatePathConfig), + onboardingWorkflow.getConfirmTokenUrl(mailTemplatePlaceholdersConfig)); + } - public void sendMailRegistrationApprove(ExecutionContext context, Onboarding onboarding) { + public void sendMailRegistrationApprove(Onboarding onboarding) { SendMailInput sendMailInput = builderWithProductAndUserRequest(onboarding); - try { - notificationService.sendMailRegistrationApprove(onboarding.getInstitution().getDescription(), - sendMailInput.userRequestName, sendMailInput.userRequestSurname, - sendMailInput.product.getTitle(), - onboarding.getId()); - telemetryClient.trackEvent(EVENT_ONBOARDING_FN_NAME, onboardingEventMap(onboarding), Map.of(EVENT_SEND_REGISTRATION_APPROVE_FN_SUCCESS, 1D)); - } catch (Exception e) { - telemetryClient.trackEvent(EVENT_ONBOARDING_FN_NAME, onboardingEventFailureMap(onboarding, e), Map.of(EVENT_SEND_REGISTRATION_APPROVE_FN_FAILURE, 1D)); - context.getLogger().severe(String.format("Impossible to send registration approve email for onboarding with ID %s %s", onboarding.getId(), Arrays.toString(e.getStackTrace()))); - } + notificationService.sendMailRegistrationApprove(onboarding.getInstitution().getDescription(), + sendMailInput.userRequestName, sendMailInput.userRequestSurname, + sendMailInput.product.getTitle(), + onboarding.getId()); } - public void sendMailOnboardingApprove(ExecutionContext context, Onboarding onboarding) { + public void sendMailOnboardingApprove(Onboarding onboarding) { SendMailInput sendMailInput = builderWithProductAndUserRequest(onboarding); - try { - notificationService.sendMailOnboardingApprove(onboarding.getInstitution().getDescription(), - sendMailInput.userRequestName, sendMailInput.userRequestSurname, - sendMailInput.product.getTitle(), - onboarding.getId()); - telemetryClient.trackEvent(EVENT_ONBOARDING_FN_NAME, onboardingEventMap(onboarding), Map.of(EVENT_SEND_ONBOARDING_APPROVE_FN_SUCCESS, 1D)); - } catch (Exception e) { - telemetryClient.trackEvent(EVENT_ONBOARDING_FN_NAME, onboardingEventFailureMap(onboarding, e), Map.of(EVENT_SEND_ONBOARDING_APPROVE_FN_FAILURE, 1D)); - context.getLogger().severe(String.format("Impossible to send approve email for onboarding with ID %s %s", onboarding.getId(), Arrays.toString(e.getStackTrace()))); - } + notificationService.sendMailOnboardingApprove(onboarding.getInstitution().getDescription(), + sendMailInput.userRequestName, sendMailInput.userRequestSurname, + sendMailInput.product.getTitle(), + onboarding.getId()); } public String getValidManagerId(List users) { diff --git a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/utils/Utils.java b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/utils/Utils.java index e06742571..53e2447d8 100644 --- a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/utils/Utils.java +++ b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/utils/Utils.java @@ -21,29 +21,6 @@ public class Utils { private Utils() { } - - public static class TelemetryConstants { - private TelemetryConstants() { } - public static final String EVENT_SEND_REGISTRATION_FN_FAILURE = "EventsSendRegistrationEmail_failures"; - public static final String EVENT_SEND_REGISTRATION_FN_SUCCESS = "EventsSendRegistrationEmail_success"; - public static final String EVENT_SEND_REGISTRATION_CONTRACT_FN_FAILURE = "EventsSendRegistrationContractEmail_failures"; - public static final String EVENT_SEND_REGISTRATION_CONTRACT_FN_SUCCESS = "EventsSendRegistrationContractEmail_success"; - public static final String EVENT_SEND_ONBOARDING_APPROVE_FN_FAILURE = "EventsSendOnboardingApproveEmail_failures"; - public static final String EVENT_SEND_ONBOARDING_APPROVE_FN_SUCCESS = "EventsSendOnboardingApproveEmail_success"; - public static final String EVENT_SEND_REGISTRATION_APPROVE_FN_FAILURE = "EventsSendRegistrationApproveEmail_failures"; - public static final String EVENT_SEND_REGISTRATION_APPROVE_FN_SUCCESS = "EventsSendRegistrationApproveEmail_success"; - public static final String EVENT_SEND_REGISTRATION_AGGREGATOR_FN_FAILURE = "EventsSendRegistrationAggregatorEmail_failures"; - public static final String EVENT_SEND_REGISTRATION_AGGREGATOR_FN_SUCCESS = "EventsSendRegistrationAggregatorEmail_success"; - public static final String EVENT_SEND_REGISTRATION_CONTRACT_APPROVE_FN_FAILURE = "EventsSendRegistrationContractApproveEmail_failures"; - public static final String EVENT_SEND_REGISTRATION_CONTRACT_APPROVE_FN_SUCCESS = "EventsSendRegistrationContractApproveEmail_success"; - public static final String EVENT_SEND_COMPLETION_FN_FAILURE = "EventsSendCompletionEmail_failures"; - public static final String EVENT_SEND_COMPLETION_FN_SUCCESS = "EventsSendCompletionEmail_success"; - public static final String EVENT_SEND_REJECTION_FN_FAILURE = "EventsSendRejectionEmail_failures"; - public static final String EVENT_SEND_REJECTION_FN_SUCCESS = "EventsSendRejectionEmail_success"; - public static final String EVENT_SEND_COMPLETION_AGGREGATE_FN_SUCCESS = "EventsSendCompletionAggregateEmail_success"; - public static final String EVENT_SEND_COMPLETION_AGGREGATE_FN_FAILURE = "EventsSendCompletionAggregateEmail_failures"; - } - public static final BinaryOperator CONTRACT_FILENAME_FUNC = (filename, productName) -> String.format(filename, StringUtils.stripAccents(productName.replaceAll("\\s+","_"))); diff --git a/apps/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/functions/OnboardingFunctionsTest.java b/apps/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/functions/OnboardingFunctionsTest.java index 736fc5d73..4f38600ea 100644 --- a/apps/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/functions/OnboardingFunctionsTest.java +++ b/apps/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/functions/OnboardingFunctionsTest.java @@ -561,64 +561,62 @@ void saveToken() { void sendMailRegistrationWithContract() { when(executionContext.getLogger()).thenReturn(Logger.getGlobal()); - doNothing().when(service).sendMailRegistrationForContract(any(), any()); + doNothing().when(service).sendMailRegistrationForContract(any()); function.sendMailRegistrationForContract(onboardingWorkflowString, executionContext); verify(service, times(1)) - .sendMailRegistrationForContract(any(), any()); + .sendMailRegistrationForContract(any()); } - @Test void sendMailRegistration() { when(executionContext.getLogger()).thenReturn(Logger.getGlobal()); - doNothing().when(service).sendMailRegistration(any(), any()); + doNothing().when(service).sendMailRegistration(any()); function.sendMailRegistration(onboardinString, executionContext); verify(service, times(1)) - .sendMailRegistration(any(), any()); + .sendMailRegistration(any()); } @Test void sendMailRegistrationApprove() { when(executionContext.getLogger()).thenReturn(Logger.getGlobal()); - doNothing().when(service).sendMailRegistrationApprove(any(), any()); + doNothing().when(service).sendMailRegistrationApprove(any()); function.sendMailRegistrationApprove(onboardinString, executionContext); verify(service, times(1)) - .sendMailRegistrationApprove(any(), any()); + .sendMailRegistrationApprove(any()); } @Test void sendMailOnboardingApprove() { when(executionContext.getLogger()).thenReturn(Logger.getGlobal()); - doNothing().when(service).sendMailOnboardingApprove(any(), any()); + doNothing().when(service).sendMailOnboardingApprove(any()); function.sendMailOnboardingApprove(onboardinString, executionContext); verify(service, times(1)) - .sendMailOnboardingApprove(any(), any()); + .sendMailOnboardingApprove(any()); } @Test void sendMailRegistrationWithContractWhenApprove() { when(executionContext.getLogger()).thenReturn(Logger.getGlobal()); - doNothing().when(service).sendMailRegistrationForContractWhenApprove(any(), any()); + doNothing().when(service).sendMailRegistrationForContractWhenApprove(any()); function.sendMailRegistrationForContractWhenApprove(onboardingWorkflowString, executionContext); verify(service, times(1)) - .sendMailRegistrationForContractWhenApprove(any(), any()); + .sendMailRegistrationForContractWhenApprove(any()); } - @Test void onboardingCompletionOrchestrator() { Onboarding onboarding = new Onboarding(); @@ -646,9 +644,6 @@ void onboardingCompletionOrchestrator() { .updateOnboardingStatus(onboarding.getId(), OnboardingStatus.COMPLETED); } - - - @Test void onboardingRejectedOrchestrator() { Onboarding onboarding = new Onboarding(); @@ -683,16 +678,28 @@ void createInstitutionAndPersistInstitutionId() { .createInstitutionAndPersistInstitutionId(any()); } + @Test + void createOnboarding() { + + when(executionContext.getLogger()).thenReturn(Logger.getGlobal()); + doNothing().when(completionService).persistOnboarding(any()); + + function.createOnboarding(onboardinString, executionContext); + + verify(completionService, times(1)) + .persistOnboarding(any()); + } + @Test void sendCompletedEmail() { when(executionContext.getLogger()).thenReturn(Logger.getGlobal()); - doNothing().when(completionService).sendCompletedEmail(any(), any()); + doNothing().when(completionService).sendCompletedEmail(any()); function.sendMailCompletion(onboardingWorkflowString, executionContext); verify(completionService, times(1)) - .sendCompletedEmail(any(), any()); + .sendCompletedEmail(any()); } @Test @@ -711,12 +718,12 @@ void sendMailRejection() { void sendCompletedEmailAggregate() { when(executionContext.getLogger()).thenReturn(Logger.getGlobal()); - doNothing().when(completionService).sendCompletedEmailAggregate(any(), any()); + doNothing().when(completionService).sendCompletedEmailAggregate(any()); function.sendMailCompletionAggregate(onboardinString, executionContext); verify(completionService, times(1)) - .sendCompletedEmailAggregate(any(), any()); + .sendCompletedEmailAggregate(any()); } diff --git a/apps/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/service/CompletionServiceDefaultTest.java b/apps/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/service/CompletionServiceDefaultTest.java index a5843d561..bc9a0ec4d 100644 --- a/apps/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/service/CompletionServiceDefaultTest.java +++ b/apps/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/service/CompletionServiceDefaultTest.java @@ -494,37 +494,12 @@ void sendCompletedEmail() { .thenReturn(userResource); doNothing().when(notificationService).sendCompletedEmail(any(), any(), any(), any(), any()); - completionServiceDefault.sendCompletedEmail(context, onboardingWorkflow); + completionServiceDefault.sendCompletedEmail(onboardingWorkflow); Mockito.verify(notificationService, times(1)) .sendCompletedEmail(any(), any(), any(), any(), any()); } - @Test - void sendCompletedEmailWithError() { - - Product product = createDummyProduct(); - Onboarding onboarding = createOnboarding(); - OnboardingWorkflow onboardingWorkflow = new OnboardingWorkflowInstitution(onboarding, "INSTITUTION"); - - User user = createDummyUser(onboarding); - - ExecutionContext context = mock(ExecutionContext.class); - doReturn(Logger.getGlobal()).when(context).getLogger(); - - when(productService.getProduct(onboarding.getProductId())) - .thenReturn(product); - when(userRegistryApi.findByIdUsingGET(USERS_FIELD_LIST, user.getId())) - .thenReturn(userResource); - GenericOnboardingException exception = new GenericOnboardingException("error"); - doThrow(exception).when(notificationService).sendCompletedEmail(any(), any(), any(), any(), any()); - - completionServiceDefault.sendCompletedEmail(context, onboardingWorkflow); - Mockito.verify(notificationService, times(1)) - .sendCompletedEmail(any(), any(), any(), any(), any()); - - } - @Test void sendMailRejection() { @@ -561,7 +536,7 @@ void sendCompletedEmailAggregate() { .thenReturn(userResource); doNothing().when(notificationService).sendCompletedEmailAggregate(any(), any()); - completionServiceDefault.sendCompletedEmailAggregate(context, onboarding); + completionServiceDefault.sendCompletedEmailAggregate(onboarding); Mockito.verify(notificationService, times(1)) .sendCompletedEmailAggregate(any(), any()); diff --git a/apps/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/service/OnboardingServiceTest.java b/apps/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/service/OnboardingServiceTest.java index 6e9ecfaf5..b09e0eb24 100644 --- a/apps/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/service/OnboardingServiceTest.java +++ b/apps/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/service/OnboardingServiceTest.java @@ -292,9 +292,7 @@ void sendMailRegistrationWithContract() { sendMailInput, "default", "default"); - ExecutionContext context = getExecutionContext(); - - onboardingService.sendMailRegistrationForContract(context, onboardingWorkflow); + onboardingService.sendMailRegistrationForContract(onboardingWorkflow); Mockito.verify(notificationService, times(1)) .sendMailRegistrationForContract(any(), @@ -326,42 +324,8 @@ void sendMailRegistrationWithContractAggregator() { userResource.getName().getValue(), userResource.getFamilyName().getValue(), product.getTitle()); - ExecutionContext context = getExecutionContext(); - - onboardingService.sendMailRegistrationForContractAggregator(context, onboarding); - - Mockito.verify(notificationService, times(1)) - .sendMailRegistrationForContractAggregator(onboarding.getId(), - onboarding.getInstitution().getDigitalAddress(), - userResource.getName().getValue(), userResource.getFamilyName().getValue(), - product.getTitle()); - } - - @Test - void sendMailRegistrationWithContractAggregatorWithError() { - - Onboarding onboarding = createOnboarding(); - Product product = createDummyProduct(); - UserResource userResource = createUserResource(); - Token token = createDummyToken(); - - when(tokenRepository.findByOnboardingId(onboarding.getId())) - .thenReturn(Optional.of(token)); - when(productService.getProduct(onboarding.getProductId())) - .thenReturn(product); - - when(userRegistryApi.findByIdUsingGET(USERS_FIELD_LIST, onboarding.getUserRequestUid())) - .thenReturn(userResource); + onboardingService.sendMailRegistrationForContractAggregator(onboarding); - GenericOnboardingException exception = new GenericOnboardingException("errorCode"); - doThrow(exception).when(notificationService) - .sendMailRegistrationForContractAggregator(onboarding.getId(), - onboarding.getInstitution().getDigitalAddress(), - userResource.getName().getValue(), userResource.getFamilyName().getValue(), - product.getTitle()); - - ExecutionContext context = getExecutionContext(); - onboardingService.sendMailRegistrationForContractAggregator(context, onboarding); Mockito.verify(notificationService, times(1)) .sendMailRegistrationForContractAggregator(onboarding.getId(), onboarding.getInstitution().getDigitalAddress(), @@ -390,9 +354,7 @@ void sendMailRegistrationWithContractWhenApprove() { product.getTitle(), "description", "default", "default"); - ExecutionContext context = getExecutionContext(); - - onboardingService.sendMailRegistrationForContractWhenApprove(context, onboardingWorkflow); + onboardingService.sendMailRegistrationForContractWhenApprove(onboardingWorkflow); Mockito.verify(notificationService, times(1)) .sendMailRegistrationForContract(onboarding.getId(), @@ -408,8 +370,7 @@ void sendMailRegistrationWithContract_throwExceptionWhenTokenIsNotPresent() { OnboardingWorkflow onboardingWorkflow = getOnboardingWorkflowInstitution(onboarding); when(tokenRepository.findByOnboardingId(onboarding.getId())) .thenReturn(Optional.empty()); - ExecutionContext context = getExecutionContext(); - assertThrows(GenericOnboardingException.class, () -> onboardingService.sendMailRegistrationForContract(context, onboardingWorkflow)); + assertThrows(GenericOnboardingException.class, () -> onboardingService.sendMailRegistrationForContract(onboardingWorkflow)); } @Test @@ -428,9 +389,7 @@ void sendMailRegistration() { userResource.getName().getValue(), userResource.getFamilyName().getValue(), product.getTitle()); - ExecutionContext context = getExecutionContext(); - - onboardingService.sendMailRegistration(context, onboarding); + onboardingService.sendMailRegistration(onboarding); Mockito.verify(notificationService, times(1)) .sendMailRegistration(onboarding.getInstitution().getDescription(), @@ -439,33 +398,6 @@ void sendMailRegistration() { product.getTitle()); } - @Test - void sendMailRegistrationWithError() { - - UserResource userResource = createUserResource(); - Product product = createDummyProduct(); - Onboarding onboarding = createOnboarding(); - - when(productService.getProduct(onboarding.getProductId())) - .thenReturn(product); - when(userRegistryApi.findByIdUsingGET(USERS_FIELD_LIST, onboarding.getUserRequestUid())) - .thenReturn(userResource); - GenericOnboardingException exception = new GenericOnboardingException("error"); - doThrow(exception).when(notificationService).sendMailRegistration(onboarding.getInstitution().getDescription(), - onboarding.getInstitution().getDigitalAddress(), - userResource.getName().getValue(), userResource.getFamilyName().getValue(), - product.getTitle()); - - ExecutionContext context = getExecutionContext(); - onboardingService.sendMailRegistration(context, onboarding); - - Mockito.verify(notificationService, times(1)) - .sendMailRegistration(onboarding.getInstitution().getDescription(), - onboarding.getInstitution().getDigitalAddress(), - userResource.getName().getValue(), userResource.getFamilyName().getValue(), - product.getTitle()); - } - @Test void sendMailRegistrationApprove() { @@ -481,36 +413,7 @@ void sendMailRegistrationApprove() { doNothing().when(notificationService) .sendMailRegistrationApprove(any(), any(), any(),any(),any()); - ExecutionContext context = getExecutionContext(); - - onboardingService.sendMailRegistrationApprove(context, onboarding); - - Mockito.verify(notificationService, times(1)) - .sendMailRegistrationApprove(onboarding.getInstitution().getDescription(), - userResource.getName().getValue(), - userResource.getFamilyName().getValue(), - product.getTitle(), - onboarding.getId()); - } - - @Test - void sendMailRegistrationApproveWithError() { - - Onboarding onboarding = createOnboarding(); - Product product = createDummyProduct(); - UserResource userResource = createUserResource(); - - when(productService.getProduct(onboarding.getProductId())) - .thenReturn(product); - when(userRegistryApi.findByIdUsingGET(USERS_FIELD_LIST, onboarding.getUserRequestUid())) - .thenReturn(userResource); - GenericOnboardingException exception = new GenericOnboardingException("Something went wrong"); - doThrow(exception).when(notificationService) - .sendMailRegistrationApprove(any(), any(), any(),any(),any()); - - ExecutionContext context = getExecutionContext(); - - onboardingService.sendMailRegistrationApprove(context, onboarding); + onboardingService.sendMailRegistrationApprove(onboarding); Mockito.verify(notificationService, times(1)) .sendMailRegistrationApprove(onboarding.getInstitution().getDescription(), @@ -520,14 +423,12 @@ void sendMailRegistrationApproveWithError() { onboarding.getId()); } - @Test void sendMailRegistrationApprove_throwExceptionWhenTokenIsNotPresent() { Onboarding onboarding = createOnboarding(); when(tokenRepository.findByOnboardingId(onboarding.getId())) .thenReturn(Optional.empty()); - ExecutionContext context = getExecutionContext(); - assertThrows(GenericOnboardingException.class, () -> onboardingService.sendMailRegistrationApprove(context, onboarding)); + assertThrows(GenericOnboardingException.class, () -> onboardingService.sendMailRegistrationApprove(onboarding)); } @@ -544,10 +445,7 @@ void sendMailOnboardingApprove() { .thenReturn(userResource); doNothing().when(notificationService).sendMailOnboardingApprove(any(), any(), any(),any(),any()); - ExecutionContext context = getExecutionContext(); - - onboardingService.sendMailOnboardingApprove(context, onboarding); - + onboardingService.sendMailOnboardingApprove(onboarding); Mockito.verify(notificationService, times(1)) .sendMailOnboardingApprove(onboarding.getInstitution().getDescription(), @@ -563,8 +461,7 @@ void sendMailOnboardingApprove_throwExceptionWhenTokenIsNotPresent() { Onboarding onboarding = createOnboarding(); when(tokenRepository.findByOnboardingId(onboarding.getId())) .thenReturn(Optional.empty()); - ExecutionContext context = getExecutionContext(); - assertThrows(GenericOnboardingException.class, () -> onboardingService.sendMailOnboardingApprove(context, onboarding)); + assertThrows(GenericOnboardingException.class, () -> onboardingService.sendMailOnboardingApprove(onboarding)); } @Test