Пример #1
0
        public async Task <ActionResult> Play(string id)
        {
            if (id == null || id.Length != TechnicalConstants.GameIdLength)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }


            using (UnitOfWork unitOfWork = new UnitOfWork())
            {
                GameState gameState = await unitOfWork.GameRepository.GetGameStateAsync(id);

                if (gameState == GameState.Undefined)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.NotFound));
                }

                switch (gameState)
                {
                case GameState.Playing:
                    GamePlayViewModel gamePlayVM = await unitOfWork.GameQuestionsRepository.GetGamePlayVMAsync(id);

                    return(View("Play", gamePlayVM));

                case GameState.LastQuestionAnswered:
                    GuessViewModel firstGuessVM = await unitOfWork.GameRepository.GetGuessVMAsync(id);

                    return(View("FirstGuessFeedback", firstGuessVM));

                case GameState.FirstGuessMarkedCorrect:
                case GameState.SelectedFromTopGuessesList:
                case GameState.EnteredWhoItWas:
                    GuessViewModel guessVM = await unitOfWork.GameRepository.GetGuessVMAsync(id);

                    return(View("CorrectGuess", guessVM));

                case GameState.FirstGuessMarkedIncorrect:
                    TopGuessesViewModel topGuessesVM = await unitOfWork.GameEntityRepository.GetTopGuessesVMAsync(id);

                    return(View("TopGuesses", topGuessesVM));

                case GameState.MustEnterWhoItWas:
                    SubmitNewEntityViewModel newEntitySubmissionVM = new SubmitNewEntityViewModel
                    {
                        AccessID        = id,
                        SubmittedEntity = new Entity()
                    };
                    return(View("SubmitNewEntity", newEntitySubmissionVM));

                default:
                    return(null);
                }
            }
        }
Пример #2
0
        public async Task <ActionResult> SubmitNewEntity(SubmitNewEntityViewModel newEntity)
        {
            using (UnitOfWork unitOfWork = new UnitOfWork())
            {
                GameState gameState = await unitOfWork.GameRepository.GetGameStateAsync(newEntity.AccessID);

                if (gameState != GameState.MustEnterWhoItWas)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }

                if (ModelState.IsValid)
                {
                    // add to database and update state
                }

                return(RedirectToAction("Play", new { id = newEntity.AccessID }));
            }
        }