public async Task <IActionResult> CourseStat(int classRoomId)
        {
            var loggedInUser = await _userManager.FindByNameAsync(HttpContext.User.Identity.Name);

            var classRoom = await _context.ClassRooms
                            .Include(m => m.ClassRoomStudents)
                            .ThenInclude(m => m.Student)
                            .Where(m => m.Id == classRoomId).FirstOrDefaultAsync();

            List <EvaluateExamViewModel> evaluetedStudents = new List <EvaluateExamViewModel>();

            foreach (var student in classRoom.ClassRoomStudents)
            {
                EvaluateExamViewModel evaluateExamViewModel = new EvaluateExamViewModel();
                evaluateExamViewModel.Student   = student.Student;
                evaluateExamViewModel.StudentId = student.StudentId;

                var allAnswers = _context.StudentAnswers
                                 .Include(m => m.Question)
                                 .Include(m => m.Question.Exam)
                                 .Where(m => m.Question.Exam.ClassRoomId == classRoom.Id && m.StudentId == student.StudentId && m.Question.Exam.IsNotCountable == false)
                                 .ToList();

                var allquestions = _context.StudentQuestions
                                   .Include(m => m.Question)
                                   .Include(m => m.Question.Exam)
                                   .Where(m => m.Question.Exam.ClassRoomId == classRoom.Id && m.Question.Exam.IsNotCountable == false && m.StudentId == student.StudentId)
                                   .ToList();
                evaluateExamViewModel.ObtainedMark = (double)allAnswers.Sum(m => m.ActualObtailedMark);
                evaluateExamViewModel.ExamMark     = (double)allquestions.Sum(m => m.Question.ActualMark);
                if (evaluateExamViewModel.ExamMark == 0 && evaluateExamViewModel.ObtainedMark == 0)
                {
                    evaluateExamViewModel.PercentageMark = 0;
                    evaluateExamViewModel.GradeId        = 0;
                }
                else
                {
                    double markBeforePercentage = evaluateExamViewModel.ObtainedMark / evaluateExamViewModel.ExamMark;

                    evaluateExamViewModel.PercentageMark = markBeforePercentage * 100;
                    evaluateExamViewModel.PercentageMark = Math.Ceiling(evaluateExamViewModel.PercentageMark);

                    var allgrades = await _context.Grades.ToListAsync();

                    foreach (var grade in allgrades)
                    {
                        if (evaluateExamViewModel.PercentageMark >= grade.FromMark && evaluateExamViewModel.PercentageMark <= grade.ToMark)
                        {
                            evaluateExamViewModel.Grade   = grade;
                            evaluateExamViewModel.GradeId = grade.Id;
                        }
                    }
                }


                evaluetedStudents.Add(evaluateExamViewModel);
            }

            return(View(evaluetedStudents));
        }
        public async Task <IActionResult> EvaluateExamIndex(int?examId)
        {
            if (examId == null)
            {
                return(NotFound());
            }
            var exam = await _context.Exams
                       .Include(c => c.ClassRoom)
                       .ThenInclude(c => c.ClassRoomStudents)
                       .ThenInclude(c => c.Student)
                       .Where(m => m.Id == examId)
                       .FirstOrDefaultAsync();

            if (exam == null)
            {
                return(NotFound());
            }

            List <EvaluateExamViewModel> evaluetedStudents = new List <EvaluateExamViewModel>();

            foreach (var student in exam.ClassRoom.ClassRoomStudents)
            {
                EvaluateExamViewModel evaluateExamViewModel = new EvaluateExamViewModel();
                evaluateExamViewModel.Student   = student.Student;
                evaluateExamViewModel.StudentId = student.StudentId;

                var allAnswers = _context.StudentAnswers
                                 .Include(m => m.Question)
                                 .Where(m => m.Question.ExamId == exam.Id && m.StudentId == student.StudentId)
                                 .ToList();

                var allquestions = _context.StudentQuestions
                                   .Include(m => m.Question)
                                   .Where(m => m.Question.ExamId == exam.Id && m.StudentId == student.StudentId)
                                   .ToList();
                evaluateExamViewModel.ObtainedMark = (double)allAnswers.Sum(m => m.ActualObtailedMark);
                evaluateExamViewModel.ExamMark     = (double)allquestions.Sum(m => m.Question.ActualMark);
                var unSavedAnswer = allAnswers.Where(m => m.Status == 0).FirstOrDefault();
                if (unSavedAnswer == null && allAnswers.Count != 0)
                {
                    evaluateExamViewModel.Status = 1;
                }
                else if (allAnswers.Count == 0)
                {
                    evaluateExamViewModel.Status = 404;
                }
                else
                {
                    evaluateExamViewModel.Status = 0;
                }
                evaluetedStudents.Add(evaluateExamViewModel);
            }

            var questionTypes = await _context.QuestionTypes.ToListAsync();

            ViewData["ExamId"] = examId;
            return(View(evaluetedStudents));
        }
Пример #3
0
        public async Task <IActionResult> ViewStudentResult(int id)
        {
            var loggedInUser = await _userManager.FindByNameAsync(HttpContext.User.Identity.Name);

            if ((await _userManager.IsInRoleAsync(loggedInUser, "Student")))
            {
                var student = await _context.Students.Where(m => m.ApplicationUserId == loggedInUser.Id).FirstOrDefaultAsync();

                id = student.Id;
            }
            var classRooms = await _context.ClassRoomStudents
                             .Include(m => m.ClassRoom)
                             .Include(m => m.ClassRoom.Course)
                             .Include(m => m.ClassRoom.Teacher)
                             .Include(m => m.ClassRoom.Section)
                             .Where(m => m.StudentId == id && m.ClassRoom.AcademicSession.Status == 1)
                             .ToListAsync();

            var resultStudent = await _context.Students.Where(m => m.Id == id).FirstOrDefaultAsync();

            List <EvaluateExamViewModel> evaluetedStudents = new List <EvaluateExamViewModel>();

            foreach (var classRoom in classRooms)
            {
                EvaluateExamViewModel evaluateExamViewModel = new EvaluateExamViewModel();
                evaluateExamViewModel.Course   = classRoom.ClassRoom.Course;
                evaluateExamViewModel.CourseId = classRoom.ClassRoom.CourseId;

                var allAnswers = _context.StudentAnswers
                                 .Include(m => m.Question)
                                 .Include(m => m.Question.Exam)
                                 .Where(m => m.Question.Exam.ClassRoomId == classRoom.ClassRoom.Id && m.Question.Exam.IsNotCountable == false && m.StudentId == id)
                                 .ToList();

                var allquestions = _context.StudentQuestions
                                   .Include(m => m.Question)
                                   .Include(m => m.Question.Exam)
                                   .Where(m => m.Question.Exam.ClassRoomId == classRoom.ClassRoom.Id && m.Question.Exam.IsNotCountable == false && m.StudentId == id)
                                   .ToList();
                evaluateExamViewModel.ObtainedMark = (double)allAnswers.Sum(m => m.ActualObtailedMark);
                evaluateExamViewModel.ExamMark     = (double)allquestions.Sum(m => m.Question.ActualMark);
                if (evaluateExamViewModel.ExamMark == 0 && evaluateExamViewModel.ObtainedMark == 0)
                {
                    evaluateExamViewModel.PercentageMark = 0;
                    evaluateExamViewModel.GradeId        = 0;
                }
                else
                {
                    double markBeforePercentage = evaluateExamViewModel.ObtainedMark / evaluateExamViewModel.ExamMark;

                    evaluateExamViewModel.PercentageMark = markBeforePercentage * 100;
                    evaluateExamViewModel.PercentageMark = Math.Ceiling(evaluateExamViewModel.PercentageMark);

                    var allgrades = await _context.Grades.ToListAsync();

                    foreach (var grade in allgrades)
                    {
                        if (evaluateExamViewModel.PercentageMark >= grade.FromMark && evaluateExamViewModel.PercentageMark <= grade.ToMark)
                        {
                            evaluateExamViewModel.Grade   = grade;
                            evaluateExamViewModel.GradeId = grade.Id;
                        }
                    }
                }


                evaluetedStudents.Add(evaluateExamViewModel);
            }
            ViewData["Student"] = resultStudent;
            return(View(evaluetedStudents));
        }