/// <summary> /// Lấy điểm của học sinh trong lớp (năm học hiện tại) /// </summary> /// <param name="ClassID"></param> /// <returns></returns> public JsonResult GetStudentMark(int ClassID) { var CurrentConfig = (int)Session["ConfigID"]; var SubjectID = (int)Session["SubjectID"]; var CurrentSemester = db.context.Settings.FirstOrDefault().Semester; List <EditMark> editMarks = new List <EditMark>(); List <int> lstStudent = db.MemberRepository.GetAll() .Where(c => c.LearnStatus != LearnStatus.Finished && c.ClassID == ClassID && CurrentConfig == c.ConfigureID && c.User.Status == UserStatus.Activated) .Select(c => c.UserID).ToList(); foreach (int studentID in lstStudent) { bool HasMark = db.context.PointBoards .Any(e => e.ClassID == ClassID && e.StudentID == studentID && e.SubjectID == SubjectID && e.Semester == CurrentSemester); if (!HasMark) { Score emptyScore = new Score(); PointBoard NewMark = new PointBoard { ClassID = ClassID, Score = JsonConvert.SerializeObject(emptyScore), StudentID = studentID, SubjectID = SubjectID, ConfigureID = CurrentConfig, Semester = CurrentSemester }; db.context.PointBoards.Add(NewMark); db.SaveChanges(); } EditMark editItem = db.context.PointBoards .Where(c => c.ClassID == ClassID && c.ConfigureID == c.ConfigureID && c.Semester == CurrentSemester && c.SubjectID == SubjectID && c.StudentID == studentID) .Select(c => new EditMark { PointID = c.ID, SubjectID = c.SubjectID, StudentName = c.User.FullName, TempScore = c.Score, StudentID = c.StudentID }).First(); if (editItem.TempScore != null) { editItem.Score = JsonConvert.DeserializeObject <Score>(editItem.TempScore); editItem.TempScore = null; } editMarks.Add(editItem); } return(Json(editMarks, JsonRequestBehavior.AllowGet)); }
/// <summary> /// Xem điểm lớp mình chủ nhiệm theo học kì /// </summary> /// <param name="semester"></param> /// <returns></returns> public JsonResult GetHomeClassScoreBoard(int semester) { try { int configID = (int)Session["ConfigID"]; int UserID = (int)Session["UserID"]; var CurrentSemester = semester == 1 ? Semester.HK1 : Semester.HK2; int ClassID = db.MemberRepository .GetAll().Where(c => c.UserID == UserID && c.IsHomeTeacher == true && c.ConfigureID == configID) .First().ClassID; List <int> lstStudent = db.MemberRepository.GetAll() .Where(c => c.LearnStatus != LearnStatus.Finished && c.ClassID == ClassID && configID == c.ConfigureID) .Select(c => c.UserID).ToList(); List <MarkStudent> markList = new List <MarkStudent>(); List <int> subjectList = db.SubjectRepository.GetAll().Select(c => c.ID).ToList(); if (lstStudent.Count == 0) { return(Json(false, JsonRequestBehavior.AllowGet)); } foreach (var studentID in lstStudent) { List <SubjectScore> lstSubjectScores = new List <SubjectScore>(); foreach (var subjectID in subjectList) { SubjectScore mark = new SubjectScore(); bool HasMark = db.context.PointBoards .Any(e => e.ClassID == ClassID && e.Semester == CurrentSemester && e.StudentID == studentID && e.SubjectID == subjectID && e.ConfigureID == configID); if (HasMark) { mark = (from m in db.context.ClassMembers join p in db.context.PointBoards on m.UserID equals p.StudentID into pm from p in pm.DefaultIfEmpty() where m.UserID == studentID where m.ClassID == ClassID where p.SubjectID == subjectID where p.ConfigureID == configID where p.Semester == CurrentSemester select new SubjectScore { SubjectID = subjectID, SubjectName = p.Subject.SubjectName, TempScore = p.Score, }).First(); if (mark.TempScore != null) { mark.Score = JsonConvert.DeserializeObject <Score>(mark.TempScore); mark.TempScore = null; } } else { PointBoard NewMark = new PointBoard { ClassID = ClassID, Score = JsonConvert.SerializeObject(new Score()), StudentID = studentID, SubjectID = subjectID, ConfigureID = configID, Semester = CurrentSemester }; db.context.PointBoards.Add(NewMark); db.context.SaveChanges(); mark = (from m in db.context.ClassMembers join p in db.context.PointBoards on m.UserID equals p.StudentID into pm from p in pm.DefaultIfEmpty() where m.UserID == studentID where m.ClassID == ClassID where p.SubjectID == subjectID where p.ConfigureID == configID select new SubjectScore { SubjectID = subjectID, SubjectName = p.Subject.SubjectName, TempScore = p.Score, }).First(); if (mark.TempScore != null) { mark.Score = JsonConvert.DeserializeObject <Score>(mark.TempScore); } } lstSubjectScores.Add(mark); } string studentName = db.UserRepository.FindByID(studentID).FullName; MarkStudent itemMark = new MarkStudent { StudentID = studentID, StudentName = studentName, SubjectScores = lstSubjectScores }; markList.Add(itemMark); } return(Json(markList, JsonRequestBehavior.AllowGet)); } catch (Exception e) { return(Json(false, JsonRequestBehavior.AllowGet)); } }
/// <summary> /// Cập nhật bảng điểm /// </summary> /// <param name="ClassID"></param> /// <param name="Listmark"></param> /// <returns></returns> public JsonResult UpdateStudentMark(int ClassID, IEnumerable <EditMark> Listmark) { if (ModelState.IsValid) { var CurrentConfig = (int)Session["ConfigID"]; var SubjectID = (int)Session["SubjectID"]; var CurrentSemester = db.context.Settings.FirstOrDefault().Semester; foreach (var mark in Listmark) { bool HasMark = db.context.PointBoards .Any(e => e.ClassID == ClassID && e.StudentID == mark.StudentID && e.SubjectID == SubjectID && e.Semester == CurrentSemester); if (HasMark) { PointBoard CurrentMark = db.context.PointBoards .Where(e => e.ClassID == ClassID && e.StudentID == mark.StudentID && e.SubjectID == SubjectID && e.ConfigureID == CurrentConfig).First(); var dumpData = JsonConvert.SerializeObject(mark.Score); CurrentMark.Score = dumpData; db.context.Entry(CurrentMark).State = EntityState.Modified; db.context.SaveChanges(); } else { PointBoard NewMark = new PointBoard { ClassID = ClassID, Score = JsonConvert.SerializeObject(mark.Score), // mark.Score, StudentID = mark.StudentID, SubjectID = mark.SubjectID, ConfigureID = CurrentConfig, Semester = CurrentSemester == Semester.HK1 ? Semester.HK1 : Semester.HK2 }; db.context.PointBoards.Add(NewMark); db.SaveChanges(); } } // Đổ lại dữ liệu List <int> lstStudent = db.MemberRepository.GetAll() .Where(c => c.LearnStatus != LearnStatus.Finished && c.ClassID == ClassID && CurrentConfig == c.ConfigureID) .Select(c => c.UserID).ToList(); List <EditMark> editMarks = new List <EditMark>(); foreach (int studentID in lstStudent) { EditMark editItem = db.context.PointBoards .Where(c => c.ClassID == ClassID && c.ConfigureID == c.ConfigureID && c.Semester == CurrentSemester && c.SubjectID == SubjectID && c.StudentID == studentID) .Select(c => new EditMark { SubjectID = c.SubjectID, StudentName = c.User.FullName, TempScore = c.Score, StudentID = c.StudentID }).FirstOrDefault(); if (editItem.TempScore != null) { editItem.Score = JsonConvert.DeserializeObject <Score>(editItem.TempScore); editItem.TempScore = null; } editMarks.Add(editItem); } return(Json(new { Message = "Cập nhật thành công", Member = editMarks, Success = true }, JsonRequestBehavior.AllowGet)); } return(Json(new { Message = "Bạn nhập điểm không hợp lệ \n Điểm từ x (chưa có) và 0 đến 10", Success = false }, JsonRequestBehavior.AllowGet)); }
/// <summary> /// Lấy điểm năm học và kì học hiện tại /// </summary> /// <returns></returns> public JsonResult GetStudentPointBoard(Semester semester) { var CurrentConfig = (int)Session["ConfigID"]; var CurrentSemester = semester; var UserID = (int)Session["UserID"]; int ClassID = db.MemberRepository .GetAll().Where(c => c.UserID == UserID && c.ConfigureID == CurrentConfig && (c.LearnStatus != AdditionalDefinition.LearnStatus.Finished)) .First().ClassID; var CurrentClass = db.MemberRepository.GetAll() .Where(e => e.ConfigureID == CurrentConfig && e.UserID == UserID && e.LearnStatus == AdditionalDefinition.LearnStatus.Learning).FirstOrDefault(); List <int> subjectList = db.SubjectRepository.GetAll().Select(c => c.ID).ToList(); List <ShowMark> markList = new List <ShowMark>(); foreach (var subjectID in subjectList) { ShowMark mark = new ShowMark(); bool HasMark = db.context.PointBoards .Any(e => e.ClassID == ClassID && e.StudentID == UserID && e.SubjectID == subjectID && e.ConfigureID == CurrentConfig && e.Semester == CurrentSemester); if (HasMark) { mark = (from m in db.context.ClassMembers join p in db.context.PointBoards on m.UserID equals p.StudentID into pm from p in pm.DefaultIfEmpty() where m.UserID == UserID where m.ClassID == ClassID where p.SubjectID == subjectID where p.ConfigureID == CurrentConfig where p.Semester == CurrentSemester select new ShowMark { SubjectID = subjectID, SubjectName = p.Subject.SubjectName, TempScore = p.Score, }).First(); if (mark.TempScore != null) { mark.Score = JsonConvert.DeserializeObject <Score>(mark.TempScore); mark.TempScore = null; } } else { PointBoard NewMark = new PointBoard { ClassID = ClassID, Score = JsonConvert.SerializeObject(new Score()), StudentID = UserID, SubjectID = subjectID, ConfigureID = CurrentConfig, Semester = CurrentSemester,// == AdditionalDefinition.Semester.HK1 ? AdditionalDefinition.Semester.HK1 : AdditionalDefinition.Semester.HK2 }; db.context.PointBoards.Add(NewMark); db.context.SaveChanges(); mark = (from m in db.context.ClassMembers join p in db.context.PointBoards on m.UserID equals p.StudentID into pm from p in pm.DefaultIfEmpty() where m.UserID == UserID where m.ClassID == ClassID where p.SubjectID == subjectID where p.ConfigureID == CurrentConfig where p.Semester == CurrentSemester select new ShowMark { SubjectID = subjectID, SubjectName = p.Subject.SubjectName, TempScore = p.Score, }).First(); if (mark.TempScore != null) { mark.Score = JsonConvert.DeserializeObject <Score>(mark.TempScore); mark.TempScore = null; } } markList.Add(mark); } return(Json(markList, JsonRequestBehavior.AllowGet)); }