update 20260308

This commit is contained in:
Stefan Hutter
2026-03-08 14:08:06 +01:00
parent 67a60e1f43
commit 49ecd6624a
228 changed files with 8323 additions and 1332 deletions

View File

@@ -1 +1 @@
29a0297ab3573f953fcec20be9ec7a7194f474f54b0d5cd139c388019969abfc
44d66dca658f14ca665690280a32a4f0b1d13348d1a13413f027861c5842a1ed

View File

@@ -81,11 +81,20 @@
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="Form2.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form2.Designer.cs">
<DependentUpon>Form2.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Form2.resx">
<DependentUpon>Form2.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
@@ -94,6 +103,7 @@
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
@@ -121,5 +131,11 @@
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<None Include="Resources\PDF_256.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\PDF_128.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@@ -22,6 +22,15 @@
<setting name="tempdir" serializeAs="String">
<value>x:\jsonfiles\</value>
</setting>
<setting name="Testumgebung" serializeAs="String">
<value>Fachuser</value>
</setting>
<setting name="ConnectionStringPrd" serializeAs="String">
<value>data source=shu01\shu00;initial catalog=edoka_dms;packet size=4096;user id=sa;password=*shu29</value>
</setting>
<setting name="PathUser" serializeAs="String">
<value>x:\jsonfiles\[userid]\</value>
</setting>
</API_DocTest.Properties.Settings>
</userSettings>
</configuration>

View File

@@ -29,10 +29,10 @@
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
Syncfusion.Windows.Forms.Edit.Implementation.Config.Config config1 = new Syncfusion.Windows.Forms.Edit.Implementation.Config.Config();
Syncfusion.Windows.Forms.PdfViewer.MessageBoxSettings messageBoxSettings1 = new Syncfusion.Windows.Forms.PdfViewer.MessageBoxSettings();
Syncfusion.Windows.PdfViewer.PdfViewerPrinterSettings pdfViewerPrinterSettings1 = new Syncfusion.Windows.PdfViewer.PdfViewerPrinterSettings();
Syncfusion.Windows.Forms.PdfViewer.TextSearchSettings textSearchSettings1 = new Syncfusion.Windows.Forms.PdfViewer.TextSearchSettings();
Syncfusion.Windows.Forms.Edit.Implementation.Config.Config config2 = new Syncfusion.Windows.Forms.Edit.Implementation.Config.Config();
Syncfusion.Windows.Forms.PdfViewer.MessageBoxSettings messageBoxSettings2 = new Syncfusion.Windows.Forms.PdfViewer.MessageBoxSettings();
Syncfusion.Windows.PdfViewer.PdfViewerPrinterSettings pdfViewerPrinterSettings2 = new Syncfusion.Windows.PdfViewer.PdfViewerPrinterSettings();
Syncfusion.Windows.Forms.PdfViewer.TextSearchSettings textSearchSettings2 = new Syncfusion.Windows.Forms.PdfViewer.TextSearchSettings();
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
this.toolStripLabel1 = new System.Windows.Forms.ToolStripLabel();
this.txtKey = new System.Windows.Forms.ToolStripTextBox();
@@ -51,10 +51,14 @@
this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
this.panel1 = new System.Windows.Forms.Panel();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.label9 = new System.Windows.Forms.Label();
this.label8 = new System.Windows.Forms.Label();
this.label7 = new System.Windows.Forms.Label();
this.groupBox3 = new System.Windows.Forms.GroupBox();
this.radioButton2 = new System.Windows.Forms.RadioButton();
this.radioButton1 = new System.Windows.Forms.RadioButton();
this.panel2 = new System.Windows.Forms.Panel();
this.label6 = new System.Windows.Forms.Label();
this.label9 = new System.Windows.Forms.Label();
this.label7 = new System.Windows.Forms.Label();
this.label8 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.txtfilename = new System.Windows.Forms.TextBox();
@@ -79,6 +83,8 @@
((System.ComponentModel.ISupportInitialize)(this.editControl1)).BeginInit();
this.panel1.SuspendLayout();
this.groupBox2.SuspendLayout();
this.groupBox3.SuspendLayout();
this.panel2.SuspendLayout();
this.groupBox1.SuspendLayout();
this.SuspendLayout();
//
@@ -210,7 +216,7 @@
this.editControl1.AllowZoom = false;
this.editControl1.ChangedLinesMarkingLineColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(238)))), ((int)(((byte)(98)))));
this.editControl1.CodeSnipptSize = new System.Drawing.Size(100, 100);
this.editControl1.Configurator = config1;
this.editControl1.Configurator = config2;
this.editControl1.ContextChoiceBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
this.editControl1.ContextChoiceBorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(233)))), ((int)(((byte)(166)))), ((int)(((byte)(50)))));
this.editControl1.ContextChoiceForeColor = System.Drawing.SystemColors.InfoText;
@@ -254,17 +260,17 @@
this.pdfViewerControl1.IsTextSearchEnabled = true;
this.pdfViewerControl1.IsTextSelectionEnabled = true;
this.pdfViewerControl1.Location = new System.Drawing.Point(0, 0);
messageBoxSettings1.EnableNotification = true;
this.pdfViewerControl1.MessageBoxSettings = messageBoxSettings1;
messageBoxSettings2.EnableNotification = true;
this.pdfViewerControl1.MessageBoxSettings = messageBoxSettings2;
this.pdfViewerControl1.MinimumZoomPercentage = 50;
this.pdfViewerControl1.Name = "pdfViewerControl1";
this.pdfViewerControl1.PageBorderThickness = 1;
pdfViewerPrinterSettings1.Copies = 1;
pdfViewerPrinterSettings1.PageOrientation = Syncfusion.Windows.PdfViewer.PdfViewerPrintOrientation.Auto;
pdfViewerPrinterSettings1.PageSize = Syncfusion.Windows.PdfViewer.PdfViewerPrintSize.ActualSize;
pdfViewerPrinterSettings1.PrintLocation = ((System.Drawing.PointF)(resources.GetObject("pdfViewerPrinterSettings1.PrintLocation")));
pdfViewerPrinterSettings1.ShowPrintStatusDialog = true;
this.pdfViewerControl1.PrinterSettings = pdfViewerPrinterSettings1;
pdfViewerPrinterSettings2.Copies = 1;
pdfViewerPrinterSettings2.PageOrientation = Syncfusion.Windows.PdfViewer.PdfViewerPrintOrientation.Auto;
pdfViewerPrinterSettings2.PageSize = Syncfusion.Windows.PdfViewer.PdfViewerPrintSize.ActualSize;
pdfViewerPrinterSettings2.PrintLocation = ((System.Drawing.PointF)(resources.GetObject("pdfViewerPrinterSettings2.PrintLocation")));
pdfViewerPrinterSettings2.ShowPrintStatusDialog = true;
this.pdfViewerControl1.PrinterSettings = pdfViewerPrinterSettings2;
this.pdfViewerControl1.ReferencePath = null;
this.pdfViewerControl1.ScrollDisplacementValue = 0;
this.pdfViewerControl1.ShowHorizontalScrollBar = true;
@@ -274,10 +280,10 @@
this.pdfViewerControl1.SpaceBetweenPages = 8;
this.pdfViewerControl1.TabIndex = 0;
this.pdfViewerControl1.Text = "pdfViewerControl1";
textSearchSettings1.CurrentInstanceColor = System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(255)))), ((int)(((byte)(171)))), ((int)(((byte)(64)))));
textSearchSettings1.HighlightAllInstance = true;
textSearchSettings1.OtherInstanceColor = System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(254)))), ((int)(((byte)(255)))), ((int)(((byte)(0)))));
this.pdfViewerControl1.TextSearchSettings = textSearchSettings1;
textSearchSettings2.CurrentInstanceColor = System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(255)))), ((int)(((byte)(171)))), ((int)(((byte)(64)))));
textSearchSettings2.HighlightAllInstance = true;
textSearchSettings2.OtherInstanceColor = System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(254)))), ((int)(((byte)(255)))), ((int)(((byte)(0)))));
this.pdfViewerControl1.TextSearchSettings = textSearchSettings2;
this.pdfViewerControl1.ThemeName = "Default";
this.pdfViewerControl1.VerticalScrollOffset = 0;
this.pdfViewerControl1.VisualStyle = Syncfusion.Windows.Forms.PdfViewer.VisualStyle.Default;
@@ -295,10 +301,8 @@
//
// groupBox2
//
this.groupBox2.Controls.Add(this.label9);
this.groupBox2.Controls.Add(this.label8);
this.groupBox2.Controls.Add(this.label7);
this.groupBox2.Controls.Add(this.label6);
this.groupBox2.Controls.Add(this.groupBox3);
this.groupBox2.Controls.Add(this.panel2);
this.groupBox2.Controls.Add(this.label5);
this.groupBox2.Controls.Add(this.label4);
this.groupBox2.Controls.Add(this.txtfilename);
@@ -310,51 +314,96 @@
this.groupBox2.Dock = System.Windows.Forms.DockStyle.Left;
this.groupBox2.Location = new System.Drawing.Point(319, 0);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(901, 170);
this.groupBox2.Size = new System.Drawing.Size(1225, 170);
this.groupBox2.TabIndex = 1;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "Datei";
//
// label9
// groupBox3
//
this.label9.AutoSize = true;
this.label9.Location = new System.Drawing.Point(133, 117);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(157, 13);
this.label9.TabIndex = 15;
this.label9.Text = "- Ondoc_Versandstrasse_Paket";
this.groupBox3.Controls.Add(this.radioButton2);
this.groupBox3.Controls.Add(this.radioButton1);
this.groupBox3.Location = new System.Drawing.Point(12, 20);
this.groupBox3.Name = "groupBox3";
this.groupBox3.Size = new System.Drawing.Size(308, 52);
this.groupBox3.TabIndex = 17;
this.groupBox3.TabStop = false;
this.groupBox3.Text = "Quelle";
//
// label8
// radioButton2
//
this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(133, 131);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(138, 13);
this.label8.TabIndex = 14;
this.label8.Text = "- _OnDoc_API_TestScripts ";
this.radioButton2.AutoSize = true;
this.radioButton2.Location = new System.Drawing.Point(111, 20);
this.radioButton2.Name = "radioButton2";
this.radioButton2.Size = new System.Drawing.Size(76, 17);
this.radioButton2.TabIndex = 1;
this.radioButton2.Text = "Produktion";
this.radioButton2.UseVisualStyleBackColor = true;
//
// label7
// radioButton1
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(133, 104);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(120, 13);
this.label7.TabIndex = 13;
this.label7.Text = "- ProvDokuments (CLM)";
this.radioButton1.AutoSize = true;
this.radioButton1.Checked = true;
this.radioButton1.Location = new System.Drawing.Point(6, 20);
this.radioButton1.Name = "radioButton1";
this.radioButton1.Size = new System.Drawing.Size(75, 17);
this.radioButton1.TabIndex = 0;
this.radioButton1.TabStop = true;
this.radioButton1.Text = "Integration";
this.radioButton1.UseVisualStyleBackColor = true;
//
// panel2
//
this.panel2.Controls.Add(this.label6);
this.panel2.Controls.Add(this.label9);
this.panel2.Controls.Add(this.label7);
this.panel2.Controls.Add(this.label8);
this.panel2.Location = new System.Drawing.Point(998, 92);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(200, 72);
this.panel2.TabIndex = 16;
this.panel2.Visible = false;
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(133, 91);
this.label6.Location = new System.Drawing.Point(14, 8);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(46, 13);
this.label6.TabIndex = 12;
this.label6.Text = "Quellen:";
//
// label9
//
this.label9.AutoSize = true;
this.label9.Location = new System.Drawing.Point(14, 34);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(157, 13);
this.label9.TabIndex = 15;
this.label9.Text = "- Ondoc_Versandstrasse_Paket";
//
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(14, 21);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(120, 13);
this.label7.TabIndex = 13;
this.label7.Text = "- ProvDokuments (CLM)";
//
// label8
//
this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(14, 48);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(138, 13);
this.label8.TabIndex = 14;
this.label8.Text = "- _OnDoc_API_TestScripts ";
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(326, 36);
this.label5.Location = new System.Drawing.Point(578, 33);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(105, 13);
this.label5.TabIndex = 11;
@@ -363,7 +412,7 @@
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(6, 59);
this.label4.Location = new System.Drawing.Point(17, 98);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(58, 13);
this.label4.TabIndex = 10;
@@ -371,14 +420,14 @@
//
// txtfilename
//
this.txtfilename.Location = new System.Drawing.Point(84, 59);
this.txtfilename.Location = new System.Drawing.Point(110, 95);
this.txtfilename.Name = "txtfilename";
this.txtfilename.Size = new System.Drawing.Size(212, 20);
this.txtfilename.Size = new System.Drawing.Size(377, 20);
this.txtfilename.TabIndex = 9;
//
// button5
//
this.button5.Location = new System.Drawing.Point(699, 33);
this.button5.Location = new System.Drawing.Point(977, 30);
this.button5.Name = "button5";
this.button5.Size = new System.Drawing.Size(131, 23);
this.button5.TabIndex = 8;
@@ -389,16 +438,16 @@
// listBox1
//
this.listBox1.FormattingEnabled = true;
this.listBox1.Location = new System.Drawing.Point(437, 36);
this.listBox1.Location = new System.Drawing.Point(715, 33);
this.listBox1.Name = "listBox1";
this.listBox1.Size = new System.Drawing.Size(235, 121);
this.listBox1.TabIndex = 7;
//
// button3
//
this.button3.Location = new System.Drawing.Point(8, 91);
this.button3.Location = new System.Drawing.Point(110, 129);
this.button3.Name = "button3";
this.button3.Size = new System.Drawing.Size(75, 23);
this.button3.Size = new System.Drawing.Size(108, 23);
this.button3.TabIndex = 6;
this.button3.Text = "Datei-Export";
this.button3.UseVisualStyleBackColor = true;
@@ -406,19 +455,20 @@
//
// txtfilekey
//
this.txtfilekey.Location = new System.Drawing.Point(84, 33);
this.txtfilekey.Location = new System.Drawing.Point(110, 72);
this.txtfilekey.Name = "txtfilekey";
this.txtfilekey.Size = new System.Drawing.Size(212, 20);
this.txtfilekey.Size = new System.Drawing.Size(377, 20);
this.txtfilekey.TabIndex = 3;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(5, 36);
this.label3.Location = new System.Drawing.Point(16, 75);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(52, 13);
this.label3.Size = new System.Drawing.Size(76, 13);
this.label3.TabIndex = 2;
this.label3.Text = "Schlüssel";
this.label3.Text = "ESS-Schlüssel";
this.label3.Click += new System.EventHandler(this.label3_Click);
//
// groupBox1
//
@@ -523,6 +573,10 @@
this.panel1.ResumeLayout(false);
this.groupBox2.ResumeLayout(false);
this.groupBox2.PerformLayout();
this.groupBox3.ResumeLayout(false);
this.groupBox3.PerformLayout();
this.panel2.ResumeLayout(false);
this.panel2.PerformLayout();
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
this.ResumeLayout(false);
@@ -569,6 +623,10 @@
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.GroupBox groupBox3;
private System.Windows.Forms.RadioButton radioButton2;
private System.Windows.Forms.RadioButton radioButton1;
}
}

View File

@@ -22,6 +22,7 @@ using Syncfusion.Windows.Forms.Edit.Enums;
using Syncfusion.Windows.Forms.Edit.Implementation.Config;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
using System.Windows.Forms.Design;
using Syncfusion.Windows.Forms.Edit.Utils.Serializers;
namespace API_DocTest
@@ -39,7 +40,7 @@ namespace API_DocTest
{
string lickey = "MzYzODg2NkAzMjM4MmUzMDJlMzBTOWljRmxNelA1d1VGOHpGR0lxQzB6UTAwKzIxK2VBNEhBZFp5alcxb1NVPQ==";
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense(lickey);
LoadJSON();
Form1_Resize(sender, e);
Refresh_Filelist();
@@ -394,6 +395,11 @@ ELSE
this.txtdbkey.Text = comboBox1.SelectedItem.ToString();
button1_Click(sender, e);
}
private void label3_Click(object sender, EventArgs e)
{
}
}

View File

@@ -181,7 +181,7 @@
nOccAdABIDXXE1nzAAAAAElFTkSuQmCC
</value>
</data>
<data name="pdfViewerPrinterSettings1.PrintLocation" mimetype="application/x-microsoft.net.object.binary.base64">
<data name="pdfViewerPrinterSettings2.PrintLocation" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJh
@@ -191,4 +191,7 @@
<metadata name="backgroundWorker1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>122, 17</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>25</value>
</metadata>
</root>

288
API_DocTest/Form2.Designer.cs generated Normal file
View File

@@ -0,0 +1,288 @@
namespace API_DocTest
{
partial class Form2
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
Syncfusion.Windows.Forms.PdfViewer.MessageBoxSettings messageBoxSettings2 = new Syncfusion.Windows.Forms.PdfViewer.MessageBoxSettings();
Syncfusion.Windows.PdfViewer.PdfViewerPrinterSettings pdfViewerPrinterSettings2 = new Syncfusion.Windows.PdfViewer.PdfViewerPrinterSettings();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form2));
Syncfusion.Windows.Forms.PdfViewer.TextSearchSettings textSearchSettings2 = new Syncfusion.Windows.Forms.PdfViewer.TextSearchSettings();
this.panel1 = new System.Windows.Forms.Panel();
this.button1 = new System.Windows.Forms.Button();
this.button5 = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.listBox1 = new System.Windows.Forms.ListBox();
this.groupBox3 = new System.Windows.Forms.GroupBox();
this.label1 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.txtfilename = new System.Windows.Forms.TextBox();
this.button3 = new System.Windows.Forms.Button();
this.txtfilekey = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
this.radioButton2 = new System.Windows.Forms.RadioButton();
this.radioButton1 = new System.Windows.Forms.RadioButton();
this.pdfViewerControl1 = new Syncfusion.Windows.Forms.PdfViewer.PdfViewerControl();
this.imageList1 = new System.Windows.Forms.ImageList(this.components);
this.panel1.SuspendLayout();
this.groupBox1.SuspendLayout();
this.groupBox3.SuspendLayout();
this.SuspendLayout();
//
// panel1
//
this.panel1.Controls.Add(this.button1);
this.panel1.Controls.Add(this.button5);
this.panel1.Controls.Add(this.groupBox1);
this.panel1.Controls.Add(this.groupBox3);
this.panel1.Dock = System.Windows.Forms.DockStyle.Left;
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(770, 922);
this.panel1.TabIndex = 0;
//
// button1
//
this.button1.Location = new System.Drawing.Point(627, 357);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(143, 23);
this.button1.TabIndex = 26;
this.button1.Text = "Datei löschen";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// button5
//
this.button5.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.button5.Image = global::API_DocTest.Properties.Resources.PDF_128;
this.button5.ImageAlign = System.Drawing.ContentAlignment.TopCenter;
this.button5.Location = new System.Drawing.Point(627, 167);
this.button5.Name = "button5";
this.button5.Size = new System.Drawing.Size(137, 161);
this.button5.TabIndex = 25;
this.button5.Text = "PDF generieren";
this.button5.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
this.button5.UseVisualStyleBackColor = true;
this.button5.Click += new System.EventHandler(this.button5_Click);
//
// groupBox1
//
this.groupBox1.Controls.Add(this.listBox1);
this.groupBox1.Dock = System.Windows.Forms.DockStyle.Left;
this.groupBox1.Location = new System.Drawing.Point(0, 151);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(621, 771);
this.groupBox1.TabIndex = 24;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "Dateien";
//
// listBox1
//
this.listBox1.Dock = System.Windows.Forms.DockStyle.Fill;
this.listBox1.FormattingEnabled = true;
this.listBox1.Location = new System.Drawing.Point(3, 16);
this.listBox1.Name = "listBox1";
this.listBox1.Size = new System.Drawing.Size(615, 752);
this.listBox1.TabIndex = 8;
//
// groupBox3
//
this.groupBox3.Controls.Add(this.label1);
this.groupBox3.Controls.Add(this.label4);
this.groupBox3.Controls.Add(this.txtfilename);
this.groupBox3.Controls.Add(this.button3);
this.groupBox3.Controls.Add(this.txtfilekey);
this.groupBox3.Controls.Add(this.label3);
this.groupBox3.Controls.Add(this.radioButton2);
this.groupBox3.Controls.Add(this.radioButton1);
this.groupBox3.Dock = System.Windows.Forms.DockStyle.Top;
this.groupBox3.Location = new System.Drawing.Point(0, 0);
this.groupBox3.Name = "groupBox3";
this.groupBox3.Size = new System.Drawing.Size(770, 151);
this.groupBox3.TabIndex = 23;
this.groupBox3.TabStop = false;
this.groupBox3.Text = "Quelle";
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(108, 94);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(35, 13);
this.label1.TabIndex = 28;
this.label1.Text = "label1";
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(13, 74);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(58, 13);
this.label4.TabIndex = 27;
this.label4.Text = "Dateiname";
//
// txtfilename
//
this.txtfilename.Location = new System.Drawing.Point(106, 71);
this.txtfilename.Name = "txtfilename";
this.txtfilename.Size = new System.Drawing.Size(644, 20);
this.txtfilename.TabIndex = 26;
//
// button3
//
this.button3.Location = new System.Drawing.Point(106, 122);
this.button3.Name = "button3";
this.button3.Size = new System.Drawing.Size(311, 23);
this.button3.TabIndex = 25;
this.button3.Text = "Datei-Export";
this.button3.UseVisualStyleBackColor = true;
this.button3.Click += new System.EventHandler(this.button3_Click);
//
// txtfilekey
//
this.txtfilekey.Location = new System.Drawing.Point(106, 48);
this.txtfilekey.Name = "txtfilekey";
this.txtfilekey.Size = new System.Drawing.Size(644, 20);
this.txtfilekey.TabIndex = 24;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(12, 51);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(76, 13);
this.label3.TabIndex = 23;
this.label3.Text = "ESS-Schlüssel";
//
// radioButton2
//
this.radioButton2.AutoSize = true;
this.radioButton2.Location = new System.Drawing.Point(111, 20);
this.radioButton2.Name = "radioButton2";
this.radioButton2.Size = new System.Drawing.Size(76, 17);
this.radioButton2.TabIndex = 1;
this.radioButton2.Text = "Produktion";
this.radioButton2.UseVisualStyleBackColor = true;
//
// radioButton1
//
this.radioButton1.AutoSize = true;
this.radioButton1.Checked = true;
this.radioButton1.Location = new System.Drawing.Point(6, 20);
this.radioButton1.Name = "radioButton1";
this.radioButton1.Size = new System.Drawing.Size(75, 17);
this.radioButton1.TabIndex = 0;
this.radioButton1.TabStop = true;
this.radioButton1.Text = "Integration";
this.radioButton1.UseVisualStyleBackColor = true;
//
// pdfViewerControl1
//
this.pdfViewerControl1.CursorMode = Syncfusion.Windows.Forms.PdfViewer.PdfViewerCursorMode.SelectTool;
this.pdfViewerControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.pdfViewerControl1.EnableContextMenu = true;
this.pdfViewerControl1.EnableNotificationBar = true;
this.pdfViewerControl1.HorizontalScrollOffset = 0;
this.pdfViewerControl1.IsBookmarkEnabled = true;
this.pdfViewerControl1.IsTextSearchEnabled = true;
this.pdfViewerControl1.IsTextSelectionEnabled = true;
this.pdfViewerControl1.Location = new System.Drawing.Point(770, 0);
messageBoxSettings2.EnableNotification = true;
this.pdfViewerControl1.MessageBoxSettings = messageBoxSettings2;
this.pdfViewerControl1.MinimumZoomPercentage = 50;
this.pdfViewerControl1.Name = "pdfViewerControl1";
this.pdfViewerControl1.PageBorderThickness = 1;
pdfViewerPrinterSettings2.Copies = 1;
pdfViewerPrinterSettings2.PageOrientation = Syncfusion.Windows.PdfViewer.PdfViewerPrintOrientation.Auto;
pdfViewerPrinterSettings2.PageSize = Syncfusion.Windows.PdfViewer.PdfViewerPrintSize.ActualSize;
pdfViewerPrinterSettings2.PrintLocation = ((System.Drawing.PointF)(resources.GetObject("pdfViewerPrinterSettings2.PrintLocation")));
pdfViewerPrinterSettings2.ShowPrintStatusDialog = true;
this.pdfViewerControl1.PrinterSettings = pdfViewerPrinterSettings2;
this.pdfViewerControl1.ReferencePath = null;
this.pdfViewerControl1.ScrollDisplacementValue = 0;
this.pdfViewerControl1.ShowHorizontalScrollBar = true;
this.pdfViewerControl1.ShowToolBar = true;
this.pdfViewerControl1.ShowVerticalScrollBar = true;
this.pdfViewerControl1.Size = new System.Drawing.Size(991, 922);
this.pdfViewerControl1.SpaceBetweenPages = 8;
this.pdfViewerControl1.TabIndex = 1;
this.pdfViewerControl1.Text = "pdfViewerControl1";
textSearchSettings2.CurrentInstanceColor = System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(255)))), ((int)(((byte)(171)))), ((int)(((byte)(64)))));
textSearchSettings2.HighlightAllInstance = true;
textSearchSettings2.OtherInstanceColor = System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(254)))), ((int)(((byte)(255)))), ((int)(((byte)(0)))));
this.pdfViewerControl1.TextSearchSettings = textSearchSettings2;
this.pdfViewerControl1.ThemeName = "Default";
this.pdfViewerControl1.VerticalScrollOffset = 0;
this.pdfViewerControl1.VisualStyle = Syncfusion.Windows.Forms.PdfViewer.VisualStyle.Default;
this.pdfViewerControl1.ZoomMode = Syncfusion.Windows.Forms.PdfViewer.ZoomMode.Default;
//
// imageList1
//
this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
this.imageList1.Images.SetKeyName(0, "272705_pdf_icon.png");
//
// Form2
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1761, 922);
this.Controls.Add(this.pdfViewerControl1);
this.Controls.Add(this.panel1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "Form2";
this.Text = "ESS-/OnDoc API-Dokument-Test";
this.Load += new System.EventHandler(this.Form2_Load);
this.panel1.ResumeLayout(false);
this.groupBox1.ResumeLayout(false);
this.groupBox3.ResumeLayout(false);
this.groupBox3.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.GroupBox groupBox3;
private System.Windows.Forms.RadioButton radioButton2;
private System.Windows.Forms.RadioButton radioButton1;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.TextBox txtfilename;
private System.Windows.Forms.Button button3;
private System.Windows.Forms.TextBox txtfilekey;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.ListBox listBox1;
private System.Windows.Forms.Button button5;
private Syncfusion.Windows.Forms.PdfViewer.PdfViewerControl pdfViewerControl1;
private System.Windows.Forms.ImageList imageList1;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Label label1;
}
}

176
API_DocTest/Form2.cs Normal file
View File

@@ -0,0 +1,176 @@
using Newtonsoft.Json.Linq;
using Syncfusion.Windows.Forms.PdfViewer;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using System.Web.UI.Design;
using System.Windows.Forms;
namespace API_DocTest
{
public partial class Form2 : Form
{
static string connectionstring = Properties.Settings.Default.ConnectionString;
static readonly string ApiUrl = Properties.Settings.Default.DogGenURI;
static readonly string token = Properties.Settings.Default.Token;
private string path = Properties.Settings.Default.PathUser.Replace("[userid]", Environment.UserName);
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
string lickey = "MzYzODg2NkAzMjM4MmUzMDJlMzBTOWljRmxNelA1d1VGOHpGR0lxQzB6UTAwKzIxK2VBNEhBZFp5alcxb1NVPQ==";
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense(lickey);
if (!System.IO.Directory.Exists(path)) { System.IO.Directory.CreateDirectory(path); }
label1.Text = "JSON-Pfad: " + path;
Refresh_Filelist();
}
private void Refresh_Filelist()
{
listBox1.Items.Clear();
DirectoryInfo d = new DirectoryInfo(path); //Assuming Test is your Folder
FileInfo[] Files = d.GetFiles("*.json"); //Getting Text files
string str = "";
foreach (FileInfo file in Files)
{
listBox1.Items.Add(file.Name);
}
}
private void button3_Click(object sender, EventArgs e)
{
if (radioButton1.Checked) { connectionstring = Properties.Settings.Default.ConnectionString; }
if (radioButton2.Checked) { connectionstring = Properties.Settings.Default.ConnectionStringPrd; }
string key = txtfilekey.Text.Trim();
if (key == "") { MessageBox.Show("ESS_Key fehlt");return; }
string json = null;
using (SqlConnection con = new SqlConnection(connectionstring))
using (SqlCommand cmd = new SqlCommand(
"SELECT JavaScriptObject FROM ProvDokuments WHERE ProvDokumentid = @key", con))
{
cmd.Parameters.AddWithValue("@key", key);
con.Open();
json = cmd.ExecuteScalar()?.ToString();
}
if (string.IsNullOrEmpty(json)) { MessageBox.Show("Eintrag mit dem Schlüssel '" + txtfilekey.Text + "' ist nicht vorhanden.","Laden",MessageBoxButtons.OK,MessageBoxIcon.Error);return; }
if (string.IsNullOrEmpty(txtfilename.Text.Trim()) || txtfilename.Text=="") { txtfilename.Text=txtfilekey.Text; }
System.IO.File.WriteAllText(path + txtfilename.Text + ".json", json);
Refresh_Filelist();
foreach(string s in listBox1.Items)
{
if (s == txtfilename.Text+".json") { listBox1.SelectedItem = s;
txtfilekey.Text = "";
txtfilename.Text = "";
return; }
}
txtfilekey.Text = "";
txtfilename.Text = "";
}
private void button5_Click(object sender, EventArgs e)
{
try
{
string filename = path + listBox1.SelectedItem.ToString();
byte[] byteArray = Generate(System.IO.File.ReadAllText(filename));
string temp_inBase64 = Convert.ToBase64String(byteArray);
var stream = new MemoryStream(Convert.FromBase64String(temp_inBase64));
if (stream.Length > 0)
{
this.pdfViewerControl1.Load(stream);
this.pdfViewerControl1.Visible = true;
pdfViewerControl1.ZoomMode = ZoomMode.FitWidth;
}
else
{
}
}
catch (Exception ex) { MessageBox.Show("Fehler beim Generieren." +ex.Message, "Generieren", MessageBoxButtons.OK, MessageBoxIcon.Error); }
}
public static byte[] Generate(string json)
{
try
{
using (var client = new HttpClient())
{
// 🔐 Bearer Token
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", token);
var content = new StringContent(
json,
Encoding.UTF8,
"application/json");
var response = client.PostAsync(ApiUrl, content).Result;
var responseText = response.Content.ReadAsStringAsync().Result;
if (!response.IsSuccessStatusCode)
{
// optional: Logging
return null;
}
var jsonResult = JObject.Parse(responseText);
var base64Pdf = jsonResult["file"]?.ToString();
if (string.IsNullOrEmpty(base64Pdf))
return null;
return Convert.FromBase64String(base64Pdf);
}
}
catch (Exception ex)
{
// Logging
return null;
}
}
private void button1_Click(object sender, EventArgs e)
{
try
{
if (File.Exists(path + listBox1.SelectedItem.ToString()))
{
System.IO.File.Delete(path + listBox1.SelectedItem.ToString());
Refresh_Filelist();
}
}
catch(Exception ex)
{
MessageBox.Show("Beim Löschen ist ein Fehler aufgetreten:" + ex.Message, "Löschen", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}

925
API_DocTest/Form2.resx Normal file
View File

@@ -0,0 +1,925 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="pdfViewerPrinterSettings2.PrintLocation" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJh
d2luZy5Qb2ludEYCAAAAAXgBeQAACwsCAAAAAAAAAAAAAAAL
</value>
</data>
<metadata name="imageList1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<data name="imageList1.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADa
BwAAAk1TRnQBSQFMAwEBAAEgAQABIAEAARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA
AUADAAEQAwABAQEAAQgGAAEEGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA
AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA
AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm
AwABmQMAAcwCAAEzAwACMwIAATMBZgIAATMBmQIAATMBzAIAATMB/wIAAWYDAAFmATMCAAJmAgABZgGZ
AgABZgHMAgABZgH/AgABmQMAAZkBMwIAAZkBZgIAApkCAAGZAcwCAAGZAf8CAAHMAwABzAEzAgABzAFm
AgABzAGZAgACzAIAAcwB/wIAAf8BZgIAAf8BmQIAAf8BzAEAATMB/wIAAf8BAAEzAQABMwEAAWYBAAEz
AQABmQEAATMBAAHMAQABMwEAAf8BAAH/ATMCAAMzAQACMwFmAQACMwGZAQACMwHMAQACMwH/AQABMwFm
AgABMwFmATMBAAEzAmYBAAEzAWYBmQEAATMBZgHMAQABMwFmAf8BAAEzAZkCAAEzAZkBMwEAATMBmQFm
AQABMwKZAQABMwGZAcwBAAEzAZkB/wEAATMBzAIAATMBzAEzAQABMwHMAWYBAAEzAcwBmQEAATMCzAEA
ATMBzAH/AQABMwH/ATMBAAEzAf8BZgEAATMB/wGZAQABMwH/AcwBAAEzAv8BAAFmAwABZgEAATMBAAFm
AQABZgEAAWYBAAGZAQABZgEAAcwBAAFmAQAB/wEAAWYBMwIAAWYCMwEAAWYBMwFmAQABZgEzAZkBAAFm
ATMBzAEAAWYBMwH/AQACZgIAAmYBMwEAA2YBAAJmAZkBAAJmAcwBAAFmAZkCAAFmAZkBMwEAAWYBmQFm
AQABZgKZAQABZgGZAcwBAAFmAZkB/wEAAWYBzAIAAWYBzAEzAQABZgHMAZkBAAFmAswBAAFmAcwB/wEA
AWYB/wIAAWYB/wEzAQABZgH/AZkBAAFmAf8BzAEAAcwBAAH/AQAB/wEAAcwBAAKZAgABmQEzAZkBAAGZ
AQABmQEAAZkBAAHMAQABmQMAAZkCMwEAAZkBAAFmAQABmQEzAcwBAAGZAQAB/wEAAZkBZgIAAZkBZgEz
AQABmQEzAWYBAAGZAWYBmQEAAZkBZgHMAQABmQEzAf8BAAKZATMBAAKZAWYBAAOZAQACmQHMAQACmQH/
AQABmQHMAgABmQHMATMBAAFmAcwBZgEAAZkBzAGZAQABmQLMAQABmQHMAf8BAAGZAf8CAAGZAf8BMwEA
AZkBzAFmAQABmQH/AZkBAAGZAf8BzAEAAZkC/wEAAcwDAAGZAQABMwEAAcwBAAFmAQABzAEAAZkBAAHM
AQABzAEAAZkBMwIAAcwCMwEAAcwBMwFmAQABzAEzAZkBAAHMATMBzAEAAcwBMwH/AQABzAFmAgABzAFm
ATMBAAGZAmYBAAHMAWYBmQEAAcwBZgHMAQABmQFmAf8BAAHMAZkCAAHMAZkBMwEAAcwBmQFmAQABzAKZ
AQABzAGZAcwBAAHMAZkB/wEAAswCAALMATMBAALMAWYBAALMAZkBAAPMAQACzAH/AQABzAH/AgABzAH/
ATMBAAGZAf8BZgEAAcwB/wGZAQABzAH/AcwBAAHMAv8BAAHMAQABMwEAAf8BAAFmAQAB/wEAAZkBAAHM
ATMCAAH/AjMBAAH/ATMBZgEAAf8BMwGZAQAB/wEzAcwBAAH/ATMB/wEAAf8BZgIAAf8BZgEzAQABzAJm
AQAB/wFmAZkBAAH/AWYBzAEAAcwBZgH/AQAB/wGZAgAB/wGZATMBAAH/AZkBZgEAAf8CmQEAAf8BmQHM
AQAB/wGZAf8BAAH/AcwCAAH/AcwBMwEAAf8BzAFmAQAB/wHMAZkBAAH/AswBAAH/AcwB/wEAAv8BMwEA
AcwB/wFmAQAC/wGZAQAC/wHMAQACZgH/AQABZgH/AWYBAAFmAv8BAAH/AmYBAAH/AWYB/wEAAv8BZgEA
ASEBAAGlAQADXwEAA3cBAAOGAQADlgEAA8sBAAOyAQAD1wEAA90BAAPjAQAD6gEAA/EBAAP4AQAB8AH7
Af8BAAGkAqABAAOAAwAB/wIAAf8DAAL/AQAB/wMAAf8BAAH/AQAC/wIAA/8BABAXMAAQFzAAAhcNAAEX
MAACFwEAAhcKAAEXMAACFwEAAxcGAAIXAQABFzAAAhcDAAIXBAABFwEAARYBAAEXMAACFwQAARcBFgYX
AQABFzAAAhcFAAEXAQABFwUAARcwAAIXBQACFwYAARcwAAIXBgABFwYAARcwAAIXBQACFwYAARcwAAIX
BQACFwYAARcwAAIXBQACFwYAARcwAAIXBgABFwYAARcwABAXMAAQFzAAAUIBTQE+BwABPgMAASgDAAFA
AwABEAMAAQEBAAEBBQABgBcAA/8RAAE/Af4GAAEnAf4GAAEjAfIGAAE5AeoGAAE8AQIGAAE+Ab4GAAE+
AX4GAAE/AX4GAAE+AX4GAAE+AX4GAAE+AX4GAAE/AX4WAAs=
</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
jKv09DMd2m1cn6nVgfOdXU4AC/jqIw/Bn3/1y5UZdytTkIyMjL1HJoCMjAkjE0BGxoSRCSAjY8L4P2E8
O3RJd3wVAAAAAElFTkSuQmCCKAAAADAAAABgAAAAAQAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAGlYGmdRAWhRAWhRAWhSAWhSAGhSAWhRAWhRAWhRAWhRAWhRAWhRAWhRAWhRAWhRAWhRAWhRAWhR
AWhRAWhRAWhRAWhRAWhRAWdRAWhSA2hSAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpZGGhRAWlRAWhRAmlSAGlSAGlSAGlSAWlSAWlSAWlS
AWlSAWlSAWlSAWlSAWlSAWlSAWlSAWlSAWlSAWlSAWlSAWlSAWlSAWlSAWhSAWdTAQAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpaF2hSAGhS
AGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhS
AGhSAGhSAGlSAGhTAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAHZnKWhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhS
AGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGlSAGhTAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIp9RmhSAGhSAGhSAGhSAGhSAGhS
AGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGlSAGhT
AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAIl9R2hSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhSAGhS
AGhSAGhSAGhSAGhSAGhSAGhSAGlSAGhTAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIl9R2hRAGhRAGhRAGhSAGhTAGhTAGhRAGhRAGhRAGhR
AGhRAGhRAGhRAGhRAGhRAGhRAGhRAGhRAGhSAGhSAGhSAGhSAGhSAGhSAGlSAGhTAQAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI2ARGxXAWxX
AWxXAW1XAW1XAW1XAWxXAWxXAWxXAWxXAWxXAWxXAWxXAWxXAWxXAWxXAWxXAWxXAWpTAGhSAGhSAGhS
AGhSAGhSAGlSAGhTAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAObaperbm+va
merbm+vbm+vbm+zbnevbmsKrUaGEFaGEFaGEFaGDFaGDFaGDFaGEFaGEFaGEFaGEFaGEFaGEFaGEFaGE
FaGEFaGEFaGEFaCEFXZeBWdTAGhTAGhSAGhSAGhSAGlSAGhTAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAOfan+3ble7alO3ble3ble3cle7blezbk8SsTaOFFKOFFKOFFKOFFKOFFKOF
FKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKSFFKKFFXdfBWdTAGhSAGhSAGhSAGhSAGlSAGhT
AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOfaoOzble3blOzble3ble3cle7b
lezbk8SsTaOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKSFFKKF
FXdfBWdTAGhSAGhSAGhSAGhSAGlSAGhTAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAOfaoOzble3blOzble3ble3cle7blezbk8SsTaOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOF
FKOFFKOFFKOFFKOFFKOFFKOFFKSFFKKFFXdfBWdTAGhSAGhSAGhSAGhSAGlSAGhTAQAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOfaoOzble3blOzble3ble3cle7blezbk8SsTaOFFKOF
FKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKSFFKKFFXdfBWdTAGhSAGhS
AGhSAGhSAGlSAGhTAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOfaoOzble3b
lOzble3ble3cle7blezbk8SsTaOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOF
FKOFFKOFFKSFFKKFFXdfBWdTAGhSAGhSAGhSAGhSAGlSAGhTAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAOfaoOzble3blOzble3ble3cle7blezbk8SsTaOFFKOFFKOFFKOFFKOFFKOF
FKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKSFFKKFFXdfBWdTAGhSAGhSAGhSAGhSAGlSAGhT
AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOfaoOzble3blOzble3ble3ble7b
lezbk8SsTaOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKSFFKKF
FXdfBWdTAGhSAGhSAGhSAGhSAGlSAGhTAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAOfaoOzble3blOzble3ble3cle7blezbk8SsTaOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOF
FKOFFKOFFKOFFKOFFKOFFKOFFKSFFKKFFXdfBWdTAGhSAGhSAGhSAGhSAGlSAGhTAQAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOnaoO7ble7blO3ble3ble3ble7blezbk8SsTaOFFKOF
FKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKSFFKKFFXdfBWdTAGhSAGhS
AGhSAGhSAGlSAGhTAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOnaoO7ble7a
lO3ble3ble3cle7blezbk8SsTaOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOGE6OFFKOFFKOFFKOF
FKOFFKOFFKSFFKKFFXdfBWdTAGhSAGhSAGhSAGhSAGlSAGhTAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAOnaoO7blO7alO3ble3ble3ble7blezbk8SsTaOFFKOFFKOFFKOFFKOFFKOF
FKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKKFFXdfBWdTAGhTAGhSAGhSAGhSAGlSAGhT
AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOnZoO7blOzalOzble3clOzcle3c
lezblMSrTqOEFaOFFaKFE6GFFKOFFKKGE6OFFaOFFaOFFaOFE6GGFKOFFKSFFaOFFKOFE6OFFKOGFKKF
FXdfBWhTAGdSAWdTAGhSAGlSAGlSAGhTAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAOnaoevcle7ak+7blu3bl+3ble7clO3ak8StTKKFFaKFFaWFFKOFFKKEFaSGFKOFFaOEFaOEFKSF
FaaEFaKFFKKFE6SFFKKFFaGGFKOEFqGFFXdfBmpSAWlSAmlTAmlSAWhTAGlSAGhTAQAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOjan+zbl/Dlv/by3/j16PTv2ezgsOvak8ewXOfizc3A
i6CEGdrSseHavqOJKOjizejizubgy9XNpa2YRKKFFKOFFbCfUNnSr+Pcwc7ElKaNLXlfBn1uMMbAqNfS
w4R1OmhSAWpSAGhTAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOXaofPu1P7+
/v7+/v7+/v7+/v79/O7mvcWxYv7+/uDavZ+DGuzp3Pb07KOJLv7+/vz8+/Lw5v7+/vn59LWhVLGcRvz8
+/r69+vn2f7+/ezo2INxKvHw6vz8++Dd0ZWKVmlSAWpSAGhTAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAOjivv7+/f7+/fDowu7hrPXw2v////39+sa2cf///+LdxqCEGe3q3ff07KKJ
Lv////Px6KCFI8i7if7+/ujjzsi8iv7+/s3AkJ+FHObhzf7+/rivjv7+/rewlGdSBGdTAWhRAmpTAGhT
AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO7r3P////Xw3Ozcle7bleramvv6
9f///87Alf////Dt46iTQvj38/Xy6KOJLP////Px56GGGKKIIPb07vv69MGyff7+/ujj0MW4gPn49Pz8
+pyPXP7+/eTh15qOYH5uLWlRAWpTAGhTAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAO/r2/////fz4+zbluzblOvbnfz79////8y9jP////r69/38+/79/NPInKKHJf////Px6KKGGqSP
Lfr59vj27qKKKdfPqPz7+P7+/vf278CyeHVgC7Wujfr59/39/JyPYmtTAGpTAWhTAQAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOjfuf79+/////Xx3fDqx/n26v////v688WuWKuWP6iQ
MqmRM6uUN6KFGaKJIv////j28bqmZOjizv7+/tjQrKCFFqKFFqePL62WPaWLJKKEF3hfBmlSA3JhG3Zp
JmpVB2hSAWpTAWhTAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOjaoe/nwf39
+/////////////v58evfqcSsTaSFFKSFFKSFFKOFFaKGE6SHI/////////7+/v7+/uTex6aMKKSFFKOF
FKOFE6GGE6KFFKGFFXdgBWhTAGhSAWlSAWlTAGlSAGpTAWhTAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAOnan+vblOvco/HnwfLpyPDlue3bm+zbk8OsTaOFFKOGFKOGFKOFFKOFFKOG
GsSzd8OzeMGwcbCeTaGGGaOFFaOFFKOFFKOFFKOFFKSFFaKFFXhfBWdTAGhSAGhSAGhSAGhSAGpTAWhT
AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOjan+zcku3bk+3blOzdlOzclO7b
luzbksSsTaOFFKOFFKOFFKOFFKSFFKSFFKSGFKOFE6OFFKWFFKSFFaOFE6SFFKOFFKOFFKOFFKSFFKKF
FXhfBWdTAGhSAGhSAGhSAGhSAGpTAWhTAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAOfaoOzclO3blO7ale7clezcle7bluzbksSsTaOFFKOFFKOFFKOFFaOFFKOFFKOFFKOFFKOFFKSG
E6SFE6OFFKOFFKOFFKOFFKOFFKSFFKKFFXhfBWdTAGhSAGhSAGhSAGhSAGpTAWhTAQAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOfZoOzble3bk+zble3ble3cle7bluvbksSsTaOFFKOF
FKOFFKOFFKOFFKOFFKSFFKSFFKSFFKSFFKSFFKOFFKOFFKOFFKOFFKOFFKSFFKKFFXhfBWdTAGhSAGhS
AGhSAGhSAGpTAWhTAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOfZn+zble7b
k+zble3ble3blu7bluzbksSsTaOFFKOFFKOFFKOFFKOFFKSFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOF
FKOFFKOFFKSFFKKFFXhfBWdTAGhSAGhSAGhSAGhSAGpTAWhTAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAOfZoO3ble3bk+zble3ble3ble7bluzbksOsTqKFFaOFFaOFFaOFFKOFFKOF
FKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKSFFKKFFXhfBWdTAGhSAGhSAGhSAGhSAGpTAWlT
AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOHRoePNiOPNhePNhuTOh+TOhuTP
hePOhdnAcNC1X9C2Xa2PJaSFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKOFFKSFFKKF
FXhfBWdTAGhSAGhSAGhSAGhSAGtSAWlTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAN/NleLIgODJgOHJgOHJgOHKf+DJgN/Jf9/Jf+HJfK+TLKOFFKOFFKOGFKOFFKOFFKOFFKOF
FKOFFKOFFKOFFKOFFKOFFKOFFKSFFKKFFXdfBWdTAGhSAGhSAGhSAGhSAGpSAWhTAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANzMlt/JgeHKfuHJf+DJgOHJf+DJfuHJgOLI
fa+TL6SGGKSGGKSGGKSGGKSGGKSGGKSGGKSGGKSGGKSGGKSGGKSGGKSGGKSGGKKGGXhhDWhVCWlVCmlV
CWlVCWlVCWtVC2lWCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AN7NluLJguHJgOHKf+DKfuHKfuDKfuDJfufTh+vVievWievWiuvWievWievWievWievWievWievWievW
ievWievWiezWierViwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN3NleLJgeHKfuDKfuHKfuHKfuHKfurXj+3Zle3Zlu3Z
lu3Zle3Zle3Zle3Zle3Zle3Zle3Zle3Zle3Zle3Zle3ZlevZlwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN7Ml+DJ
geHKfuDKfuDKfuDKfurXj+zalezalezalezalezalezalezalezalezalezalezalezalezale3alera
lgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAN3Mld/IgeDIgODJgODKf+rWkOzalOzalOzalOzalOzalOzalOza
lOzalOzalOzalOzalOzalOzalO3alOvalgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN7Mld/IgeDJgODK
f+rWkOzalOzalOzalezalOzalOzalOzalOzalOzalOzalOzalOzalOzalO3alOvalgAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAANzKlODJguDJgOrXkOzalOzalOzalOzalOzalOzalOzalOzalOzalOzalOza
lOzalOzalO3alOvalgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANvMld/JgenXkOvbk+vblOvb
lOvblOvblOvblOvblOvblOvblOvblOvblOvblOvblOzblOrblQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAANvNlOnXkuzalevalOzblOzalOzalOvalevalOzalOzalezalevalevalevblevalOna
lwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP///////wAA//wAAAB/AAD//AAAAH8AAP/8AAAAfwAA//wAAAB/AAD//AAAAH8AAP/8
AAAAfwAA//wAAAB/AAD//AAAAH8AAPwAAAAAfwAA/AAAAAB/AAD8AAAAAH8AAPwAAAAAfwAA/AAAAAB/
AAD8AAAAAH8AAPwAAAAAfwAA/AAAAAB/AAD8AAAAAH8AAPwAAAAAfwAA/AAAAAB/AAD8AAAAAH8AAPwA
AAAAfwAA/AAAAAB/AAD8AAAAAH8AAPwAAAAAfwAA/AAAAAB/AAD8AAAAAH8AAPwAAAAAfwAA/AAAAAB/
AAD8AAAAAH8AAPwAAAAAfwAA/AAAAAB/AAD8AAAAAH8AAPwAAAAAfwAA/AAAAAB/AAD8AAAAAH8AAPwA
AAAAfwAA/gAAAAB/AAD/AAAAAH8AAP+AAAB//wAA/8AAAH//AAD/4AAAf/8AAP/wAAB//wAA//gAAH//
AAD//AAAf/8AAP/+AAB//wAA//8AAH//AAD///////8AACgAAAAgAAAAQAAAAAEAGAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoVg1pVg1pVw1pVw1pVg1p
Vg1pVg1pVg1pVg1pVg1pVg1pVg1pVg1pVg1pVg1pVg1qVw8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABpUQFpUQFpUgBpUgBpUgFpUgFpUgFpUgFpUgFpUgFpUgFpUgFpUgFp
UgFpUgFpUgFoUgFrVQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoUgBo
UgBoUgBoUgBoUgBoUgBoUgBoUgBoUgBoUgBoUgBoUgBoUgBoUgBoUgBoUgBpUgBrVgwAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoUgBoUgBoUgBoUgBoUgBoUgBoUgBoUgBoUgBo
UgBoUgBoUgBoUgBoUgBoUgBoUgBpUgBqVgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAACLf0poUgBoUgBoUgBoUgBoUgBoUgBoUgBoUgBoUgBoUgBoUgBoUgBoUgBoUgBoUgBoUgBpUgBr
VgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOgUlrVQBrVQBrVQBrVQBrVQBr
VQBrVQBrVQBrVQBrVQBrVQBrVQBpUwBoUgBoUgBoUgBpUgBqVgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADo2qDs25fs25ns25nt25nQu2eihBWihBWihBWihBWihBWihBWihBWihBWihBWihBWihBWhhBVxWwNo
UwBoUgBoUgBpUgBrVgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADp2p3t25Tt25Xt25Xt25XRvGWjhRSj
hRSjhRSjhRSjhRSjhRSjhRSjhRSjhRSjhRSkhRSjhRVyWwNoUwBoUgBoUgBpUgBqVgwAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADp2p3t25Pt25Xt25Xt25XRu2WjhRSjhRSjhRSjhRSjhRSjhRSjhRSjhRSjhRSj
hRSkhRSjhRVyWwNoUwBoUgBoUgBpUgBrVgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADp2p3t25Tt25Xt
3JXt25XRu2WjhRSjhRSjhRSjhRSjhRSjhRSjhRSjhRSjhRSjhRSkhRSjhRVyWwNoUwBoUgBoUgBpUgBq
VgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADp2p3t25Tt25Xt25Xt25XRvGWjhRSjhRSjhRSjhRSjhRSj
hRSjhRSjhRSjhRSjhRSkhRSjhRVyWwNoUwBoUgBoUgBpUgBrVgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADq2p3t25Pt25Xt25Xt25XRu2WjhRSjhRSjhRSjhRSjhRSjhRSjhRSjhRSjhRSjhRSkhRSjhRVyWwNo
UwBoUgBoUgBpUgBqVgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADr2p3u25Pt25Xt25Xt25XRu2WjhRSj
hhSjhRSjhRSjhRSjhRSjhRSjhRSjhRSjhhSkhRSjhRVyWwNoUwBoUgBoUgBpUgBqVgwAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADr2p3u25Pt25Xt25Xt25XRu2WjhRSjhRSjhRSjhRSjhRSjhRSjhRSjhRSjhRSj
hRSjhRSihRVyWwNoUwBoUgBoUgBpUgBqVgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADr2p3s25Tt25Tt
3JXt25TRu2WjhRWjhRSihRSjhROjhRSjhRSjhRSihRSjhRSjhROjhRSihRVyWwRoUwFoUwBpUgFpUgBr
VgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADq25zv36j068ny6sbs3aDTvmrOwY2niyXKvIOwmD/Rw5DQ
wo+/rWejhhijhhnBsW/KvIKslDdzXAecjl6nmnBnUwJpUgBrVgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADq4rb9/fv7+fL8+/f7+vTTw4H///+rlTzy8Oi8qWf////g2b749vHVyp/Pwo/y8OXc07P29e6xpnvw
7+qzqYNnUwNpUwBrVgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD08eX6+O7s3Jfr3aD9/frd07P///+2
pV/49/K7qGX///+5pVbAsG36+fPXz63p48/HuoH+/f3EvJ/g3dGHeT5oUgJpUwBrVgwAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADz8eP7+fLr3Z/t36j9/fvb0Knn4czh2b7f2LmmjjD///+5pVnKvoj29Oypkzbc
07Hl38bAsXF7ZxrGwKXJxKxpUgRpUwFrVgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADq36/8+/X+/fz+
/v759urRvW2ihRSkhRSjhROjhx3////08un9/PvCsXKjhRSjhROihhSjhRVyWwRoUwFoUwFpUgFpUwFq
VgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADq2pvr25rv5LTv47Dt25fRvGSjhRSjhhSjhRSkhha5pFa4
olSpkDCjhRSjhRSjhRSjhRSjhRVyWwNoUwBoUgBoUgBpUwFqVgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADp25zt25Pu25Xt3JXt25XRvGSjhRSjhRSjhRSjhRSjhRSjhROkhRSjhRSjhRSjhRSkhRSjhRVyWwNo
UwBoUgBoUgBpUwFqVgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADp2pzt25Pt25Xt25Xt25XRvGSjhRSj
hRSjhRSjhRSkhRSjhRSkhRSjhRSjhRSjhRSkhRSjhRVyWwNoUwBoUgBoUgBpUwFqVgwAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADp2pzt25Pt25Xt25Xu25XRvGSjhRWjhRWjhRSjhRSjhRSjhRSjhRSjhRSjhRSj
hRSkhRSjhRVyWwNoUwBoUgBoUgBpUwFrVgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADh0JnjzIPizIXj
zIXjzYPexnnVvGm7nz2jhRSjhRSjhRSjhRSjhRSjhRSjhRSjhRSkhRSjhRVyWwNoUwBoUgBoUgBqUwFq
VQsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADezJDgyX/hyX/hyX/gyX/hyX7ApUekhhekhhekhhek
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
rEHwH6xB/B+sQQ==
</value>
</data>
</root>

View File

@@ -16,7 +16,14 @@ namespace API_DocTest
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
if (Properties.Settings.Default.Testumgebung == "Fachuser")
{
Application.Run(new Form2());
}
else
{
Application.Run(new Form1());
}
}
}
}

View File

@@ -1,71 +1,83 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Dieser Code wurde von einem Tool generiert.
// Laufzeitversion: 4.0.30319.42000
// Laufzeitversion:4.0.30319.42000
//
// Änderungen an dieser Datei können fehlerhaftes Verhalten verursachen und gehen verloren, wenn
// der Code neu generiert wird.
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
// der Code erneut generiert wird.
// </auto-generated>
//------------------------------------------------------------------------------
namespace API_DocTest.Properties
{
namespace API_DocTest.Properties {
using System;
/// <summary>
/// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
/// </summary>
// Diese Klasse wurde von der StronglyTypedResourceBuilder-Klasse
// über ein Tool wie ResGen oder Visual Studio automatisch generiert.
// Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
// -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
// Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
// mit der Option /str erneut aus, oder erstellen Sie Ihr VS-Projekt neu.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
// mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "18.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
internal Resources() {
}
/// <summary>
/// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get
{
if ((resourceMan == null))
{
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("API_DocTest.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
/// Ressourcenlookups, die diese stark typisierte Ressourcenklasse verwenden.
/// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set
{
set {
resourceCulture = value;
}
}
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap PDF_128 {
get {
object obj = ResourceManager.GetObject("PDF_128", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap PDF_256 {
get {
object obj = ResourceManager.GetObject("PDF_256", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}

View File

@@ -46,7 +46,7 @@
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
@@ -60,6 +60,7 @@
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
@@ -68,9 +69,10 @@
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
@@ -85,9 +87,10 @@
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
@@ -109,9 +112,16 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="PDF_256" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\PDF_256.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="PDF_128" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\PDF_128.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@@ -12,7 +12,7 @@ namespace API_DocTest.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.10.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.14.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
@@ -64,7 +64,7 @@ namespace API_DocTest.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("x:\\")]
[global::System.Configuration.DefaultSettingValueAttribute("x:\\jsonfiles\\")]
public string tempdir {
get {
return ((string)(this["tempdir"]));
@@ -73,5 +73,42 @@ namespace API_DocTest.Properties {
this["tempdir"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Fachuser")]
public string Testumgebung {
get {
return ((string)(this["Testumgebung"]));
}
set {
this["Testumgebung"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("data source=shu01\\shu00;initial catalog=edoka_dms;packet size=4096;user id=sa;pas" +
"sword=*shu29")]
public string ConnectionStringPrd {
get {
return ((string)(this["ConnectionStringPrd"]));
}
set {
this["ConnectionStringPrd"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("x:\\jsonfiles\\[userid]\\")]
public string PathUser {
get {
return ((string)(this["PathUser"]));
}
set {
this["PathUser"] = value;
}
}
}
}

View File

@@ -12,7 +12,16 @@
<Value Profile="(Default)">pZkuG6l6ORCEckqQimPK58PO1A9EnkMtL5oCgRX9WiWnD4xeH7ikGzhWnTBy/vk8J4Iiz8gCSx9uFHA4+DvITG0roO97sk82d/0BCjVlwLWINpXlJfGYEF3X96AdoCQvb3ruwv/tVqEHsSU5aNfyxBAe+EhLTHQ8t7ysgJZWh98=</Value>
</Setting>
<Setting Name="tempdir" Type="System.String" Scope="User">
<Value Profile="(Default)">x:\</Value>
<Value Profile="(Default)">x:\jsonfiles\</Value>
</Setting>
<Setting Name="Testumgebung" Type="System.String" Scope="User">
<Value Profile="(Default)">Fachuser</Value>
</Setting>
<Setting Name="ConnectionStringPrd" Type="System.String" Scope="User">
<Value Profile="(Default)">data source=shu01\shu00;initial catalog=edoka_dms;packet size=4096;user id=sa;password=*shu29</Value>
</Setting>
<Setting Name="PathUser" Type="System.String" Scope="User">
<Value Profile="(Default)">x:\jsonfiles\[userid]\</Value>
</Setting>
</Settings>
</SettingsFile>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

View File

@@ -22,6 +22,15 @@
<setting name="tempdir" serializeAs="String">
<value>x:\jsonfiles\</value>
</setting>
<setting name="Testumgebung" serializeAs="String">
<value>Fachuser</value>
</setting>
<setting name="ConnectionStringPrd" serializeAs="String">
<value>data source=shu01\shu00;initial catalog=edoka_dms;packet size=4096;user id=sa;password=*shu29</value>
</setting>
<setting name="PathUser" serializeAs="String">
<value>x:\jsonfiles\[userid]\</value>
</setting>
</API_DocTest.Properties.Settings>
</userSettings>
</configuration>

Binary file not shown.

View File

@@ -1 +1 @@
231eb6dfb1d673903f7a0f7b1e3012b6598e60cacbbf46e87068a618e2f37da1
71cb0a6f2f19e48b875757deabbf46959323fd7b32f4627c89655d86dbc06b54

View File

@@ -37,3 +37,4 @@ E:\Software-Projekte\OnDoc\OnDoc\API_DocTest\obj\Debug\API_DocTest.csproj.CoreCo
E:\Software-Projekte\OnDoc\OnDoc\API_DocTest\obj\Debug\API_DocT.E6DB62E4.Up2Date
E:\Software-Projekte\OnDoc\OnDoc\API_DocTest\obj\Debug\API_DocTest.exe
E:\Software-Projekte\OnDoc\OnDoc\API_DocTest\obj\Debug\API_DocTest.pdb
E:\Software-Projekte\OnDoc\OnDoc\API_DocTest\obj\Debug\API_DocTest.Form2.resources

View File

@@ -268,13 +268,6 @@
<Compile Include="Controllers\AntwortAdressController.cs" />
<Compile Include="Controllers\VersandstrasseController.cs" />
<Compile Include="DocGenerators\CreateCLM.cs" />
<Compile Include="DocTester.aspx.cs">
<DependentUpon>DocTester.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="DocTester.aspx.designer.cs">
<DependentUpon>DocTester.aspx</DependentUpon>
</Compile>
<Compile Include="dt.aspx.cs">
<DependentUpon>dt.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
@@ -290,12 +283,19 @@
<Compile Include="Helper\ImageHelper.cs" />
<Compile Include="Models\StaticParams.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SelectTable.aspx.cs">
<DependentUpon>SelectTable.aspx</DependentUpon>
<Compile Include="CLM.aspx.cs">
<DependentUpon>CLM.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="SelectTable.aspx.designer.cs">
<DependentUpon>SelectTable.aspx</DependentUpon>
<Compile Include="CLM.aspx.designer.cs">
<DependentUpon>CLM.aspx</DependentUpon>
</Compile>
<Compile Include="JSONViewer.aspx.cs">
<DependentUpon>JSONViewer.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="JSONViewer.aspx.designer.cs">
<DependentUpon>JSONViewer.aspx</DependentUpon>
</Compile>
<Compile Include="Startup.cs" />
<Compile Include="TableConfigProvider.cs" />
@@ -318,7 +318,6 @@
<Content Include="Content\bootstrap.min.css" />
<Content Include="Content\bootstrap.rtl.css" />
<Content Include="Content\bootstrap.rtl.min.css" />
<Content Include="DocTester.aspx" />
<Content Include="dt.aspx" />
<Content Include="favicon.ico" />
<Content Include="Global.asax" />
@@ -354,7 +353,8 @@
<Content Include="Scripts\jquery-3.7.1.slim.js" />
<Content Include="Scripts\jquery-3.7.1.slim.min.js" />
<Content Include="Scripts\modernizr-2.8.3.js" />
<Content Include="SelectTable.aspx" />
<Content Include="CLM.aspx" />
<Content Include="JSONViewer.aspx" />
<Content Include="Web.config" />
<Content Include="Web.Debug.config">
<DependentUpon>Web.config</DependentUpon>

View File

@@ -1,14 +1,5 @@
{
"tables": [
{
"key": "ProvDokuments",
"displayName": "ESS-Dokumente",
"sqlList": "SELECT ProvDokumentid as id, provDokumentID as Name FROM ProvDokuments order by erstelltam desc",
"sqlById": "SELECT JavaScriptObject as JsonData FROM ProvDokuments where provdokumentid=@id",
"idField": "Id",
"displayField": "ProvDokumentID",
"jsonField": "JsonData"
},
{
"key": "Ondoc_Versandstrasse_Paket",
"displayName": "Ondoc_Versandstrasse_Paket",
@@ -16,7 +7,10 @@
"sqlById": "SELECT paket as JsonData from Ondoc_Versandstrasse_Paket where id= @id ",
"idField": "ID",
"displayField": "ID",
"jsonField": "JsonData"
"jsonField": "JsonData",
"Buttons": "Öffnen",
"AnzeigeDokument": "",
"FilterColumns": ""
},
{
"key": "NLOGApiDoc",
@@ -25,7 +19,35 @@
"sqlById": "SELECT div as JsonData from edoka_journale.dbo.nlogapidoc where id= @id ",
"idField": "ID",
"displayField": "ID",
"jsonField": "JsonData"
"jsonField": "JsonData",
"Buttons": "Öffnen",
"AnzeigeDokument": "",
"FilterColumns": "GUID"
},
{
"key": "CLMDokumente",
"displayName": "CLM-Dokumente",
"sqlList": "SELECT ID, clmdokumentid as CLM_ID, GUID, Erstellt_Am, Aktiv, Archivstatus, Archiviert from ondoc_clm_dokumente [FILTER] order by Id desc",
"sqlById": "SELECT jsondata as JsonData from ondoc_clm_dokumente where id= @id ",
"idField": "ID",
"displayField": "ID",
"jsonField": "JsonData",
"Buttons": "Öffnen;Anzeigen",
"AnzeigeDokument": "SELECT dbo.BinaryToBase64(dokument) FROM dbo.OnDoc_CLM_Dokumente INNER JOIN dbo.Doks ON dbo.OnDoc_CLM_Dokumente.dokumentid = dbo.Doks.DokumentID where dbo.ondoc_clm_dokumente.id=@id",
"FilterColumns": "clmdokumentid;archivstatus"
},
{
"key": "CLMJournal",
"displayName": "CLM-Journal",
"sqlList": "SELECT ID, clmdokumentid as CLM_ID, Dokumentid, GUID, Erstellt_Am, Aktiv, Archivstatus, Archiviert, Archiviert_am from ondoc_clm_dokumente [FILTER] order by Id desc",
"sqlById": " ",
"idField": "ID",
"displayField": "ID",
"jsonField": "",
"Buttons": "Anzeigen",
"AnzeigeDokument": "SELECT dbo.BinaryToBase64(dokument) FROM dbo.OnDoc_CLM_Dokumente INNER JOIN dbo.Doks ON dbo.OnDoc_CLM_Dokumente.dokumentid = dbo.Doks.DokumentID where dbo.ondoc_clm_dokumente.id=@id",
"FilterColumns": "clmdokumentid;archivstatus;dokumentid"
}
]

303
API_NetFramework/CLM.aspx Normal file
View File

@@ -0,0 +1,303 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CLM.aspx.cs" Inherits="WebApp.CLM" %>
<!DOCTYPE html>
<html>
<head runat="server">
<%--<title>Daten & JSON Editor</title>--%>
<script src="/Scripts/ace/ace.js"></script>
<script src="/Scripts/ace/mode-json.min.js"></script>
<script src="/Scripts/ace/theme-tomorrow.min.js"></script>
<script src="/Scripts/ace/worker-json.js"></script>
<script src="/Scripts/jquery.min.js"></script>
<script src="/Scripts/ace/ext-searchbox.js"></script>
<link href="/Content/bootstrap.css" rel="stylesheet" />
<%--<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.23.4/ace.js"></script>--%>
<style>
html, body {
margin: 0;
padding: 0;
height: 100%;
font-family: Arial;
background: #f4f6f8;
}
.page-header {
background-color: #2563eb;
color: #fff;
padding: 15px 30px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.page-header h1 {
margin: 0;
font-size: 1.8rem;
}
.page-header p {
margin: 4px 0 0 0;
font-size: 0.95rem;
color: #dbeafe;
}
.layout {
display: flex;
height: calc(100% - 70px);
}
/* 70px für header */
.left {
width: 45%;
padding: 20px;
background: #fff;
border-right: 1px solid #ddd;
overflow: auto;
}
.leftfull {
width: 100%;
padding: 20px;
background: #fff;
border-right: 1px solid #ddd;
overflow: auto;
}
.right {
width: 55%;
padding: 0;
height: 100%;
display: flex;
flex-direction: column;
}
#editor {
flex: 1;
width: 100%;
}
select {
width: 100%;
padding: 8px;
margin-bottom: 12px;
}
table {
width: 100%;
border-collapse: collapse;
font-size: 14px;
}
th, td {
padding: 8px;
border-bottom: 1px solid #e5e7eb;
}
tr:hover {
background: #f9fafb;
}
.pager a, .pager span {
padding: 5px 9px;
border: 1px solid #ddd;
border-radius: 5px;
margin-left: 4px;
text-decoration: none;
font-size: 13px;
}
.pager span {
background: #2563eb;
color: #fff;
border-color: #2563eb;
}
a.open {
color: #2563eb;
cursor: pointer;
text-decoration: none;
}
a.open:hover {
text-decoration: underline;
}
#pdfFrame {
width: 100%;
height: 500px;
}
.leftpanel {
border-right: 1px solid #ccc;
height: 100%;
}
.navbar-custom {
background-color: #0d6efd;
padding-top:20px;
padding-bottom:20px;
}
.navbar-custom .navbar-brand {
color: white;
font-weight: 600;
}
.navbar-custom .btn {
border-color: white;
color: white;
}
.navbar-custom .btn:hover {
background: white;
color: #0d6efd;
}
</style>
</head>
<nav class="navbar navbar-expand-lg navbar-custom">
<div class="container-fluid">
<!-- TITEL LINKS -->
<span class="navbar-brand"><h1>CLM</h1>
</span>
<div class="ms-auto d-flex gap-2">
<!-- BUTTON -->
<button class="btn btn-outline-light" onclick="generateFromJson()">
Generieren
</button>
</div>
</div>
</nav>
<!-- LAYOUT -->
<div class="layout">
<form runat="server" class="left" id="masterform" >
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />
<h2>Tabellen & Datensätze</h2>
<asp:DropDownList
Width="300"
ID="ddlTables"
runat="server"
AutoPostBack="true"
OnSelectedIndexChanged="ddlTables_SelectedIndexChanged" />
&nbsp;&nbsp;&nbsp;&nbsp;
<asp:Label ID="lblFilter" runat="server" Text="Filter:"></asp:Label>
<asp:TextBox ID="txtfilter" runat="server" Width="207px"></asp:TextBox>
<asp:Button ID="btnRefresh" runat="server" Text="Aktualisieren" OnClick="ddlTables_SelectedIndexChanged" />
<asp:Button ID="Button1" runat="server" Text="Filter löschen" OnClick="ddlTables_clearfilter" />
<asp:GridView
ID="gvData"
runat="server"
AutoGenerateColumns="true"
AllowPaging="true"
PageSize="15"
PagerStyle-CssClass="pager"
OnPageIndexChanging="gvData_PageIndexChanging"
OnRowCreated="gvData_RowCreated"
OnRowDataBound="gvData_RowDataBound" />
</form>
<div id="editor"></div>
</div>
<script>
const editor = ace.edit("editor");
editor.setTheme("ace/theme/tomorrow");
editor.session.setMode("ace/mode/json");
editor.setShowPrintMargin(false);
editor.session.setTabSize(2);
editor.session.setUseSoftTabs(true);
editor.session.doc
//let editor;
//$(function () {
// editor = ace.edit("editor");
// editor.setTheme("ace/theme/tomorrow");
// editor.session.setMode("ace/mode/json");
// editor.setShowPrintMargin(false);
// editor.session.setTabSize(2);
// editor.session.setUseSoftTabs(true);
// editor.commands.addCommand({
// name: "find",
// bindKey: { win: "Ctrl-F", mac: "Command-F" },
// exec: function (ed) {
// ace.require("ace/ext/searchbox").Search(ed);
// }
// });
//});
function generateFromJson() {
var jsonText = editor.getValue();
$.ajax({
type: "POST",
url: "/API/DokumentGenerator",
data: jsonText,
contentType: "application/json; charset=utf-8",
dataType: "json",
headers: {
"Authorization": "Bearer " + "pZkuG6l6ORCEckqQimPK58PO1A9EnkMtL5oCgRX9WiWnD4xeH7ikGzhWnTBy/vk8J4Iiz8gCSx9uFHA4+DvITG0roO97sk82d/0BCjVlwLWINpXlJfGYEF3X96AdoCQvb3ruwv/tVqEHsSU5aNfyxBAe+EhLTHQ8t7ysgJZWh98="
},
success: function (response) {
var pdfWindow = window.open("");
pdfWindow.document.write("<iframe width='100%' height='100%' src='data:application/pdf;base64," + response.file + "'></iframe>");
//alert("Server Response: " + response.file);
},
error: function (err) {
alert("Error: " + err.responseText);
}
});
}
function showDoc(tableKey, id) {
PageMethods.GetDoc(
tableKey,
id,
function (result) {
var pdfWindow = window.open("");
pdfWindow.document.write("<iframe width='100%' height='100%' src='data:application/pdf;base64," + result + "'></iframe>");
},
function (err) {
alert(err.get_message())
}
);
}
function loadJson(tableKey, id) {
editor.setValue("// lade JSON ...", -1);
PageMethods.GetJson(
tableKey,
id,
function (result) {
editor.setValue(result, -1);
},
function (err) {
editor.setValue(JSON.stringify({ error: err.get_message() }, null, 2), -1);
}
);
}
</script>
</body>
</html>

View File

@@ -0,0 +1,270 @@
using Model;
using Newtonsoft.Json;
using SecuringWebApiUsingApiKey.Middleware;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.Http.Results;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApp
{
public partial class CLM : System.Web.UI.Page
{
private string ConnectionString = StringCipher.Decrypt(ConfigurationManager.ConnectionStrings["DocTesterconnectionstring"].ConnectionString, "i%!k!7pab%bNLdA5hE4pkR4XaB%E^jB3d9tHuQ4pbF&BZjF7SB#WBWit5#HrbJiLrLVm");
private TableConfig CurrentTable =>
TableConfigProvider.LoadConfig().Tables.FirstOrDefault(t => t.Key == ddlTables.SelectedValue);
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
BindTables();
}
private void BindTables()
{
var config = TableConfigProvider.LoadConfig();
List<TableConfig> tables = new List<TableConfig>();
foreach (TableConfig t in config.Tables)
{
if (t.DisplayName.Contains("CLM")) { tables.Add(t); }
}
ddlTables.DataSource = tables;
ddlTables.DataTextField = "DisplayName";
ddlTables.DataValueField = "Key";
ddlTables.DataBind();
ddlTables.Items.Insert(0, "-- bitte wählen --");
}
protected void ddlTables_SelectedIndexChanged(object sender, EventArgs e)
{
gvData.PageIndex = 0;
LoadTableData();
}
protected void ddlTables_clearfilter(object sender, EventArgs e)
{
this.txtfilter.Text = "";
LoadTableData();
}
protected void gvData_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gvData.PageIndex = e.NewPageIndex;
LoadTableData();
}
string[] buttons;
private void LoadTableData()
{
if (ddlTables.SelectedIndex <= 0 || CurrentTable == null) return;
var cfg = CurrentTable;
buttons = cfg.Buttons.Split(';');
if (cfg.FilterColumns == "")
{
txtfilter.Visible = false;
lblFilter.Visible = false;
}
else
{
txtfilter.Visible = true;
lblFilter.Visible = true;
}
string sql = cfg.SqlList;
string where = "";
if (cfg.FilterColumns != "" && txtfilter.Text.Trim()!="")
{
string[] filters = cfg.FilterColumns.Split(';');
int i = 0;
foreach(string filter in filters)
{
if (i>0) { where = where + " or "; }
where = where + " " + filter + " like '%" + txtfilter.Text + "%' ";
i=i + 1;
}
if (where !="") { where = "where " + where; }
}
sql = sql.Replace("[FILTER]", where);
using (var con = new SqlConnection(ConnectionString))
using (var cmd = new SqlCommand(sql, con))
{
var dt = new DataTable();
con.Open();
dt.Load(cmd.ExecuteReader());
gvData.DataSource = dt;
gvData.DataBind();
}
}
protected void gvData_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
e.Row.Cells.Add(new TableHeaderCell { Text = "Details" });
}
protected void gvData_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType != DataControlRowType.DataRow) return;
var cfg = CurrentTable;
if (cfg == null) return;
var id = DataBinder.Eval(e.Row.DataItem, cfg.IdField)?.ToString();
if (string.IsNullOrEmpty(id)) return;
string tableKeyJs = HttpUtility.JavaScriptStringEncode(cfg.Key);
string idJs = HttpUtility.JavaScriptStringEncode(id);
bool hasoeffenen = false;
foreach (string button in buttons)
{
switch (button.ToUpper())
{
case "ÖFFNEN":
var c1 = new TableCell();
var l1 = new LinkButton
{
Text = "Öffnen",
CssClass = "open"
};
hasoeffenen = true;
l1.OnClientClick = $"loadJson('{tableKeyJs}','{idJs}'); return false;";
c1.Controls.Add(l1);
e.Row.Cells.Add(c1);
break;
case "ANZEIGEN":
var c2 = new TableCell();
var l2 = new LinkButton
{
Text = "Anzeigen",
CssClass = "open"
};
l2.OnClientClick = $"showDoc('{tableKeyJs}','{idJs}'); return false;";
c2.Controls.Add(l2);
e.Row.Cells.Add(c2);
break;
}
}
if (!hasoeffenen)
{
masterform.Attributes.Add("class", "leftfull");
} else
{
masterform.Attributes.Add("class", "left");
}
//var cell = new TableCell();
//var lnk = new LinkButton
//{
// Text = " Öffnen ",
// CssClass = "open"
//};
//lnk.OnClientClick = $"loadJson('{tableKeyJs}','{idJs}'); return false;";
//cell.Controls.Add(lnk);
//var cell2 = new TableCell();
//var lnk2 = new LinkButton
//{
// Text = " Generieren ",
// CssClass = "open"
//};
////lnk.OnClientClick = $"loadJson('{tableKeyJs}','{idJs}'); return false;";
//lnk2.OnClientClick = $"generateFromJson(); return false;";
//cell.Controls.Add(lnk2);
//e.Row.Cells.Add(cell);
}
[WebMethod]
public static object GetDoc(string table, string id)
{
var config = TableConfigProvider.LoadConfig();
var cfg = config.Tables.FirstOrDefault(t => t.Key == table);
if (cfg == null) return "Tabelle nicht gefunden";
using (var con = new SqlConnection(StringCipher.Decrypt(ConfigurationManager.ConnectionStrings["DocTesterconnectionstring"].ConnectionString, "i%!k!7pab%bNLdA5hE4pkR4XaB%E^jB3d9tHuQ4pbF&BZjF7SB#WBWit5#HrbJiLrLVm")))
using (var cmd = new SqlCommand(cfg.AnzeigeDokument, con))
{
cmd.Parameters.AddWithValue("@id", id);
con.Open();
string doc = cmd.ExecuteScalar()?.ToString();
con.Close();
return doc;
}
}
[WebMethod]
public static object GetJson(string table, string id)
{
var config = TableConfigProvider.LoadConfig();
var cfg = config.Tables.FirstOrDefault(t => t.Key == table);
if (cfg == null) return "Tabelle nicht gefunden";
using (var con = new SqlConnection(StringCipher.Decrypt(ConfigurationManager.ConnectionStrings["DocTesterconnectionstring"].ConnectionString, "i%!k!7pab%bNLdA5hE4pkR4XaB%E^jB3d9tHuQ4pbF&BZjF7SB#WBWit5#HrbJiLrLVm")))
using (var cmd = new SqlCommand(cfg.SqlById, con))
{
cmd.Parameters.AddWithValue("@id", id);
con.Open();
string json = cmd.ExecuteScalar()?.ToString();
return json;
dynamic dataj = JsonConvert.DeserializeObject(json);
try
{
if (dataj.Id != "")
{
json = JsonConvert.DeserializeObject<string>("" + json + "");
return json;
}
}
catch { }
if (string.IsNullOrEmpty(json)) return "Datensatz nicht gefunden";
try
{
if (json.TrimStart().StartsWith("\""))
{
json = JsonConvert.DeserializeObject<string>("{" + json + "}");
}
Versandpaket vp = new Versandpaket();
vp = JsonConvert.DeserializeObject<Versandpaket>(json);
vp.finaldoc = "ABCD...";
foreach (Versanddokument vd in vp.Dokument)
{
vd.dokument = "ABC...";
}
//vp.Dokument.Clear();
json = JsonConvert.SerializeObject(vp, Formatting.Indented);
}
catch (Exception ex) { }
// JSON in Objekt parsen, damit PageMethods es korrekt als JS-Objekt liefert
return (json);
}
}
[WebMethod]
public static object Generate(string json)
{
return "";
}
}
}

89
API_NetFramework/CLM.aspx.designer.cs generated Normal file
View File

@@ -0,0 +1,89 @@
//------------------------------------------------------------------------------
// <automatisch generiert>
// Dieser Code wurde von einem Tool generiert.
//
// Änderungen an dieser Datei können fehlerhaftes Verhalten verursachen und gehen verloren, wenn
// der Code neu generiert wird.
// </automatisch generiert>
//------------------------------------------------------------------------------
namespace WebApp
{
public partial class CLM
{
/// <summary>
/// masterform-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm masterform;
/// <summary>
/// ScriptManager1-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.ScriptManager ScriptManager1;
/// <summary>
/// ddlTables-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.WebControls.DropDownList ddlTables;
/// <summary>
/// lblFilter-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblFilter;
/// <summary>
/// txtfilter-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox txtfilter;
/// <summary>
/// btnRefresh-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.WebControls.Button btnRefresh;
/// <summary>
/// Button1-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.WebControls.Button Button1;
/// <summary>
/// gvData-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.WebControls.GridView gvData;
}
}

View File

@@ -1099,14 +1099,16 @@ namespace API_NetFramework.Controllers
int i = 0;
if (archivdoc.DokumentID != "")
{
int id = 0;
if (!archivdoc.Dokument.Contains("OFFEDK"))
{
string savedokumentid = archivdoc.DokumentID;
DB db = new DB(connectionstring);
try
{
db.Get_Tabledata("Select dokumentid from OnDoc_CLM_Dokumente where clmdokumentid='" + archivdoc.DokumentID + "'", false, true);
archivdoc.DokumentID = db.dsdaten.Tables[0].Rows[0][0].ToString(); ;
db.Get_Tabledata("Select id, dokumentid from OnDoc_CLM_Dokumente where aktiv=1 and clmdokumentid='" + archivdoc.DokumentID + "'", false, true);
id = Convert.ToInt32(db.dsdaten.Tables[0].Rows[0][0]);
archivdoc.DokumentID = db.dsdaten.Tables[0].Rows[0][1].ToString(); ;
}
catch
{
@@ -1133,6 +1135,9 @@ namespace API_NetFramework.Controllers
apiok.code = "OK";
apiok.status = "200";
apiok.documentid = archivdoc.DokumentID;
DB db = new DB(connectionstring);
db.Exec_SQL("Update ondoc_clm_dokumente set archiviert=1, archiviert_am = getdate() where id = " + id.ToString());
db = null;
return Content(HttpStatusCode.OK, apiok);
}
else

View File

@@ -1251,7 +1251,7 @@ namespace API_NetFramework.Controllers
clsdok dok = new clsdok("", "", "", "");
Logging.APIDocLog.Debug("Start GenDocCLM", "CreateCLM", guid, "");
gendocCLM(ref dokumentdaten, ref dataj, ref dok, key, clmdokumentid,archivstatus);
gendocCLM(ref dokumentdaten, ref dataj, ref dok, key, clmdokumentid,archivstatus, result);
Logging.APIDocLog.Info("Dokument abgeschlossen", "CreateDok", guid, clmdokumentid);
apiok.code = "200";
@@ -1774,7 +1774,7 @@ namespace API_NetFramework.Controllers
}
private void gendocCLM(ref List<CLMDocItem> clmdocitemlist, ref dynamic dataj, ref clsdok dok, string key, string clmdokumentid, string archivstatus = "Aktiv")
private void gendocCLM(ref List<CLMDocItem> clmdocitemlist, ref dynamic dataj, ref clsdok dok, string key, string clmdokumentid, string archivstatus = "Aktiv",string json="")
{
string OwnHost = System.Configuration.ConfigurationManager.AppSettings["OwnHost"].ToString();
string imagepath = System.Configuration.ConfigurationManager.AppSettings["VSImagePath"].ToString();
@@ -1947,7 +1947,7 @@ namespace API_NetFramework.Controllers
db.Exec_SQL("update dokument set dokumentname = dokumentname + '.pdf' where dokumentid = '" + dokumentid + "'");
}
// db.Save_To_DB(dokumentid, "", dok.dokument);
// dok = dget.GetDocAsPDF(dokumentid);
dok.extension = "pdf";
@@ -1955,11 +1955,25 @@ namespace API_NetFramework.Controllers
if (System.Configuration.ConfigurationManager.AppSettings["CLMSaveOnDoc"].ToString() == "True" || clmdokumentid != "")
{
db.Save_To_DB(dokumentid, "", dok.dokument);
string sql = "delete from ondoc_clm_dokumente where clmdokumentid ='" + dataj.Id + "'";
db.Exec_SQL(sql);
sql = "Insert OnDoc_CLM_Dokumente (dokumentid,clmdokumentid,erstellt_am,aktiv,archivstatus) values(";
sql=sql+"'"+dokumentid+"','"+dataj.Id+"',getdate(),1,'"+archivstatus+"')";
string sql = "Update ondoc_clm_dokumente set aktiv=0 where clmdokumentid = '" + dataj.Id + "'";
db.Exec_SQL(sql);
db.Get_Tabledata_for_Update("Select top 1 * from ondoc_clm_dokumente where id=-1", false, true);
DataRow dr1 = db.daten.Tables[0].NewRow();
dr1[1] = dokumentid;
dr1[2] = dataj.Id;
dr1[3] = DateTime.Now.ToString();
dr1[4] = true;
dr1[5] = archivstatus;
dr1[6] = 0;
dr1[7] = json;
dr1[8] = guid;
db.daten.Tables[0].Rows.Add(dr1);
db.Update_Data();
dr1 = null;
//sql = "Insert OnDoc_CLM_Dokumente (dokumentid,clmdokumentid,erstellt_am,aktiv,archivstatus) values(";
//sql=sql+"'"+dokumentid+"','"+dataj.Id+"',getdate(),1,'"+archivstatus+"')";
//db.Exec_SQL(sql);
//string sql = "Insert OnDoc_CLM_DocReference ";
//sql = sql + "(ondocdokumentid, clmdokumentid, erstellt_am,aktiv) ";
//sql = sql + "values('"+ dokdata.Dokumentid+","

View File

@@ -1,212 +0,0 @@
<%@ Page Language="C#" AutoEventWireup="true" %>
<!DOCTYPE html>
<html>
<head>
<title>JSON Editor → PDF Preview</title>
<script>
</script>
<!-- ACE
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.32.6/ace.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.32.6/mode-json.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.32.6/theme-tomorrow.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
-->
<script src="/Scripts/ace/ace.js"></script>
<script src="/Scripts/ace/mode-json.min.js"></script>
<script src="/Scripts/ace/theme-tomorrow.min.js"></script>
<script src="/Scripts/ace/worker-json.js"></script>
<script src="/Scripts/jquery.min.js"></script>
<script src="/Scripts/ace/ext-searchbox.js"></script>
<style>
body {
margin: 0;
font-family: Arial, sans-serif;
}
.toolbar {
padding: 10px;
background: #f5f5f5;
border-bottom: 1px solid #ccc;
}
.toolbar input {
width: 220px;
padding: 4px;
}
.toolbar button {
margin-left: 5px;
padding: 6px 10px;
}
.container {
display: flex;
height: calc(100vh - 60px);
}
.left, .right {
flex: 1;
padding: 10px;
box-sizing: border-box;
}
.left {
border-right: 1px solid #ccc;
}
#editor {
width: 100%;
height: 100%;
border: 1px solid #ccc;
}
#pdfFrame {
width: 100%;
height: 100%;
border: 1px solid #ccc;
background: #fafafa;
}
html, body { margin:0; padding:0; height:100%; font-family:Arial; background:#f4f6f8; }
.page-header {
background-color: #2563eb;
color: #fff;
padding: 15px 30px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.page-header h1 {
margin:0;
font-size:1.8rem;
}
.page-header p {
margin:4px 0 0 0;
font-size:0.95rem;
color:#dbeafe;
}
</style>
</head>
<body>
<div class="page-header">
<h1>OnDoc-DocPreview</h1>
<p></p>
</div>
<div class="toolbar">
<label>Schlüssel:</label>
<input type="text" id="key" placeholder="provDokumentID" />
<button onclick="loadJson()">Laden</button>
<button onclick="saveJson()">Speichern</button>
<button onclick="generatePdf()">PDF generieren</button>
</div>
<div class="container">
<!-- LINKS: JSON -->
<div class="left">
<div id="editor">{}</div>
</div>
<!-- RECHTS: PDF -->
<table>
<tr>
<div class="right">
<iframe id="pdfFrame" title="PDF Vorschau"></iframe>
</div>
</tr>
</table>
</div>
<script>
const apiBase = "/api/json";
// ACE INIT
const editor = ace.edit("editor");
editor.setTheme("ace/theme/tomorrow");
editor.session.setMode("ace/mode/json");
editor.setShowPrintMargin(false);
editor.session.setTabSize(2);
editor.session.setUseSoftTabs(true);
const editor1 = ace.edit("editor");
editor1.setTheme("ace/theme/tomorrow");
editor1.session.setMode("ace/mode/json");
editor1.setShowPrintMargin(false);
editor1.session.setTabSize(2);
editor1.session.setUseSoftTabs(true);
// JSON LADEN
function loadJson() {
editor.setValue("", -1);
clearPdfPreview();
const key = $("#key").val();
if (!key) { alert("Bitte Schlüssel eingeben"); return; }
$.get(apiBase + "/load/" + encodeURIComponent(key))
.done(data => editor.setValue(data, -1))
.fail(() => alert("Kein Eintrag gefunden"));
}
// JSON SPEICHERN
function saveJson() {
const key = $("#key").val();
const json = editor.getValue();
if (!key) { alert("Bitte Schlüssel eingeben"); return; }
// try { JSON.parse(json); }
// catch { alert("Ungültiges JSON"); return; }
$.ajax({
url: apiBase + "/save",
type: "POST",
contentType: "application/json",
data: JSON.stringify({ key: key, json: json }),
success: () => alert("Gespeichert")
});
}
// PDF GENERIEREN & EMBEDDED ANZEIGEN
function generatePdf() {
const key = $("#key").val();
if (!key) { alert("Bitte Schlüssel eingeben"); return; }
fetch(apiBase + "/generatepdf", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
key: key,
json: editor.getValue()
})
})
.then(r => {
if (!r.ok) throw new Error("PDF-Fehler");
return r.blob();
})
.then(blob => {
const url = URL.createObjectURL(blob);
document.getElementById("pdfFrame").src = url;
})
.catch(err => alert(err.message));
}
function clearPdfPreview() {
const frame = document.getElementById("pdfFrame");
// iframe leeren
frame.src = "";
// optional: alte Blob-URL freigeben
if (frame.dataset.blobUrl) {
URL.revokeObjectURL(frame.dataset.blobUrl);
frame.dataset.blobUrl = "";
}
}
</script>
</body>
</html>

View File

@@ -1,54 +0,0 @@
using Newtonsoft.Json;
using SecuringWebApiUsingApiKey.Middleware;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data.SqlClient;
using System.Linq;
using System.Runtime.Remoting.Messaging;
using System.Web;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.WebControls;
using WebApp;
namespace WebApp
{
public partial class DocTester : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[WebMethod]
public static object GetJson(string tableKey, string id, string mode)
{
string _connectionString = StringCipher.Decrypt(ConfigurationManager.ConnectionStrings["DocTesterconnectionstring"].ConnectionString, "i%!k!7pab%bNLdA5hE4pkR4XaB%E^jB3d9tHuQ4pbF&BZjF7SB#WBWit5#HrbJiLrLVm");
string json;
if (mode == "prov")
{
using (SqlConnection con = new SqlConnection(_connectionString))
using (SqlCommand cmd = new SqlCommand(
"SELECT JavaScriptObject FROM ProvDokuments WHERE ProvDokumentid = @key", con))
{
cmd.Parameters.AddWithValue("@key", id);
con.Open();
json = cmd.ExecuteScalar()?.ToString();
}
if (json == null)
return "";
}
json = "";
return json;
}
protected void LoadJson(object sender, EventArgs e)
{
string a = "1";
}
}
}

View File

@@ -1,35 +0,0 @@
//------------------------------------------------------------------------------
// <automatisch generiert>
// Dieser Code wurde von einem Tool generiert.
//
// Änderungen an dieser Datei können fehlerhaftes Verhalten verursachen und gehen verloren, wenn
// der Code neu generiert wird.
// </automatisch generiert>
//------------------------------------------------------------------------------
namespace WebApp
{
public partial class DocTester
{
/// <summary>
/// form1-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// BtnLoad-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.WebControls.Button BtnLoad;
}
}

View File

@@ -0,0 +1,314 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="JSONViewer.aspx.cs" Inherits="WebApp.JSONViewer" %>
<!DOCTYPE html>
<html>
<head runat="server">
<%--<title>Daten & JSON Editor</title>--%>
<script src="/Scripts/ace/ace.js"></script>
<script src="/Scripts/ace/mode-json.min.js"></script>
<script src="/Scripts/ace/theme-tomorrow.min.js"></script>
<script src="/Scripts/ace/worker-json.js"></script>
<script src="/Scripts/jquery.min.js"></script>
<script src="/Scripts/ace/ext-searchbox.js"></script>
<script src="/Scripts/bootstrap.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.23.4/ace.js"></script>
<style>
html, body {
margin: 0;
padding: 0;
height: 100%;
font-family: Arial;
background: #f4f6f8;
}
.page-header {
background-color: #2563eb;
color: #fff;
padding: 15px 30px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.page-header h1 {
margin: 0;
font-size: 1.8rem;
}
.page-header p {
margin: 4px 0 0 0;
font-size: 0.95rem;
color: #dbeafe;
}
.layout {
display: flex;
height: calc(100% - 70px);
}
/* 70px für header */
.left {
width: 45%;
padding: 20px;
background: #fff;
border-right: 1px solid #ddd;
overflow: auto;
}
.leftfull {
width: 100%;
padding: 20px;
background: #fff;
border-right: 1px solid #ddd;
overflow: auto;
}
.right {
width: 55%;
padding: 0;
height: 100%;
display: flex;
flex-direction: column;
}
#editor {
flex: 1;
width: 100%;
}
select {
width: 100%;
padding: 8px;
margin-bottom: 12px;
}
table {
width: 100%;
border-collapse: collapse;
font-size: 14px;
}
th, td {
padding: 8px;
border-bottom: 1px solid #e5e7eb;
}
tr:hover {
background: #f9fafb;
}
.pager a, .pager span {
padding: 5px 9px;
border: 1px solid #ddd;
border-radius: 5px;
margin-left: 4px;
text-decoration: none;
font-size: 13px;
}
.pager span {
background: #2563eb;
color: #fff;
border-color: #2563eb;
}
a.open {
color: #2563eb;
cursor: pointer;
text-decoration: none;
}
a.open:hover {
text-decoration: underline;
}
#pdfFrame {
width: 100%;
height: 500px;
}
.leftpanel {
border-right: 1px solid #ccc;
height: 100%;
}
.navbar-custom {
background-color: #0d6efd;
padding-top:20px;
padding-bottom:20px;
}
.navbar-custom .navbar-brand {
color: white;
font-weight: 600;
}
.navbar-custom .btn {
border-color: white;
color: white;
}
.navbar-custom .btn:hover {
background: white;
color: #0d6efd;
}
</style>
</head>
<nav class="navbar navbar-expand-lg navbar-custom">
<div class="container-fluid">
<!-- TITEL LINKS -->
<span class="navbar-brand">OnDoc-JSON-Viewer
</span>
<div class="ms-auto d-flex gap-2">
<!-- BUTTON -->
<button class="btn btn-outline-light" onclick="generateFromJson()">
Generieren
</button>
</div>
</div>
</nav>
<%--<div class="page-header">
<h1>OnDoc-Json-Viewer</h1>
<p>Tabellen auswählen, Datensätze ansehen und JSON anzeigen</p>
</div>--%>
<!-- LAYOUT -->
<div class="layout">
<form runat="server" class="left" id="masterform">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />
<h2>Tabellen & Datensätze</h2>
<asp:DropDownList
Width="300"
ID="ddlTables"
runat="server"
AutoPostBack="true"
OnSelectedIndexChanged="ddlTables_SelectedIndexChanged" />
&nbsp;&nbsp;&nbsp;&nbsp;
<asp:Label ID="lblFilter" runat="server" Text="Filter:"></asp:Label>
<asp:TextBox ID="txtfilter" runat="server" Width="207px"></asp:TextBox>
<asp:Button ID="btnRefresh" runat="server" Text="Aktualisieren" OnClick="ddlTables_SelectedIndexChanged" />
<asp:Button ID="Button1" runat="server" Text="Filter löschen" OnClick="ddlTables_clearfilter" />
<asp:GridView
ID="gvData"
runat="server"
AutoGenerateColumns="true"
AllowPaging="true"
PageSize="15"
PagerStyle-CssClass="pager"
OnPageIndexChanging="gvData_PageIndexChanging"
OnRowCreated="gvData_RowCreated"
OnRowDataBound="gvData_RowDataBound" />
</form>
<div id="editor"></div>
</div>
<script>
const editor = ace.edit("editor");
editor.setTheme("ace/theme/tomorrow");
editor.session.setMode("ace/mode/json");
editor.setShowPrintMargin(false);
editor.session.setTabSize(2);
editor.session.setUseSoftTabs(true);
editor.session.doc
//let editor;
//$(function () {
// editor = ace.edit("editor");
// editor.setTheme("ace/theme/tomorrow");
// editor.session.setMode("ace/mode/json");
// editor.setShowPrintMargin(false);
// editor.session.setTabSize(2);
// editor.session.setUseSoftTabs(true);
// editor.commands.addCommand({
// name: "find",
// bindKey: { win: "Ctrl-F", mac: "Command-F" },
// exec: function (ed) {
// ace.require("ace/ext/searchbox").Search(ed);
// }
// });
//});
function generateFromJson() {
var jsonText = editor.getValue();
$.ajax({
type: "POST",
url: "/API/DokumentGenerator",
data: jsonText,
contentType: "application/json; charset=utf-8",
dataType: "json",
headers: {
"Authorization": "Bearer " + "pZkuG6l6ORCEckqQimPK58PO1A9EnkMtL5oCgRX9WiWnD4xeH7ikGzhWnTBy/vk8J4Iiz8gCSx9uFHA4+DvITG0roO97sk82d/0BCjVlwLWINpXlJfGYEF3X96AdoCQvb3ruwv/tVqEHsSU5aNfyxBAe+EhLTHQ8t7ysgJZWh98="
},
success: function (response) {
var pdfWindow = window.open("");
pdfWindow.document.write("<iframe width='100%' height='100%' src='data:application/pdf;base64," + response.file + "'></iframe>");
//alert("Server Response: " + response.file);
},
error: function (err) {
alert("Error: " + err.responseText);
}
});
}
function showDoc(tableKey, id) {
PageMethods.GetDoc(
tableKey,
id,
function (result) {
var pdfWindow = window.open("");
pdfWindow.document.write("<iframe width='100%' height='100%' src='data:application/pdf;base64," + result + "'></iframe>");
},
function (err) {
alert(err.get_message())
}
);
}
function loadJson(tableKey, id) {
editor.setValue("// lade JSON ...", -1);
PageMethods.GetJson(
tableKey,
id,
function (result) {
editor.setValue(result, -1);
},
function (err) {
editor.setValue(JSON.stringify({ error: err.get_message() }, null, 2), -1);
}
);
}
</script>
</body>
</html>

View File

@@ -0,0 +1,266 @@
using Model;
using Newtonsoft.Json;
using SecuringWebApiUsingApiKey.Middleware;
using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.Http.Results;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApp
{
public partial class JSONViewer : System.Web.UI.Page
{
private string ConnectionString = StringCipher.Decrypt(ConfigurationManager.ConnectionStrings["DocTesterconnectionstring"].ConnectionString, "i%!k!7pab%bNLdA5hE4pkR4XaB%E^jB3d9tHuQ4pbF&BZjF7SB#WBWit5#HrbJiLrLVm");
private TableConfig CurrentTable =>
TableConfigProvider.LoadConfig().Tables.FirstOrDefault(t => t.Key == ddlTables.SelectedValue);
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
BindTables();
}
private void BindTables()
{
var config = TableConfigProvider.LoadConfig();
ddlTables.DataSource = config.Tables;
ddlTables.DataTextField = "DisplayName";
ddlTables.DataValueField = "Key";
ddlTables.DataBind();
ddlTables.Items.Insert(0, "-- bitte wählen --");
}
protected void ddlTables_SelectedIndexChanged(object sender, EventArgs e)
{
gvData.PageIndex = 0;
LoadTableData();
}
protected void ddlTables_clearfilter(object sender, EventArgs e)
{
this.txtfilter.Text = "";
LoadTableData();
}
protected void gvData_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gvData.PageIndex = e.NewPageIndex;
LoadTableData();
}
string[] buttons;
private void LoadTableData()
{
if (ddlTables.SelectedIndex <= 0 || CurrentTable == null) return;
var cfg = CurrentTable;
buttons = cfg.Buttons.Split(';');
if (cfg.FilterColumns == "")
{
txtfilter.Visible = false;
lblFilter.Visible = false;
}
else
{
txtfilter.Visible = true;
lblFilter.Visible = true;
}
string sql = cfg.SqlList;
string where = "";
if (cfg.FilterColumns != "" && txtfilter.Text.Trim()!="")
{
string[] filters = cfg.FilterColumns.Split(';');
int i = 0;
foreach(string filter in filters)
{
if (i>0) { where = where + " or "; }
where = where + " " + filter + " like '%" + txtfilter.Text + "%' ";
i=i + 1;
}
if (where !="") { where = "where " + where; }
}
sql = sql.Replace("[FILTER]", where);
using (var con = new SqlConnection(ConnectionString))
using (var cmd = new SqlCommand(sql, con))
{
var dt = new DataTable();
con.Open();
dt.Load(cmd.ExecuteReader());
gvData.DataSource = dt;
gvData.DataBind();
}
}
protected void gvData_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
e.Row.Cells.Add(new TableHeaderCell { Text = "Details" });
}
protected void gvData_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType != DataControlRowType.DataRow) return;
var cfg = CurrentTable;
if (cfg == null) return;
var id = DataBinder.Eval(e.Row.DataItem, cfg.IdField)?.ToString();
if (string.IsNullOrEmpty(id)) return;
string tableKeyJs = HttpUtility.JavaScriptStringEncode(cfg.Key);
string idJs = HttpUtility.JavaScriptStringEncode(id);
bool hasoeffenen = false;
foreach (string button in buttons)
{
switch (button.ToUpper())
{
case "ÖFFNEN":
var c1 = new TableCell();
var l1 = new LinkButton
{
Text = "Öffnen",
CssClass = "open"
};
hasoeffenen = true;
l1.OnClientClick = $"loadJson('{tableKeyJs}','{idJs}'); return false;";
c1.Controls.Add(l1);
e.Row.Cells.Add(c1);
break;
case "ANZEIGEN":
var c2 = new TableCell();
var l2 = new LinkButton
{
Text = "Dok.Anzeigen",
CssClass = "open"
};
l2.OnClientClick = $"showDoc('{tableKeyJs}','{idJs}'); return false;";
c2.Controls.Add(l2);
e.Row.Cells.Add(c2);
break;
}
}
if (!hasoeffenen)
{
masterform.Attributes.Add("class", "leftfull");
}
else
{
masterform.Attributes.Add("class", "left");
}
//var cell = new TableCell();
//var lnk = new LinkButton
//{
// Text = " Öffnen ",
// CssClass = "open"
//};
//lnk.OnClientClick = $"loadJson('{tableKeyJs}','{idJs}'); return false;";
//cell.Controls.Add(lnk);
//var cell2 = new TableCell();
//var lnk2 = new LinkButton
//{
// Text = " Generieren ",
// CssClass = "open"
//};
////lnk.OnClientClick = $"loadJson('{tableKeyJs}','{idJs}'); return false;";
//lnk2.OnClientClick = $"generateFromJson(); return false;";
//cell.Controls.Add(lnk2);
//e.Row.Cells.Add(cell);
}
[WebMethod]
public static object GetDoc(string table, string id)
{
var config = TableConfigProvider.LoadConfig();
var cfg = config.Tables.FirstOrDefault(t => t.Key == table);
if (cfg == null) return "Tabelle nicht gefunden";
using (var con = new SqlConnection(StringCipher.Decrypt(ConfigurationManager.ConnectionStrings["DocTesterconnectionstring"].ConnectionString, "i%!k!7pab%bNLdA5hE4pkR4XaB%E^jB3d9tHuQ4pbF&BZjF7SB#WBWit5#HrbJiLrLVm")))
using (var cmd = new SqlCommand(cfg.AnzeigeDokument, con))
{
cmd.Parameters.AddWithValue("@id", id);
con.Open();
string doc = cmd.ExecuteScalar()?.ToString();
con.Close();
return doc;
}
}
[WebMethod]
public static object GetJson(string table, string id)
{
var config = TableConfigProvider.LoadConfig();
var cfg = config.Tables.FirstOrDefault(t => t.Key == table);
if (cfg == null) return "Tabelle nicht gefunden";
using (var con = new SqlConnection(StringCipher.Decrypt(ConfigurationManager.ConnectionStrings["DocTesterconnectionstring"].ConnectionString, "i%!k!7pab%bNLdA5hE4pkR4XaB%E^jB3d9tHuQ4pbF&BZjF7SB#WBWit5#HrbJiLrLVm")))
using (var cmd = new SqlCommand(cfg.SqlById, con))
{
cmd.Parameters.AddWithValue("@id", id);
con.Open();
string json = cmd.ExecuteScalar()?.ToString();
return json;
dynamic dataj = JsonConvert.DeserializeObject(json);
try
{
if (dataj.Id != "")
{
json = JsonConvert.DeserializeObject<string>("" + json + "");
return json;
}
}
catch { }
if (string.IsNullOrEmpty(json)) return "Datensatz nicht gefunden";
try
{
if (json.TrimStart().StartsWith("\""))
{
json = JsonConvert.DeserializeObject<string>("{" + json + "}");
}
Versandpaket vp = new Versandpaket();
vp = JsonConvert.DeserializeObject<Versandpaket>(json);
vp.finaldoc = "ABCD...";
foreach (Versanddokument vd in vp.Dokument)
{
vd.dokument = "ABC...";
}
//vp.Dokument.Clear();
json = JsonConvert.SerializeObject(vp, Formatting.Indented);
}
catch (Exception ex) { }
// JSON in Objekt parsen, damit PageMethods es korrekt als JS-Objekt liefert
return (json);
}
}
[WebMethod]
public static object Generate(string json)
{
return "";
}
}
}

View File

@@ -0,0 +1,89 @@
//------------------------------------------------------------------------------
// <automatisch generiert>
// Dieser Code wurde von einem Tool generiert.
//
// Änderungen an dieser Datei können fehlerhaftes Verhalten verursachen und gehen verloren, wenn
// der Code neu generiert wird.
// </automatisch generiert>
//------------------------------------------------------------------------------
namespace WebApp
{
public partial class JSONViewer
{
/// <summary>
/// masterform-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm masterform;
/// <summary>
/// ScriptManager1-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.ScriptManager ScriptManager1;
/// <summary>
/// ddlTables-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.WebControls.DropDownList ddlTables;
/// <summary>
/// lblFilter-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblFilter;
/// <summary>
/// txtfilter-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox txtfilter;
/// <summary>
/// btnRefresh-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.WebControls.Button btnRefresh;
/// <summary>
/// Button1-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.WebControls.Button Button1;
/// <summary>
/// gvData-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.WebControls.GridView gvData;
}
}

View File

@@ -5,15 +5,15 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<Project>
<PropertyGroup>
<_PublishTargetUrl>E:\Software-Projekte\OnDoc\PubServices\OnDoc</_PublishTargetUrl>
<History>True|2026-03-03T06:42:58.6695248Z||;True|2026-03-02T18:56:44.9083635+01:00||;True|2026-03-02T15:22:04.7632771+01:00||;True|2026-03-02T15:17:19.5888051+01:00||;True|2026-03-02T14:44:15.1850254+01:00||;False|2026-03-02T14:43:43.8750165+01:00||;True|2026-03-02T13:00:06.4813259+01:00||;True|2026-03-02T09:00:14.6639978+01:00||;True|2026-02-26T14:00:46.9137562+01:00||;True|2026-02-26T10:52:44.7996454+01:00||;True|2026-02-26T10:20:38.9297393+01:00||;True|2026-02-26T08:17:22.1709972+01:00||;True|2026-02-26T08:01:54.5490566+01:00||;True|2026-02-26T07:56:47.9173498+01:00||;True|2026-02-26T05:50:34.4180646+01:00||;True|2026-02-25T16:00:31.8051644+01:00||;True|2026-02-25T15:40:22.6200444+01:00||;True|2026-02-25T15:32:39.6209326+01:00||;True|2026-02-25T15:03:49.5202958+01:00||;True|2026-02-25T14:49:40.4560899+01:00||;True|2026-02-25T10:41:35.9042956+01:00||;True|2026-02-25T10:33:42.2485129+01:00||;True|2026-02-25T10:05:23.9864404+01:00||;True|2026-02-24T20:45:52.7533529+01:00||;True|2026-02-24T17:49:48.6739610+01:00||;True|2026-02-24T14:30:47.0663499+01:00||;True|2026-02-24T09:28:30.5328425+01:00||;True|2026-02-24T08:40:15.6054714+01:00||;True|2026-02-24T07:59:34.6469067+01:00||;True|2026-02-24T07:30:03.4506392+01:00||;True|2026-02-23T08:26:05.4681353+01:00||;True|2026-02-22T10:44:29.6270572+01:00||;True|2026-02-22T10:41:26.3016875+01:00||;True|2026-02-22T10:30:20.0395713+01:00||;True|2026-02-22T10:06:09.3728289+01:00||;True|2026-02-20T11:11:41.2906293+01:00||;True|2026-02-20T10:46:35.4015642+01:00||;True|2026-02-20T09:45:14.8833885+01:00||;True|2026-02-20T07:32:39.1940489+01:00||;True|2026-02-18T09:12:43.1434580+01:00||;True|2026-02-17T15:15:14.8805757+01:00||;True|2026-02-17T11:09:40.4786451+01:00||;True|2026-02-17T10:45:37.3358353+01:00||;True|2026-02-17T10:33:30.6184470+01:00||;True|2026-02-16T18:55:30.1424518+01:00||;True|2026-02-16T18:01:46.0478978+01:00||;True|2026-02-16T14:51:53.3273467+01:00||;True|2026-02-16T14:12:09.6130777+01:00||;True|2026-02-16T11:21:18.5769808+01:00||;True|2026-02-16T10:08:08.4277947+01:00||;True|2026-02-16T09:52:01.8749049+01:00||;True|2026-02-16T08:13:22.5356518+01:00||;True|2026-02-13T12:36:18.0536988+01:00||;True|2026-02-13T07:29:34.9460520+01:00||;True|2026-02-13T07:27:07.4597689+01:00||;True|2026-02-13T07:23:53.8686289+01:00||;True|2026-02-13T07:21:55.2559788+01:00||;True|2026-02-13T07:19:52.5556550+01:00||;True|2026-02-13T07:18:16.9005327+01:00||;False|2026-02-13T07:17:55.2943268+01:00||;True|2026-02-13T07:16:44.2373881+01:00||;True|2026-02-13T07:14:10.2117483+01:00||;True|2026-02-13T07:06:07.9920856+01:00||;True|2026-02-13T06:48:45.3887087+01:00||;True|2026-02-12T09:21:36.9475377+01:00||;True|2026-02-11T09:09:26.3046534+01:00||;True|2026-02-09T12:16:03.1919757+01:00||;True|2026-02-09T10:52:16.6031577+01:00||;True|2026-02-09T10:43:50.3235884+01:00||;True|2026-02-09T10:32:56.5607905+01:00||;True|2026-02-09T09:28:25.4932552+01:00||;True|2026-02-09T09:11:35.2661821+01:00||;True|2026-02-09T09:09:05.8813514+01:00||;True|2026-02-09T08:54:25.9191904+01:00||;True|2026-02-09T08:41:16.2561697+01:00||;True|2026-02-09T08:22:16.8766070+01:00||;True|2026-02-09T08:09:42.8971751+01:00||;True|2026-02-08T11:04:49.3984275+01:00||;True|2026-02-08T11:00:30.1676134+01:00||;True|2026-02-08T10:02:58.9814683+01:00||;True|2026-02-08T09:53:57.1672910+01:00||;True|2026-02-08T09:50:45.8178289+01:00||;True|2026-02-08T09:47:06.6864472+01:00||;True|2026-02-08T09:44:42.9541012+01:00||;True|2026-02-08T09:44:34.5282303+01:00||;True|2026-02-08T09:42:53.1642218+01:00||;True|2026-02-07T20:47:10.6440687+01:00||;True|2026-02-07T20:45:09.1431081+01:00||;True|2026-02-07T20:43:29.6280085+01:00||;True|2026-02-07T20:42:07.5303009+01:00||;True|2026-02-07T20:40:45.5900631+01:00||;True|2026-02-07T20:39:21.4280903+01:00||;True|2026-02-07T20:37:35.6740413+01:00||;True|2026-02-07T20:35:28.7713095+01:00||;True|2026-02-07T17:44:22.3698834+01:00||;True|2026-02-07T17:41:18.9012786+01:00||;True|2026-02-07T17:38:04.4942892+01:00||;True|2026-02-07T17:36:20.2684316+01:00||;True|2026-02-07T17:34:04.9490195+01:00||;True|2026-02-07T17:22:59.3565852+01:00||;</History>
<History>True|2026-03-08T07:13:35.2118387Z||;True|2026-03-07T21:30:15.7021682+01:00||;True|2026-03-07T16:04:27.6676302+01:00||;True|2026-03-03T07:42:58.6695248+01:00||;True|2026-03-02T18:56:44.9083635+01:00||;True|2026-03-02T15:22:04.7632771+01:00||;True|2026-03-02T15:17:19.5888051+01:00||;True|2026-03-02T14:44:15.1850254+01:00||;False|2026-03-02T14:43:43.8750165+01:00||;True|2026-03-02T13:00:06.4813259+01:00||;True|2026-03-02T09:00:14.6639978+01:00||;True|2026-02-26T14:00:46.9137562+01:00||;True|2026-02-26T10:52:44.7996454+01:00||;True|2026-02-26T10:20:38.9297393+01:00||;True|2026-02-26T08:17:22.1709972+01:00||;True|2026-02-26T08:01:54.5490566+01:00||;True|2026-02-26T07:56:47.9173498+01:00||;True|2026-02-26T05:50:34.4180646+01:00||;True|2026-02-25T16:00:31.8051644+01:00||;True|2026-02-25T15:40:22.6200444+01:00||;True|2026-02-25T15:32:39.6209326+01:00||;True|2026-02-25T15:03:49.5202958+01:00||;True|2026-02-25T14:49:40.4560899+01:00||;True|2026-02-25T10:41:35.9042956+01:00||;True|2026-02-25T10:33:42.2485129+01:00||;True|2026-02-25T10:05:23.9864404+01:00||;True|2026-02-24T20:45:52.7533529+01:00||;True|2026-02-24T17:49:48.6739610+01:00||;True|2026-02-24T14:30:47.0663499+01:00||;True|2026-02-24T09:28:30.5328425+01:00||;True|2026-02-24T08:40:15.6054714+01:00||;True|2026-02-24T07:59:34.6469067+01:00||;True|2026-02-24T07:30:03.4506392+01:00||;True|2026-02-23T08:26:05.4681353+01:00||;True|2026-02-22T10:44:29.6270572+01:00||;True|2026-02-22T10:41:26.3016875+01:00||;True|2026-02-22T10:30:20.0395713+01:00||;True|2026-02-22T10:06:09.3728289+01:00||;True|2026-02-20T11:11:41.2906293+01:00||;True|2026-02-20T10:46:35.4015642+01:00||;True|2026-02-20T09:45:14.8833885+01:00||;True|2026-02-20T07:32:39.1940489+01:00||;True|2026-02-18T09:12:43.1434580+01:00||;True|2026-02-17T15:15:14.8805757+01:00||;True|2026-02-17T11:09:40.4786451+01:00||;True|2026-02-17T10:45:37.3358353+01:00||;True|2026-02-17T10:33:30.6184470+01:00||;True|2026-02-16T18:55:30.1424518+01:00||;True|2026-02-16T18:01:46.0478978+01:00||;True|2026-02-16T14:51:53.3273467+01:00||;True|2026-02-16T14:12:09.6130777+01:00||;True|2026-02-16T11:21:18.5769808+01:00||;True|2026-02-16T10:08:08.4277947+01:00||;True|2026-02-16T09:52:01.8749049+01:00||;True|2026-02-16T08:13:22.5356518+01:00||;True|2026-02-13T12:36:18.0536988+01:00||;True|2026-02-13T07:29:34.9460520+01:00||;True|2026-02-13T07:27:07.4597689+01:00||;True|2026-02-13T07:23:53.8686289+01:00||;True|2026-02-13T07:21:55.2559788+01:00||;True|2026-02-13T07:19:52.5556550+01:00||;True|2026-02-13T07:18:16.9005327+01:00||;False|2026-02-13T07:17:55.2943268+01:00||;True|2026-02-13T07:16:44.2373881+01:00||;True|2026-02-13T07:14:10.2117483+01:00||;True|2026-02-13T07:06:07.9920856+01:00||;True|2026-02-13T06:48:45.3887087+01:00||;True|2026-02-12T09:21:36.9475377+01:00||;True|2026-02-11T09:09:26.3046534+01:00||;True|2026-02-09T12:16:03.1919757+01:00||;True|2026-02-09T10:52:16.6031577+01:00||;True|2026-02-09T10:43:50.3235884+01:00||;True|2026-02-09T10:32:56.5607905+01:00||;True|2026-02-09T09:28:25.4932552+01:00||;True|2026-02-09T09:11:35.2661821+01:00||;True|2026-02-09T09:09:05.8813514+01:00||;True|2026-02-09T08:54:25.9191904+01:00||;True|2026-02-09T08:41:16.2561697+01:00||;True|2026-02-09T08:22:16.8766070+01:00||;True|2026-02-09T08:09:42.8971751+01:00||;True|2026-02-08T11:04:49.3984275+01:00||;True|2026-02-08T11:00:30.1676134+01:00||;True|2026-02-08T10:02:58.9814683+01:00||;True|2026-02-08T09:53:57.1672910+01:00||;True|2026-02-08T09:50:45.8178289+01:00||;True|2026-02-08T09:47:06.6864472+01:00||;True|2026-02-08T09:44:42.9541012+01:00||;True|2026-02-08T09:44:34.5282303+01:00||;True|2026-02-08T09:42:53.1642218+01:00||;True|2026-02-07T20:47:10.6440687+01:00||;True|2026-02-07T20:45:09.1431081+01:00||;True|2026-02-07T20:43:29.6280085+01:00||;True|2026-02-07T20:42:07.5303009+01:00||;True|2026-02-07T20:40:45.5900631+01:00||;True|2026-02-07T20:39:21.4280903+01:00||;True|2026-02-07T20:37:35.6740413+01:00||;True|2026-02-07T20:35:28.7713095+01:00||;True|2026-02-07T17:44:22.3698834+01:00||;True|2026-02-07T17:41:18.9012786+01:00||;True|2026-02-07T17:38:04.4942892+01:00||;</History>
<LastFailureDetails />
</PropertyGroup>
<ItemGroup>
<File Include="App_Data/TableConfig.json">
<publishTime>02/01/2026 19:14:03</publishTime>
<publishTime>03/07/2026 13:31:30</publishTime>
</File>
<File Include="Areas/HelpPage/HelpPage.css">
<publishTime>03/06/2024 09:20:46</publishTime>
<publishTime>06/03/2024 09:20:46</publishTime>
</File>
<File Include="Areas/HelpPage/Views/Help/Api.cshtml">
<publishTime>07/19/2024 12:24:15</publishTime>
@@ -52,7 +52,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>07/19/2024 12:24:15</publishTime>
</File>
<File Include="Areas/HelpPage/Views/Help/DisplayTemplates/Samples.cshtml">
<publishTime>03/06/2024 09:20:41</publishTime>
<publishTime>06/03/2024 09:20:41</publishTime>
</File>
<File Include="Areas/HelpPage/Views/Help/DisplayTemplates/SimpleTypeModelDescription.cshtml">
<publishTime>07/19/2024 12:24:15</publishTime>
@@ -67,49 +67,49 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>07/19/2024 12:24:15</publishTime>
</File>
<File Include="Areas/HelpPage/Views/Shared/_Layout.cshtml">
<publishTime>03/06/2024 09:20:40</publishTime>
<publishTime>06/03/2024 09:20:40</publishTime>
</File>
<File Include="Areas/HelpPage/Views/Web.config">
<publishTime>03/06/2024 09:20:40</publishTime>
<publishTime>06/03/2024 09:20:40</publishTime>
</File>
<File Include="Areas/HelpPage/Views/_ViewStart.cshtml">
<publishTime>03/06/2024 09:20:40</publishTime>
<publishTime>06/03/2024 09:20:40</publishTime>
</File>
<File Include="bin/Antlr3.Runtime.dll">
<publishTime>10/09/2013 17:29:20</publishTime>
<publishTime>09/10/2013 17:29:20</publishTime>
</File>
<File Include="bin/Antlr3.Runtime.pdb">
<publishTime>10/09/2013 17:29:20</publishTime>
<publishTime>09/10/2013 17:29:20</publishTime>
</File>
<File Include="bin/arm64/libSkiaSharp.dll">
<publishTime>09/04/2024 19:25:14</publishTime>
<publishTime>04/09/2024 19:25:14</publishTime>
</File>
<File Include="bin/BarcodeLib.dll">
<publishTime>02/03/2026 10:48:32</publishTime>
<publishTime>03/03/2026 08:30:20</publishTime>
</File>
<File Include="bin/BarcodeLib.pdb">
<publishTime>02/03/2026 10:48:32</publishTime>
<publishTime>03/03/2026 08:30:20</publishTime>
</File>
<File Include="bin/CSVNET.dll">
<publishTime>02/03/2026 12:58:54</publishTime>
<publishTime>03/02/2026 12:58:54</publishTime>
</File>
<File Include="bin/CSVNET.pdb">
<publishTime>02/03/2026 12:58:54</publishTime>
<publishTime>03/02/2026 12:58:54</publishTime>
</File>
<File Include="bin/Database.dll">
<publishTime>03/02/2026 15:19:54</publishTime>
<publishTime>02/03/2026 15:19:54</publishTime>
</File>
<File Include="bin/Database.dll.config">
<publishTime>09/18/2025 08:15:15</publishTime>
</File>
<File Include="bin/Database.pdb">
<publishTime>03/02/2026 15:19:54</publishTime>
<publishTime>02/03/2026 15:19:54</publishTime>
</File>
<File Include="bin/DataMatrix.net.dll">
<publishTime>02/03/2026 12:58:54</publishTime>
<publishTime>03/02/2026 12:58:54</publishTime>
</File>
<File Include="bin/DataMatrix.net.pdb">
<publishTime>02/03/2026 12:58:54</publishTime>
<publishTime>03/02/2026 12:58:54</publishTime>
</File>
<File Include="bin/de/System.Net.Http.Formatting.resources.dll">
<publishTime>10/20/2023 22:35:02</publishTime>
@@ -127,7 +127,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>10/20/2023 22:35:02</publishTime>
</File>
<File Include="bin/de/System.Web.Optimization.resources.dll">
<publishTime>11/02/2014 16:28:40</publishTime>
<publishTime>02/11/2014 16:28:40</publishTime>
</File>
<File Include="bin/de/System.Web.Razor.resources.dll">
<publishTime>10/20/2023 22:35:02</publishTime>
@@ -142,22 +142,22 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>10/20/2023 22:35:04</publishTime>
</File>
<File Include="bin/DOCGEN.dll">
<publishTime>03/03/2026 07:42:56</publishTime>
<publishTime>03/08/2026 08:13:34</publishTime>
</File>
<File Include="bin/DOCGEN.dll.config">
<publishTime>09/18/2025 10:22:52</publishTime>
</File>
<File Include="bin/DOCGEN.pdb">
<publishTime>03/03/2026 07:42:56</publishTime>
<publishTime>03/08/2026 08:13:34</publishTime>
</File>
<File Include="bin/FastReport.Bars.dll">
<publishTime>11/27/2023 09:49:58</publishTime>
</File>
<File Include="bin/FastReport.Compat.dll">
<publishTime>07/09/2023 11:54:46</publishTime>
<publishTime>09/07/2023 11:54:46</publishTime>
</File>
<File Include="bin/FastReport.DataVisualization.dll">
<publishTime>07/09/2023 12:19:34</publishTime>
<publishTime>09/07/2023 12:19:34</publishTime>
</File>
<File Include="bin/FastReport.dll">
<publishTime>11/27/2023 09:50:34</publishTime>
@@ -166,40 +166,40 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>11/27/2023 09:50:04</publishTime>
</File>
<File Include="bin/Helper.dll">
<publishTime>03/02/2026 15:19:48</publishTime>
<publishTime>02/03/2026 15:19:48</publishTime>
</File>
<File Include="bin/Helper.pdb">
<publishTime>03/02/2026 15:19:48</publishTime>
<publishTime>02/03/2026 15:19:48</publishTime>
</File>
<File Include="bin/libSkiaSharp.dylib">
<publishTime>09/04/2024 18:58:02</publishTime>
<publishTime>04/09/2024 18:58:02</publishTime>
</File>
<File Include="bin/Logging.dll">
<publishTime>03/02/2026 15:19:48</publishTime>
<publishTime>02/03/2026 15:19:48</publishTime>
</File>
<File Include="bin/Logging.dll.config">
<publishTime>09/17/2025 15:09:13</publishTime>
</File>
<File Include="bin/Logging.pdb">
<publishTime>03/02/2026 15:19:48</publishTime>
<publishTime>02/03/2026 15:19:48</publishTime>
</File>
<File Include="bin/Microsoft.AspNetCore.Http.Abstractions.dll">
<publishTime>12/11/2018 18:29:00</publishTime>
<publishTime>11/12/2018 18:29:00</publishTime>
</File>
<File Include="bin/Microsoft.AspNetCore.Http.dll">
<publishTime>01/25/2019 00:18:54</publishTime>
</File>
<File Include="bin/Microsoft.AspNetCore.Http.Features.dll">
<publishTime>12/11/2018 18:28:58</publishTime>
<publishTime>11/12/2018 18:28:58</publishTime>
</File>
<File Include="bin/Microsoft.AspNetCore.WebUtilities.dll">
<publishTime>12/11/2018 18:29:00</publishTime>
<publishTime>11/12/2018 18:29:00</publishTime>
</File>
<File Include="bin/Microsoft.Bcl.AsyncInterfaces.dll">
<publishTime>02/12/2025 00:12:14</publishTime>
<publishTime>12/02/2025 00:12:14</publishTime>
</File>
<File Include="bin/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll">
<publishTime>05/03/2023 23:41:40</publishTime>
<publishTime>03/05/2023 23:41:40</publishTime>
</File>
<File Include="bin/Microsoft.Extensions.Configuration.Abstractions.dll">
<publishTime>10/31/2023 16:04:06</publishTime>
@@ -223,16 +223,16 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>10/31/2023 16:00:32</publishTime>
</File>
<File Include="bin/Microsoft.Net.Http.Headers.dll">
<publishTime>12/11/2018 18:28:58</publishTime>
<publishTime>11/12/2018 18:28:58</publishTime>
</File>
<File Include="bin/Microsoft.Web.Infrastructure.dll">
<publishTime>11/04/2022 19:09:46</publishTime>
<publishTime>04/11/2022 19:09:46</publishTime>
</File>
<File Include="bin/Model.dll">
<publishTime>03/02/2026 15:19:48</publishTime>
<publishTime>02/03/2026 15:19:48</publishTime>
</File>
<File Include="bin/Model.pdb">
<publishTime>03/02/2026 15:19:48</publishTime>
<publishTime>02/03/2026 15:19:48</publishTime>
</File>
<File Include="bin/MW6.SDK.dll">
<publishTime>08/19/2014 21:33:57</publishTime>
@@ -244,37 +244,37 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>11/28/2018 00:07:54</publishTime>
</File>
<File Include="bin/Newtonsoft.Json.dll">
<publishTime>08/03/2023 06:09:56</publishTime>
<publishTime>03/08/2023 06:09:56</publishTime>
</File>
<File Include="bin/NLog.Database.dll">
<publishTime>10/08/2025 20:21:44</publishTime>
<publishTime>08/10/2025 20:21:44</publishTime>
</File>
<File Include="bin/NLog.dll">
<publishTime>06/21/2025 15:10:40</publishTime>
</File>
<File Include="bin/OfficePrinter.dll">
<publishTime>01/01/0001 00:00:00</publishTime>
<publishTime>03/04/2026 16:33:51</publishTime>
</File>
<File Include="bin/OfficePrinter.pdb">
<publishTime>01/01/0001 00:00:00</publishTime>
<publishTime>03/04/2026 16:33:51</publishTime>
</File>
<File Include="bin/OfficeToPDFConverter.dll">
<publishTime>02/03/2026 12:58:53</publishTime>
<publishTime>03/02/2026 12:58:53</publishTime>
</File>
<File Include="bin/OfficeToPDFConverter.pdb">
<publishTime>02/03/2026 12:58:53</publishTime>
<publishTime>03/02/2026 12:58:53</publishTime>
</File>
<File Include="bin/OnDocOffice.dll">
<publishTime>03/03/2026 07:42:56</publishTime>
<publishTime>03/08/2026 08:13:33</publishTime>
</File>
<File Include="bin/OnDocOffice.pdb">
<publishTime>03/03/2026 07:42:56</publishTime>
<publishTime>03/08/2026 08:13:33</publishTime>
</File>
<File Include="bin/OnDoc_NetFramework.dll">
<publishTime>03/03/2026 07:42:57</publishTime>
<publishTime>03/08/2026 08:13:34</publishTime>
</File>
<File Include="bin/OnDoc_NetFramework.pdb">
<publishTime>03/03/2026 07:42:57</publishTime>
<publishTime>03/08/2026 08:13:34</publishTime>
</File>
<File Include="bin/Owin.dll">
<publishTime>11/13/2012 13:19:34</publishTime>
@@ -322,10 +322,10 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>02/15/2022 06:21:10</publishTime>
</File>
<File Include="bin/roslyn/Microsoft.DiaSymReader.Native.amd64.dll">
<publishTime>05/10/2021 02:47:54</publishTime>
<publishTime>10/05/2021 02:47:54</publishTime>
</File>
<File Include="bin/roslyn/Microsoft.DiaSymReader.Native.x86.dll">
<publishTime>05/10/2021 02:49:46</publishTime>
<publishTime>10/05/2021 02:49:46</publishTime>
</File>
<File Include="bin/roslyn/Microsoft.Managed.Core.CurrentVersions.targets">
<publishTime>02/15/2022 06:33:08</publishTime>
@@ -376,34 +376,34 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>02/15/2022 06:38:42</publishTime>
</File>
<File Include="bin/Swashbuckle.Core.dll">
<publishTime>08/07/2017 03:30:56</publishTime>
<publishTime>07/08/2017 03:30:56</publishTime>
</File>
<File Include="bin/Syncfusion.Compression.Base.dll">
<publishTime>08/01/2025 12:18:28</publishTime>
<publishTime>01/08/2025 12:18:28</publishTime>
</File>
<File Include="bin/Syncfusion.DocIO.Base.dll">
<publishTime>08/01/2025 12:21:18</publishTime>
<publishTime>01/08/2025 12:21:18</publishTime>
</File>
<File Include="bin/Syncfusion.DocToPDFConverter.Base.dll">
<publishTime>08/01/2025 12:24:08</publishTime>
<publishTime>01/08/2025 12:24:08</publishTime>
</File>
<File Include="bin/Syncfusion.ExcelToPDFConverter.Base.dll">
<publishTime>08/01/2025 12:29:16</publishTime>
<publishTime>01/08/2025 12:29:16</publishTime>
</File>
<File Include="bin/Syncfusion.Licensing.dll">
<publishTime>08/01/2025 12:14:22</publishTime>
<publishTime>01/08/2025 12:14:22</publishTime>
</File>
<File Include="bin/Syncfusion.OfficeChart.Base.dll">
<publishTime>08/01/2025 12:19:40</publishTime>
<publishTime>01/08/2025 12:19:40</publishTime>
</File>
<File Include="bin/Syncfusion.Pdf.Base.dll">
<publishTime>08/01/2025 12:23:02</publishTime>
<publishTime>01/08/2025 12:23:02</publishTime>
</File>
<File Include="bin/Syncfusion.Presentation.Base.dll">
<publishTime>08/01/2025 12:28:16</publishTime>
<publishTime>01/08/2025 12:28:16</publishTime>
</File>
<File Include="bin/Syncfusion.XlsIO.Base.dll">
<publishTime>08/01/2025 12:25:24</publishTime>
<publishTime>01/08/2025 12:25:24</publishTime>
</File>
<File Include="bin/System.Buffers.dll">
<publishTime>02/19/2020 11:05:18</publishTime>
@@ -412,10 +412,10 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>05/15/2018 15:29:36</publishTime>
</File>
<File Include="bin/System.IO.Pipelines.dll">
<publishTime>02/12/2025 00:12:24</publishTime>
<publishTime>12/02/2025 00:12:24</publishTime>
</File>
<File Include="bin/System.Memory.dll">
<publishTime>08/05/2022 05:31:02</publishTime>
<publishTime>05/08/2022 05:31:02</publishTime>
</File>
<File Include="bin/System.Net.Http.Formatting.dll">
<publishTime>10/20/2023 22:33:52</publishTime>
@@ -427,10 +427,10 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>10/23/2021 01:40:18</publishTime>
</File>
<File Include="bin/System.Text.Encodings.Web.dll">
<publishTime>02/12/2025 00:18:34</publishTime>
<publishTime>12/02/2025 00:18:34</publishTime>
</File>
<File Include="bin/System.Text.Json.dll">
<publishTime>02/12/2025 00:18:50</publishTime>
<publishTime>12/02/2025 00:18:50</publishTime>
</File>
<File Include="bin/System.Threading.Tasks.Extensions.dll">
<publishTime>02/19/2020 11:05:18</publishTime>
@@ -439,7 +439,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>05/15/2018 15:29:52</publishTime>
</File>
<File Include="bin/System.Web.Cors.dll">
<publishTime>01/10/2013 22:54:22</publishTime>
<publishTime>10/01/2013 22:54:22</publishTime>
</File>
<File Include="bin/System.Web.Helpers.dll">
<publishTime>10/20/2023 22:33:58</publishTime>
@@ -457,7 +457,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>01/01/0001 00:00:00</publishTime>
</File>
<File Include="bin/System.Web.Optimization.dll">
<publishTime>11/02/2014 15:26:04</publishTime>
<publishTime>02/11/2014 15:26:04</publishTime>
</File>
<File Include="bin/System.Web.Razor.dll">
<publishTime>10/20/2023 22:33:48</publishTime>
@@ -472,10 +472,10 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>10/20/2023 22:33:58</publishTime>
</File>
<File Include="bin/vbBarcodes.dll">
<publishTime>02/03/2026 12:58:54</publishTime>
<publishTime>03/04/2026 16:33:51</publishTime>
</File>
<File Include="bin/vbBarcodes.pdb">
<publishTime>02/03/2026 12:58:54</publishTime>
<publishTime>03/04/2026 16:33:51</publishTime>
</File>
<File Include="bin/VBFileManagement.dll">
<publishTime>02/28/2026 10:14:01</publishTime>
@@ -484,127 +484,130 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>02/28/2026 10:14:01</publishTime>
</File>
<File Include="bin/VBOffice.dll">
<publishTime>02/03/2026 12:58:53</publishTime>
<publishTime>03/04/2026 16:33:51</publishTime>
</File>
<File Include="bin/VBOffice.pdb">
<publishTime>02/03/2026 12:58:53</publishTime>
<publishTime>03/04/2026 16:33:51</publishTime>
</File>
<File Include="bin/Versandstrasse.dll">
<publishTime>02/03/2026 12:58:53</publishTime>
<publishTime>03/08/2026 08:12:43</publishTime>
</File>
<File Include="bin/Versandstrasse.pdb">
<publishTime>02/03/2026 12:58:53</publishTime>
<publishTime>03/08/2026 08:12:43</publishTime>
</File>
<File Include="bin/WebActivatorEx.dll">
<publishTime>05/10/2016 15:11:52</publishTime>
<publishTime>10/05/2016 15:11:52</publishTime>
</File>
<File Include="bin/WebGrease.dll">
<publishTime>01/23/2014 13:57:34</publishTime>
</File>
<File Include="bin/x64/libSkiaSharp.dll">
<publishTime>09/04/2024 19:24:38</publishTime>
<publishTime>04/09/2024 19:24:38</publishTime>
</File>
<File Include="bin/x86/libSkiaSharp.dll">
<publishTime>09/04/2024 19:24:38</publishTime>
<publishTime>04/09/2024 19:24:38</publishTime>
</File>
<File Include="CLM.aspx">
<publishTime>03/07/2026 19:26:48</publishTime>
</File>
<File Include="Content/bootstrap-grid.css">
<publishTime>03/06/2024 09:16:17</publishTime>
<publishTime>06/03/2024 09:16:17</publishTime>
</File>
<File Include="Content/bootstrap-grid.css.map">
<publishTime>03/06/2024 09:16:16</publishTime>
<publishTime>06/03/2024 09:16:16</publishTime>
</File>
<File Include="Content/bootstrap-grid.min.css">
<publishTime>03/06/2024 09:16:16</publishTime>
<publishTime>06/03/2024 09:16:16</publishTime>
</File>
<File Include="Content/bootstrap-grid.min.css.map">
<publishTime>03/06/2024 09:16:16</publishTime>
<publishTime>06/03/2024 09:16:16</publishTime>
</File>
<File Include="Content/bootstrap-grid.rtl.css">
<publishTime>03/06/2024 09:16:16</publishTime>
<publishTime>06/03/2024 09:16:16</publishTime>
</File>
<File Include="Content/bootstrap-grid.rtl.css.map">
<publishTime>03/06/2024 09:16:16</publishTime>
<publishTime>06/03/2024 09:16:16</publishTime>
</File>
<File Include="Content/bootstrap-grid.rtl.min.css">
<publishTime>03/06/2024 09:16:16</publishTime>
<publishTime>06/03/2024 09:16:16</publishTime>
</File>
<File Include="Content/bootstrap-grid.rtl.min.css.map">
<publishTime>03/06/2024 09:16:16</publishTime>
<publishTime>06/03/2024 09:16:16</publishTime>
</File>
<File Include="Content/bootstrap-reboot.css">
<publishTime>03/06/2024 09:16:16</publishTime>
<publishTime>06/03/2024 09:16:16</publishTime>
</File>
<File Include="Content/bootstrap-reboot.css.map">
<publishTime>03/06/2024 09:16:16</publishTime>
<publishTime>06/03/2024 09:16:16</publishTime>
</File>
<File Include="Content/bootstrap-reboot.min.css">
<publishTime>03/06/2024 09:16:16</publishTime>
<publishTime>06/03/2024 09:16:16</publishTime>
</File>
<File Include="Content/bootstrap-reboot.min.css.map">
<publishTime>03/06/2024 09:16:16</publishTime>
<publishTime>06/03/2024 09:16:16</publishTime>
</File>
<File Include="Content/bootstrap-reboot.rtl.css">
<publishTime>03/06/2024 09:16:16</publishTime>
<publishTime>06/03/2024 09:16:16</publishTime>
</File>
<File Include="Content/bootstrap-reboot.rtl.css.map">
<publishTime>03/06/2024 09:16:16</publishTime>
<publishTime>06/03/2024 09:16:16</publishTime>
</File>
<File Include="Content/bootstrap-reboot.rtl.min.css">
<publishTime>03/06/2024 09:16:16</publishTime>
<publishTime>06/03/2024 09:16:16</publishTime>
</File>
<File Include="Content/bootstrap-reboot.rtl.min.css.map">
<publishTime>03/06/2024 09:16:16</publishTime>
<publishTime>06/03/2024 09:16:16</publishTime>
</File>
<File Include="Content/bootstrap-utilities.css">
<publishTime>03/06/2024 09:16:15</publishTime>
<publishTime>06/03/2024 09:16:15</publishTime>
</File>
<File Include="Content/bootstrap-utilities.css.map">
<publishTime>03/06/2024 09:16:15</publishTime>
<publishTime>06/03/2024 09:16:15</publishTime>
</File>
<File Include="Content/bootstrap-utilities.min.css">
<publishTime>03/06/2024 09:16:15</publishTime>
<publishTime>06/03/2024 09:16:15</publishTime>
</File>
<File Include="Content/bootstrap-utilities.min.css.map">
<publishTime>03/06/2024 09:16:15</publishTime>
<publishTime>06/03/2024 09:16:15</publishTime>
</File>
<File Include="Content/bootstrap-utilities.rtl.css">
<publishTime>03/06/2024 09:16:15</publishTime>
<publishTime>06/03/2024 09:16:15</publishTime>
</File>
<File Include="Content/bootstrap-utilities.rtl.css.map">
<publishTime>03/06/2024 09:16:15</publishTime>
<publishTime>06/03/2024 09:16:15</publishTime>
</File>
<File Include="Content/bootstrap-utilities.rtl.min.css">
<publishTime>03/06/2024 09:16:15</publishTime>
<publishTime>06/03/2024 09:16:15</publishTime>
</File>
<File Include="Content/bootstrap-utilities.rtl.min.css.map">
<publishTime>03/06/2024 09:16:15</publishTime>
<publishTime>06/03/2024 09:16:15</publishTime>
</File>
<File Include="Content/bootstrap.css">
<publishTime>03/06/2024 09:16:15</publishTime>
<publishTime>06/03/2024 09:16:15</publishTime>
</File>
<File Include="Content/bootstrap.css.map">
<publishTime>03/06/2024 09:16:15</publishTime>
<publishTime>06/03/2024 09:16:15</publishTime>
</File>
<File Include="Content/bootstrap.min.css">
<publishTime>03/06/2024 09:16:15</publishTime>
<publishTime>06/03/2024 09:16:15</publishTime>
</File>
<File Include="Content/bootstrap.min.css.map">
<publishTime>03/06/2024 09:16:15</publishTime>
<publishTime>06/03/2024 09:16:15</publishTime>
</File>
<File Include="Content/bootstrap.rtl.css">
<publishTime>03/06/2024 09:16:15</publishTime>
<publishTime>06/03/2024 09:16:15</publishTime>
</File>
<File Include="Content/bootstrap.rtl.css.map">
<publishTime>03/06/2024 09:16:15</publishTime>
<publishTime>06/03/2024 09:16:15</publishTime>
</File>
<File Include="Content/bootstrap.rtl.min.css">
<publishTime>03/06/2024 09:16:15</publishTime>
<publishTime>06/03/2024 09:16:15</publishTime>
</File>
<File Include="Content/bootstrap.rtl.min.css.map">
<publishTime>03/06/2024 09:16:14</publishTime>
<publishTime>06/03/2024 09:16:14</publishTime>
</File>
<File Include="Content/Site.css">
<publishTime>03/06/2024 08:11:55</publishTime>
<publishTime>06/03/2024 08:11:55</publishTime>
</File>
<File Include="DocTester.aspx">
<publishTime>02/13/2026 07:13:12</publishTime>
@@ -613,79 +616,82 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>02/08/2026 09:59:34</publishTime>
</File>
<File Include="favicon.ico">
<publishTime>03/06/2024 08:11:55</publishTime>
<publishTime>06/03/2024 08:11:55</publishTime>
</File>
<File Include="Global.asax">
<publishTime>07/19/2024 12:25:43</publishTime>
</File>
<File Include="JSONViewer.aspx">
<publishTime>03/07/2026 19:26:47</publishTime>
</File>
<File Include="Scripts/bootstrap.bundle.js">
<publishTime>03/06/2024 09:16:14</publishTime>
<publishTime>06/03/2024 09:16:14</publishTime>
</File>
<File Include="Scripts/bootstrap.bundle.js.map">
<publishTime>03/06/2024 09:16:14</publishTime>
<publishTime>06/03/2024 09:16:14</publishTime>
</File>
<File Include="Scripts/bootstrap.bundle.min.js">
<publishTime>03/06/2024 09:16:14</publishTime>
<publishTime>06/03/2024 09:16:14</publishTime>
</File>
<File Include="Scripts/bootstrap.bundle.min.js.map">
<publishTime>03/06/2024 09:16:14</publishTime>
<publishTime>06/03/2024 09:16:14</publishTime>
</File>
<File Include="Scripts/bootstrap.esm.js">
<publishTime>03/06/2024 09:16:14</publishTime>
<publishTime>06/03/2024 09:16:14</publishTime>
</File>
<File Include="Scripts/bootstrap.esm.js.map">
<publishTime>03/06/2024 09:16:14</publishTime>
<publishTime>06/03/2024 09:16:14</publishTime>
</File>
<File Include="Scripts/bootstrap.esm.min.js">
<publishTime>03/06/2024 09:16:14</publishTime>
<publishTime>06/03/2024 09:16:14</publishTime>
</File>
<File Include="Scripts/bootstrap.esm.min.js.map">
<publishTime>03/06/2024 09:16:14</publishTime>
<publishTime>06/03/2024 09:16:14</publishTime>
</File>
<File Include="Scripts/bootstrap.js">
<publishTime>03/06/2024 09:16:14</publishTime>
<publishTime>06/03/2024 09:16:14</publishTime>
</File>
<File Include="Scripts/bootstrap.js.map">
<publishTime>03/06/2024 09:16:14</publishTime>
<publishTime>06/03/2024 09:16:14</publishTime>
</File>
<File Include="Scripts/bootstrap.min.js">
<publishTime>03/06/2024 09:16:14</publishTime>
<publishTime>06/03/2024 09:16:14</publishTime>
</File>
<File Include="Scripts/bootstrap.min.js.map">
<publishTime>03/06/2024 09:16:13</publishTime>
<publishTime>06/03/2024 09:16:13</publishTime>
</File>
<File Include="Scripts/jquery-3.7.1.js">
<publishTime>03/06/2024 09:16:17</publishTime>
<publishTime>06/03/2024 09:16:17</publishTime>
</File>
<File Include="Scripts/jquery-3.7.1.min.js">
<publishTime>03/06/2024 09:16:17</publishTime>
<publishTime>06/03/2024 09:16:17</publishTime>
</File>
<File Include="Scripts/jquery-3.7.1.min.map">
<publishTime>03/06/2024 09:16:17</publishTime>
<publishTime>06/03/2024 09:16:17</publishTime>
</File>
<File Include="Scripts/jquery-3.7.1.slim.js">
<publishTime>03/06/2024 09:16:17</publishTime>
<publishTime>06/03/2024 09:16:17</publishTime>
</File>
<File Include="Scripts/jquery-3.7.1.slim.min.js">
<publishTime>03/06/2024 09:16:17</publishTime>
<publishTime>06/03/2024 09:16:17</publishTime>
</File>
<File Include="Scripts/jquery-3.7.1.slim.min.map">
<publishTime>03/06/2024 09:16:17</publishTime>
<publishTime>06/03/2024 09:16:17</publishTime>
</File>
<File Include="Scripts/modernizr-2.8.3.js">
<publishTime>03/06/2024 08:12:04</publishTime>
<publishTime>06/03/2024 08:12:04</publishTime>
</File>
<File Include="SelectTable.aspx">
<publishTime>02/01/2026 13:52:15</publishTime>
</File>
<File Include="Views/Home/APIGenerator.cshtml">
<publishTime>01/10/2024 20:21:44</publishTime>
<publishTime>10/01/2024 20:21:44</publishTime>
</File>
<File Include="Views/Home/Index.cshtml">
<publishTime>04/14/2025 18:12:39</publishTime>
<publishTime>03/07/2026 12:46:11</publishTime>
</File>
<File Include="Views/Shared/Error.cshtml">
<publishTime>03/06/2024 08:11:55</publishTime>
<publishTime>06/03/2024 08:11:55</publishTime>
</File>
<File Include="Views/Shared/_Layout.cshtml">
<publishTime>04/14/2025 18:11:03</publishTime>
@@ -694,10 +700,10 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>07/19/2024 12:25:43</publishTime>
</File>
<File Include="Views/_ViewStart.cshtml">
<publishTime>03/06/2024 08:11:55</publishTime>
<publishTime>06/03/2024 08:11:55</publishTime>
</File>
<File Include="Web.config">
<publishTime>03/02/2026 15:22:03</publishTime>
<publishTime>03/07/2026 16:04:26</publishTime>
</File>
</ItemGroup>
</Project>

View File

@@ -1,143 +0,0 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SelectTable.aspx.cs" Inherits="WebApp.SelectTable" %>
<!DOCTYPE html>
<html>
<head runat="server">
<%--<title>Daten & JSON Editor</title>--%>
<script src="/Scripts/ace/ace.js"></script>
<script src="/Scripts/ace/mode-json.min.js"></script>
<script src="/Scripts/ace/theme-tomorrow.min.js"></script>
<script src="/Scripts/ace/worker-json.js"></script>
<script src="/Scripts/jquery.min.js"></script>
<script src="/Scripts/ace/ext-searchbox.js"></script>
<style>
html, body { margin:0; padding:0; height:100%; font-family:Arial; background:#f4f6f8; }
.page-header {
background-color: #2563eb;
color: #fff;
padding: 15px 30px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.page-header h1 {
margin:0;
font-size:1.8rem;
}
.page-header p {
margin:4px 0 0 0;
font-size:0.95rem;
color:#dbeafe;
}
.layout { display:flex; height:calc(100% - 70px); } /* 70px für header */
.left {
width:45%;
padding:20px;
background:#fff;
border-right:1px solid #ddd;
overflow:auto;
}
.right {
width:55%;
padding:0;
height:100%;
display:flex;
flex-direction: column;
}
#editor {
flex:1;
width:100%;
}
select { width:100%; padding:8px; margin-bottom:12px; }
table { width:100%; border-collapse:collapse; font-size:14px; }
th, td { padding:8px; border-bottom:1px solid #e5e7eb; }
tr:hover { background:#f9fafb; }
.pager a, .pager span { padding:5px 9px; border:1px solid #ddd; border-radius:5px; margin-left:4px; text-decoration:none; font-size:13px; }
.pager span { background:#2563eb; color:#fff; border-color:#2563eb; }
a.open { color:#2563eb; cursor:pointer; text-decoration:none; }
a.open:hover { text-decoration:underline; }
</style>
</head>
<body>
<!-- TITEL -->
<div class="page-header">
<h1>OnDoc-Json-Viewer</h1>
<p>Tabellen auswählen, Datensätze ansehen und JSON anzeigen</p>
</div>
<!-- LAYOUT -->
<div class="layout">
<form runat="server" class="left">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />
<h2>Tabellen & Datensätze</h2>
<asp:DropDownList
ID="ddlTables"
runat="server"
AutoPostBack="true"
OnSelectedIndexChanged="ddlTables_SelectedIndexChanged" />
<asp:GridView
ID="gvData"
runat="server"
AutoGenerateColumns="true"
AllowPaging="true"
PageSize="20"
PagerStyle-CssClass="pager"
OnPageIndexChanging="gvData_PageIndexChanging"
OnRowCreated="gvData_RowCreated"
OnRowDataBound="gvData_RowDataBound" />
</form>
<!-- ACE EDITOR außerhalb des Form-Tags -->
<div class="right">
<div id="editor"></div>
</div>
</div>
<script>
const editor = ace.edit("editor");
editor.setTheme("ace/theme/tomorrow");
editor.session.setMode("ace/mode/json");
editor.setShowPrintMargin(false);
editor.session.setTabSize(2);
editor.session.setUseSoftTabs(true);
//let editor;
//$(function () {
// editor = ace.edit("editor");
// editor.setTheme("ace/theme/tomorrow");
// editor.session.setMode("ace/mode/json");
// editor.setShowPrintMargin(false);
// editor.session.setTabSize(2);
// editor.session.setUseSoftTabs(true);
// editor.commands.addCommand({
// name: "find",
// bindKey: { win: "Ctrl-F", mac: "Command-F" },
// exec: function (ed) {
// ace.require("ace/ext/searchbox").Search(ed);
// }
// });
//});
function loadJson(tableKey, id) {
editor.setValue("// lade JSON ...", -1);
PageMethods.GetJson(
tableKey,
id,
function (result) {
editor.setValue(result, -1);
},
function (err) {
editor.setValue(JSON.stringify({ error: err.get_message() }, null, 2), -1);
}
);
}
</script>
</body>
</html>

View File

@@ -1,156 +0,0 @@
using System;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web.Services;
using System.Web.UI.WebControls;
using System.Web;
using Newtonsoft.Json;
using System.Web.UI;
using SecuringWebApiUsingApiKey.Middleware;
using System.Configuration;
using Model;
namespace WebApp
{
public partial class SelectTable : System.Web.UI.Page
{
private string ConnectionString = StringCipher.Decrypt(ConfigurationManager.ConnectionStrings["DocTesterconnectionstring"].ConnectionString, "i%!k!7pab%bNLdA5hE4pkR4XaB%E^jB3d9tHuQ4pbF&BZjF7SB#WBWit5#HrbJiLrLVm");
private TableConfig CurrentTable =>
TableConfigProvider.LoadConfig().Tables.FirstOrDefault(t => t.Key == ddlTables.SelectedValue);
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
BindTables();
}
private void BindTables()
{
var config = TableConfigProvider.LoadConfig();
ddlTables.DataSource = config.Tables;
ddlTables.DataTextField = "DisplayName";
ddlTables.DataValueField = "Key";
ddlTables.DataBind();
ddlTables.Items.Insert(0, "-- bitte wählen --");
}
protected void ddlTables_SelectedIndexChanged(object sender, EventArgs e)
{
gvData.PageIndex = 0;
LoadTableData();
}
protected void gvData_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gvData.PageIndex = e.NewPageIndex;
LoadTableData();
}
private void LoadTableData()
{
if (ddlTables.SelectedIndex <= 0 || CurrentTable == null) return;
var cfg = CurrentTable;
using (var con = new SqlConnection(ConnectionString))
using (var cmd = new SqlCommand(cfg.SqlList, con))
{
var dt = new DataTable();
con.Open();
dt.Load(cmd.ExecuteReader());
gvData.DataSource = dt;
gvData.DataBind();
}
}
protected void gvData_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
e.Row.Cells.Add(new TableHeaderCell { Text = "Details" });
}
protected void gvData_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType != DataControlRowType.DataRow) return;
var cfg = CurrentTable;
if (cfg == null) return;
var id = DataBinder.Eval(e.Row.DataItem, cfg.IdField)?.ToString();
if (string.IsNullOrEmpty(id)) return;
string tableKeyJs = HttpUtility.JavaScriptStringEncode(cfg.Key);
string idJs = HttpUtility.JavaScriptStringEncode(id);
var cell = new TableCell();
var lnk = new LinkButton
{
Text = "Öffnen",
CssClass = "open"
};
lnk.OnClientClick = $"loadJson('{tableKeyJs}','{idJs}'); return false;";
cell.Controls.Add(lnk);
e.Row.Cells.Add(cell);
}
[WebMethod]
//public static object GetJson(string table, string id)
//{
// var config = TableConfigProvider.LoadConfig();
// var cfg = config.Tables.FirstOrDefault(t => t.Key == table);
// if (cfg == null) return new { error = "Tabelle nicht gefunden" };
// using (var con = new SqlConnection(StringCipher.Decrypt(ConfigurationManager.ConnectionStrings["DocTesterconnectionstring"].ConnectionString, "i%!k!7pab%bNLdA5hE4pkR4XaB%E^jB3d9tHuQ4pbF&BZjF7SB#WBWit5#HrbJiLrLVm")))
// using (var cmd = new SqlCommand(cfg.SqlById, con))
// {
// cmd.Parameters.AddWithValue("@id", id);
// con.Open();
// var json = cmd.ExecuteScalar()?.ToString();
// if (string.IsNullOrEmpty(json))
// return new { error = "Datensatz nicht gefunden" };
// return JsonConvert.DeserializeObject(json);
// }
//}
public static object GetJson(string table, string id)
{
var config = TableConfigProvider.LoadConfig();
var cfg = config.Tables.FirstOrDefault(t => t.Key == table);
if (cfg == null) return"Tabelle nicht gefunden" ;
using (var con = new SqlConnection(StringCipher.Decrypt(ConfigurationManager.ConnectionStrings["DocTesterconnectionstring"].ConnectionString, "i%!k!7pab%bNLdA5hE4pkR4XaB%E^jB3d9tHuQ4pbF&BZjF7SB#WBWit5#HrbJiLrLVm")))
using (var cmd = new SqlCommand(cfg.SqlById, con))
{
cmd.Parameters.AddWithValue("@id", id);
con.Open();
string json = cmd.ExecuteScalar()?.ToString();
if (string.IsNullOrEmpty(json)) return "Datensatz nicht gefunden" ;
try
{
if (json.TrimStart().StartsWith("\""))
{
json = JsonConvert.DeserializeObject<string>(json);
}
Versandpaket vp = new Versandpaket();
vp = JsonConvert.DeserializeObject<Versandpaket>(json);
vp.finaldoc = "ABCD...";
foreach (Versanddokument vd in vp.Dokument)
{
vd.dokument = "ABC...";
}
//vp.Dokument.Clear();
json = JsonConvert.SerializeObject(vp, Formatting.Indented);
}
catch (Exception ex) { }
// JSON in Objekt parsen, damit PageMethods es korrekt als JS-Objekt liefert
return (json);
}
}
}
}

View File

@@ -1,44 +0,0 @@
//------------------------------------------------------------------------------
// <automatisch generiert>
// Dieser Code wurde von einem Tool generiert.
//
// Änderungen an dieser Datei können fehlerhaftes Verhalten verursachen und gehen verloren, wenn
// der Code neu generiert wird.
// </automatisch generiert>
//------------------------------------------------------------------------------
namespace WebApp
{
public partial class SelectTable
{
/// <summary>
/// ScriptManager1-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.ScriptManager ScriptManager1;
/// <summary>
/// ddlTables-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.WebControls.DropDownList ddlTables;
/// <summary>
/// gvData-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.WebControls.GridView gvData;
}
}

View File

@@ -1,5 +1,6 @@
using Newtonsoft.Json;
using System.IO;
using System.Security.Permissions;
using System.Web;
namespace WebApp
@@ -18,6 +19,9 @@ namespace WebApp
public string IdField { get; set; }
public string DisplayField { get; set; }
public string JsonField { get; set; }
public string Buttons { get; set; }
public string AnzeigeDokument { get; set; }
public string FilterColumns { get; set; }
}
public static class TableConfigProvider

View File

@@ -1,13 +1,47 @@
<main>
<section class="row" aria-labelledby="aspnetTitle">
<h1 id="aspnetTitle">OnDoc-Webservice Version 1.1 / 14. April 2025</h1>
<h1 id="aspnetTitle">OnDoc-Webservice Version 1.2 / 8. März 2026</h1>
</section>
<div class="row">
<section class="col-md-4" aria-labelledby="gettingStartedTitle">
&nbsp;
</section>
<section class="col-md-4" aria-labelledby="librariesTitle">
</section>
<section class="col-md-4" aria-labelledby="hostingTitle">
</section>
</div>
<div class="row">
<section class="col-md-4" aria-labelledby="gettingStartedTitle">
&nbsp;
</section>
<section class="col-md-4" aria-labelledby="librariesTitle">
</section>
<section class="col-md-4" aria-labelledby="hostingTitle">
</section>
</div>
<div class="row">
<section class="col-md-4" aria-labelledby="gettingStartedTitle">
&nbsp;
</section>
<section class="col-md-4" aria-labelledby="librariesTitle">
</section>
<section class="col-md-4" aria-labelledby="hostingTitle">
</section>
</div>
<div class="row">
<section class="col-md-4" aria-labelledby="gettingStartedTitle">
&nbsp;
<a href="/clm.aspx" class="btn btn-primary">
<i class="bi bi-box-arrow-up-right"></i> CLM-Dokumente verwalten
</a>
</section>
<section class="col-md-4" aria-labelledby="librariesTitle">
</section>
<section class="col-md-4" aria-labelledby="hostingTitle">
</section>
</div>
<section class="row" aria-labelledby="aspnetTitle">
</section>
</main>

View File

@@ -60,6 +60,14 @@
<compilation debug="true" targetFramework="4.8.1" />
<httpRuntime targetFramework="4.8.1" maxRequestLength="102400" />
</system.web>
<system.web.extensions>
<scripting>
<webServices>
<!-- Erhöht den Wert z.B. auf 100 MB (102400 KB) -->
<jsonSerialization maxJsonLength="2147483647" />
</webServices>
</scripting>
</system.web.extensions>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -60,6 +60,14 @@
<compilation debug="true" targetFramework="4.8.1" />
<httpRuntime targetFramework="4.8.1" maxRequestLength="102400" />
</system.web>
<system.web.extensions>
<scripting>
<webServices>
<!-- Erhöht den Wert z.B. auf 100 MB (102400 KB) -->
<jsonSerialization maxJsonLength="2147483647" />
</webServices>
</scripting>
</system.web.extensions>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>

File diff suppressed because it is too large Load Diff

View File

@@ -1 +1 @@
8b3fd221992aab54f67ae9f4dacf0686730bb97624d545a07f06e1dc6380764a
80b3e6cb482cb8888f46ccf8d3d82e0f1794783219cfa5781ef01ad64092fb28

View File

@@ -1,14 +1,5 @@
{
"tables": [
{
"key": "ProvDokuments",
"displayName": "ESS-Dokumente",
"sqlList": "SELECT ProvDokumentid as id, provDokumentID as Name FROM ProvDokuments order by erstelltam desc",
"sqlById": "SELECT JavaScriptObject as JsonData FROM ProvDokuments where provdokumentid=@id",
"idField": "Id",
"displayField": "ProvDokumentID",
"jsonField": "JsonData"
},
{
"key": "Ondoc_Versandstrasse_Paket",
"displayName": "Ondoc_Versandstrasse_Paket",
@@ -16,7 +7,10 @@
"sqlById": "SELECT paket as JsonData from Ondoc_Versandstrasse_Paket where id= @id ",
"idField": "ID",
"displayField": "ID",
"jsonField": "JsonData"
"jsonField": "JsonData",
"Buttons": "Öffnen",
"AnzeigeDokument": "",
"FilterColumns": ""
},
{
"key": "NLOGApiDoc",
@@ -25,7 +19,35 @@
"sqlById": "SELECT div as JsonData from edoka_journale.dbo.nlogapidoc where id= @id ",
"idField": "ID",
"displayField": "ID",
"jsonField": "JsonData"
"jsonField": "JsonData",
"Buttons": "Öffnen",
"AnzeigeDokument": "",
"FilterColumns": "GUID"
},
{
"key": "CLMDokumente",
"displayName": "CLM-Dokumente",
"sqlList": "SELECT ID, clmdokumentid as CLM_ID, GUID, Erstellt_Am, Aktiv, Archivstatus, Archiviert from ondoc_clm_dokumente [FILTER] order by Id desc",
"sqlById": "SELECT jsondata as JsonData from ondoc_clm_dokumente where id= @id ",
"idField": "ID",
"displayField": "ID",
"jsonField": "JsonData",
"Buttons": "Öffnen;Anzeigen",
"AnzeigeDokument": "SELECT dbo.BinaryToBase64(dokument) FROM dbo.OnDoc_CLM_Dokumente INNER JOIN dbo.Doks ON dbo.OnDoc_CLM_Dokumente.dokumentid = dbo.Doks.DokumentID where dbo.ondoc_clm_dokumente.id=@id",
"FilterColumns": "clmdokumentid;archivstatus"
},
{
"key": "CLMJournal",
"displayName": "CLM-Journal",
"sqlList": "SELECT ID, clmdokumentid as CLM_ID, Dokumentid, GUID, Erstellt_Am, Aktiv, Archivstatus, Archiviert, Archiviert_am from ondoc_clm_dokumente [FILTER] order by Id desc",
"sqlById": " ",
"idField": "ID",
"displayField": "ID",
"jsonField": "",
"Buttons": "Anzeigen",
"AnzeigeDokument": "SELECT dbo.BinaryToBase64(dokument) FROM dbo.OnDoc_CLM_Dokumente INNER JOIN dbo.Doks ON dbo.OnDoc_CLM_Dokumente.dokumentid = dbo.Doks.DokumentID where dbo.ondoc_clm_dokumente.id=@id",
"FilterColumns": "clmdokumentid;archivstatus;dokumentid"
}
]

View File

@@ -0,0 +1,303 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CLM.aspx.cs" Inherits="WebApp.CLM" %>
<!DOCTYPE html>
<html>
<head runat="server">
<%--<title>Daten & JSON Editor</title>--%>
<script src="/Scripts/ace/ace.js"></script>
<script src="/Scripts/ace/mode-json.min.js"></script>
<script src="/Scripts/ace/theme-tomorrow.min.js"></script>
<script src="/Scripts/ace/worker-json.js"></script>
<script src="/Scripts/jquery.min.js"></script>
<script src="/Scripts/ace/ext-searchbox.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.23.4/ace.js"></script>
<style>
html, body {
margin: 0;
padding: 0;
height: 100%;
font-family: Arial;
background: #f4f6f8;
}
.page-header {
background-color: #2563eb;
color: #fff;
padding: 15px 30px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.page-header h1 {
margin: 0;
font-size: 1.8rem;
}
.page-header p {
margin: 4px 0 0 0;
font-size: 0.95rem;
color: #dbeafe;
}
.layout {
display: flex;
height: calc(100% - 70px);
}
/* 70px für header */
.left {
width: 45%;
padding: 20px;
background: #fff;
border-right: 1px solid #ddd;
overflow: auto;
}
.leftfull {
width: 100%;
padding: 20px;
background: #fff;
border-right: 1px solid #ddd;
overflow: auto;
}
.right {
width: 55%;
padding: 0;
height: 100%;
display: flex;
flex-direction: column;
}
#editor {
flex: 1;
width: 100%;
}
select {
width: 100%;
padding: 8px;
margin-bottom: 12px;
}
table {
width: 100%;
border-collapse: collapse;
font-size: 14px;
}
th, td {
padding: 8px;
border-bottom: 1px solid #e5e7eb;
}
tr:hover {
background: #f9fafb;
}
.pager a, .pager span {
padding: 5px 9px;
border: 1px solid #ddd;
border-radius: 5px;
margin-left: 4px;
text-decoration: none;
font-size: 13px;
}
.pager span {
background: #2563eb;
color: #fff;
border-color: #2563eb;
}
a.open {
color: #2563eb;
cursor: pointer;
text-decoration: none;
}
a.open:hover {
text-decoration: underline;
}
#pdfFrame {
width: 100%;
height: 500px;
}
.leftpanel {
border-right: 1px solid #ccc;
height: 100%;
}
.navbar-custom {
background-color: #0d6efd;
padding-top:20px;
padding-bottom:20px;
}
.navbar-custom .navbar-brand {
color: white;
font-weight: 600;
}
.navbar-custom .btn {
border-color: white;
color: white;
}
.navbar-custom .btn:hover {
background: white;
color: #0d6efd;
}
</style>
</head>
<nav class="navbar navbar-expand-lg navbar-custom">
<div class="container-fluid">
<!-- TITEL LINKS -->
<span class="navbar-brand"><h1>CLM</h1>
</span>
<div class="ms-auto d-flex gap-2">
<!-- BUTTON -->
<button class="btn btn-outline-light" onclick="generateFromJson()">
Generieren
</button>
</div>
</div>
</nav>
<!-- LAYOUT -->
<div class="layout">
<form runat="server" class="left" id="masterform" >
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />
<h2>Tabellen & Datensätze</h2>
<asp:DropDownList
Width="300"
ID="ddlTables"
runat="server"
AutoPostBack="true"
OnSelectedIndexChanged="ddlTables_SelectedIndexChanged" />
&nbsp;&nbsp;&nbsp;&nbsp;
<asp:Label ID="lblFilter" runat="server" Text="Filter:"></asp:Label>
<asp:TextBox ID="txtfilter" runat="server" Width="207px"></asp:TextBox>
<asp:Button ID="btnRefresh" runat="server" Text="Aktualisieren" OnClick="ddlTables_SelectedIndexChanged" />
<asp:Button ID="Button1" runat="server" Text="Filter löschen" OnClick="ddlTables_clearfilter" />
<asp:GridView
ID="gvData"
runat="server"
AutoGenerateColumns="true"
AllowPaging="true"
PageSize="15"
PagerStyle-CssClass="pager"
OnPageIndexChanging="gvData_PageIndexChanging"
OnRowCreated="gvData_RowCreated"
OnRowDataBound="gvData_RowDataBound" />
</form>
<div id="editor"></div>
</div>
<script>
const editor = ace.edit("editor");
editor.setTheme("ace/theme/tomorrow");
editor.session.setMode("ace/mode/json");
editor.setShowPrintMargin(false);
editor.session.setTabSize(2);
editor.session.setUseSoftTabs(true);
editor.session.doc
//let editor;
//$(function () {
// editor = ace.edit("editor");
// editor.setTheme("ace/theme/tomorrow");
// editor.session.setMode("ace/mode/json");
// editor.setShowPrintMargin(false);
// editor.session.setTabSize(2);
// editor.session.setUseSoftTabs(true);
// editor.commands.addCommand({
// name: "find",
// bindKey: { win: "Ctrl-F", mac: "Command-F" },
// exec: function (ed) {
// ace.require("ace/ext/searchbox").Search(ed);
// }
// });
//});
function generateFromJson() {
var jsonText = editor.getValue();
$.ajax({
type: "POST",
url: "/API/DokumentGenerator",
data: jsonText,
contentType: "application/json; charset=utf-8",
dataType: "json",
headers: {
"Authorization": "Bearer " + "pZkuG6l6ORCEckqQimPK58PO1A9EnkMtL5oCgRX9WiWnD4xeH7ikGzhWnTBy/vk8J4Iiz8gCSx9uFHA4+DvITG0roO97sk82d/0BCjVlwLWINpXlJfGYEF3X96AdoCQvb3ruwv/tVqEHsSU5aNfyxBAe+EhLTHQ8t7ysgJZWh98="
},
success: function (response) {
var pdfWindow = window.open("");
pdfWindow.document.write("<iframe width='100%' height='100%' src='data:application/pdf;base64," + response.file + "'></iframe>");
//alert("Server Response: " + response.file);
},
error: function (err) {
alert("Error: " + err.responseText);
}
});
}
function showDoc(tableKey, id) {
PageMethods.GetDoc(
tableKey,
id,
function (result) {
var pdfWindow = window.open("");
pdfWindow.document.write("<iframe width='100%' height='100%' src='data:application/pdf;base64," + result + "'></iframe>");
},
function (err) {
alert(err.get_message())
}
);
}
function loadJson(tableKey, id) {
editor.setValue("// lade JSON ...", -1);
PageMethods.GetJson(
tableKey,
id,
function (result) {
editor.setValue(result, -1);
},
function (err) {
editor.setValue(JSON.stringify({ error: err.get_message() }, null, 2), -1);
}
);
}
</script>
</body>
</html>

View File

@@ -1,212 +0,0 @@
<%@ Page Language="C#" AutoEventWireup="true" %>
<!DOCTYPE html>
<html>
<head>
<title>JSON Editor → PDF Preview</title>
<script>
</script>
<!-- ACE
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.32.6/ace.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.32.6/mode-json.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.32.6/theme-tomorrow.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
-->
<script src="/Scripts/ace/ace.js"></script>
<script src="/Scripts/ace/mode-json.min.js"></script>
<script src="/Scripts/ace/theme-tomorrow.min.js"></script>
<script src="/Scripts/ace/worker-json.js"></script>
<script src="/Scripts/jquery.min.js"></script>
<script src="/Scripts/ace/ext-searchbox.js"></script>
<style>
body {
margin: 0;
font-family: Arial, sans-serif;
}
.toolbar {
padding: 10px;
background: #f5f5f5;
border-bottom: 1px solid #ccc;
}
.toolbar input {
width: 220px;
padding: 4px;
}
.toolbar button {
margin-left: 5px;
padding: 6px 10px;
}
.container {
display: flex;
height: calc(100vh - 60px);
}
.left, .right {
flex: 1;
padding: 10px;
box-sizing: border-box;
}
.left {
border-right: 1px solid #ccc;
}
#editor {
width: 100%;
height: 100%;
border: 1px solid #ccc;
}
#pdfFrame {
width: 100%;
height: 100%;
border: 1px solid #ccc;
background: #fafafa;
}
html, body { margin:0; padding:0; height:100%; font-family:Arial; background:#f4f6f8; }
.page-header {
background-color: #2563eb;
color: #fff;
padding: 15px 30px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.page-header h1 {
margin:0;
font-size:1.8rem;
}
.page-header p {
margin:4px 0 0 0;
font-size:0.95rem;
color:#dbeafe;
}
</style>
</head>
<body>
<div class="page-header">
<h1>OnDoc-DocPreview</h1>
<p></p>
</div>
<div class="toolbar">
<label>Schlüssel:</label>
<input type="text" id="key" placeholder="provDokumentID" />
<button onclick="loadJson()">Laden</button>
<button onclick="saveJson()">Speichern</button>
<button onclick="generatePdf()">PDF generieren</button>
</div>
<div class="container">
<!-- LINKS: JSON -->
<div class="left">
<div id="editor">{}</div>
</div>
<!-- RECHTS: PDF -->
<table>
<tr>
<div class="right">
<iframe id="pdfFrame" title="PDF Vorschau"></iframe>
</div>
</tr>
</table>
</div>
<script>
const apiBase = "/api/json";
// ACE INIT
const editor = ace.edit("editor");
editor.setTheme("ace/theme/tomorrow");
editor.session.setMode("ace/mode/json");
editor.setShowPrintMargin(false);
editor.session.setTabSize(2);
editor.session.setUseSoftTabs(true);
const editor1 = ace.edit("editor");
editor1.setTheme("ace/theme/tomorrow");
editor1.session.setMode("ace/mode/json");
editor1.setShowPrintMargin(false);
editor1.session.setTabSize(2);
editor1.session.setUseSoftTabs(true);
// JSON LADEN
function loadJson() {
editor.setValue("", -1);
clearPdfPreview();
const key = $("#key").val();
if (!key) { alert("Bitte Schlüssel eingeben"); return; }
$.get(apiBase + "/load/" + encodeURIComponent(key))
.done(data => editor.setValue(data, -1))
.fail(() => alert("Kein Eintrag gefunden"));
}
// JSON SPEICHERN
function saveJson() {
const key = $("#key").val();
const json = editor.getValue();
if (!key) { alert("Bitte Schlüssel eingeben"); return; }
// try { JSON.parse(json); }
// catch { alert("Ungültiges JSON"); return; }
$.ajax({
url: apiBase + "/save",
type: "POST",
contentType: "application/json",
data: JSON.stringify({ key: key, json: json }),
success: () => alert("Gespeichert")
});
}
// PDF GENERIEREN & EMBEDDED ANZEIGEN
function generatePdf() {
const key = $("#key").val();
if (!key) { alert("Bitte Schlüssel eingeben"); return; }
fetch(apiBase + "/generatepdf", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
key: key,
json: editor.getValue()
})
})
.then(r => {
if (!r.ok) throw new Error("PDF-Fehler");
return r.blob();
})
.then(blob => {
const url = URL.createObjectURL(blob);
document.getElementById("pdfFrame").src = url;
})
.catch(err => alert(err.message));
}
function clearPdfPreview() {
const frame = document.getElementById("pdfFrame");
// iframe leeren
frame.src = "";
// optional: alte Blob-URL freigeben
if (frame.dataset.blobUrl) {
URL.revokeObjectURL(frame.dataset.blobUrl);
frame.dataset.blobUrl = "";
}
}
</script>
</body>
</html>

View File

@@ -0,0 +1,314 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="JSONViewer.aspx.cs" Inherits="WebApp.JSONViewer" %>
<!DOCTYPE html>
<html>
<head runat="server">
<%--<title>Daten & JSON Editor</title>--%>
<script src="/Scripts/ace/ace.js"></script>
<script src="/Scripts/ace/mode-json.min.js"></script>
<script src="/Scripts/ace/theme-tomorrow.min.js"></script>
<script src="/Scripts/ace/worker-json.js"></script>
<script src="/Scripts/jquery.min.js"></script>
<script src="/Scripts/ace/ext-searchbox.js"></script>
<script src="/Scripts/bootstrap.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.23.4/ace.js"></script>
<style>
html, body {
margin: 0;
padding: 0;
height: 100%;
font-family: Arial;
background: #f4f6f8;
}
.page-header {
background-color: #2563eb;
color: #fff;
padding: 15px 30px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.page-header h1 {
margin: 0;
font-size: 1.8rem;
}
.page-header p {
margin: 4px 0 0 0;
font-size: 0.95rem;
color: #dbeafe;
}
.layout {
display: flex;
height: calc(100% - 70px);
}
/* 70px für header */
.left {
width: 45%;
padding: 20px;
background: #fff;
border-right: 1px solid #ddd;
overflow: auto;
}
.leftfull {
width: 100%;
padding: 20px;
background: #fff;
border-right: 1px solid #ddd;
overflow: auto;
}
.right {
width: 55%;
padding: 0;
height: 100%;
display: flex;
flex-direction: column;
}
#editor {
flex: 1;
width: 100%;
}
select {
width: 100%;
padding: 8px;
margin-bottom: 12px;
}
table {
width: 100%;
border-collapse: collapse;
font-size: 14px;
}
th, td {
padding: 8px;
border-bottom: 1px solid #e5e7eb;
}
tr:hover {
background: #f9fafb;
}
.pager a, .pager span {
padding: 5px 9px;
border: 1px solid #ddd;
border-radius: 5px;
margin-left: 4px;
text-decoration: none;
font-size: 13px;
}
.pager span {
background: #2563eb;
color: #fff;
border-color: #2563eb;
}
a.open {
color: #2563eb;
cursor: pointer;
text-decoration: none;
}
a.open:hover {
text-decoration: underline;
}
#pdfFrame {
width: 100%;
height: 500px;
}
.leftpanel {
border-right: 1px solid #ccc;
height: 100%;
}
.navbar-custom {
background-color: #0d6efd;
padding-top:20px;
padding-bottom:20px;
}
.navbar-custom .navbar-brand {
color: white;
font-weight: 600;
}
.navbar-custom .btn {
border-color: white;
color: white;
}
.navbar-custom .btn:hover {
background: white;
color: #0d6efd;
}
</style>
</head>
<nav class="navbar navbar-expand-lg navbar-custom">
<div class="container-fluid">
<!-- TITEL LINKS -->
<span class="navbar-brand">OnDoc-JSON-Viewer
</span>
<div class="ms-auto d-flex gap-2">
<!-- BUTTON -->
<button class="btn btn-outline-light" onclick="generateFromJson()">
Generieren
</button>
</div>
</div>
</nav>
<%--<div class="page-header">
<h1>OnDoc-Json-Viewer</h1>
<p>Tabellen auswählen, Datensätze ansehen und JSON anzeigen</p>
</div>--%>
<!-- LAYOUT -->
<div class="layout">
<form runat="server" class="left" id="masterform">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />
<h2>Tabellen & Datensätze</h2>
<asp:DropDownList
Width="300"
ID="ddlTables"
runat="server"
AutoPostBack="true"
OnSelectedIndexChanged="ddlTables_SelectedIndexChanged" />
&nbsp;&nbsp;&nbsp;&nbsp;
<asp:Label ID="lblFilter" runat="server" Text="Filter:"></asp:Label>
<asp:TextBox ID="txtfilter" runat="server" Width="207px"></asp:TextBox>
<asp:Button ID="btnRefresh" runat="server" Text="Aktualisieren" OnClick="ddlTables_SelectedIndexChanged" />
<asp:Button ID="Button1" runat="server" Text="Filter löschen" OnClick="ddlTables_clearfilter" />
<asp:GridView
ID="gvData"
runat="server"
AutoGenerateColumns="true"
AllowPaging="true"
PageSize="15"
PagerStyle-CssClass="pager"
OnPageIndexChanging="gvData_PageIndexChanging"
OnRowCreated="gvData_RowCreated"
OnRowDataBound="gvData_RowDataBound" />
</form>
<div id="editor"></div>
</div>
<script>
const editor = ace.edit("editor");
editor.setTheme("ace/theme/tomorrow");
editor.session.setMode("ace/mode/json");
editor.setShowPrintMargin(false);
editor.session.setTabSize(2);
editor.session.setUseSoftTabs(true);
editor.session.doc
//let editor;
//$(function () {
// editor = ace.edit("editor");
// editor.setTheme("ace/theme/tomorrow");
// editor.session.setMode("ace/mode/json");
// editor.setShowPrintMargin(false);
// editor.session.setTabSize(2);
// editor.session.setUseSoftTabs(true);
// editor.commands.addCommand({
// name: "find",
// bindKey: { win: "Ctrl-F", mac: "Command-F" },
// exec: function (ed) {
// ace.require("ace/ext/searchbox").Search(ed);
// }
// });
//});
function generateFromJson() {
var jsonText = editor.getValue();
$.ajax({
type: "POST",
url: "/API/DokumentGenerator",
data: jsonText,
contentType: "application/json; charset=utf-8",
dataType: "json",
headers: {
"Authorization": "Bearer " + "pZkuG6l6ORCEckqQimPK58PO1A9EnkMtL5oCgRX9WiWnD4xeH7ikGzhWnTBy/vk8J4Iiz8gCSx9uFHA4+DvITG0roO97sk82d/0BCjVlwLWINpXlJfGYEF3X96AdoCQvb3ruwv/tVqEHsSU5aNfyxBAe+EhLTHQ8t7ysgJZWh98="
},
success: function (response) {
var pdfWindow = window.open("");
pdfWindow.document.write("<iframe width='100%' height='100%' src='data:application/pdf;base64," + response.file + "'></iframe>");
//alert("Server Response: " + response.file);
},
error: function (err) {
alert("Error: " + err.responseText);
}
});
}
function showDoc(tableKey, id) {
PageMethods.GetDoc(
tableKey,
id,
function (result) {
var pdfWindow = window.open("");
pdfWindow.document.write("<iframe width='100%' height='100%' src='data:application/pdf;base64," + result + "'></iframe>");
},
function (err) {
alert(err.get_message())
}
);
}
function loadJson(tableKey, id) {
editor.setValue("// lade JSON ...", -1);
PageMethods.GetJson(
tableKey,
id,
function (result) {
editor.setValue(result, -1);
},
function (err) {
editor.setValue(JSON.stringify({ error: err.get_message() }, null, 2), -1);
}
);
}
</script>
</body>
</html>

View File

@@ -1,143 +0,0 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SelectTable.aspx.cs" Inherits="WebApp.SelectTable" %>
<!DOCTYPE html>
<html>
<head runat="server">
<%--<title>Daten & JSON Editor</title>--%>
<script src="/Scripts/ace/ace.js"></script>
<script src="/Scripts/ace/mode-json.min.js"></script>
<script src="/Scripts/ace/theme-tomorrow.min.js"></script>
<script src="/Scripts/ace/worker-json.js"></script>
<script src="/Scripts/jquery.min.js"></script>
<script src="/Scripts/ace/ext-searchbox.js"></script>
<style>
html, body { margin:0; padding:0; height:100%; font-family:Arial; background:#f4f6f8; }
.page-header {
background-color: #2563eb;
color: #fff;
padding: 15px 30px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.page-header h1 {
margin:0;
font-size:1.8rem;
}
.page-header p {
margin:4px 0 0 0;
font-size:0.95rem;
color:#dbeafe;
}
.layout { display:flex; height:calc(100% - 70px); } /* 70px für header */
.left {
width:45%;
padding:20px;
background:#fff;
border-right:1px solid #ddd;
overflow:auto;
}
.right {
width:55%;
padding:0;
height:100%;
display:flex;
flex-direction: column;
}
#editor {
flex:1;
width:100%;
}
select { width:100%; padding:8px; margin-bottom:12px; }
table { width:100%; border-collapse:collapse; font-size:14px; }
th, td { padding:8px; border-bottom:1px solid #e5e7eb; }
tr:hover { background:#f9fafb; }
.pager a, .pager span { padding:5px 9px; border:1px solid #ddd; border-radius:5px; margin-left:4px; text-decoration:none; font-size:13px; }
.pager span { background:#2563eb; color:#fff; border-color:#2563eb; }
a.open { color:#2563eb; cursor:pointer; text-decoration:none; }
a.open:hover { text-decoration:underline; }
</style>
</head>
<body>
<!-- TITEL -->
<div class="page-header">
<h1>OnDoc-Json-Viewer</h1>
<p>Tabellen auswählen, Datensätze ansehen und JSON anzeigen</p>
</div>
<!-- LAYOUT -->
<div class="layout">
<form runat="server" class="left">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />
<h2>Tabellen & Datensätze</h2>
<asp:DropDownList
ID="ddlTables"
runat="server"
AutoPostBack="true"
OnSelectedIndexChanged="ddlTables_SelectedIndexChanged" />
<asp:GridView
ID="gvData"
runat="server"
AutoGenerateColumns="true"
AllowPaging="true"
PageSize="20"
PagerStyle-CssClass="pager"
OnPageIndexChanging="gvData_PageIndexChanging"
OnRowCreated="gvData_RowCreated"
OnRowDataBound="gvData_RowDataBound" />
</form>
<!-- ACE EDITOR außerhalb des Form-Tags -->
<div class="right">
<div id="editor"></div>
</div>
</div>
<script>
const editor = ace.edit("editor");
editor.setTheme("ace/theme/tomorrow");
editor.session.setMode("ace/mode/json");
editor.setShowPrintMargin(false);
editor.session.setTabSize(2);
editor.session.setUseSoftTabs(true);
//let editor;
//$(function () {
// editor = ace.edit("editor");
// editor.setTheme("ace/theme/tomorrow");
// editor.session.setMode("ace/mode/json");
// editor.setShowPrintMargin(false);
// editor.session.setTabSize(2);
// editor.session.setUseSoftTabs(true);
// editor.commands.addCommand({
// name: "find",
// bindKey: { win: "Ctrl-F", mac: "Command-F" },
// exec: function (ed) {
// ace.require("ace/ext/searchbox").Search(ed);
// }
// });
//});
function loadJson(tableKey, id) {
editor.setValue("// lade JSON ...", -1);
PageMethods.GetJson(
tableKey,
id,
function (result) {
editor.setValue(result, -1);
},
function (err) {
editor.setValue(JSON.stringify({ error: err.get_message() }, null, 2), -1);
}
);
}
</script>
</body>
</html>

View File

@@ -1,13 +1,47 @@
<main>
<section class="row" aria-labelledby="aspnetTitle">
<h1 id="aspnetTitle">OnDoc-Webservice Version 1.1 / 14. April 2025</h1>
<h1 id="aspnetTitle">OnDoc-Webservice Version 1.2 / 8. März 2026</h1>
</section>
<div class="row">
<section class="col-md-4" aria-labelledby="gettingStartedTitle">
&nbsp;
</section>
<section class="col-md-4" aria-labelledby="librariesTitle">
</section>
<section class="col-md-4" aria-labelledby="hostingTitle">
</section>
</div>
<div class="row">
<section class="col-md-4" aria-labelledby="gettingStartedTitle">
&nbsp;
</section>
<section class="col-md-4" aria-labelledby="librariesTitle">
</section>
<section class="col-md-4" aria-labelledby="hostingTitle">
</section>
</div>
<div class="row">
<section class="col-md-4" aria-labelledby="gettingStartedTitle">
&nbsp;
</section>
<section class="col-md-4" aria-labelledby="librariesTitle">
</section>
<section class="col-md-4" aria-labelledby="hostingTitle">
</section>
</div>
<div class="row">
<section class="col-md-4" aria-labelledby="gettingStartedTitle">
&nbsp;
<a href="/clm.aspx" class="btn btn-primary">
<i class="bi bi-box-arrow-up-right"></i> CLM-Dokumente verwalten
</a>
</section>
<section class="col-md-4" aria-labelledby="librariesTitle">
</section>
<section class="col-md-4" aria-labelledby="hostingTitle">
</section>
</div>
<section class="row" aria-labelledby="aspnetTitle">
</section>
</main>

View File

@@ -58,6 +58,14 @@
<compilation debug="true" targetFramework="4.8.1" />
<httpRuntime targetFramework="4.8.1" maxRequestLength="102400" />
</system.web>
<system.web.extensions>
<scripting>
<webServices>
<!-- Erhöht den Wert z.B. auf 100 MB (102400 KB) -->
<jsonSerialization maxJsonLength="2147483647" />
</webServices>
</scripting>
</system.web.extensions>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>

View File

@@ -60,6 +60,14 @@
<compilation debug="true" targetFramework="4.8.1" />
<httpRuntime targetFramework="4.8.1" maxRequestLength="102400" />
</system.web>
<system.web.extensions>
<scripting>
<webServices>
<!-- Erhöht den Wert z.B. auf 100 MB (102400 KB) -->
<jsonSerialization maxJsonLength="2147483647" />
</webServices>
</scripting>
</system.web.extensions>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>

View File

@@ -58,6 +58,14 @@
<compilation debug="true" targetFramework="4.8.1" />
<httpRuntime targetFramework="4.8.1" maxRequestLength="102400" />
</system.web>
<system.web.extensions>
<scripting>
<webServices>
<!-- Erhöht den Wert z.B. auf 100 MB (102400 KB) -->
<jsonSerialization maxJsonLength="2147483647" />
</webServices>
</scripting>
</system.web.extensions>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
84d81ea8d2d590860675274b5713746c8237611a0eb4cfd92e1703956b0caaf0
f74478b4a0ac42d3dba296cb26673592056c0e57296874c2de78585756689a3d

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More