using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using EMISOnline.CommonLogic.ExamServices;
using EMISOnline.ViewModel.ExamView;
using Bowin.Web.Controls.Mvc;
using System.Web.Script.Serialization;
using EMISOnline.ViewModel;
using System.Data;
using System.Collections;
namespace EMISOnline.Web.Controllers.Manage
{
[Authorization]
public class PaperSettingController : Controller
{
public IExamPaperServices IExamPaperServices { get; set; }
public IQuestionServices IQuestionServices { get; set; }
//
// GET: /PaperSetting/
public ActionResult PaperList()
{
return View();
}
///
/// 列表查询
///
///
///
[HttpPost]
public ActionResult List(string PaperName, int page, int rows)
{
var result = IExamPaperServices.ListPaper(page, rows, PaperName);
return Json(result);
}
public ActionResult PageSetupOne(decimal? paperid)
{
PaperAddView view = new PaperAddView();
if (paperid.HasValue)
{
var paper = IExamPaperServices.GetPaperByPaperID(paperid.Value);
view.QuesLevelBeg = paper.difficulty_degree_minvalue.ToString();
view.QuesLevelEnd = paper.difficulty_degree_maxvalue.ToString();
view.UseFBeg = paper.used_count_min.ToString();
view.UseFEnd = paper.used_count_max.ToString();
//paper.distributing_option = Convert.ToInt32(this.rblDis.SelectedValue);
view.ErrRate = paper.error_percent.ToString();
view.IsEnable = paper.is_vaild == true ? "1" : "0";
view.PageName = paper.PaperName;
SetQuesChooseSort(paper.Prority.ToString(), view);
view.LibarysString = TransStringToJson(paper.note);
view.PageType = paper.is_dynamic ? "1" : "0";
view.QuestionTypeString = paper.question_setting;
}
return View(view);
}
private string TransStringToJson(string LibarysString)
{
try
{
var libs = LibarysString.Split(',');
var datas = new ArrayList();
foreach (string lib in libs)
{
var items = lib.Split('|');
datas.Add(new { Libaryid = items[0], Name = items[1], Number = items[2] });
}
var json = new JavaScriptSerializer();
return json.Serialize(datas);
}
catch (Exception ex)
{
return LibarysString;
}
}
///
/// 设置优先级的checkbox值
///
///
private void SetQuesChooseSort(string sort_value, PaperAddView view)
{
switch (sort_value)
{
case "0":
view.QuesFCount = false;
view.QuesUpdateTime = false;
break;
case "1":
view.QuesFCount = true;
view.QuesUpdateTime = false;
break;
case "2":
view.QuesFCount = false;
view.QuesUpdateTime = true;
break;
case "3":
view.QuesFCount = true;
view.QuesUpdateTime = true;
break;
default:
break;
}
}
public ActionResult PageTransfer(decimal paperid, string ac, string is_dynamic)
{
if (is_dynamic == "静态")
{
return RedirectToAction("PageSetupTwo", new { paperid = paperid, ac = ac });
}
return RedirectToAction("PageSetupOne", new { paperid = paperid, ac = ac });
}
public ActionResult PageSetupTwo(string ac, decimal paperid)
{
ViewBag.PervStepVisible = ac != "edit";
ViewBag.paperid = paperid;
ViewBag.Action = ac;
if (ac == "edit")
{
var paper = IExamPaperServices.GetPaperByPaperID(paperid);
ViewBag.hid_Dynamic = paper.is_dynamic ? "1" : "0";
ViewBag.hid_Setting = paper.note;
}
else
{
PageSetupParam psp = Session["PageSetupParam"] as PageSetupParam;
ViewBag.hid_Dynamic = psp.PageType;
ViewBag.hid_Setting = psp.QuesSetting;
}
return View();
}
public ActionResult QuestionLibaryTree()
{
return View();
}
public ActionResult ListQuesLibTree()
{
List list = IQuestionServices.ListQuesLibTreeStu();
return base.Json(list, JsonRequestBehavior.AllowGet);
}
public JsonResult ArrangePaper(PaperAddView PaperAdd)
{
var json = new JavaScriptSerializer();
var libarys = json.Deserialize>(PaperAdd.LibarysString);
var data = IExamPaperServices.CountQuesSumByCondition(libarys.Select(q => q.Libaryid).ToList(), decimal.Parse(PaperAdd.QuesLevelBeg ?? "0"), decimal.Parse(PaperAdd.QuesLevelEnd ?? "0"), decimal.Parse(PaperAdd.ErrRate ?? "0"), int.Parse(PaperAdd.UseFBeg ?? "0"), int.Parse(PaperAdd.UseFEnd ?? "0"));
return Json(data, JsonRequestBehavior.AllowGet);
}
[HttpPost]
public ActionResult PageSetupOne(PaperAddView PaperAdd)
{
try
{
string url = "~/PaperSetting/PageSetupTwo?ac=add&paperid=" + PaperAdd.PaperID;
if (PaperAdd.PageType == "0")
{
var psp = IExamPaperServices.SetPageSetupCondition(PaperAdd);
Session["PageSetupParam"] = psp;
Session["quesDt"] = null;
}
else
{
var user = ((EMISOnline.Utility.FormValidate.CustomPrincipal)HttpContext.User);
IExamPaperServices.ExamPaperSave(PaperAdd, user.LoginID);
url = "~/PaperSetting/PaperList";
}
return Json(new ReturnMessage()
{
IsSuccess = true,
Message = "保存成功!",
RedictUrl = Url.Content(url)
});
}
catch (Exception ex)
{
return Json(new ReturnMessage()
{
IsSuccess = false,
Message = "保存失败:" + ex.Message
});
}
}
[HttpPost]
public ActionResult PageSetupTwo(string ac, decimal paperid, string hid_Setting, string hid_pageSetting)
{
try
{
PageSetupParam psp = Session["PageSetupParam"] as PageSetupParam;
if (ac == "edit")
{
IExamPaperServices.PaperEdit(paperid, hid_pageSetting);
}
else if (ac == "add")
{
var user = ((EMISOnline.Utility.FormValidate.CustomPrincipal)HttpContext.User);
IExamPaperServices.AddPaperDetail(psp, hid_pageSetting, user.LoginID);
}
Session["PageSetupParam"] = null;
Session["quesDt"] = null;
Session["SelectKey"] = null;
return Json(new ReturnMessage()
{
IsSuccess = true,
Message = "保存成功!",
RedictUrl = "/PaperSetting/PaperList"
});
}
catch (Exception ex)
{
return Json(new ReturnMessage()
{
IsSuccess = false,
Message = "保存失败:" + ex.Message
});
}
}
public JsonResult GetPaperList(decimal paperid, string ac)
{
DataTable quesDt = new DataTable();
if (ac == "edit")
{
quesDt = IExamPaperServices.GetQuestionByPaperID(paperid);
}
else if (ac == "add")
{
PageSetupParam psp = Session["PageSetupParam"] as PageSetupParam;
quesDt = IExamPaperServices.GetQuestionByParam(psp);
}
//暂存到ViewState
Session["quesDt"] = quesDt;
var Serializer = new JavaScriptSerializer();
var json = DataTable2Json(quesDt);
var source = Serializer.Deserialize(json);
return Json(source, JsonRequestBehavior.AllowGet);
}
public JsonResult DeleteQuestion(string QuestionIDstr)
{
DataTable quesDt = Session["quesDt"] as DataTable;
DataTable newDt = quesDt.Clone();
var QuestionIDs = QuestionIDstr.Split(',');
foreach (DataRow dr in quesDt.Rows)
{
if (!QuestionIDs.Contains(dr["test_question_Id"].ToString()))
{
newDt.Rows.Add(dr.ItemArray);
}
}
Session["quesDt"] = newDt;
var Serializer = new JavaScriptSerializer();
var json = DataTable2Json(newDt);
var source = Serializer.Deserialize(json);
return Json(source, JsonRequestBehavior.AllowGet);
}
public ActionResult ShowPaper(decimal paperid)
{
ViewBag.questions = IExamPaperServices.GetPaperQuestions(paperid);
return View();
}
public string DataTable2Json(System.Data.DataTable dt)
{
System.Text.StringBuilder jsonBuilder = new System.Text.StringBuilder();
jsonBuilder.Append("{");
jsonBuilder.AppendFormat("\"total\":{0}, ", dt.Rows.Count);
jsonBuilder.Append("\"rows\":[ ");
for (int i = 0; i < dt.Rows.Count; i++)
{
jsonBuilder.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
jsonBuilder.Append("\"");
jsonBuilder.Append(dt.Columns[j].ColumnName);
jsonBuilder.Append("\":\"");
jsonBuilder.Append(dt.Rows[i][j].ToString().Replace("\"", "\\\""));
jsonBuilder.Append("\",");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("},");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("]");
jsonBuilder.Append("}");
return jsonBuilder.ToString().Replace("\r", "").Replace("\n", "");
}
}
public class DataGridView
{
public int total { get; set; }
public List rows { get; set; }
}
public class QuestionRowView
{
public decimal test_question_Id { get; set; }
public string content { get; set; }
public decimal base_question_type_id { get; set; }
public string question_type { get; set; }
public string created_date { get; set; }
public decimal score { get; set; }
public decimal difficulty_degree { get; set; }
public int used_count { get; set; }
public string created_by { get; set; }
}
}