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.

551 lines
22 KiB

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<Versandpaket>(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<string> threaddoks = new List<string>();
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;
}
}
}