Update 20250606
This commit is contained in:
180
OnDoc_ArchivierungBatch/Program.cs
Normal file
180
OnDoc_ArchivierungBatch/Program.cs
Normal file
@@ -0,0 +1,180 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Mail;
|
||||
using System.Security.Policy;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Schema;
|
||||
|
||||
namespace OnDoc_ArchivierungBatch
|
||||
{
|
||||
internal class Program
|
||||
{
|
||||
private static string connectionstring { get; set; } = "";
|
||||
private static DataSet dsdaten = new DataSet();
|
||||
private static DataTable SP_Parameters = new DataTable();
|
||||
private static int total = 0;
|
||||
private static int ok = 0;
|
||||
private static int error = 0;
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
write_log("Start");
|
||||
run();
|
||||
write_log("Total Dokumente:" + total.ToString());
|
||||
write_log("Total OK: "+ok.ToString());
|
||||
write_log("Total Fehler: "+ error.ToString());
|
||||
write_log("Ende");
|
||||
}
|
||||
|
||||
private static void write_log(string entry)
|
||||
{
|
||||
File.AppendAllText(Properties.Settings.Default.logfile, DateTime.Now.ToString() + " - " + entry + Environment.NewLine);
|
||||
}
|
||||
private static void archivedoc(string documentid)
|
||||
{
|
||||
write_log(documentid);
|
||||
string URL = Properties.Settings.Default.RESTURI + "api/ /ArchiveDocFromDatabase?dokumentid=" + documentid;
|
||||
|
||||
HttpWebRequest webRequest = HttpWebRequest.Create(URL) as HttpWebRequest;
|
||||
webRequest.Method = WebRequestMethods.Http.Get;
|
||||
webRequest.Headers["Authorization"] = "Bearer " + Properties.Settings.Default.APIKey;
|
||||
try
|
||||
{
|
||||
using (HttpWebResponse response = webRequest.GetResponse() as HttpWebResponse)
|
||||
{
|
||||
if (response.StatusCode == HttpStatusCode.OK)
|
||||
{
|
||||
StreamReader reader = new StreamReader(response.GetResponseStream());
|
||||
string responseContent = reader.ReadToEnd();
|
||||
if (responseContent.Contains("Hinweismeldung:"))
|
||||
{
|
||||
write_log("Die Archivierung des Dokumentes " + documentid + " wurde nicht durchgeführt:" + Environment.NewLine + responseContent);
|
||||
error = error + 1;
|
||||
return;
|
||||
}
|
||||
ok = ok + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
write_log("Die Archivierung des Dokumentes " + documentid + " wurde abgebrochen." + Environment.NewLine + "Fehler: " + response.StatusDescription);
|
||||
error = error + 1;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
write_log("Die Archivierung des Dokumentes " + documentid + " konnte nicht durchgeführt werden." + Environment.NewLine + "Fehler: " + ex.Message);
|
||||
error = error + 1;
|
||||
|
||||
}
|
||||
}
|
||||
private static void run()
|
||||
{
|
||||
connectionstring = Properties.Settings.Default.Connectionstring;
|
||||
Get_Tabledata("Select dokumentid from dokument where automatischearchivierung=1 and isnull(utomatischarchiviertam,0)=0");
|
||||
|
||||
foreach (System.Data.DataRow dr in dsdaten.Tables[0].Rows)
|
||||
{
|
||||
archivedoc(dr[0].ToString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
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);
|
||||
write_log("Mailversand an " + empfaenger + " nicht erfolgt" );
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
write_log("Mailversand an " + empfaenger + " nicht erfolgt");
|
||||
|
||||
}
|
||||
mail = null;
|
||||
SmtpServer = null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user