using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Net; using System.IO; using System.Data.SqlClient; using System.Data; using System.Security.Cryptography; using Newtonsoft.Json; using System.Net.Mail; using System.Net.Http; using System.Diagnostics; namespace OnDoc_Paketversand { internal class Program { private static string connectionstring { get; set; } = ""; private static DataSet dsdaten = new DataSet(); private static DataTable SP_Parameters = new DataTable(); static void Main(string[] args) { run(); } public static void InitLogging() { Get_Tabledata("Select * from nlog_parameter WHERE ID=4", false, true); Logging.VersandstrasseLog.IntLogLevel = dsdaten.Tables[0].Rows[0]["LogLevel"].ToString(); Logging.VersandstrasseLog.IntUserID = dsdaten.Tables[0].Rows[0]["LogUserID"].ToString(); Logging.VersandstrasseLog.connectionstring = Properties.Settings.Default.LogConnectionstring; Logging.VersandstrasseLog.init_logger(); } private static void run() { connectionstring = Properties.Settings.Default.Connectionstring; InitLogging(); Logging.VersandstrasseLog.Info("Start OnDocPaketversand", "OnDoc-Paketversand", "", "", ""); string URLBase = Properties.Settings.Default.RESTURI + "api/Send_Versandstrasse?paketid="; string sql = "SELECT dbo.Ondoc_Versandstrasse_Paket.id, dbo.Ondoc_Versandstrasse_Paket.paket, dbo.Ondoc_Versandstrasse_Paket.ersteller, dbo.mitarbeiter.email"; sql = sql + " FROM dbo.Ondoc_Versandstrasse_Paket INNER JOIN dbo.mitarbeiter ON dbo.Ondoc_Versandstrasse_Paket.ersteller = dbo.mitarbeiter.mitarbeiternr"; sql = sql + " where (dbo.Ondoc_Versandstrasse_Paket.versendet = 0) AND (dbo.Ondoc_Versandstrasse_Paket.geloescht = 0) AND (dbo.Ondoc_Versandstrasse_Paket.aktiv = 1)"; sql = sql + " ORDER BY dbo.Ondoc_Versandstrasse_Paket.Versandoption"; Get_Tabledata(sql, false, true); int total = 0; int ok = 0; int error = 0; foreach (System.Data.DataRow dr in dsdaten.Tables[0].Rows) { string paketid = ""; string ersteller = ""; ersteller = dr[3].ToString(); paketid = dr[0].ToString(); Model.Versandpaket vp = JsonConvert.DeserializeObject(dr[1].ToString()); Logging.VersandstrasseLog.Info("Paket-Verarbeitung", "OnDoc-Paketversand", paketid, vp.partnernr.ToString(), "Start Versand"); string jsonstring = dr[1].ToString(); Console.WriteLine(jsonstring); string URL = URLBase + dr[0].ToString(); WebRequest request; var data = Encoding.UTF8.GetBytes(jsonstring); request = WebRequest.Create(URL); request.ContentLength = data.Length; request.ContentType = "application/json"; request.Method = "POST"; request.Headers["Authorization"] = "Bearer " + Properties.Settings.Default.APIKey; string response; total = total + 1; try { using (Stream requestStream = request.GetRequestStream()) { requestStream.Write(data, 0, data.Length); requestStream.Close(); using (Stream responseStream = request.GetResponse().GetResponseStream()) { using (var reader = new StreamReader(responseStream)) { response = reader.ReadToEnd(); } Logging.VersandstrasseLog.Info("Paket-Verarbeitung", "OnDoc-Paketversand", paketid, vp.partnernr.ToString(), "Ende Versand"); if (response.ToString().Contains("archiviert")) { Logging.VersandstrasseLog.Info("Paket-Verarbeitung", "OnDoc-Paketversand", paketid, vp.partnernr.ToString(), "Ende Versand"); ok = ok + 1; } else { // string message = "Das Versand-Couvert Nr. " + paketid + " / Partner-Nr " + vp.partnernr + " konnte nicht versendet werden."; string message = "Guten Tag

Das Versand-Couvert Nr." + paketid + " / Kunde-Nr: " + vp.partnernr + " konnte nicht versendet werden."; message = message + "

Das Couvert liegt weiterhin im Postausgang und es stehen folgende Optionen zur Verfügung:
"; message = message + "- Prüfen, ob das Dokument im OnBase gesperrt ist und ggf. entsperren
"; message = message + "- Löschen des Versand-Couverts und die Dokumente manuell versenden
"; message = message + "- Nächsten Versand abwarten"; message = message + "

"; message = message + "Bei Fragen kannst du das Dokumentenmanagement kontaktieren: per Email an dm@tkb.ch oder telefonisch +41 71 626 64 44"; message = message +"

--------------------------------------------
OnDoc"; sendmail(Properties.Settings.Default.adminmail, "OnDoc-Versandstrasse Fehler", message); sendmail(ersteller, "OnDoc-Versandstrasse: Versandcouvert nicht versendet", message); Logging.VersandstrasseLog.Error("Paket-Verarbeitung", "OnDoc-Paketversand", paketid, vp.partnernr.ToString(), "Ende Versand"); error = error + 1; } } } } catch (Exception ex) { //string message = "Das Versand-Couvert Nr. " + paketid + " / Partner-Nr " + vp.partnernr + " konnte nicht versendet werden."+Environment.NewLine+"("+ex.Message+")" string message = "Guten Tag

Das Versand-Couvert Nr." + paketid + " / Kunde-Nr: " + vp.partnernr + " konnte nicht versendet werden."; message = message + "

Das Couvert liegt weiterhin im Postausgang und es stehen folgende Optionen zur Verfügung:
"; message = message + "- Prüfen, ob das Dokument im OnBase gesperrt ist und ggf. entsperren
"; message = message + "- Löschen des Versand-Couverts und die Dokumente manuell versenden
"; message = message + "- Nächsten Versand abwarten"; message = message + "

"; message = message + "Bei Fragen kannst du das Dokumentenmanagement kontaktieren: per Email an dm@tkb.ch oder telefonisch +41 71 626 64 44"; message = message + "

--------------------------------------------
OnDoc"; sendmail(Properties.Settings.Default.adminmail, "OnDoc-Versandstrasse Fehler", message); sendmail(ersteller, "OnDoc-Versandstrasse: Versandcouvert nicht versendet", message); //sendmail(Properties.Settings.Default.adminmail, "OnDoc-Paketversand Fehler", message); error = error + 1; } } Logging.VersandstrasseLog.Info("Ende OnDocPaketversand", "OnDoc-Paketversand", "", "", ""); string msg = "OnDoc Paketversand durchgeführt
Total Pakete:" + total.ToString() + "
OK: " + ok.ToString() +"
Fehler: " + error.ToString(); sendmail(Properties.Settings.Default.adminmail, "OnDoc-Versandstrasse: Versand abgeschlossen", msg); } private static DataTable Get_Tabledata(string Tablename, bool StoredProc = false, bool is_SQL_String = false, DataTable sp_params = null) { try { if (sp_params == null && SP_Parameters.Rows.Count > 0) { sp_params = SP_Parameters.Copy(); } SqlConnection sqlconnect = new SqlConnection(); DataSet ds = new DataSet(); ds.Tables.Clear(); dsdaten.Tables.Clear(); sqlconnect.ConnectionString = connectionstring; SqlDataAdapter da = new SqlDataAdapter("", sqlconnect); SqlCommand sqlcmd = new SqlCommand(); sqlcmd.Connection = sqlconnect; if (StoredProc == true) { sqlcmd.CommandType = CommandType.StoredProcedure; if (Tablename.IndexOf("@@Mandantnr@@") > 0) Tablename = Tablename.Replace("@@Mandantnr@@", ""); sqlcmd.CommandText = Tablename; try { foreach (DataRow r in sp_params.Rows) { sqlcmd.Parameters.Add(r["Paramname"].ToString(), SqlDbType.VarChar); sqlcmd.Parameters[sqlcmd.Parameters.Count - 1].Value = r["Paramvalue"].ToString(); } } catch { }; } else { sqlcmd.CommandType = CommandType.Text; sqlcmd.CommandText = "Select * from " + Tablename; } if (is_SQL_String == true) sqlcmd.CommandText = Tablename; da.SelectCommand = sqlcmd; sqlconnect.Open(); da.Fill(dsdaten, "Daten1"); sqlconnect.Close(); return dsdaten.Tables[0]; } catch (Exception ex) { Console.WriteLine(ex.Message); return null; } } private static void sendmail(string empfaenger, string betreff, string message) { MailMessage mail = new MailMessage(); SmtpClient SmtpServer = new SmtpClient(); mail.To.Add(empfaenger); mail.From = new MailAddress("OnDoc@tkb.ch"); mail.Subject = Properties.Settings.Default.prefix_betreff + betreff; mail.IsBodyHtml = true; mail.Body = message; SmtpServer.Host = "smtp.tgcorp.ch"; SmtpServer.Port = 25; SmtpServer.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; try { SmtpServer.Send(mail); Logging.VersandstrasseLog.Info("Mailversand and " + empfaenger + " erfolgt", "OnDoc-Paketversand", "", "", ""); } catch (Exception ex) { Logging.VersandstrasseLog.Error("Mailversand and " + empfaenger + " nicht erfolgt", "OnDoc-Paketversand", "", "", ""); } mail = null; SmtpServer = null; } } }