コード例 #1
0
        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));
        }
コード例 #2
0
        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));
            });
        }