/** * @param Tournament $tournament */ private function mixGamesForRoundRobin(Tournament $tournament) { $gamesMap = []; foreach ($tournament->getPlayers() as $firstPlayer) { foreach ($tournament->getPlayers() as $secondPlayer) { if ($firstPlayer == $secondPlayer) { continue; } $gamesMap[$firstPlayer->getId()][$secondPlayer->getId()] = ''; $gamesMap[$secondPlayer->getId()][$firstPlayer->getId()] = ''; } } foreach ($tournament->getGames() as $tournamentGame) { if ($tournamentGame->getGame()->getStatus() != GameStatus::END) { continue; } $playerWhite = $tournamentGame->getPlayerWhite(); $playerBlack = $tournamentGame->getPlayerBlack(); $gamesMap[$playerWhite->getId()][$playerBlack->getId()][] = new TournamentGameRoundRobin($tournamentGame->getGame()->getId(), $tournamentGame->getGame()->getResultWhite()); $gamesMap[$playerBlack->getId()][$playerWhite->getId()][] = new TournamentGameRoundRobin($tournamentGame->getGame()->getId(), $tournamentGame->getGame()->getResultBlack()); } $tournament->setResultsForRoundRobin($gamesMap); }
/** * @param Tournament $tournament */ private function recalculateCoefficients(Tournament $tournament) { foreach ($tournament->getPlayers() as $tournamentPlayer) { $tournamentPlayer->setCoefficient(0)->setPoints(0); } foreach ($tournament->getGames() as $tournamentGame) { $this->updatePoints($tournamentGame->getPlayerWhite(), $tournamentGame->getGame()->getResultWhite()); $this->updatePoints($tournamentGame->getPlayerBlack(), $tournamentGame->getGame()->getResultBlack()); } foreach ($tournament->getGames() as $tournamentGame) { $this->updateCoefficients($tournamentGame->getPlayerWhite(), $tournamentGame->getPlayerBlack(), $tournamentGame->getGame()->getResultWhite()); $this->updateCoefficients($tournamentGame->getPlayerBlack(), $tournamentGame->getPlayerWhite(), $tournamentGame->getGame()->getResultBlack()); $this->manager->persist($tournamentGame->getPlayerWhite()); $this->manager->persist($tournamentGame->getPlayerBlack()); } $this->manager->flush(); }