/// <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); }
/// <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); }
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 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); }