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.
328 lines
13 KiB
328 lines
13 KiB
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.Tasks;
|
|
using System.Windows.Forms;
|
|
using Syncfusion.WinForms.Controls;
|
|
using Syncfusion.Windows.Forms.Utils;
|
|
using OnDoc.Klassen;
|
|
using Syncfusion.Windows.Forms;
|
|
using Model;
|
|
using OnDoc.DocMgmt;
|
|
using System.Xml.Linq;
|
|
using Versandstrasse;
|
|
using System.IO;
|
|
using Syncfusion.Pdf;
|
|
using Database;
|
|
|
|
namespace OnDoc.Versandstrasse
|
|
{
|
|
public partial class Versandstrasse : SfForm
|
|
{
|
|
private Versandpakete pakete = new Versandpakete();
|
|
private TreeViewAdvDragHighlightTracker treeViewDragHighlightTracker = null;
|
|
private TreeNodeAdv currentSourceNode;
|
|
|
|
public Versandstrasse(Versandpakete pakete)
|
|
{
|
|
InitializeComponent();
|
|
this.treeViewAdv1.AutoScrolling = ScrollBars.Both;
|
|
this.Style.TitleBar.BackColor = Theaming.Titelbar();
|
|
this.Style.TitleBar.ForeColor = Theaming.TitelFontColor();
|
|
this.Style.ShadowOpacity = Theaming.ShadowOpacity;
|
|
this.Style.InactiveShadowOpacity = Theaming.InactivShadowOpacity;
|
|
this.treeViewDragHighlightTracker = new TreeViewAdvDragHighlightTracker(this.treeViewAdv1);
|
|
this.treeViewDragHighlightTracker.QueryAllowedPositionsForNode +=
|
|
new QueryAllowedPositionsEventHandler(this.TreeDragDrop_QueryAllowedPositionsForNode);
|
|
this.treeViewDragHighlightTracker.QueryDragInsertInfo +=
|
|
new QueryDragInsertInfoEventHandler(treeViewDragHighlightTracker_QueryDragInsertInfo);
|
|
this.pakete = pakete;
|
|
}
|
|
|
|
private void Versandstrasse_Load(object sender, EventArgs e)
|
|
{
|
|
Reload_Tree();
|
|
}
|
|
private void Reload_Tree() {
|
|
treeViewAdv1.Nodes.Clear();
|
|
|
|
TreeNodeAdv DruckJob;
|
|
for (int i = 0; i < pakete.paket.Count; i++)
|
|
{
|
|
DruckJob = new TreeNodeAdv();
|
|
DruckJob.Text = "Druckpaket " + pakete.paket[i].PaketNr;
|
|
DruckJob.Tag = "Druckpaket";
|
|
DruckJob.TagObject = pakete.paket[i];
|
|
treeViewAdv1.Nodes.Add(DruckJob);
|
|
|
|
PopulateDocs(pakete.paket[i], ref DruckJob);
|
|
}
|
|
treeViewAdv1.ExpandAll();
|
|
}
|
|
|
|
private void PopulateDocs(Versandpaket paket, ref TreeNodeAdv parentnode)
|
|
{
|
|
TreeNodeAdv dokumentnode;
|
|
for (int i = 0; i < paket.Dokument.Count; i++)
|
|
{
|
|
dokumentnode = new TreeNodeAdv();
|
|
dokumentnode.Text = paket.Dokument[i].Bezeichnung+" (" + paket.Dokument[i].Partnernr+")";
|
|
dokumentnode.Tag = paket.Dokument[i].DokumentID;
|
|
dokumentnode.TagObject= paket.Dokument[i];
|
|
parentnode.Nodes.Add(dokumentnode);
|
|
|
|
}
|
|
}
|
|
|
|
#region "Treeview"
|
|
private void treeViewAdv1_DragDrop(object sender, DragEventArgs e)
|
|
{
|
|
TreeViewAdv treeView = sender as TreeViewAdv;
|
|
TreeNodeAdv sourceNode = (TreeNodeAdv)e.Data.GetData(typeof(TreeNodeAdv));
|
|
TreeNodeAdv destinationNode = this.treeViewDragHighlightTracker.HighlightNode;
|
|
TreeViewDropPositions dropPosition = this.treeViewDragHighlightTracker.DropPosition;
|
|
this.treeViewDragHighlightTracker.ClearHighlightNode();
|
|
this.currentSourceNode = null;
|
|
if (destinationNode != null)
|
|
{
|
|
switch (dropPosition)
|
|
{
|
|
case TreeViewDropPositions.AboveNode:
|
|
sourceNode.Move(destinationNode, NodePositions.Previous);
|
|
break;
|
|
case TreeViewDropPositions.BelowNode:
|
|
sourceNode.Move(destinationNode, NodePositions.Next);
|
|
break;
|
|
case TreeViewDropPositions.OnNode:
|
|
sourceNode.Move(destinationNode.Nodes);
|
|
destinationNode.Expand();
|
|
break;
|
|
}
|
|
}
|
|
treeView.SelectedNode = sourceNode;
|
|
}
|
|
|
|
private void treeViewAdv1_DragLeave(object sender, EventArgs e)
|
|
{
|
|
this.treeViewDragHighlightTracker.ClearHighlightNode();
|
|
}
|
|
|
|
private void treeViewAdv1_DragOver(object sender, DragEventArgs e)
|
|
{
|
|
bool droppable = true;
|
|
TreeNodeAdv destinationNode = null;
|
|
TreeViewAdv treeView = sender as TreeViewAdv;
|
|
Point ptInTree = treeView.PointToClient(new Point(e.X, e.Y));
|
|
this.currentSourceNode = null;
|
|
if (e.Data.GetDataPresent(typeof(TreeNodeAdv)))
|
|
{
|
|
destinationNode = treeView.GetNodeAtPoint(ptInTree);
|
|
TreeNodeAdv sourceNode = (TreeNodeAdv)e.Data.GetData(typeof(TreeNodeAdv));
|
|
this.currentSourceNode = sourceNode;
|
|
droppable = this.CanDrop(sourceNode, destinationNode);
|
|
//if (droppable == true) { if (destinationNode.Tag.ToString() != "Druckpaket") { droppable = false; } }
|
|
}
|
|
else
|
|
droppable = false;
|
|
|
|
if (droppable)
|
|
e.Effect = DragDropEffects.Move;
|
|
else
|
|
e.Effect = DragDropEffects.None;
|
|
this.treeViewDragHighlightTracker.SetHighlightNode(destinationNode, ptInTree);
|
|
}
|
|
private bool CanDrop(TreeNodeAdv sourceNode, TreeNodeAdv destinationNode)
|
|
{
|
|
TreeNodeAdv xdestinationNode = this.treeViewDragHighlightTracker.HighlightNode;
|
|
TreeViewDropPositions dropPosition = this.treeViewDragHighlightTracker.DropPosition;
|
|
|
|
|
|
if (destinationNode == null || destinationNode == sourceNode)
|
|
return false;
|
|
else
|
|
{
|
|
try
|
|
{
|
|
|
|
if (xdestinationNode.Level == 1 && dropPosition != TreeViewDropPositions.OnNode)
|
|
{
|
|
return false;
|
|
}
|
|
if (xdestinationNode.Level == 2 ) { return true; }
|
|
}
|
|
catch { }
|
|
|
|
|
|
return true; }
|
|
}
|
|
|
|
private void treeViewAdv1_ItemDrag(object sender, ItemDragEventArgs e)
|
|
{
|
|
TreeViewAdv treeViewAdv = sender as TreeViewAdv;
|
|
TreeNodeAdv[] nodes = e.Item as TreeNodeAdv[];
|
|
TreeNodeAdv node = nodes[0];
|
|
{
|
|
DragDropEffects result = treeViewAdv.DoDragDrop(node, DragDropEffects.Move);
|
|
}
|
|
}
|
|
private bool IsDruckPaket(TreeNodeAdv node)
|
|
{
|
|
if (node.Tag == null
|
|
|| ("Druckpaket").CompareTo(node.Tag.ToString()) != 0)
|
|
{
|
|
return false;
|
|
}
|
|
else
|
|
return true;
|
|
}
|
|
private void treeViewDragHighlightTracker_QueryDragInsertInfo(object sender, QueryDragInsertInfoEventArgs args)
|
|
{
|
|
args.DragInsertColor = Color.Red;
|
|
}
|
|
private void TreeDragDrop_QueryAllowedPositionsForNode(object sender, QueryAllowedPositionsEventArgs e)
|
|
{
|
|
if (!this.IsDruckPaket(e.HighlightNode))
|
|
{
|
|
if (e.HighlightNode != this.currentSourceNode)
|
|
e.AllowedPositions = TreeViewDropPositions.AboveNode | TreeViewDropPositions.BelowNode;
|
|
else
|
|
e.AllowedPositions = TreeViewDropPositions.None;
|
|
|
|
this.treeViewDragHighlightTracker.EdgeSensitivityOnTop = e.HighlightNode.Bounds.Height / 2;
|
|
e.ShowSelectionHighlight = false;
|
|
}
|
|
else
|
|
{
|
|
this.treeViewDragHighlightTracker.EdgeSensitivityOnTop = e.HighlightNode.Bounds.Height / 4;
|
|
e.ShowSelectionHighlight = false;
|
|
}
|
|
|
|
}
|
|
#endregion
|
|
|
|
private void tsbtnDruckPaketNew_Click(object sender, EventArgs e)
|
|
{
|
|
Versandpaket newpaket = new Versandpaket();
|
|
newpaket.PaketNr= (treeViewAdv1.Nodes.Count + 1).ToString();
|
|
newpaket.Versandoption = "1";
|
|
newpaket.GAS = "0";
|
|
newpaket.GASAdresse = "0";
|
|
newpaket.Mitteilung = "";
|
|
newpaket.Dokument = new List<Versanddokument>();
|
|
|
|
string NodeText = "Druckpaket " + (treeViewAdv1.Nodes.Count + 1).ToString();
|
|
TreeNodeAdv drucknode = new TreeNodeAdv();
|
|
drucknode.Text = NodeText;
|
|
drucknode.Tag = "Druckpaket";
|
|
drucknode.TagObject=newpaket;
|
|
|
|
treeViewAdv1.Nodes.Add(drucknode);
|
|
}
|
|
|
|
private void treeViewAdv1_NodeMouseClick(object sender, TreeViewAdvMouseClickEventArgs e)
|
|
{
|
|
TreeNodeAdv node = e.Node;
|
|
if (node.Level == 1) {
|
|
GrpPaketDetails.Enabled = true;
|
|
Versandpaket paket = node.TagObject as Versandpaket;
|
|
switch (paket.Versandoption) {
|
|
case "1":
|
|
rbversandoption1.Checked= true; break;
|
|
case "2":
|
|
rbversandoption2.Checked= true;break;
|
|
case "3":
|
|
rbversandoption3.Checked= true;break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
if (paket.GAS.ToString() == "1"){
|
|
chkGAS.Checked= true;
|
|
lbgasadresse.SelectedIndex = Convert.ToInt32(paket.GASAdresse.ToString());
|
|
} else { chkGAS.Checked= false; }
|
|
}
|
|
else {
|
|
if (tscheckboxpreview.Checked)
|
|
{
|
|
clsVersandstrasse vs = new clsVersandstrasse();
|
|
string dok = vs.Prepare_PDF(node.Tag.ToString(), AppParams.tempdir, AppParams.connectionstring);
|
|
var stream = new MemoryStream(Convert.FromBase64String(dok));
|
|
this.pdfViewerControl1.Load(stream);
|
|
}
|
|
|
|
GrpPaketDetails.Enabled=false; }
|
|
}
|
|
|
|
private void button1_Click(object sender, EventArgs e)
|
|
{
|
|
Versandpaket paket = treeViewAdv1.SelectedNode.TagObject as Versandpaket;
|
|
if (rbversandoption1.Checked) { paket.Versandoption = "1"; }
|
|
if (rbversandoption2.Checked) { paket.Versandoption = "2"; }
|
|
if (rbversandoption3.Checked) { paket.Versandoption = "3"; }
|
|
|
|
if (chkGAS.Checked) { paket.GAS = "1"; } else { paket.GAS = "0"; }
|
|
try { paket.GASAdresse = lbgasadresse.SelectedIndex.ToString(); } catch { paket.GASAdresse= "0"; }
|
|
paket.verified = true;
|
|
treeViewAdv1.SelectedNode.TagObject = paket;
|
|
//pakete.paket.Add(paket);
|
|
Reload_Tree();
|
|
|
|
|
|
}
|
|
|
|
private void btnSend_Click(object sender, EventArgs e)
|
|
{
|
|
Versandpaket paket = treeViewAdv1.SelectedNode.TagObject as Versandpaket;
|
|
foreach (Versanddokument vsdok in paket.Dokument)
|
|
{
|
|
clsVersandstrasse vs = new clsVersandstrasse();
|
|
vsdok.dokument = vs.Prepare_PDF(vsdok.DokumentID.ToString(), AppParams.tempdir, AppParams.connectionstring);
|
|
//string dok = vs.Prepare_PDF(vsdok.DokumentID.ToString(), AppParams.tempdir, AppParams.connectionstring);
|
|
}
|
|
Stream[] streams = new Stream[paket.Dokument.Count];
|
|
int i = 0;
|
|
foreach (Versanddokument vsdok in paket.Dokument)
|
|
{
|
|
var stream = new MemoryStream(Convert.FromBase64String(vsdok.dokument));
|
|
streams[i] = stream;
|
|
i++;
|
|
}
|
|
|
|
string stapel = save_stapel(ref streams);
|
|
var finalestream = new MemoryStream(Convert.FromBase64String(stapel));
|
|
this.pdfViewerControl1.Load(finalestream);
|
|
|
|
|
|
for (int i1 = 0; i1 < streams.Length; i1++)
|
|
{
|
|
streams[i1].Close();
|
|
|
|
streams[i1].Dispose();
|
|
streams[i1] = null;
|
|
}
|
|
streams = null;
|
|
}
|
|
private string save_stapel(ref Stream[] streams)
|
|
{
|
|
try
|
|
{
|
|
|
|
PdfDocument finalDoc = new PdfDocument();
|
|
PdfDocumentBase.Merge(finalDoc, streams);
|
|
|
|
MemoryStream outputStream = new MemoryStream();
|
|
finalDoc.Save(outputStream);
|
|
byte[] bytes;
|
|
bytes = outputStream.ToArray();
|
|
return Convert.ToBase64String(bytes);
|
|
}
|
|
catch { return ""; }
|
|
}
|
|
}
|
|
}
|