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 tables = new List(); 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("" + json + ""); return json; } } catch { } if (string.IsNullOrEmpty(json)) return "Datensatz nicht gefunden"; try { if (json.TrimStart().StartsWith("\"")) { json = JsonConvert.DeserializeObject("{" + json + "}"); } Versandpaket vp = new Versandpaket(); vp = JsonConvert.DeserializeObject(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 ""; } } }