271 lines
9.4 KiB
C#
271 lines
9.4 KiB
C#
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 "";
|
|
}
|
|
}
|
|
}
|
|
|