public async Task <ActionResult <StudentQuiz> > Post(StudentQuiz StudentQuiz)
        {
            _db.StudentQuizs.Update(StudentQuiz);
            await _db.SaveChangesAsync();

            return(CreatedAtAction(nameof(GetSingle), new { id = StudentQuiz.Id }, StudentQuiz));
        }
示例#2
0
        //QUIZ PAGE FUNCTIONS
        public void PublishQuiz(string quizName, string name)
        {
            using (var db = new QuizBucketContext())
            {
                if (quizName != null)
                {
                    var selectedQuiz     = db.Quizzes.Where(q => q.QuizName == quizName).FirstOrDefault();
                    var assignedStudents =
                        from teacher in db.Teachers
                        join studentTeacher in db.StudentTeachers on teacher.TeacherId equals studentTeacher.TeacherId
                        join student in db.Students on studentTeacher.StudentId equals student.StudentId
                        where teacher.TeacherName == name
                        select student.StudentId;

                    foreach (var item in assignedStudents)
                    {
                        var AssignQuiz = new StudentQuiz
                        {
                            QuizId    = selectedQuiz.QuizId,
                            StudentId = item
                        };
                        db.StudentQuizzes.Add(AssignQuiz);
                    }
                    db.SaveChanges();
                }
                //else if (quizName == null)
                //{
                //    throw new Exception("Please select a quiz to publish.");
                //}
            }
        }
        public async Task <bool> UpdateStudentQuiz(StudentQuiz studentQuiz)
        {
            using (var context = new AssessmentToolContext())
            {
                context.Entry(studentQuiz).State = System.Data.Entity.EntityState.Modified;

                return(await context.SaveChangesAsync() > 0);
            }
        }
        public async Task <bool> NewStudentQuiz(StudentQuiz studentQuiz)
        {
            using (var context = new AssessmentToolContext())
            {
                context.StudentQuizzes.Add(studentQuiz);

                return(await context.SaveChangesAsync() > 0);
            }
        }
        public async Task <IActionResult> Put(long id, StudentQuiz StudentQuiz)
        {
            if (id != StudentQuiz.Id)
            {
                return(BadRequest());
            }

            _db.Entry(StudentQuiz).State = EntityState.Modified;
            await _db.SaveChangesAsync();

            return(NoContent());
        }
        private void BarCodeScanner(StudentQuiz SQ)
        {
            System.Diagnostics.Debug.WriteLine(SQ.Id);

            /*     var mainView = (MainView)Application.Current.MainPage;
             *   var loginPage = (NavigationPage)mainView.Detail;
             *
             *   var LoginView = loginPage.CurrentPage as
             *  LoginView;
             *   if (LoginView == null)
             *   {
             *       LoginView = new LoginView();
             *
             *       await loginPage.PushAsync(LoginView);
             *   }*/
        }
        public async Task <ActionResult> Attempt(AttemptQuizViewModel model)
        {
            var quiz = QuizzesService.Instance.GetQuiz(model.QuizID);

            if (quiz == null)
            {
                return(HttpNotFound());
            }

            StudentQuiz studentQuiz = new StudentQuiz();

            studentQuiz.StudentID  = User.Identity.GetUserId();
            studentQuiz.QuizID     = quiz.ID;
            studentQuiz.StartedAt  = DateTime.Now;
            studentQuiz.ModifiedOn = DateTime.Now;

            if (await StudentQuizzesService.Instance.NewStudentQuiz(studentQuiz))
            {
                model.QuizType       = quiz.QuizType;
                model.StudentQuizID  = studentQuiz.ID;
                model.TotalQuestions = quiz.Questions.Count;
                model.Question       = quiz.Questions.FirstOrDefault();
                model.QuestionIndex  = 0;

                model.Options = new List <Option>();
                model.Options.AddRange(model.Question.Options);
                model.Options.Shuffle();

                model.EnableQuestionTimer = quiz.EnableQuestionTimer;
                model.Seconds             = Calculator.CalculateAllowedQuestionTime(quiz);

                return(PartialView("_QuizQuestion", model));
            }
            else
            {
                return(new HttpStatusCodeResult(500));
            }
        }
        public ActionResult CalculateMarks(int[] Choices, List <Question> question, int quizId)
        {
            var quiz        = new StudentQuiz();
            var store       = new UserStore <ApplicationUser>(db);
            var userManager = new UserManager <ApplicationUser>(store);

            quiz.Student   = userManager.FindByNameAsync(User.Identity.Name).Result;
            quiz.StudentId = User.Identity.GetUserId();

            int i = 0;

            int    totalMarks       = db.Quiz.Where(x => x.QuizId == quizId).Single().Score;
            double marksPerQuestion = totalMarks / question.Count();
            double obtainedMarks    = 0;

            foreach (var item in question)
            {
                var q = db.Questions.Include(y => y.AnswerChoices).Where(x => x.QuestionId == item.QuestionId).Single();
                foreach (var choice in q.AnswerChoices)
                {
                    if (choice.IsCorrect == true)
                    {
                        if (Choices[i] == choice.AnswerChoiceId)
                        {
                            obtainedMarks += marksPerQuestion;
                        }
                    }
                }
                i++;
            }
            quiz.QuizId = quizId;
            quiz.Quiz   = db.Quiz.Where(x => x.QuizId == quizId).Single();
            quiz.Marks  = obtainedMarks;
            db.StudentQuiz.Add(quiz);
            db.SaveChanges();
            ViewData["marks"] = obtainedMarks;
            return(View());
        }
        public ActionResult TakeQuiz(List <QuizTakingVM> examTakingModels, int?quizId)
        {
            if (quizId == null)
            {
                return(HttpNotFound());
            }

            var quiz        = new StudentQuiz();
            var store       = new UserStore <ApplicationUser>(db);
            var userManager = new UserManager <ApplicationUser>(store);

            quiz.Student   = userManager.FindByNameAsync(User.Identity.Name).Result;
            quiz.StudentId = User.Identity.GetUserId();

            int    totalMarks       = db.Quiz.Where(x => x.QuizId == quizId).Single().Score;
            double marksPerQuestion = totalMarks / examTakingModels.Count();

            double obtainedMarks = 0;

            foreach (var examModel in examTakingModels)
            {
                if (examModel.Question.AnswerChoices.Where(ans => ans.AnswerChoiceId == examModel.Choice).SingleOrDefault().IsCorrect == true)
                {
                    obtainedMarks += marksPerQuestion;
                }
            }

            quiz.QuizId = quizId.Value;
            quiz.Quiz   = db.Quiz.Where(x => x.QuizId == quizId).Single();
            quiz.Marks  = obtainedMarks;

            db.StudentQuiz.Add(quiz);
            db.SaveChanges();

            ViewData["marks"] = obtainedMarks;

            return(RedirectToAction("QuizHistory"));
        }
示例#10
0
        public async Task <ActionResult> Attempt(AttemptQuizViewModel model)
        {
            var quiz = await db.Quizzes.FindAsync(model.QuizID);

            if (quiz == null || !quiz.IsActive)
            {
                return(HttpNotFound());
            }

            if (quiz.Questions.Count == 0)
            {
                return(HttpNotFound());
            }

            StudentQuiz studentQuiz = new StudentQuiz();

            studentQuiz.StudentID  = User.Identity.GetUserId();
            studentQuiz.Quiz       = quiz;
            studentQuiz.StartedAt  = DateTime.Now;
            studentQuiz.IsActive   = true;
            studentQuiz.ModifiedOn = DateTime.Now;

            db.StudentQuizzes.Add(studentQuiz);
            await db.SaveChangesAsync();

            model.StudentQuizID  = studentQuiz.ID;
            model.TotalQuestions = quiz.Questions.Count;
            model.Question       = quiz.Questions.Where(q => q.IsActive).FirstOrDefault();
            model.QuestionIndex  = 0;

            model.Options = new List <Option>();
            model.Options.AddRange(model.Question.Options.Where(q => q.IsActive));
            model.Options.Shuffle();

            return(PartialView("QuizQuestion", model));
        }
示例#11
0
        public ActionResult TakeQuiz(int id)
        {
            var quiz   = _context.TQuizz.Include(r => r.Questions).FirstOrDefault(q => q.QuizId == id);
            var userId = User.Identity.GetUserId();

            if (quiz == null || userId == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            var checkIfExits = _context.TStudentQuiz.FirstOrDefault(r => r.StudentId == userId && r.QuizId == quiz.QuizId);

            if (checkIfExits != null)
            {
                return(RedirectToAction("Index", "Home"));
            }
            else
            {
                var LoadQuiz = new StudentQuiz()
                {
                    QuizId    = quiz.QuizId,
                    StudentId = userId,
                    StartTime = DateTime.Now
                };
                _context.TStudentQuiz.Add(LoadQuiz);
                _context.SaveChanges();

                var listQuiz  = new List <StudentQuizQuestion>();
                var questions = quiz.Questions;

                foreach (var q in questions)
                {
                    var addQuestion = new StudentQuizQuestion
                    {
                        StudentQuizId = LoadQuiz.StudentQuizId,
                        QuestionId    = q.QuestionId
                    };

                    listQuiz.Add(addQuestion);
                    _context.TStudentQuizQuestion.Add(addQuestion);
                    _context.SaveChanges();
                }
                // random listQuiz
                Random random      = new Random();
                var    ListaRandom = listQuiz.OrderBy(x => random.Next()).ToList();

                for (int i = 0; i < ListaRandom.Count; i++)
                {
                    try
                    {
                        ListaRandom[i].NextStudentQuestionId = ListaRandom[i + 1].StudentQuizQuestionId;
                    }
                    catch (ArgumentOutOfRangeException)
                    {
                        //expected exception
                    }
                }
                _context.SaveChanges();
                return(RedirectToAction("QuizQuestion", new { id = ListaRandom.First().StudentQuizQuestionId }));
            }
        }