private async Task Handle(DocumentUploaded documentUploaded) { if (documentUploaded.TranslationType != TranslationType.Google) { return; } var translationQueuedEvent = new TranslationQueued( aggregateId: Guid.NewGuid().ToSequentialGuid(), version: documentUploaded.Version + 1, correlationId: documentUploaded.AggregateId, causationId: documentUploaded.Id, userId: documentUploaded.UserId ); await _eventPublisher.PublishAsync(translationQueuedEvent); BackgroundJob.Enqueue(() => _translationWorker.StartAsync( new TranslationRequest( translationQueuedEvent.AggregateId, documentUploaded.AggregateId, translationQueuedEvent.CausationId.Value, translationQueuedEvent.Version, documentUploaded.UserId, documentUploaded.FileName, documentUploaded.TranslationSubject ) )); }
private async Task HandleAsync(TranslationQueued @event, CancellationToken cancellationToken = default) { if (cancellationToken.IsCancellationRequested) { _logger.LogInformation($"{nameof(DocumentProjectionManager)}.{nameof(HandleAsync)} was cancelled before execution"); cancellationToken.ThrowIfCancellationRequested(); } await Task.WhenAll(_projectionWriters.Select(pw => pw.UpdateAsync(@event.DocumentSubject, document => { document.TranslationSubject = @event.Subject; document.TranslationProgress = TranslationProgress.Queued; document.Version = @event.Version; }, cancellationToken))); }