public async Task UploadFileAsync(FileDto file, MemoryStream memoryStream) { var fileParser = _fileParserFactory.CreateParser(file.Extension); try { var transactions = new List <Transaction>(); await foreach (var trans in fileParser.ParseFromFile(memoryStream)) { transactions.Add(trans); } await _transactionsService.AddTransactionRangeAsync(transactions); } catch (CsvFileParserException e) { _logger.LogError($"Csv file parsing failed. File name:{file.FileName}, message:{e.Message}"); throw e; } catch (XmlFileParserExeption e) { _logger.LogError($"Xml file parsing failed. File name:{file.FileName}, message:{e.Message}"); throw e; } catch (InvalidFileExtensionException e) { _logger.LogError($"Unknown file extension. File name:{file.FileName}, message:{e.Message}"); throw e; } catch (Exception e) { _logger.LogError($"Internal server error. File name:{file.FileName}, message:{e.Message}"); throw e; } }