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); } }
private static bool IsPublishedIntegrationEventCorrect(AccountCreationCompletedIntegrationEvent integrationEvent, Guid correlationId, Guid accountId) { return(integrationEvent.CorrelationId == correlationId && integrationEvent.AccountId == accountId); }