Listing of QueryData.ashx


<%@ WebHandler Language="C#" Class="QueryData" %> using System; using System.Web; using System.Data.SqlClient; //--------------------------------------------------------------------------- // Data handling for queries //--------------------------------------------------------------------------- public class QueryData : IHttpHandler { private HttpContext context; private UserSession session; private PostData postData; public void ProcessRequest(HttpContext ctx) { context = ctx; string response = ""; postData = new PostData(context); switch (context.Request["postType"].ToString()) { case "loadValues": response = loadValues(); break; case "loadQueries": response = loadQueries(); break; case "getQuery": response = getQuery(); break; case "delete": response = deleteQuery(); break; case "update": response = updateQuery(); break; case "add": response = addQuery(); break; default: response = "{'error':'Bad request - " + context.Request["postType"] + "'}"; break; } //------------------------------------------------------------------- // close the connection, return status //------------------------------------------------------------------- context.Response.ContentType = "text/plain"; context.Response.Write(response); } public bool IsReusable { get { return true; } } //--------------------------------------------------------------------------- // load the Queries and pass back in JSON format // two different versions, depending on the particular values passed back. //--------------------------------------------------------------------------- private string loadValues() { return loadList("SELECT querySys as valueSys, query as value from Queries where deleted=0 order by query"); } private string loadQueries() { return loadList("SELECT querySys, query, reviewed from Queries where deleted=0 order by query"); } //--------------------------------------------------------------------------- // supporting routine //--------------------------------------------------------------------------- private string loadList(string sql) { session = new UserSession(); session.Open(); string response = "["; try { //---------------------------------------------------------- // fetch the record //---------------------------------------------------------- SqlCommand command = new SqlCommand(sql, session.connection); SqlDataReader reader = command.ExecuteReader(); //---------------------------------------------------------- // JSON format //---------------------------------------------------------- int n = 0; while (reader.Read()) { if (++n > 1) response += ","; response += Utility.encodeJson(reader); } response += "]"; reader.Close(); } catch { response = "{'error':'Reading queries.'}"; } session.connection.Close(); return response; } //--------------------------------------------------------------------------- // deleteQuery (set deleted = 1) //--------------------------------------------------------------------------- private string deleteQuery() { session = new UserSession(); session.Open(); postData.Add(0, "querySys"); string response = "{'status':1}"; try { string sql = @"UPDATE Queries SET deleted=1 WHERE querySys = " + postData["querySys"]; SqlCommand command = new SqlCommand(sql, session.connection); command.ExecuteNonQuery(); } catch { response = "{'error':'deleting query.'}"; } session.connection.Close(); return response; } //--------------------------------------------------------------------------- // updateQuery //--------------------------------------------------------------------------- private string updateQuery() { //-------------------------------------------------------------- // open the session, get the post variables. //-------------------------------------------------------------- session = new UserSession(); session.Open(); fetchPostData(); //-------------------------------------------------------------- // ready to update the record //-------------------------------------------------------------- string response = "{'status':1}"; try { string sql = @"UPDATE Queries SET deleted=0," + postData.NameValues() + " WHERE querySys = " + postData["querySys"]; SqlCommand command = new SqlCommand(sql, session.connection); command.ExecuteNonQuery(); } catch { response = "{'error':'updating query.'}"; } session.connection.Close(); return response; } //--------------------------------------------------------------------------- // addQuery //--------------------------------------------------------------------------- private string addQuery() { //-------------------------------------------------------------- // open the session, get the post variables. //-------------------------------------------------------------- session = new UserSession(); session.Open(); fetchPostData(); //-------------------------------------------------------------- // compile the sql //-------------------------------------------------------------- string response = ""; try { string sql = "INSERT INTO Queries (deleted," + postData.Names() + ")" + "VALUES (0," + postData.Values() + "); SELECT CAST(@@IDENTITY AS INT)"; SqlCommand command = new SqlCommand(sql, session.connection); int record = (Int32)command.ExecuteScalar(); response = "{'record':'" + record.ToString() + "'}"; } catch { response = "{'error':'adding query.'}"; } session.connection.Close(); return response; } //--------------------------------------------------------------------------- // load one query //--------------------------------------------------------------------------- private string getQuery() { session = new UserSession(); session.Open(); string response = "{}"; try { //---------------------------------------------------------- // fetch the record //---------------------------------------------------------- string sql = @"SELECT querySys, query, reviewed, code FROM Queries WHERE Queries.deleted=0 and querySys=" + context.Request["querySys"].ToString(); SqlCommand command = new SqlCommand(sql, session.connection); SqlDataReader reader = command.ExecuteReader(); //---------------------------------------------------------- // JSON format, one record //---------------------------------------------------------- if (reader.Read()) { response = Utility.encodeJson(reader); } reader.Close(); } catch { response = "{'error':'Reading query.'}"; } session.connection.Close(); return response; } //--------------------------------------------------------------------------- // get the post variables //--------------------------------------------------------------------------- private void fetchPostData() { postData.Add(0, "querySys"); postData.Add(0, "reviewed"); postData.Add(1, "query"); postData.Add(1, "code"); //-------------------------------------------------------------- // who gets included //-------------------------------------------------------------- postData.Update("querySys", 0); } }