private function addResult(Player $player, array $result, array &$matches) { if ($result['p1'] == $player->getId()) { $this->setMatch($matches, $result, 'p2', Game::P1WINNER); } else { $this->setMatch($matches, $result, 'p1', Game::P2WINNER); } }
public function set(Player $player, Stats $stats) { $builder = $this->gameRepository->findByPlayer($player->getId()); $builder->setMaxResults(50); $builder->orderBy('game.date', 'DESC'); $results = $builder->getQuery()->getResult(); $stats->setGames($results); }
public function set(Player $player, Stats $stats) { $builder = $this->gameRepository->findLostGamesByPlayer($player->getId()); $builder->select($builder->expr()->count('game.id')); $value = $builder->getQuery()->getSingleScalarResult(); if ($value == 0) { $stat = new Stat('Total lost', $value, 0); } else { $stat = new Stat('Total lost', $value, $value / $this->totalGames($player) * 100); } $stats->addStat($stat); }
public function set(Player $player, Stats $stats) { $builder = $this->gameRepository->findByPlayer($player->getId()); $builder->select('COUNT(game.id)'); $builder->andWhere($builder->expr()->eq('game.wintype', Game::WINTYPE_BACKGAMMON)); $result = $builder->getQuery()->getSingleScalarResult(); if ($result == 0) { $stat = new Stat('Total backgammons', $result, 0); } else { $stat = new Stat('Total backgammons', $result, round($result / $this->totalGames($player) * 100, 2)); } $stats->addStat($stat); }
/** * Creates all possible team combination with the new player * * @param EntityManager $em * @param Player $newPlayer */ private function createTeamsForNewPlayer(EntityManager $em, Player $newPlayer) { $players = $em->getRepository('AppBundle:Player')->findAll(); foreach ($players as $existingPlayer) { if ($existingPlayer->getId() === $newPlayer->getId()) { continue; } $team = new Team(); $team->setPlayerA($existingPlayer); $team->setPlayerB($newPlayer); $em->persist($team); } $em->flush(); }
/** * @param Player $player * @return array */ public function getGamesPrDay(Player $player) { $rsm = new ResultSetMapping(); $rsm->addScalarResult('counter', 'counter', 'integer'); $rsm->addScalarResult('date', 'date', 'datetime'); $sql = 'SELECT COUNT(*) as counter, date FROM game WHERE player1_id = :p1 OR player2_id = :p2 GROUP BY DAY(date)'; $nq = $this->_em->createNativeQuery($sql, $rsm); $nq->setCacheable(true); $nq->setResultCacheLifetime(30); $nq->setResultCacheId(sprintf('games_pr_day_%d', $player->getId())); $nq->setParameter(':p1', $player->getId(), 'integer'); $nq->setParameter(':p2', $player->getId(), 'integer'); return $nq->execute(); }
/** * @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(); }
/** * @Serializer\VirtualProperty() * @Serializer\SerializedName("id_player_b") */ public function getIdPlayerB() { return $this->playerB->getId(); }