/// <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));
        }
Exemple #2
0
        /// <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));
            }
        }
Exemple #3
0
        /// <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));
        }