Ejemplo n.º 1
0
        public async Task HandleAsync(UserCreationCompletedIntegrationEvent integrationEvent, CancellationToken cancellationToken = default)
        {
            try
            {
                var getAccountResult = await _accountGetterService.GetByIdAsync(integrationEvent.UserId);

                var accountCreationCompletedIntegrationEvent =
                    new AccountCreationCompletedIntegrationEvent(integrationEvent.CorrelationId,
                                                                 getAccountResult.Value.Id);
                var publishIntegrationEvenTask = _integrationEventBus.PublishIntegrationEventAsync(accountCreationCompletedIntegrationEvent);

                var accountConfirmationToken = getAccountResult.Value.Tokens.SingleOrDefault(x => x.Type.Equals(TokenTypeEnumeration.AccountConfirmation));
                if (accountConfirmationToken != null)
                {
                    await _accountConfirmationRequestService.PublishAccountConfirmationRequestedIntegrationEventAsync(
                        getAccountResult.Value.Email, accountConfirmationToken.Value, integrationEvent.CorrelationId);
                }

                await publishIntegrationEvenTask;
            }
            catch (Exception e)
            {
                _logger.LogIntegrationEventError(ServiceComponentEnumeration.RivaIdentity, integrationEvent,
                                                 "accountId={accountId}, message={message}, stackTrace={stackTrace}", integrationEvent.UserId,
                                                 e.Message, e.StackTrace);

                var accountCreationCompletedIntegrationEventFailure =
                    new AccountCreationCompletedIntegrationEventFailure(integrationEvent.CorrelationId,
                                                                        IntegrationEventErrorCodeEnumeration.UnexpectedError.DisplayName,
                                                                        IntegrationEventErrorMessage.UnexpectedError, integrationEvent.UserId);
                await _integrationEventBus.PublishIntegrationEventAsync(accountCreationCompletedIntegrationEventFailure);
            }
        }
Ejemplo n.º 2
0
 private static bool IsPublishedIntegrationEventCorrect(AccountCreationCompletedIntegrationEvent integrationEvent, Guid correlationId, Guid accountId)
 {
     return(integrationEvent.CorrelationId == correlationId && integrationEvent.AccountId == accountId);
 }