Beispiel #1
0
        /// <summary>
        /// Generates a file upload result
        /// </summary>
        /// <param name="virtualPath">The virtual download path</param>
        /// <returns>A file upload result with no unprocessed data</returns>
        public FileUploadResult FileUploadResult(HandlerUploadModel model)
        {
            ProcessDebit(model);

            var fur = new FileUploadResult(receiptDate, null, model.VirtualPath);

            this.Dispose(false);

            return(fur);
        }
Beispiel #2
0
        /// <summary>
        /// Generates a file upload result
        /// </summary>
        /// <param name="unprocessed"><see langword="true"/> if it should contains unprocessed data, otherwise <see langword="false"/></param>
        /// <param name="virtualPath">The virtual download path</param>
        /// <returns>If true, returns a file upload result with the unprocessed data, otherwise the unprocessed data will be null</returns>
        public FileUploadResult FileUploadResult(HandlerUploadModel model, bool unprocessed)
        {
            ProcessDebit(model);

            var uContent = unprocessed ? Unprocessed.ToString() : null;
            var fur      = new FileUploadResult(receiptDate, uContent, model.VirtualPath);

            this.Dispose(false);

            return(fur);
        }
Beispiel #3
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));
        }
Beispiel #4
0
        public void ProcessDebit(HandlerUploadModel model)
        {
            if (model.VirtualPath.IsNull())
            {
                throw new InvalidOperationException($"{nameof(model.VirtualPath)} should not be null");
            }

            var debit = new DebitHandler(appSettings, receiptDate, debitAccountTotal);

            Content.Prepend(debit.Process()).AppendLine();

            var item = new LiquidacaoItem
            {
                VirtualPath = model.VirtualPath,
                Content     = Content.ToString()
            };

            var liquidacao = model.LiquidacaoStore.Get(model.UserId);

            liquidacao.AddItems(item, model.EventStore);
            model.LiquidacaoStore.Save(liquidacao);
        }