/** 
  * @return GameDetailDto
  *
  * @throws NotFoundHttpException if game was not found
  */
 private function getGameById($gameId)
 {
     $gameDetail = $this->gameService->getGameById($gameId);
     if ($gameDetail === null) {
         throw new NotFoundHttpException('Game cannot be found');
     }
     return $gameDetail;
 }
 /**
  * @param Request       $request
  * @param FormInterface $form
  * @param GameDetailDto $game
  * @param PlayerDto     $player
  *
  * @return Response|null
  */
 private function handlePlayerForm(Request $request, FormInterface $form, GameDetail $game, Player $player)
 {
     $form->handleRequest($request);
     if ($form->isSubmitted() && $form->isValid()) {
         if ($form->get('play')->isClicked()) {
             $turnNumber = $form->getData()->getTurnNumber();
             $move = $form->getData()->getMove();
             if ($move && $move->isPlay()) {
                 $play = new Play($turnNumber, new Stone($move->getStoneTopValue(), $move->getStoneBottomValue()), $move->getSide() === 'left' ? Play::SIDE_LEFT : Play::SIDE_RIGHT);
                 $this->gameService->play($game->getId(), $player->getNumber(), $play);
                 return $this->redirectToRoute(self::ROUTE_PLAYER_DETAIL, ['gameId' => $form->getData()->getGameId(), 'playerNumber' => $form->getData()->getPlayerNumber()]);
             }
         }
     }
     return;
 }
 /**
  * @return Response
  */
 private function getIndexResponse(FormInterface $form)
 {
     $games = $this->gameService->getRecentGames();
     return $this->render('game/game-index.html.twig', ['form' => $form->createView(), 'games' => $games]);
 }
 /** @expectedException \Llvdl\Domino\Domain\Exception\DominoException */
 public function testDealGameWithNonExistingGameThrowsException()
 {
     $this->expectForFindById(42, NULL);
     $this->gameService->deal(42);
 }