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

@@ -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>