diff --git a/samples/invoices.csv b/samples/invoices.csv new file mode 100644 index 0000000..c6e93e8 --- /dev/null +++ b/samples/invoices.csv @@ -0,0 +1,6 @@ +InvoiceId;CustomerId;Amount;Currency +INV-001;C-100;125.50;EUR +INV-002;;89.00;EUR +INV-003;C-300;abc;EUR +INV-004;C-400;-10.00;EUR +;;0;EUR diff --git a/src/ImportAssist.Cli/Program.cs b/src/ImportAssist.Cli/Program.cs index 29f42d7..bd3d151 100644 --- a/src/ImportAssist.Cli/Program.cs +++ b/src/ImportAssist.Cli/Program.cs @@ -1,13 +1,54 @@ using ImportAssist.Core; -InvoiceRow[] rows = -[ - new("INV-001", "C-100", "125.50", "EUR"), - new("INV-002", "", "89.00", "EUR"), - new("INV-003", "C-300", "abc", "EUR"), - new("INV-004", "C-400", "-10.00", "EUR"), - new("", "", "0", "EUR") -]; +if (args.Length != 1) +{ + Console.Error.WriteLine( + "Bitte den Pfad zur CSV-Datei als Argument angeben."); + Environment.ExitCode = 1; + return; +} + +var path = args[0]; + +if (!File.Exists(path)) +{ + Console.Error.WriteLine($"Datei nicht gefunden: {path}"); + Environment.ExitCode = 1; + return; +} + +var lines = File.ReadAllLines(path); + +if (lines.Length == 0 || + lines[0] != "InvoiceId;CustomerId;Amount;Currency") +{ + Console.Error.WriteLine( + "Die Datei ist leer oder die Kopfzeile stimmt nicht."); + Environment.ExitCode = 1; + return; +} + +var rows = new List(); + +for (var index = 1; index < lines.Length; index++) +{ + var line = lines[index]; + var columns = line.Split(';'); + + if (line.Contains('"') || columns.Length != 4) + { + Console.Error.WriteLine( + $"Zeile {index + 1}: Erwartet werden vier Spalten ohne Anführungszeichen."); + Environment.ExitCode = 1; + return; + } + + rows.Add(new InvoiceRow( + columns[0], + columns[1], + columns[2], + columns[3])); +} foreach (var row in rows) {