public async Task <IActionResult> GetAllQuizResult(QuizResultDto model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var createdObjId = await _repo.GetAllQuizResult(model); return(Ok(new { createdQuizId = createdObjId })); }
public async Task <ServiceResponse <object> > GetAllQuizResult(QuizResultDto model) { DateTime FromDate = DateTime.ParseExact(model.FromDate, "MM/dd/yyyy", null); DateTime ToDate = DateTime.ParseExact(model.ToDate, "MM/dd/yyyy", null); var Students = await(from u in _context.Users join submission in _context.QuizSubmissions on u.Id equals submission.UserId join quiz in _context.Quizzes on submission.QuizId equals quiz.Id where u.SchoolBranchId == _LoggedIn_BranchID select new StudentQuizResultForListDto { StudentId = u.Id, StudentName = u.FullName, QuizId = submission.QuizId, }).ToListAsync(); foreach (var item in Students) { item.QuizList.AddRange(await(from quiz in _context.Quizzes join std in Students on quiz.Id equals std.QuizId join subject in _context.Subjects on quiz.SubjectId equals subject.Id join classSection in _context.ClassSections on quiz.ClassSectionId equals classSection.Id orderby quiz.Id descending select new QuizResultForListDto { QuizId = quiz.Id, QuizDate = DateFormat.ToDate(quiz.QuizDate.ToString()), TeacherName = quiz.user.FullName, NoOfQuestions = Convert.ToInt32(quiz.NoOfQuestions), IsPosted = quiz.IsPosted, SubjectId = quiz.SubjectId, SubjectName = subject.Name, ClassSectionId = quiz.ClassSectionId, ClassName = _context.Class.FirstOrDefault(m => m.Id == classSection.ClassId).Name, SemesterName = _context.Semesters.FirstOrDefault(m => m.Id == classSection.SemesterId).Name, SectionName = _context.Sections.FirstOrDefault(m => m.Id == classSection.SectionId).SectionName, QuestionCount = _context.QuizQuestions.Where(n => n.QuizId == quiz.Id).Count(), TotalMarks = _context.QuizQuestions.Where(n => n.QuizId == quiz.Id).Select(m => m.Marks.Value).Sum(), ObtainedMarks = _context.QuizSubmissions.Where(n => n.QuizId == quiz.Id).Select(m => m.ResultMarks).Sum() }).ToListAsync()); } //if (model.QuizId > 0) //{ // List = await (from quiz in _context.Quizzes // join question in _context.QuizQuestions // on quiz.Id equals question.QuizId // where quiz.SchoolBranchId == _LoggedIn_BranchID // && quiz.Id == model.QuizId // group question by new { question.QuizId } into g // select new QuizResultForAllListDto // { // QuizId = g.Key.QuizId, // TotalMarks = g.Sum(m => m.Marks.Value), // TotalQuestions = g.Count() // }).ToListAsync(); //} //else //{ // List = await (from quiz in _context.Quizzes // join question in _context.QuizQuestions // on quiz.Id equals question.QuizId // where quiz.SchoolBranchId == _LoggedIn_BranchID // && quiz.QuizDate.Value.Date >= FromDate.Date && quiz.QuizDate.Value.Date <= ToDate.Date // && quiz.SubjectId == model.SubjectId // group question by new { question.QuizId } into g // select new QuizResultForAllListDto // { // QuizId = g.Key.QuizId, // TotalMarks = g.Sum(m => m.Marks.Value), // TotalQuestions = g.Count() // }).ToListAsync(); //} //foreach (var item in List) //{ // decimal CorrectAnswers = (from sub in _context.QuizSubmissions // where sub.QuizId == item.QuizId // && sub.IsCorrect == true // select sub).ToList().Count(); // item.Result = (CorrectAnswers / item.TotalQuestions) * 100; //} _serviceResponse.Data = Students; _serviceResponse.Success = true; return(_serviceResponse); }