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)); }
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)); }