public static CsvParser <Order> CreateParser() { var tokenizerOptions = new Options('"', '\\', ','); var tokenizer = new RFC4180Tokenizer(tokenizerOptions); var parserOptions = new CsvParserOptions(true, tokenizer); var mapper = new CsvOrderMapper(); var parser = new CsvParser <Order>(parserOptions, mapper); return(parser); }
public List <OrderRow> AddOrdersFromFiles(List <OrderRow> orders, string path) { try { if (!Directory.Exists(path)) { throw new Exception("Path does not exists"); } var files = FileService.GetFiles(path); foreach (var file in files) { if (Path.GetExtension(file).Equals(".txt", StringComparison.InvariantCultureIgnoreCase)) { var fileName = Path.GetFileName(file); if (FileIsAlreadyRegistered(fileName)) { continue; } var parser = new FileParser <OrderRow>('|', true, false, "txt"); var rows = parser.GetRows(file, Encoding.UTF8); foreach (var row in rows) { var splitedRow = parser.GetSplitedRow(row); var order = new OrderRow(); try { order = CsvOrderMapper.MapRow(splitedRow); } catch (NullReferenceException) { continue; } if (!OrderIsAlreadyRegistered(order)) { if (AddedOrderSuccessfullyToDatabase(order)) { orders.Add(order); } } } } } } catch (Exception ex) { throw new Exception($" Erro: {ex.Message}"); } return(orders); }
public void MapOrder_MapListToOrder_ShouldMapSuccessfully() { List <string> orderElements = new List <string> { "17835", "0001", "123-100", "2", "1x1 Red Piece", "", "0.05", "Normal", "2021-04-24", "Kalle Svensson", "265849" }; var order = CsvOrderMapper.MapRow(orderElements); Assert.AreEqual(order.OrderNumber, "17835"); Assert.AreEqual(order.ProductNumber, "123-100"); Assert.AreEqual(order.Quantity, 2); Assert.AreEqual(order.Description, ""); Assert.AreEqual(order.CustomerName, "Kalle Svensson"); Assert.AreEqual(order.CustomerNumber, "265849"); }