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

@@ -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 "";
}
}
}