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
                                          )
                                      ));
        }
Ejemplo n.º 2
0
        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)));
        }