Ejemplo n.º 1
0
        public ActionResult Start(String id)
        {
            List<Round> rounds = new List<Round>();

            if (id != null)
            {
                GameModel gm = new GameModel();
                Quiz quiz = selectQuiz(id);
                rounds = gm.getAllRounds(quiz);

                // ronden in sessie zetten, zodat een gebruiker niet via javascript (jquery call) een andere quiz kan starten
                Session["roundsManaging"] = rounds;
                ViewBag.quizName = quiz.name;
                ViewBag.status = "success";
            }
            else { ViewBag.status = "error"; }

            return View(rounds);
        }
Ejemplo n.º 2
0
        public ActionResult Detail(FormCollection f)
        {
            GameModel gm = new GameModel();
            Quiz quiz = new Quiz();

            // the return values
            var status = new Dictionary<string, string> { };

            try
            {
                //to check if the round really exists
                int quizId = int.Parse(f["quizId"]);
                try
                {
                    quiz.Quiz_Id = quizId;
                    quiz = gm.getQuiz(quiz);
                    status.Add("status", "success");
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    status.Add("status", "error - no quiz given");
                }
            }
            catch (Exception e)
            {
                //als we hier terechtkomen is de id een textuele string (bv. "abc")
                Console.WriteLine(e);
                status.Add("status", "error - quiz not found");
            }

            //get the rounds
            List<Round> rounds = new List<Round>();
            try { rounds = gm.getAllRounds(quiz); }
            catch (Exception e) { status["status"] = "error - rounds not found"; }

            //get the results
            List<CompleteResult> results = new List<CompleteResult>();
            try
            {
                List<Result> resultsByRound = gm.getAllResultsByRound(rounds.First());
                foreach (Result r in resultsByRound)
                {
                    results.Add(new CompleteResult(r));
                }
                status["status"] = "success";
            }
            catch (Exception e)
            {
                status["status"] = "error";
            }

            List<Leader> leaders = new List<Leader>();

            //select all unique players
            List<int> users = results.Select(r => r.user.User_Id).Distinct().ToList<int>();
            for (int i = 0; i < users.Count(); i++)
            {
                //filter results by current user
                List<CompleteResult> crByUser = new List<CompleteResult>();
                UserModel um = new UserModel();
                User u = um.getUser(users[i]);
                crByUser = results.Where(r => r.user.User_Id == u.User_Id).ToList<CompleteResult>();

                //calculate the values
                int rightAnswers = 0;
                int questions = crByUser.Select(r => r.question.Question_Id).Distinct().Count();
                foreach (CompleteResult cr in crByUser)
                {
                    if (cr.answer.Answer_value == 1) rightAnswers++;
                }
                int score = (int)Math.Round(((double)rightAnswers / questions) * 100);

                //create the leader
                Leader l = new Leader();
                l.score = score;
                l.goodAnswers = rightAnswers;
                l.questions = questions;
                l.user = u;
                l.quiz = quiz;
                l.round = rounds.First();

                //add the leader to list
                leaders.Add(l);

            }

            status.Add("data", leaders.ToString());

            return Json(status, JsonRequestBehavior.AllowGet);
        }