public IActionResult PostFileToBuffer([FromForm] BankStatementFile bankStatementFile) { var parsingResult = _importTransactionsService.ImportTransactions(bankStatementFile); return(parsingResult switch { CommandSuccess <int> commandSuccess => StatusCode(StatusCodes.Status201Created, new BankStatementFileImportResult() { NumberOfImportedTransactions = commandSuccess.Result }), InvalidInputResult <int> invalidInputResult => Problem(invalidInputResult.Reason, statusCode: StatusCodes.Status400BadRequest), _ => throw new ArgumentOutOfRangeException(nameof(parsingResult)) });
public ICommandResult <int> ImportTransactions(BankStatementFile bankStatementFile) { if (string.IsNullOrWhiteSpace(bankStatementFile.FileType)) { return(new InvalidInputResult <int>("File type cannot be empty")); } var parser = _bankStatementParsers.FirstOrDefault(x => x.CanHandle(bankStatementFile)); if (parser == null) { return(new InvalidInputResult <int>("No parser found for given statement type")); } var parsingResult = parser.Parse(bankStatementFile.FileContent); _bufferedTransactionStore.SaveTransactionsToBuffer(parsingResult); return(new CommandSuccess <int>(parsingResult.Count())); }
public bool CanHandle(BankStatementFile bankStatementFile) { return(bankStatementFile.FileType.Equals("ing", StringComparison.OrdinalIgnoreCase)); }