using Database; using DOCGEN; using Microsoft.Office.Interop.Word; using Model; using Newtonsoft.Json; using NLog.LayoutRenderers; using OnDoc.DocMgmt; using OnDoc.Klassen; using Syncfusion.Windows.Forms.Edit; using Syncfusion.Windows.Forms.Tools; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using Windows.Media.AppRecording; namespace OnDoc.UIControls { public partial class Approval : UserControl { public bool approval_startet { get; set; } = false; private TreeViewAdv treeviewsave = new TreeViewAdv(); public Approval() { InitializeComponent(); } private void treeViewAdv1_Click(object sender, EventArgs e) { try { } catch { } } private System.Data.DataTable notes = new System.Data.DataTable(); public int pages = 0; private void AddNote(string datum, string betreff, string note, string ersteller) { DataRow dr = notes.NewRow(); dr[0] = datum + " / " + betreff; dr[1] = note; dr[2] = ersteller; notes.Rows.Add(dr); } private void treeViewAdv1_NodeMouseClick(object sender, Syncfusion.Windows.Forms.Tools.TreeViewAdvMouseClickEventArgs e) { update_details(e.Node.Tag as string); } private void update_details(string nodetag) { try { if (nodetag.Contains("(Paket)")) { string pid = nodetag.Substring(0, nodetag.Length - 7); grpDetails.Visible = false; DB dB = new DB(AppParams.connectionstring); dB.Get_Tabledata("Select paket from ondoc_versandstrasse_paket where id = " + pid.ToString(), false, true); Versandpaket vp = JsonConvert.DeserializeObject(dB.dsdaten.Tables[0].Rows[0]["paket"].ToString()); this.docPreview1.Show_Doc(vp.finaldoc); // vp = null; return; } grpDetails.Visible = true; notes.Rows.Clear(); ; notes.Columns.Clear(); notes.AcceptChanges(); notes.Columns.Add("Betreff"); notes.Columns.Add("Note"); notes.Columns.Add("Notewriter"); this.docPreview1.Show_Doc(nodetag); this.pages = docPreview1.Get_Page_Count(); Database.DB db = new Database.DB(AppParams.connectionstring); db.Get_Tabledata("Select * from View_Relaunach_Approval_Doc where dokumentid='" + nodetag + "'", false, true); this.txtdokumentid.Text = db.dsdaten.Tables[0].Rows[0]["Dokumentid"].ToString(); this.txtbezeichnung.Text = db.dsdaten.Tables[0].Rows[0]["bezeichnung"].ToString(); this.txtPartnerNr.Text = db.dsdaten.Tables[0].Rows[0]["nrpar00"].ToString(); this.txtPartner.Text = db.dsdaten.Tables[0].Rows[0]["bkpar00"].ToString(); this.txterstelltam.Text = db.dsdaten.Tables[0].Rows[0]["erstelltam"].ToString(); this.txtersteller.Text = db.dsdaten.Tables[0].Rows[0]["ersteller"].ToString(); this.txtmutiertam.Text = db.dsdaten.Tables[0].Rows[0]["mutiertam"].ToString(); this.txtmutierer.Text = db.dsdaten.Tables[0].Rows[0]["mutierer"].ToString(); this.txtVerantwortlich.Text = db.dsdaten.Tables[0].Rows[0]["verantwortlich"].ToString(); foreach (DataRow dr in db.dsdaten.Tables[0].Rows) { try { if (Convert.ToBoolean(dr["aktiv"])) { AddNote(dr["erstellt_am"].ToString(), dr["betreff"].ToString(), dr["note"].ToString(), dr["Notizersteller"].ToString()); } } catch { } } sfListView1.DataSource = notes; sfListView1.DisplayMember = "Betreff"; sfListView1.ValueMember = "note"; } catch { } } private void sfListView1_ToolTipOpening(object sender, Syncfusion.WinForms.ListView.Events.ToolTipOpeningEventArgs e) { var dataRow = (e.ItemData as DataRowView).Row; this.txtNote.Text = dataRow["note"].ToString(); this.txtnotewriter.Text = dataRow["notewriter"].ToString(); } public void Update_Docs(int manr) { treeViewAdv1.Nodes.Clear(); Database.DB db = new Database.DB(AppParams.connectionstring); db.Get_Tabledata("Select * from view_relaunch_approval where mitarbeiter_bewilligung=" + manr.ToString() + " order by bewilligungstyp, nrpar00, bezeichnung", false, true); //TreeNodeAdv tn1 = new TreeNodeAdv(); //TreeNodeAdv tn2 = new TreeNodeAdv(); TreeNodeAdv tnpartner = null; //tn1.Text = "Unterschfit links"; //tn2.Text = "Unterschrift rechts"; int tmppartner = 0; foreach (DataRow dr in db.dsdaten.Tables[0].Rows) { if (tmppartner != Convert.ToInt32(dr["nrpar00"])) { tmppartner = Convert.ToInt32(dr["nrpar00"]); tnpartner = new TreeNodeAdv(); tnpartner.Text = dr["nrpar00"].ToString() + " " + dr["bkpar00"].ToString(); if (dr["bewilligungstyp"].ToString() == "1") { treeViewAdv1.Nodes.Add(tnpartner); } else { treeViewAdv1.Nodes.Add(tnpartner); } } TreeNodeAdv tndok = new TreeNodeAdv(); tndok.Text = dr["bezeichnung"].ToString(); tndok.Tag = dr["dokumentid"].ToString(); tndok.TagObject = dr; tnpartner.Nodes.Add(tndok); } //if (tn1.Nodes.Count > 0) { treeViewAdv1.Nodes.Add(tn1); } //if (tn2.Nodes.Count > 0) { treeViewAdv1.Nodes.Add(tn2); } treeViewAdv1.ExpandAll(); if (treeViewAdv1.Nodes.Count > 0) { treeViewAdv1.SelectedNode = treeViewAdv1.Nodes[0].Nodes[0]; update_details(treeViewAdv1.SelectedNode.Tag as string); } try { db.Get_Tabledata("Select * from ondoc_view_prov_pakete where (aktiv=1 and (signedleft=0 and signleft='" + AppParams.currenttgnummer.ToString() + "') or (signedright=0 and signright='" + AppParams.currenttgnummer.ToString() + "'))", false, true); foreach (DataRow dr in db.dsdaten.Tables[0].Rows) { if (tmppartner != Convert.ToInt32(dr["partnernr"])) { tmppartner = Convert.ToInt32(dr["partnernr"]); tnpartner = new TreeNodeAdv(); tnpartner.Text = dr["partnernr"].ToString() + " " + dr["bkpar00"].ToString(); treeViewAdv1.Nodes.Add(tnpartner); } TreeNodeAdv tndok = new TreeNodeAdv(); tndok.Text = "Dokumentpaket - " + dr["Bezeichnung"].ToString(); tndok.Tag = dr["paketid"].ToString() + "(Paket)"; tndok.TagObject = dr; tnpartner.Nodes.Add(tndok); } }catch { } if (AppParams.MultiThreadingSign) { treeviewsave = treeViewAdv1; } } public int anzahl_dokument() { return treeViewAdv1.Nodes.Count; } private void ribbonButtonNotApproved_Click(object sender, EventArgs e) { frmNote note = new frmNote(treeViewAdv1.SelectedNode.Tag.ToString(), "Ablehnen"); DataRow dr = treeViewAdv1.SelectedNode.TagObject as DataRow; if (note.ShowDialog() == DialogResult.OK) { DB db = new DB(AppParams.connectionstring); string sql = "update dokument_bewilligung set abgelehnt=1, abgelehnt_am = '" + DateTime.Now.ToString() + "', betreff='" + note.betreff + "', notizgrund='" + note.notiz + "' where id=" + dr["id"].ToString(); db.Exec_SQL(sql); clsMailer mailer = new clsMailer(); string empfaengerid = ""; db.Get_Tabledata("Select mutierer from dokument_Bewilligung where id=" + dr["id"].ToString(), false, true); empfaengerid = db.dsdaten.Tables[0].Rows[0][0].ToString(); // treeViewAdv1.Nodes.Remove(treeViewAdv1.SelectedNode); // TreeNodeAdv tp = treeViewAdv1.SelectedNode.Parent; // treeViewAdv1.SelectedNode.Parent.Nodes.Remove(treeViewAdv1.SelectedNode); if (dr["Bewilligungstyp"].ToString() == "2") { db.Exec_SQL("Update dokument set approved=0, approval2=0 where dokumentid='" + dr["dokumentid"].ToString() + "'"); } else { db.Exec_SQL("Update dokument set approved=0, approval1=0 where dokumentid='" + dr["dokumentid"].ToString() + "'"); } mailer.sendmail(5, empfaengerid, "", "", dr["dokumentid"].ToString(), "", AppParams.CurrentMitarbeiter.ToString(), dr["id"].ToString()); mailer = null; remove_node(); //if (tp.Nodes.Count < 1) //{ // tp.Parent.Nodes.Remove(tp); //} db = null; Logging.DocLog.Info("Dokument geprüft - abgelehnt", "Dokumentprüfung", dr["dokumentid"].ToString(), "", ""); } } public List threaddoks = new List(); private void signdoc(TreeNodeAdv tn, ref TreeViewAdv tv) { int approvaltype = 0; int error = 0; DataRow dr = tn.TagObject as DataRow; threaddoks.Add(dr["dokumentid"].ToString()); DB db = new DB(AppParams.connectionstring); string empfaengerid = ""; db.Get_Tabledata("Select mutierer from dokument_Bewilligung where id=" + dr["id"].ToString(), false, true); empfaengerid = db.dsdaten.Tables[0].Rows[0][0].ToString(); if (dr["Bewilligungstyp"].ToString() == "2") { db.Exec_SQL("Update dokument set approval2=1 where dokumentid='" + dr["dokumentid"].ToString() + "'"); approvaltype = 2; } else { db.Exec_SQL("Update dokument set approval1=1 where dokumentid='" + dr["dokumentid"].ToString() + "'"); approvaltype = 1; } db.Get_Tabledata("Select * from dokument where dokumentid='" + dr["dokumentid"].ToString() + "'", false, true); if (Convert.ToBoolean(db.dsdaten.Tables[0].Rows[0]["approved"] )== true) { //panelsign.Visible = true; //Application.DoEvents(); //Cursor = Cursors.WaitCursor; DOCGEN.DocGen dg = new DocGen(AppParams.connectionstring, AppParams.RESTURI, AppParams.apikey); db.Get_Tabledata("select * from OnDoc_GetSignType where dokumentid='" + dr["dokumentid"].ToString() + "'", false, true); //error = 1; if (db.dsdaten.Tables[0].Rows[0][0].ToString() == "True") { if (dg.signdocsf(dr["dokumentid"].ToString(), AppParams.tempdir, pages)) { db.Exec_SQL("Update Dokument set signiert=1, mutierer=" + AppParams.CurrentMitarbeiter.ToString() + ", mutiertam=getdate() where dokumentid='" + dr["dokumentid"].ToString() + "'"); } else { error = 1; } } else { if (dg.signdoc(dr["dokumentid"].ToString(), AppParams.tempdir, pages)) { db.Exec_SQL("Update Dokument set signiert=1, mutierer=" + AppParams.CurrentMitarbeiter.ToString() + ", mutiertam=getdate() where dokumentid='" + dr["dokumentid"].ToString() + "'"); } else { error = 1; } } dg = null; } //error = 1; if (error == 0) { db.Get_Tabledata("Select mutierer from dokument_Bewilligung where id=" + dr["id"].ToString(), false, true); empfaengerid = db.dsdaten.Tables[0].Rows[0][0].ToString(); string sql = "update dokument_bewilligung set bewilligt=1, bewilligt_am = '" + DateTime.Now.ToString() + "' where id=" + dr["id"].ToString(); db.Exec_SQL(sql); if (dr["Bewilligungstyp"].ToString() == "2") { db.Exec_SQL("Update dokument set approval2=1 where dokumentid='" + dr["dokumentid"].ToString() + "'"); } else { db.Exec_SQL("Update dokument set approval1=1 where dokumentid='" + dr["dokumentid"].ToString() + "'"); } clsMailer mailer = new clsMailer(); mailer.sendmail(3, empfaengerid, "", "", dr["dokumentid"].ToString(), "", AppParams.CurrentMitarbeiter.ToString(), dr["id"].ToString()); mailer = null; Logging.DocLog.Info("Dokument geprüft", "Dokumentprüfung", dr["dokumentid"].ToString(), "", ""); db = null; threaddoks.Remove(dr["dokumentid"].ToString()); treeViewAdv1.SelectedNode = tn; //remove_node(); TreeNodeAdv tparent = tn.Parent; tparent.Nodes.Remove(tv.SelectedNode); tv.Nodes.Remove(tv.SelectedNode); if (tparent.Nodes.Count < 1) { tv.Nodes.Remove(tparent); } else { tv.SelectedNode = tparent.Nodes[0]; } if (tv.Nodes.Count < 1) { } else { tv.SelectedNode = tv.Nodes[0].Nodes[0]; } try { update_details(tv.SelectedNode.Tag as string); } catch { } } else { if (approvaltype == 2) { db.Exec_SQL("Update dokument set approval2=0 where dokumentid='" + dr["dokumentid"].ToString() + "'"); } else { db.Exec_SQL("Update dokument set approval1=0 where dokumentid='" + dr["dokumentid"].ToString() + "'"); } threaddoks.Remove(dr["dokumentid"].ToString()); db.Get_Tabledata("Select bezeichnung from dokument where dokumentid='" + dr["dokumentid"].ToString() + "'",false,true); MessageBox.Show("Das Dokument '" + db.dsdaten.Tables[0].Rows[0][0].ToString() + "' konnte aufgrund eines technischen Problems nicht signiert werden. Bitte Vorganng wiederholsen", "", MessageBoxButtons.OK, MessageBoxIcon.Error); db = null; tn.Enabled = true; } } private void ribbonButtonApproved_Click(object sender, EventArgs e) { int error = 0; int approvaltype = 0; if (treeViewAdv1.SelectedNode.Tag.ToString().Contains("(Paket)")) { string pid = treeViewAdv1.SelectedNode.Tag.ToString(); pid = pid.Substring(0,pid.Length - 7); DB db1 = new DB(AppParams.connectionstring); db1.clear_parameter(); db1.add_parameter("@paketid", pid); db1.add_parameter("@unterzeichner", AppParams.currenttgnummer.ToString()); db1.add_parameter("@genehmigt", "1"); db1.Get_Tabledata("sp_ondoc_prov_versandpaket_genehmigt", true, false); remove_node(); db1 = null; return; } if (AppParams.MultiThreadingSign) { approval_startet = true; //Thread signthread = new Thread(signdoc); Thread signthread = new Thread(() => signdoc(treeViewAdv1.SelectedNode, ref treeViewAdv1)); signthread.Start(); //remove_node(); treeViewAdv1.SelectedNode.Enabled=false; return; } DB db = new DB(AppParams.connectionstring); DataRow dr = treeViewAdv1.SelectedNode.TagObject as DataRow; clsMailer mailer = new clsMailer(); string empfaengerid = ""; db.Get_Tabledata("Select mutierer from dokument_Bewilligung where id=" + dr["id"].ToString(), false, true); empfaengerid = db.dsdaten.Tables[0].Rows[0][0].ToString(); if (dr["Bewilligungstyp"].ToString() == "2") { db.Exec_SQL("Update dokument set approval2=1 where dokumentid='" + dr["dokumentid"].ToString() + "'"); approvaltype = 2; } else { db.Exec_SQL("Update dokument set approval1=1 where dokumentid='" + dr["dokumentid"].ToString() + "'"); approvaltype = 1; } //-------------------------- //-------------------- db.Get_Tabledata("Select * from dokument where dokumentid='" + dr["dokumentid"].ToString() + "'", false, true); if (db.dsdaten.Tables[0].Rows[0]["approved"].ToString() == "True") { panelsign.Visible = true; System.Windows.Forms.Application.DoEvents(); Cursor = Cursors.WaitCursor; DOCGEN.DocGen dg = new DocGen(AppParams.connectionstring, AppParams.RESTURI, AppParams.apikey); if (dg.signdocsf(dr["dokumentid"].ToString(), AppParams.tempdir, pages)) { db.Exec_SQL("Update Dokument set signiert=1, mutierer=" + AppParams.CurrentMitarbeiter.ToString() + ", mutiertam=getdate() where dokumentid='" + dr["dokumentid"].ToString() + "'"); } else { error = 1; } dg = null; panelsign.Visible = false; System.Windows.Forms.Application.DoEvents(); Cursor = Cursors.Default; } if (error == 0) { mailer.sendmail(3, empfaengerid, "", "", dr["dokumentid"].ToString(), "", AppParams.CurrentMitarbeiter.ToString(), dr["id"].ToString()); mailer = null; Logging.DocLog.Info("Dokument geprüft", "Dokumentprüfung", dr["dokumentid"].ToString(), "", ""); string sql = "update dokument_bewilligung set bewilligt=1, bewilligt_am = '" + DateTime.Now.ToString() + "' where id=" + dr["id"].ToString(); db.Exec_SQL(sql); db = null; remove_node(); } else { MessageBox.Show("Aufgrund eines technischen Problems konnte das Dokument nicht signiert werden. Bitte Vorgang wiederholen", "Signieren",MessageBoxButtons.OK,MessageBoxIcon.Error); mailer = null; if (approvaltype == 2) { db.Exec_SQL("Update dokument set approval2=0 where dokumentid='" + dr["dokumentid"].ToString() + "'"); } else { db.Exec_SQL("Update dokument set approval1=0 where dokumentid='" + dr["dokumentid"].ToString() + "'"); } db = null; } } private void remove_node() { this.txtdokumentid.Text = ""; this.txtbezeichnung.Text = ""; this.txtPartnerNr.Text = ""; this.txtPartner.Text = ""; this.txterstelltam.Text = ""; this.txtersteller.Text = ""; this.txtmutiertam.Text = ""; this.txtmutierer.Text = ""; this.txtVerantwortlich.Text = ""; this.docPreview1.clear_viewer(); TreeNodeAdv tparent = treeViewAdv1.SelectedNode.Parent; tparent.Nodes.Remove(treeViewAdv1.SelectedNode); treeViewAdv1.Nodes.Remove(treeViewAdv1.SelectedNode); if (tparent.Nodes.Count < 1) { treeViewAdv1.Nodes.Remove(tparent); } else { treeViewAdv1.SelectedNode = tparent.Nodes[0]; } if (treeViewAdv1.Nodes.Count < 1) { } else { treeViewAdv1.SelectedNode = treeViewAdv1.Nodes[0].Nodes[0]; } try { update_details(treeViewAdv1.SelectedNode.Tag as string); } catch { } } private void ribbonButton1_Click(object sender, EventArgs e) { Update_Docs(AppParams.CurrentMitarbeiter); try { treeViewAdv1.SelectedNode = treeViewAdv1.Nodes[0].Nodes[0]; update_details(treeViewAdv1.SelectedNode.Tag as string); } catch { } } public void showhidepnlapproval(bool show) { this.pnlMultiThreading.Visible = show; } public int setcounter() { this.label8.Text = threaddoks.Count.ToString(); if (threaddoks.Count > 0) { if (this.treeViewAdv1.Nodes.Count == 0) { label7.Text = "Dokument(e) werden signiert - nach Abschluss wird das Fenster geschlossen:"; } else { label7.Text = "Dokument(e) werden signiert:"; } this.pnlMultiThreading.Visible = true; } else { this.pnlMultiThreading.Visible = false; } return threaddoks.Count; } public int penddocs() { return treeViewAdv1.Nodes.Count; } } }