示例#1
0
        public void UpdateCurrentState(ContextStateType state)
        {
            using (var db = new QuizWebAppDb())
            {
                var context = db.Contexts.First();
                context.CurrentState = state;

                // if change state to "3:show answer", judge to all players.
                if (state == ContextStateType.ShowCorrectAnswer)
                {
                    var answers = db
                                  .Answers
                                  .Where(a => a.QuestionID == context.CurrentQuestionID)
                                  .ToList();
                    var currentQuestion = db.Questions.Find(context.CurrentQuestionID);

                    answers
                    .ForEach(a => a.Status =
                                 a.ChoosedOptionIndex == currentQuestion.IndexOfCorrectOption
                            ? AnswerStateType.Correct : AnswerStateType.Incorrect);
                }

                db.SaveChanges();
            }

            Clients.All.CurrentStateChanged(state.ToString());
        }
        public static bool IsAllow(HttpContextBase httpContext)
        {
            var userIdentity = httpContext.User.Identity;

            if (userIdentity.IsAuthenticated == false)
            {
                return(false);
            }

            // If no configuration about Quiz Master,
            // then all users can be Quiz Master.
            var setting = JsonAppSettings.AsDictionary("QuizMaster");

            if (setting == null)
            {
                return(true);
            }

            using (var db = new QuizWebAppDb())
            {
                var userInfo = db.Users.Find(userIdentity.UserId());
                if (userInfo == null)
                {
                    return(false);
                }

                return
                    (setting["idProviderName"] == userInfo.IdProviderName &&
                     setting["name"] == userInfo.Name);
            }
        }
示例#3
0
        public void PlayerSelectedOptionIndex(int answerIndex)
        {
            using (var db = new QuizWebAppDb())
            {
                var playerId   = Context.User.Identity.UserId();
                var questionId = db.Contexts.First().CurrentQuestionID;
                var ansewer    = db.Answers.First(a => a.PlayerID == playerId && a.QuestionID == questionId);
                ansewer.ChoosedOptionIndex = answerIndex;
                ansewer.Status             = AnswerStateType.Pending;/*entried*/

                db.SaveChanges();
            }

            Clients.Others.PlayerSelectedOptionIndex();
        }
示例#4
0
 public ActionResult SignOut()
 {
     if (this.User.Identity.IsAuthenticated)
     {
         using (var db = new QuizWebAppDb())
         {
             var userInfo = db.Users.Find(this.User.Identity.UserId());
             if (userInfo != null)
             {
                 userInfo.AttendAsPlayerAt = null;
                 db.SaveChanges();
             }
         }
         FormsAuthentication.SignOut();
     }
     return(Json(new { url = this.Url.Content("~/") }));
 }
示例#5
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            RouteTable.Routes.MapHubs();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            AuthConfig.RegisterAuth();

            Database.SetInitializer(new CreateDatabaseIfNotExists <QuizWebAppDb>());

            using (var db = new QuizWebAppDb())
            {
                if (db.Contexts.Any() == false)
                {
                    db.Contexts.Add(new Context {
                        CurrentQuestionID = 1, CurrentState = ContextStateType.PleaseWait
                    });
                    db.SaveChanges();
                }
            }
        }
 public PublicQuestionController()
 {
     this.DB = new QuizWebAppDb();
 }
示例#7
0
 public PlayerController()
 {
     this.DB = new QuizWebAppDb();
 }
示例#8
0
 public AdminController()
 {
     this.DB = new QuizWebAppDb();
 }
 public DashboardController()
 {
     this.DB = new QuizWebAppDb();
 }