Esempio n. 1
0
        public async Task <IActionResult> GetAllQuizResult(QuizResultDto model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var createdObjId = await _repo.GetAllQuizResult(model);

            return(Ok(new { createdQuizId = createdObjId }));
        }
Esempio n. 2
0
        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);
        }