public async Task Handle(FileUploadedEvent message) { try { Log.Logger.Information("Message received in SendEmailConfirmingUpload: {@message}", message); var body = _mailMessageService.GetTemplateBasedMailBody("ConfirmationMailTemplate.html", message.DataFolder, "*.*", message.Email); var httpStatusCode = _mailSender.SendMailAsync( message.Email, _appSettings.CcAddress, _appSettings.SenderAddress, _appSettings.SubjectConfirmation + " " + message.Id, body, new string[] { }) .Result; Log.Logger.Information($"Result of mail sending: {httpStatusCode}"); await _bus.Bus.PublishAsync(Mapper.Map <FileReadyForProcessingEvent>(message)) .ConfigureAwait(false); } catch (Exception e) { Log.Logger.Error(e, "Error during email confirmation sending"); throw; } }
public async Task FragmentUploadedFile( [RabbitMQTrigger(SubscriptionName.Analyzer, ConnectionStringSetting = "RabbitMQ:ConnectionString")] FileUploadedEvent message, [RabbitMQ(QueueName = QueueName.Tokenizer, ConnectionStringSetting = "RabbitMQ:ConnectionString")] IAsyncCollector <FileFragmentedEvent> rabbitCollector, ILogger logger) { logger.LogInformation($"Start fragmenting message: {message.UploadId}"); var command = GenerateCommand(message); var messages = await _mediator.Send(command); await Task.WhenAll(messages.Select(m => rabbitCollector.AddAsync(m))); }
public ActionResult Post(UploadModel uploadModel) { if (uploadModel == null) { return(Error(new UploadErrorModel { Errors = new string[] { "uploadmodel is null" } })); } //if (!ModelState.IsValid) //{ // var enumerable = ModelState.Select(x => x.Value.Errors.First().ErrorMessage); // return Error(new UploadErrorModel{Errors = enumerable}); //} if (Request.Files.Count == 0) { return(Error(new UploadErrorModel { Errors = new[] { "At least one file must be uploaded!" } })); } var guid = Guid.NewGuid(); Log.Logger.Information("Received request to upload: {uploadId}", guid); var uploadDir = _appSettings.UploadDir; var dataFolder = Path.Combine(uploadDir, guid.ToString()); Directory.CreateDirectory(dataFolder); var fileNames = new List <string>(); for (var i = 0; i < Request.Files.Count; i++) { if (Request.Files[i].ContentLength == 0) { continue; } var filename = Path.GetFileName(Request.Files[i].FileName); Request.Files[i].SaveAs(Path.Combine(dataFolder, filename)); fileNames.Add(filename); } foreach (var uploadValidator in _uploadValidators) { var validationResult = uploadValidator.Validate(uploadModel, dataFolder, fileNames); if (validationResult != null) { return(Error(new UploadErrorModel { Errors = new[] { validationResult.ErrorMessage } })); } } Log.Logger.Information("Done writing and validating the following uploaded files: {uploadedFiles}", fileNames.ToArray()); var fileUploadedEvent = new FileUploadedEvent { FileNames = fileNames.ToArray(), Email = uploadModel.Email, Description = uploadModel.Description, Id = guid, DataFolder = dataFolder, Allergene = uploadModel.Allergene }; _bus.Publish(fileUploadedEvent); Log.Logger.Information("Message broadcasted that files were uploaded: {@message}", fileUploadedEvent); return(RedirectToAction("Thanks", "Home")); }
private IRequest <IEnumerable <FileFragmentedEvent> > GenerateCommand(FileUploadedEvent message) => message.Extension switch {