private static int RunSendFromCsvAndReturnExitCode(SendLDocCSVOptions options) { var provider = CultureInfo.CreateSpecificCulture("en-US"); if (string.IsNullOrWhiteSpace(options.CsvListFileName)) { return 3; // this shouldn't happen anyway, because parameter is already required } var csvListFile = new FileInfo(options.CsvListFileName); if (!csvListFile.Exists) { log.Error(string.Format("ERROR: file {0} doesn't exist.", csvListFile.Name)); return 4; } if (!csvListFile.Extension.ToLower().Equals(".csv")) { log.Error(string.Format("ERROR: file {0} should have .csv extnsion.", csvListFile.Name)); return 4; } MutableDataTable dt; try { dt = DataTable.New.ReadCsv(csvListFile.FullName); int totalRows = dt.NumRows; if (totalRows < 1) { log.Fatal(string.Format("ERROR: file {0} doesn't contain any rows.", csvListFile.Name)); return 4; } const int requiredColumns = 11; if (dt.Columns.Count() != requiredColumns) { log.Fatal(string.Format("ERROR: file {0} should contain exactly {1} columns.", csvListFile.Name, requiredColumns)); return 4; } log.Info("Found " + totalRows + " rows."); } catch (Exception ex) { log.Fatal(ex); return 22; } var errors = 0; foreach (var r in dt.Rows) { try { var inputFiles = r["files"].Split(';'); var files = new List<FileInfo>(); foreach (var f in inputFiles) { var fi = new FileInfo(f); if (!fi.Exists) { log.Error(string.Format("ERROR: file {0} doesn't exist. Skipping...", fi.Name)); errors++; continue; } files.Add(fi); } var naziv = r["naziv"]; var koda = r["koda"]; var nazivDobavitelja = r["nazivdobavitelja"]; var sifraDobavitelja = r["sifradobavitelja"]; var davcnaStevilkaDobavitelja = r["davcnastevilkadobavitelja"]; var stevilkaRacuna = r["stevilkaracuna"]; var node = r["Node"]; DateTime datumIzdajeRacuna = DateTime.ParseExact(r["datumizdajeracuna"].Trim(), "yyyy-dd-M", provider); int leto = Int32.Parse(r["leto"]); Guid guidTransaction = Guid.Empty; guidTransaction = SendLogicaDocument(files, naziv, koda, nazivDobavitelja, sifraDobavitelja, davcnaStevilkaDobavitelja, stevilkaRacuna, datumIzdajeRacuna, leto, node, options.Debug); r["guid"] = guidTransaction.ToString(); log.Info("Sent document with GUID:" + guidTransaction.ToString() + " Code:" + koda); } catch (Exception ex) { log.Error(ex, "Error in loop: "); errors++; } } try { var result = Path.Combine(csvListFile.DirectoryName, "out-" + csvListFile.Name); dt.SaveCSV(result); } catch (Exception ex) { log.Error(ex, "Error saving: "); return 222; } if (errors > 0) return 111; else return 0; }
private static int RunSendFromCsvAndReturnExitCode(SendLDocCSVOptions options) { var provider = CultureInfo.CreateSpecificCulture("en-US"); if (string.IsNullOrWhiteSpace(options.CsvListFileName)) { return(3); // this shouldn't happen anyway, because parameter is already required } var csvListFile = new FileInfo(options.CsvListFileName); if (!csvListFile.Exists) { log.Error(string.Format("ERROR: file {0} doesn't exist.", csvListFile.Name)); return(4); } if (!csvListFile.Extension.ToLower().Equals(".csv")) { log.Error(string.Format("ERROR: file {0} should have .csv extnsion.", csvListFile.Name)); return(4); } MutableDataTable dt; try { dt = DataTable.New.ReadCsv(csvListFile.FullName); int totalRows = dt.NumRows; if (totalRows < 1) { log.Fatal(string.Format("ERROR: file {0} doesn't contain any rows.", csvListFile.Name)); return(4); } const int requiredColumns = 11; if (dt.Columns.Count() != requiredColumns) { log.Fatal(string.Format("ERROR: file {0} should contain exactly {1} columns.", csvListFile.Name, requiredColumns)); return(4); } log.Info("Found " + totalRows + " rows."); } catch (Exception ex) { log.Fatal(ex); return(22); } var errors = 0; log.Info($"Is devel: {options.IsDevelopment}."); var tokenClient = GetAuthClient(options.FindCertificateByValue, options.IsDevelopment); if (tokenClient == null) { return(6); } foreach (var r in dt.Rows) { try { var inputFile = r["files"].Split(';'); if (inputFile.Count() != 1) { throw new Exception("multiple files not supported"); } var fi = new FileInfo(inputFile[0]); if (!fi.Exists) { log.Error(string.Format("ERROR: file {0} doesn't exist. Skipping...", fi.Name)); errors++; continue; } var naziv = r["naziv"]; var koda = r["koda"]; var nazivDobavitelja = r["nazivdobavitelja"]; var sifraDobavitelja = r["sifradobavitelja"]; var davcnaStevilkaDobavitelja = r["davcnastevilkadobavitelja"]; var stevilkaRacuna = r["stevilkaracuna"]; var node = r["Node"]; DateTime datumIzdajeRacuna = DateTime.ParseExact(r["datumizdajeracuna"].Trim(), "yyyy-dd-M", provider); int leto = Int32.Parse(r["leto"]); Guid guidTransaction = SendDocument(tokenClient, options.IsDevelopment, fi, naziv, koda, nazivDobavitelja, sifraDobavitelja, davcnaStevilkaDobavitelja, stevilkaRacuna, datumIzdajeRacuna, leto, node); r["guid"] = guidTransaction.ToString(); log.Info("Sent document with GUID:" + guidTransaction.ToString() + " Code:" + koda); } catch (Exception ex) { log.Error(ex, $"Error in loop: {ex.Message}"); errors++; } } try { var result = Path.Combine(csvListFile.DirectoryName, "out-" + csvListFile.Name); dt.SaveCSV(result); } catch (Exception ex) { log.Error(ex, "Error saving: "); return(222); } if (errors > 0) { return(111); } else { return(0); } }