private async Task <Dictionary <string, DataContainer> > ParseStatement(IStatementParser parser, string flexqText, ProgressDialogController progress) { Dictionary <string, DataContainer> newData = null; try { await Task.Run(() => newData = parser.Parse(flexqText, progress, _settings, _currencies)); } catch (Exception ex) { progress.CloseAsync().Forget(); _dialogService.ShowMessageAsync(_mainVm, "Error", ex.Message).Forget(); _logger.Error(ex, "Flex file parse error"); return(null); } progress.SetMessage("Updating open trades"); return(newData); }
public async Task <IActionResult> Post([FromRoute] Bank bank, IFormFile file) { string csvString; using (var stream = new MemoryStream()) { await file.CopyToAsync(stream); csvString = Encoding.UTF8.GetString(stream.ToArray()); } return(csvString .Split("\n") .Where(line => line.Length > 0) .Select(r => _transactionCleaner.Clean(r)) .Skip(1) .Select(line => new Row(line)) .Select(row => _statementParser.Parse(row.Cells)) .Pipe(trans => new Summary(trans)) .Pipe(summary => Ok(summary))); }