public async Task <FileUploadResult> HandleUploadAsync( int userId, HttpFile file, ILiquidacaoStore liquidacaoStore, IEventStore eventStore) { using (var reader = new StreamReader(file.Value)) { string line; while ((line = await reader.ReadLineAsync()) != null) { var currentLine = LineValidation .ValidateLine(line) .IsHeader() .IsEmpty() .IsOk(); if (currentLine.IsValid) { var receipt = currentLine.Receipt; SetReceiptDate(receipt.Recebimento); if (LineValidation.ValidateCnpj(receipt.Cnpj)) { var errorMessage = MessageHandler(receipt.Nf, ErrorEnum.CnpjInvalido); Unprocessed.AppendLine(errorMessage); continue; } await ProccessReceiptAsync(receipt); } } } var hum = new HandlerUploadModel { UserId = userId, LiquidacaoStore = liquidacaoStore, EventStore = eventStore, VirtualPath = Guid.NewGuid().ToString().Replace("-", "") }; return(FileUploadResult(hum, true)); }
public LiquidacaoModule( IFileUploadHandler fileUploadHandler, ILiquidacaoStore liquidacaoStore, IEventStore eventStore) : base("/file") { Get("/download/{virtualPath}/{filename}", async(args, _) => { var userId = int.TryParse(this.Request.Query.userId.Value, out int id) ? id : 0; var liquidacao = liquidacaoStore.Get(userId); var item = (LiquidacaoItem)liquidacao.GetItem(args.virtualPath); if (item == null) { return(HttpStatusCode.NotFound); } var fileName = (string)args.filename; var mimeType = MimeTypes.GetMimeType(fileName); return(Response .FromStream(await this.GetStreamAsync(item.Content), mimeType) .AsAttachment(fileName)); }); Post("/upload", async(args, _) => { var request = this.CustomBindAndValidate <FileUploadRequest>(); var fileUploadResult = await fileUploadHandler .HandleUploadAsync(request.UserId, request.File, liquidacaoStore, eventStore); var response = new FileUploadResponse(fileUploadResult); log.Debug($"http://localhost:5001/{response.DownloadLink}?userId={request.UserId}"); return(Negotiate .WithStatusCode(HttpStatusCode.OK) .WithModel(response)); }); }