Esempio n. 1
0
        public async Task <IActionResult> PlayQuiz(string pin, string validusername)
        {
            QuizPlayerVM quizPlayerVM;
            bool         pinExists;

            try
            {
                pinExists = await MongoManager.CheckIfPinExistsAsync(pin, "runningQuizzes");
            }
            catch (MongoException mex)
            {
                HttpContext.Session.SetString("error", mex.Message);
                return(RedirectToAction("Error", "Home"));
            }
            catch (Exception ex)
            {
                HttpContext.Session.SetString("error", ex.Message);
                return(RedirectToAction("Error", "Home"));
            }

            if (pinExists)
            {
                try
                {
                    quizPlayerVM = await AgonManager.CreateQuizPlayerVM(pin, validusername);
                }
                catch (MongoException mex)
                {
                    HttpContext.Session.SetString("error", mex.Message);
                    return(RedirectToAction("Error", "Home"));
                }
                catch (Exception ex)
                {
                    HttpContext.Session.SetString("error", ex.Message);
                    return(RedirectToAction("Error", "Home"));
                }

                string cacheKey = pin;
                var    players  = _memoryCache.Get <List <string> >(cacheKey);

                if (players == null)
                {
                    players = new List <string>();
                }

                players.Add(validusername);
                _memoryCache.Set <List <string> >(cacheKey, players);

                return(View(quizPlayerVM));
            }
            else
            {
                return(RedirectToAction("Index", "Home"));
            }
        }
Esempio n. 2
0
        public static async Task <QuizMasterVM> StartQuiz(string _id)
        {
            await MongoManager.ClearOldAnswers(_id);

            int pin;
            // Hämta quiz från quizzes
            RunningQuiz runningQuiz;

            runningQuiz = JsonConvert.DeserializeObject <RunningQuiz>(await MongoManager.GetOneQuizAsync(_id, "Quizzes"));

            do
            {
                pin = randomizer.Next(1000, 9999);
            }while (await MongoManager.CheckIfPinExistsAsync(pin.ToString(), "runningQuizzes"));


            runningQuiz.Pin = pin.ToString();
            // Stoppa ner quizzet med PIN i runningQuizzes

            if (await MongoManager.CheckIfDocumentExistsAsync(runningQuiz._id, "runningQuizzes"))
            {
                await MongoManager.ReplaceOneQuizAsync(runningQuiz._id, JsonConvert.SerializeObject(runningQuiz), "runningQuizzes");
            }
            else
            {
                await MongoManager.SaveDocumentAsync("runningQuizzes", JsonConvert.SerializeObject(runningQuiz));
            }
            // Generera QuizMasterVM och returnera

            var           quizMasterVM = new QuizMasterVM(runningQuiz);
            StringBuilder songList     = new StringBuilder();

            foreach (var song in quizMasterVM.Songs)
            {
                songList.Append(song.SpotifyReferenceID);
                if (song != quizMasterVM.Songs[quizMasterVM.Songs.Count - 1])
                {
                    songList.Append(",");
                }
            }
            quizMasterVM.SongList = songList.ToString();

            return(quizMasterVM);
        }
Esempio n. 3
0
 public async Task <bool> CheckPin(string id)
 {
     return(await MongoManager.CheckIfPinExistsAsync(id, "runningQuizzes"));
 }