You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
211 lines
9.0 KiB
211 lines
9.0 KiB
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;
|
|
|
|
|
|
|
|
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<Model.Versandpaket>(dr[1].ToString());
|
|
Logging.VersandstrasseLog.Info("Paket-Verarbeitung", "OnDoc-Paketversand", paketid, vp.partnernr.ToString(), "Start Versand");
|
|
string jsonstring = dr[1].ToString();
|
|
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();
|
|
}
|
|
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.";
|
|
sendmail(Properties.Settings.Default.adminmail, "OnDoc-Paketversand Fehler", message);
|
|
|
|
sendmail(ersteller, "OnDoc-Paketversand: Dokument nicht Versandcouvert nicht versendet", message);
|
|
|
|
Logging.VersandstrasseLog.Error("Paket-Verarbeitung", "OnDoc-Paketversand", paketid, vp.partnernr.ToString(), "Ende Versand");
|
|
error = error + 1;
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Logging.VersandstrasseLog.Error("Paket-Verarbeitung", "OnDoc-Paketversand", dr[0].ToString(), vp.partnernr.ToString(), "Ende Versand - " + ex.Message);
|
|
sendmail(Properties.Settings.Default.adminmail, "OnDoc-Paketversand Fehler", ex.Message);
|
|
error = error + 1;
|
|
}
|
|
|
|
}
|
|
Logging.VersandstrasseLog.Info("Ende OnDocPaketversand", "OnDoc-Paketversand", "", "", "");
|
|
string msg = "OnDok Paketversand durchgeführt" + Environment.NewLine + "Total Pakete:" + total.ToString() + Environment.NewLine + "OK: " + ok.ToString() + Environment.NewLine + "Fehler: " + error.ToString();
|
|
sendmail(Properties.Settings.Default.adminmail, "OnDoc-Paketversand 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;
|
|
}
|
|
}
|
|
|
|
}
|