/** * @return int */ protected function totalGames() { $builder = $this->gameRepository->createQueryBuilder('game'); $builder->select('COUNT(game.id)'); $builder->setCacheable(true); $query = $builder->getQuery(); $query->useResultCache(true, 30, 'total_games'); return $query->getSingleScalarResult(); }
private function create(Player $p1, Player $p2, ParamFetcherInterface $params) { try { if (!in_array((int) $params->get('winner'), [Game::P1WINNER, Game::P2WINNER], true)) { throw new \InvalidArgumentException('Winner not correct format'); } if (!in_array((int) $params->get('wintype'), [Game::WINTYPE_NORMAL, Game::WINTYPE_GAMMON, Game::WINTYPE_BACKGAMMON], true)) { throw new \InvalidArgumentException('Wintype not correct format'); } list($p1Elo, $p2Elo) = $this->eloCalculator->getNewElo($p1, $p2, $params->get('winner'), $params->get('wintype')); $oldp1Elo = $p1->getElo(); $oldp2Elo = $p2->getElo(); $p1->setElo($p1Elo); $p2->setElo($p2Elo); $gameClass = $this->gameRepository->getClassName(); /** @var Game $game */ $game = new $gameClass(); $game->setPlayer1($p1)->setPlayer2($p2)->setWinner($params->get('winner'))->setPlayer1Elochange($oldp1Elo, $p1Elo)->setPlayer2Elochange($oldp2Elo, $p2Elo)->setWintype($params->get('wintype')); $params = $params->all(); if (array_key_exists('date', $params)) { $game->setDate($params['date']); } $this->save($game, false); $this->save($p1, false); $this->save($p2, true); return $game; } catch (\Exception $e) { throw new \InvalidArgumentException('Unexcepted error (' . $e->getMessage() . ')'); } }
/** * @return Response */ protected function getAvailableGamesAction() { $newGamesFilter = function (Game $game) { return $game->isAvailable(); }; $games = $this->gameRepository->findAvailableForUser($this->getUser(), 5)->filter($newGamesFilter); $view = $this->view($games); /** @var Game $oldestGame */ $oldestGame = $games->last(); if ($oldestGame) { // if games found, cache expires oldest game + 5 minutes (if searched for games withing last 5 minutes) $maxAge = Game::JOIN_LIMIT - (time() - $oldestGame->getTimestamp()->getTimestamp()); $view->getResponse()->setSharedMaxAge($maxAge); } return $this->handleView($view); }
public function set(Stats $stats) { $result = $this->gameRepository->findLeastGamesByPlayer(); $stat = new Stat('Player with least games', $result['numgames'], $this->playerRepository->find($result['player'])); $stats->addStat($stat); }
/** * @param Player $player * @return int */ protected function totalGames(Player $player) { $builder = $this->gameRepository->findByPlayer($player->getId()); $builder->select('COUNT(game.id)'); return $builder->getQuery()->getSingleScalarResult(); }