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); }
public ActionResult Quiz(String id) { GameModel gm = new GameModel(); Quiz quiz = new Quiz(); //kijk of de quiz gegeven is, anders gaan we de status aanpassen naar "no quiz given" int quizId; try { quizId = int.Parse(id); try { quiz.Quiz_Id = quizId; quiz = gm.getQuiz(quiz); ViewBag.status = "success"; ViewBag.quizName = quiz.name; ViewBag.quizId = quiz.Quiz_Id; } catch (Exception e) { Console.WriteLine(e); ViewBag.status = "no quiz given"; ViewBag.quizName = "No Quiz found..."; } } catch (Exception e) { //als we hier terechtkomen is de id een textuele string (bv. "abc") try { quiz.code = id; quiz = gm.getQuizByCode(quiz); ViewBag.status = "success"; ViewBag.quizName = quiz.name; ViewBag.quizId = quiz.Quiz_Id; } catch (Exception ex) { Console.WriteLine(ex); //probeer op naam te zoeken (kleine kans, maar vergroot UX) try { quiz.name = id; quiz = gm.getQuizByName(quiz); ViewBag.status = "success"; ViewBag.quizName = quiz.name; ViewBag.quizId = quiz.Quiz_Id; } catch (Exception exc) { Console.WriteLine(exc); ViewBag.status = "no quiz given"; ViewBag.quizName = "No Quiz found..."; } } } //get the results List<CompleteResult> results = new List<CompleteResult>(); try { List<Result> resultsByQuiz = gm.getAllResultsByQuiz(quiz); foreach (Result r in resultsByQuiz) { results.Add(new CompleteResult(r)); } ViewBag.status = "success"; } catch (Exception e) { ViewBag.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; //add the leader to list leaders.Add(l); } leaders = leaders.OrderByDescending(l => l.score).ToList<Leader>(); return View(leaders); }
public ActionResult Index() { GameModel gm = new GameModel(); //get the results List<CompleteResult> results = new List<CompleteResult>(); try { List<Result> res = gm.getAllResults(); foreach (Result r in res) { results.Add(new CompleteResult(r)); } ViewBag.status = "success"; } catch (Exception e) { ViewBag.status = "error"; } //create a leader per quiz 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 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>(); //filter results by quiz List<int> quizzes = results.Select(r => r.quiz.Quiz_Id).Distinct().ToList<int>(); for (int j = 0; j < quizzes.Count(); j++) { List<CompleteResult> crByUserQuiz = new List<CompleteResult>(); Quiz q = new Quiz(); q.Quiz_Id = quizzes[j]; q = gm.getQuiz(q); crByUserQuiz = crByUser.Where(x => x.quiz.Quiz_Id == q.Quiz_Id).ToList<CompleteResult>(); //calculate the values int rightAnswers = 0; int questions = crByUserQuiz.Select(r => r.question.Question_Id).Distinct().Count(); foreach (CompleteResult cr in crByUserQuiz) { 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 = q; //add the leader to list leaders.Add(l); } } leaders = leaders.OrderBy(l => l.quiz.Quiz_Id).ThenByDescending(l => l.score).ToList<Leader>(); return View(leaders); }