private string createQuestion() { var jss = new JavaScriptSerializer(); string url = "http://2d73b8c2.problems.sphere-engine.com/api/v3/problems?access_token=" + token; string jsonData = "{\"code\":\"" + textQcode.Value + "\",\"name\":\"" + textQname.Value + "\"}"; client.Headers.Add("Content-Type", "application/json"); try { response = client.UploadString(url, "POST", jsonData); QuestionDataSource.InsertParameters.Clear(); QuestionDataSource.InsertParameters.Add("Category", textQcategory.Value); QuestionDataSource.InsertParameters.Add("Question", textQcode.Value); QuestionDataSource.InsertParameters.Add("QuestionName", textQname.Value); QuestionDataSource.Insert(); if (!checkboxCategory.Checked) { DataView dv = (DataView)MapDataSource.Select(new DataSourceSelectArguments()); dropdownCategory.Items.Clear(); foreach (System.Data.DataRow row in dv.Table.Rows) { dropdownCategory.Items.Add(row["Category"].ToString()); } dropdownCategory.SelectedIndex = dropdownCategory.Items.IndexOf(new ListItem(textQcategory.Value)); checkboxCategory.Checked = true; textQcategory.Disabled = true; ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "DoPostBack", "__doPostBack('dropdownCategory','')", true); } ListView1.DataBind(); return(""); } catch (WebException ex) { using (WebResponse response = ex.Response) { using (Stream data = response.GetResponseStream()) { StreamReader sr = new StreamReader(data); var resultObj = jss.Deserialize <Dictionary <string, dynamic> >(sr.ReadToEnd()); return(resultObj["message"]); } } } }
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { if (string.IsNullOrEmpty(Request.QueryString["p"])) { Response.Redirect("Default.aspx"); } MapDataSource.SelectParameters.Clear(); //Select MapDataSource.SelectParameters.Add("Question", Request.QueryString["p"]); DataSourceSelectArguments args = new DataSourceSelectArguments(); DataView dv = (DataView)MapDataSource.Select(args); if (dv.Table.Rows[0]["Category"].ToString() != "Contest") { header.InnerHtml = "Edit Question: " + dv.Table.Rows[0]["Category"].ToString(); } var jss = new JavaScriptSerializer(); string url = "http://2d73b8c2.problems.sphere-engine.com/api/v3/problems/" + Request.QueryString["p"] + "?access_token=" + token; response = client.DownloadString(url); var problemObj = jss.Deserialize <Dictionary <string, dynamic> >(response); qName.Value = problemObj["name"]; var doc = new HtmlAgilityPack.HtmlDocument(); doc.LoadHtml(problemObj["body"]); var paragraphs = doc.DocumentNode.Descendants("p"); HtmlTextArea[] textList = { qText1, qText2, qText3, qText4, qText5 }; int index = 0; foreach (var node in paragraphs) { textList[index++].Value = node.InnerHtml; } url = "http://2d73b8c2.problems.sphere-engine.com/api/v3/problems/" + Request.QueryString["p"] + "/testcases?access_token=" + token; response = client.DownloadString(url); var testcaseObj = jss.Deserialize <Dictionary <string, dynamic> >(response); table.InnerHtml = ""; foreach (var testcase in testcaseObj["testcases"]) { table.InnerHtml += "<tr role=\"row\" class=\"gradeA odd\">" + "<td class=\"sorting_1\">" + testcase["number"] + "</td>" + "<td>" + "<center><input type=\"checkbox\" " + (testcase["active"] == true ? "checked=\"checked\"" : "") + " runat=\"server\" onchange=\"javascript:updateActive()\"> </center> " + "</td>" + "<td>" + testcase["limits"]["time"] + " Second" + "</td>" + "<td>" + "<span><a class=\"btn btn-primary btn-block btn-outline\" href=\"javascript:__doPostBack('buttonTestEdit','" + testcase["number"] + "')\"><i class=\"fa fa-pencil-square-o\"></i></a></span>" + "</td>" + "</tr>"; } } string ctrlName = Page.Request.Params.Get("__EVENTTARGET"); if (!String.IsNullOrEmpty(ctrlName) && (ctrlName == "buttonUpdate" || ctrlName == "checkChange")) { var jss = new JavaScriptSerializer(); string url = "http://2d73b8c2.problems.sphere-engine.com/api/v3/problems/" + Request.QueryString["p"] + "?access_token=" + token; string body = "<p>" + qText1.Value.Replace("<p>", "").Replace("</p>", "") + "</p>" + "<h4>Input</h4>" + "<p>" + qText2.Value.Replace("<p>", "").Replace("</p>", "") + "</p>" + "<h4>Output</h4>" + "<p>" + qText3.Value.Replace("<p>", "").Replace("</p>", "") + "</p>" + "<h4>Example</h4>" + "<pre>" + "<strong>Input:</strong>" + "<p>" + qText4.Value.Replace("<p>", "").Replace("</p>", "") + "</p>" + "<strong>Output:</strong>" + "<p>" + qText5.Value.Replace("<p>", "").Replace("</p>", "") + "</p>" + "</pre>"; string activeString = ""; string [] activeList = Request.Cookies["activeTest"].Value.Split(','); foreach (string item in activeList) { activeString += item + ","; } if (activeString.Substring(activeString.Length - 1, 1) == ",") { activeString = activeString.Substring(0, activeString.Length - 1); } string jsonData = "{\"name\":\"" + qName.Value + "\" , \"activeTestcases\":\"" + activeString + "\" ,\"body\":" + jss.Serialize(body) + " }"; client.Headers.Add("Content-Type", "application/json"); try { response = client.UploadString(url, "PUT", jsonData); MapDataSource.UpdateParameters.Clear(); MapDataSource.UpdateParameters.Add("QuestionName", qName.Value); MapDataSource.UpdateParameters.Add("Question", Request.QueryString["p"]); MapDataSource.Update(); Response.Redirect(Request.RawUrl); } catch (WebException ex) { using (WebResponse response = ex.Response) { using (Stream data = response.GetResponseStream()) { StreamReader sr = new StreamReader(data); var resultObj = jss.Deserialize <Dictionary <string, dynamic> >(sr.ReadToEnd()); labelResult.Visible = true; labelResult.InnerText = resultObj["message"]; } } } } else if (!String.IsNullOrEmpty(ctrlName) && ctrlName == "buttonCreate") { var jss = new JavaScriptSerializer(); string url = "http://2d73b8c2.problems.sphere-engine.com/api/v3/problems/" + Request.QueryString["p"] + "/testcases?access_token=" + token; client.Headers.Add("Content-Type", "application/json"); response = client.UploadString(url, "POST"); var numberObj = jss.Deserialize <Dictionary <string, dynamic> >(response); table.InnerHtml += "<tr role=\"row\" class=\"gradeA odd\">" + "<td class=\"sorting_1\">" + numberObj["number"] + "</td>" + "<td>" + "<center><input type=\"checkbox\" runat=\"server\" checked=\"checked\" onchange=\"javascript:javascript:updateActive()\"></center>" + "</td>" + "<td>" + "1 Second" + "</td>" + "<td>" + "<span><a class=\"btn btn-primary btn-block btn-outline\" href=\"javascript:__doPostBack('buttonTestEdit','" + numberObj["number"] + "')\"><i class=\"fa fa-pencil-square-o\"></i></a></span>" + "</td>" + "</tr>"; } else if (!String.IsNullOrEmpty(ctrlName) && ctrlName == "buttonTestEdit") { var jss = new JavaScriptSerializer(); string testId = Page.Request.Params.Get("__EVENTARGUMENT"); string url = "http://2d73b8c2.problems.sphere-engine.com/api/v3/problems/" + Request.QueryString["p"] + "/testcases/" + testId + "?access_token=" + token; response = client.DownloadString(url); var testcaseObj = jss.Deserialize <Dictionary <string, dynamic> >(response); editTime.Value = testcaseObj["limits"]["time"]; editInput.Value = client.DownloadString(testcaseObj["input"]["url"] + "?access_token=" + token); editOutput.Value = client.DownloadString(testcaseObj["output"]["url"] + "?access_token=" + token); labelIdTestcase.InnerText = " Test Case " + testId; divTestcase.Visible = true; } else if (!String.IsNullOrEmpty(ctrlName) && ctrlName == "buttonApiUpdate") { var jss = new JavaScriptSerializer(); string testId = labelIdTestcase.InnerText.Split(' ')[3]; string url = "http://2d73b8c2.problems.sphere-engine.com/api/v3/problems/" + Request.QueryString["p"] + "/testcases/" + testId + "?access_token=" + token; client.Headers.Add("Content-Type", "application/json"); string jsonData = "{\"input\":" + jss.Serialize(editInput.InnerText) + ",\"output\":" + jss.Serialize(editOutput.InnerText) + ",\"timelimit\":" + jss.Serialize(editTime.Value) + "}"; try { response = client.UploadString(url, "PUT", jsonData); Response.Redirect(Request.RawUrl); } catch (WebException ex) { using (WebResponse response = ex.Response) { using (Stream data = response.GetResponseStream()) { StreamReader sr = new StreamReader(data); var resultObj = jss.Deserialize <Dictionary <string, dynamic> >(sr.ReadToEnd()); labelUpdate.Visible = true; labelUpdate.InnerText = resultObj["message"]; } } } } }
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { if (string.IsNullOrEmpty(Request.QueryString["p"])) { DataView dv = (DataView)MapDataSource.Select(new DataSourceSelectArguments()); foreach (System.Data.DataRow row in dv.Table.Rows) { dropdownCategory.Items.Add(row["Category"].ToString()); } dropdownCategory.SelectedIndex = 0; if (!string.IsNullOrEmpty(Request.QueryString["c"])) { dropdownCategory.SelectedIndex = dropdownCategory.Items.IndexOf(new ListItem(Request.QueryString["c"])); } } else { CategoryDataSource.SelectParameters.Clear(); CategoryDataSource.SelectParameters.Add("Question", Request.QueryString["p"]); DataView dv = (DataView)CategoryDataSource.Select(new DataSourceSelectArguments()); if (dv.Table.Rows.Count > 0) { labelCategory.InnerHtml = "Category: <a href='Leaderboard.aspx?c=" + dv.Table.Rows[0]["Category"] + "'>" + dv.Table.Rows[0]["Category"] + "</a> <br />Question: " + dv.Table.Rows[0]["QuestionName"]; } else { labelCategory.InnerHtml = "Question Not Found"; } } } LeaderDataSource.SelectParameters.Clear(); if (string.IsNullOrEmpty(Request.QueryString["p"])) { LeaderDataSource.SelectParameters.Add("Category", dropdownCategory.Value); } else { LeaderDataSource.SelectCommand = "SELECT* FROM ( SELECT ROW_NUMBER() OVER( ORDER BY Submission.Score DESC) AS Rank, Submission.Language AS Language, Submission.Username AS Username, Submission.Score AS Score " + "FROM Map INNER JOIN Submission ON Map.Question = Submission.Question " + "WHERE (Map.Question = @Question)) a " + "WHERE a.Username LIKE @Username"; LeaderDataSource.SelectParameters.Add("Question", Request.QueryString["p"]); } string ctrlName = Page.Request.Params.Get("__EVENTTARGET"); if (!String.IsNullOrEmpty(ctrlName) && ctrlName == "dropdownSize") { DataPager1.PageSize = Convert.ToInt32(dropdownSize.Value); } LeaderDataSource.SelectParameters.Add("Username", "%" + search.Value + "%"); ListView1.DataSource = LeaderDataSource; ListView1.DataBind(); int CurrentPage = ((DataPager1.StartRowIndex) / DataPager1.MaximumRows) + 1; recordCount.InnerHtml = "Showing " + (DataPager1.StartRowIndex + 1) + " to " + (DataPager1.StartRowIndex + DataPager1.PageSize) + " of " + DataPager1.TotalRowCount + " entries"; }
protected void Page_Load(object sender, EventArgs e) { labelMessage.InnerText = ""; if (!Page.IsPostBack) { checkboxCategory.Checked = true; DataView dv = (DataView)MapDataSource.Select(new DataSourceSelectArguments()); foreach (System.Data.DataRow row in dv.Table.Rows) { dropdownCategory.Items.Add(row["Category"].ToString()); } dropdownCategory.SelectedIndex = 0; textQcategory.Value = dropdownCategory.Value; } string ctrlName = Page.Request.Params.Get("__EVENTTARGET"); if (!String.IsNullOrEmpty(ctrlName) && ctrlName == "dropdownSize") { DataPager1.PageSize = Convert.ToInt32(dropdownSize.Value); } else if (!String.IsNullOrEmpty(ctrlName) && ctrlName == "dropdownCategory" && checkboxCategory.Checked) { textQcategory.Value = dropdownCategory.Value; } else if (!String.IsNullOrEmpty(ctrlName) && ctrlName == "checkboxCategory") { if (checkboxCategory.Checked) { textQcategory.Disabled = true; textQcategory.Value = dropdownCategory.Value; } else { textQcategory.Disabled = false; textQcategory.Value = ""; } } else if (!String.IsNullOrEmpty(ctrlName) && ctrlName == "buttonCreate") { if (textQcategory.Value != "" && textQcode.Value != "" && textQname.Value != "") { labelMessage.InnerText = createQuestion(); } else { labelMessage.InnerText = "Invalid or missing fields"; } } else if (!String.IsNullOrEmpty(ctrlName) && ctrlName == "delete") { string question = Request["__EVENTARGUMENT"]; QuestionDataSource.DeleteParameters.Clear(); QuestionDataSource.DeleteParameters.Add("Question", question); QuestionDataSource.Delete(); if (DataPager1.TotalRowCount == 1) { dropdownCategory.Items.RemoveAt(dropdownCategory.SelectedIndex); } ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "DoPostBack", "__doPostBack('dropdownCategory','')", true); } QuestionDataSource.SelectParameters.Clear(); QuestionDataSource.SelectParameters.Add("Category", dropdownCategory.Value); QuestionDataSource.SelectParameters.Add("QuestionName", "%" + search.Value + "%"); ListView1.DataSource = QuestionDataSource; ListView1.DataBind(); int CurrentPage = ((DataPager1.StartRowIndex) / DataPager1.MaximumRows) + 1; recordCount.InnerHtml = "Showing " + (DataPager1.StartRowIndex + 1) + " to " + (DataPager1.StartRowIndex + DataPager1.PageSize) + " of " + DataPager1.TotalRowCount + " entries"; }
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { if (string.IsNullOrEmpty(Request.QueryString["c"])) { Response.Redirect("Default.aspx"); } DataSourceSelectArguments args = new DataSourceSelectArguments(); MapDataSource.SelectParameters.Add("Category", Request.QueryString["c"]); DataView dvMap = (DataView)MapDataSource.Select(args); DataView dvSubmission; string score; foreach (System.Data.DataRow row in dvMap.Table.Rows) { SubmissionSource.SelectParameters.Clear(); SubmissionSource.SelectParameters.Add("Question", row["Question"].ToString()); SubmissionSource.SelectParameters.Add("Username", Membership.GetUser().UserName); dvSubmission = (DataView)SubmissionSource.Select(args); string theme = "danger"; score = ""; int value = 0; if (dvSubmission.Table.Rows.Count > 0) { score = "Score: " + dvSubmission.Table.Rows[0]["Score"].ToString() + "/100"; value = Convert.ToInt32(dvSubmission.Table.Rows[0]["Score"]); if (value == 100) { theme = "success"; } else if (value >= 50) { theme = "info"; } else { theme = "warning"; } } populate.InnerHtml += "<div class=\"col-lg-4\">" + "<div class=\"panel panel-" + theme + "\">" + "<div class=\"panel-heading\"><label>" + row["QuestionName"].ToString() + "</label></div>" + "<div class=\"panel-body\">" + "<div class=\"progress progress-striped active\">" + "<div class=\"progress-bar progress-bar-" + theme + "\" role=\"progressbar\" aria-valuenow=\"" + value + "\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"width:" + value + "%\">" + "<span class=\"sr-only\"><span>" + score + "</span>% Complete (success)</span>" + "</div>" + "</div>" + "<button onclick=\"location.href=\'Challange.aspx?p=" + row["Question"].ToString() + "'\" type=\"button\" class=\"btn btn-" + theme + "\" style=\"float:right;\">Go to Question</button>" + "<h5 style=\"font-weight:bold\">" + score + "</h5>" + "</div>" + "<div class=\"panel-footer\" style=\"overflow:hidden;\">" + "<button onclick=\"location.href=\'Leaderboard.aspx?p=" + row["Question"].ToString() + "'\" type=\"button\" class=\"btn btn-outline btn-" + theme + "\">Leaderboard</button>" + "</div>" + "</div>" + "</div>"; /* * */ } } }