public ActionResult GetSubmitDetails(long zyId, int schoolId, int gradeId, int classId) { int id = IdNamingHelper.Decrypt(IdNamingHelper.IdTypeEnum.Zy, zyId); List <dto_StudentPoint> list = B_Analyze.GetStudentPoint2(id, schoolId, gradeId, classId); List <T_User> list2 = B_User.GetClassmates(schoolId, gradeId, classId); if (list != null) { foreach (var l in list) { T_User u = list2.Find(a => a.Id == l.StudentId); if (u == null) { l.UserName = ""; l.TrueName = "试用学生"; } else { l.UserName = u.UserName; l.TrueName = u.TrueName; } l.NewId = zyId; l.ZyId = 0; list2.RemoveAll(a => a.Id == l.StudentId); } } ViewBag.List = list; ViewBag.List2 = list2.Select(a => a.UserName + "【" + a.TrueName + "】").ToList(); return(PartialView()); }
/// <summary> /// 各班级提交详情 /// </summary> /// <param name="zyId"></param> /// <returns></returns> public ActionResult SubmitDetail(long zyId) { int id = IdNamingHelper.Decrypt(IdNamingHelper.IdTypeEnum.Zy, zyId); List <dto_ClassSubmitCount> Classes = B_Analyze.GetSubmitClasses(id); if (Classes != null) { Classes.ForEach(a => { if (a.SchoolId == 0 && a.GradeId == 0 && a.ClassId == 0) { a.SchoolName = "试用学校"; a.GradeName = "试用年级"; a.ClassName = "试用班"; } else { a.SchoolName = B_BaseRedis.GetSchool(a.SchoolId).SchoolName; a.GradeName = Const.Grades[a.GradeId]; a.ClassName = a.ClassId + "班"; } }); } ViewBag.Classes = Classes; ViewBag.ZyId = zyId; return(View()); }
/// <summary> /// 选项统计 /// </summary> /// <param name="zyId"></param> /// <param name="schoolId"></param> /// <param name="gradeId"></param> /// <param name="classId"></param> /// <returns></returns> public ActionResult GetOptionBar(long zyId, int schoolId, int gradeId, int classId) { int id = IdNamingHelper.Decrypt(IdNamingHelper.IdTypeEnum.Zy, zyId); dto_Echart_Bar2 deb = B_Analyze.GetOptionSelectCount(id, schoolId, gradeId, classId); if (deb != null) { ViewBag.Category = string.Join(",", deb.category); ViewBag.AData = string.Join(",", deb.optiona); ViewBag.BData = string.Join(",", deb.optionb); ViewBag.CData = string.Join(",", deb.optionc); ViewBag.DData = string.Join(",", deb.optiond); } ViewBag.SubmitCount = B_Analyze.GetZySubmitCount(id, schoolId, gradeId, classId); return(PartialView()); }
/// <summary> /// 试题统计 /// </summary> /// <param name="zyId"></param> /// <returns></returns> public ActionResult GetQuesBar(long zyId, int schoolId, int gradeId, int classId) { int id = IdNamingHelper.Decrypt(IdNamingHelper.IdTypeEnum.Zy, zyId); dto_Echart_Bar deb = B_Analyze.GetQuesCorrectCount(id, schoolId, gradeId, classId); if (deb != null) { ViewBag.xData = string.Join(",", deb.x); ViewBag.yData = string.Join(",", deb.y); } ViewBag.ObjectiveCount = deb == null ? 0 : deb.x.Count; ViewBag.SubmitCount = B_Analyze.GetZySubmitCount(id, schoolId, gradeId, classId); ViewBag.Worst = deb == null ? "" : deb.x[deb.y.IndexOf(deb.y.Min(a => a))]; return(PartialView()); }
/// <summary> /// 提交统计 /// </summary> /// <param name="zyId"></param> /// <returns></returns> public ActionResult GetSubmitBar(long zyId, int schoolId, int gradeId, int classId) { int id = IdNamingHelper.Decrypt(IdNamingHelper.IdTypeEnum.Zy, zyId); dto_Echart_Bar deb = B_Analyze.GetStudentPoint(id, schoolId, gradeId, classId); if (deb != null) { for (int i = 0; i < deb.x.Count; i++) { if (deb.x[i] == "0") { deb.x[i] = "试用学生"; } else { string tname = B_UserRedis.GetUser(int.Parse(deb.x[i])).TrueName; deb.x[i] = string.IsNullOrEmpty(tname) ? "未设姓名" : tname; } } ViewBag.xData = string.Join(",", deb.x); ViewBag.yData = string.Join(",", deb.y); } int ObjectiveCount = JsonConvert.DeserializeObject <List <dto_ZyQuestion> >(B_ZyRedis.GetQdbZyQuesJson(id)).Count(a => Const.OBJECTIVE_QUES_TYPES.Contains(a.PTypeId)); ViewBag.ObjectiveCount = ObjectiveCount; int SubmitCount = deb == null ? 0 : deb.x.Count; ViewBag.SubmitCount = SubmitCount; double ScoreRate = 0; ScoreRate = (SubmitCount == 0 || ObjectiveCount == 0 || deb == null) ? 0 : Math.Round((deb.y.Sum(a => int.Parse(a)) * 1.0 / (ObjectiveCount * SubmitCount)), 4) * 100; ViewBag.ScoreRate = ScoreRate; dto_Zy zy = B_ZyRedis.GetZy(id); ViewBag.InTime = deb == null ? 0 : deb.o.Count(a => a <= zy.DueDate); ViewBag.OverTime = deb == null ? 0 : deb.o.Count(a => a > zy.DueDate); return(PartialView()); }
public ActionResult GetClassBar(long zyId) { int id = IdNamingHelper.Decrypt(IdNamingHelper.IdTypeEnum.Zy, zyId); dto_Echart_Bar3 deb = null; List <dto_ClassSubmitCount> Classes = B_Analyze.GetSubmitClasses(id); if (Classes != null) { deb = new dto_Echart_Bar3(); deb.data = new List <dto_Echart_Bar3_Data>(); dto_Echart_Bar3_Data debd = null; foreach (var c in Classes) { debd = new dto_Echart_Bar3_Data(); string cname = ""; if (c.SchoolId == 0 && c.GradeId == 0 && c.ClassId == 0) { cname = "试用学校试用班"; } else { cname = Const.Grades[c.GradeId] + c.ClassId + "班"; } debd.name = cname; debd.value = c.SubmitCount; deb.data.Add(debd); } } ViewBag.xData = string.Join(",", deb.data.Select(a => a.name).ToArray()); ViewBag.yData = JsonConvert.SerializeObject(deb.data); ViewBag.ClassCount = Classes.Count; ViewBag.StuCount = Classes.Sum(a => a.SubmitCount); ViewBag.ZyId = zyId; return(PartialView()); }
/// <summary> /// 提交答案 /// 仍然做各种状态判断 /// </summary> /// <param name="zyId"></param> /// <param name="questions"></param> /// <param name="answers"></param> /// <returns></returns> public JsonResult SubmitAnswer(long zyId, string questions, string answers) { dto_AjaxJsonResult <string> r = new dto_AjaxJsonResult <string>(); int id = IdNamingHelper.Decrypt(IdNamingHelper.IdTypeEnum.Zy, zyId); dto_Zy zy = B_ZyRedis.GetZy(id); //试用作业验证 if (zy.UserId == 0) { r.code = AjaxResultCodeEnum.Error; r.message = "试用作业仅用于数据展示,不允许进行操作!<br/>注册成为正式用户后即可体验所有功能!"; r.data = ""; return(Json(r)); } #region 访问权限验证 dto_AjaxJsonResult <dto_Zy> r1 = AccessJudge(UserId, zy); if (r1.code == AjaxResultCodeEnum.Error) { r.code = AjaxResultCodeEnum.Error; r.message = r1.message; r.data = ""; return(Json(r)); } #endregion //作业提交验证 T_Answer ans = B_Answer.GetAnswer(id, UserId); if (ans != null && ans.Submited) { r.code = AjaxResultCodeEnum.Error; r.message = "作业已提交,不能重复提交!"; r.data = ""; return(Json(r)); } //todo submit List <string> submitQlist = questions.Split(',').ToList(); List <string> submitAlist = string.IsNullOrEmpty(answers) ? new List <string>() : answers.Split(',').ToList(); if (submitQlist.Count != submitAlist.Count) { r.code = AjaxResultCodeEnum.Error; r.message = "试题信息有误,提交失败!"; r.data = ""; return(Json(r)); } string qjson = B_ZyRedis.GetQdbZyQuesJson(id); List <dto_ZyQuestion> ql = JsonConvert.DeserializeObject <List <dto_ZyQuestion> >(qjson); List <dto_UserAnswer> al = new List <dto_UserAnswer>(); ql.ForEach(a => { string CAnswer = ""; if (Const.OBJECTIVE_QUES_TYPES.Contains(a.PTypeId)) { if (a.QId == a.PQId) { CAnswer = B_QuesRedis.GetQuestion(zy.CourseId, a.QId).quesanswer; } else { CAnswer = B_QuesRedis.GetQuestion(zy.CourseId, a.PQId).Children.Find(b => b.id == a.QId).quesanswer; } } int i = submitQlist.IndexOf(IdNamingHelper.Encrypt(IdNamingHelper.IdTypeEnum.Ques, a.QId).ToString()); al.Add(new dto_UserAnswer() { QId = a.QId, PTypeId = a.PTypeId, Score = a.Score, Answer = (i == -1 ? "" : submitAlist[i]), CAnswer = CAnswer, Point = 0 }); }); bool isok = false; T_Answer answer = new T_Answer() { ZyId = id, ZyType = zy.Type, StudentId = UserId, Submited = true, CreateDate = DateTime.Now, AnswerJson = JsonConvert.SerializeObject(al), AnswerImg = "", Ip = ClientUtil.Ip, IMEI = ClientUtil.IMEI, MobileBrand = ClientUtil.MobileBrand, SystemType = Request.Browser.Platform.ToString(), Browser = Request.Browser.Browser.ToString() }; if (ans != null) { isok = B_Answer.UpdateAnswerJson(id, UserId, answer.AnswerJson); } else { isok = B_Answer.InsertZyAnswer(answer); } if (isok) { //写统计表 B_Analyze.GenerateAnalyze(answer); r.code = AjaxResultCodeEnum.Success; r.message = ""; r.data = ""; return(Json(r)); } else { r.code = AjaxResultCodeEnum.Error; r.message = "提交入库失败!"; r.data = ""; return(Json(r)); } }