/** * @param GameEvent $gameEvent */ public function onGameChangeStatus(GameEvent $gameEvent) { if ($gameEvent->getGame()->getStatus() != GameStatus::END) { return; } try { $tournament = $this->getTournamentHandler()->getTournamentForGame($gameEvent->getGame()); } catch (TournamentGameNotFoundException $e) { return; } if (!$this->getTournamentHandler()->isCurrentRoundFinished($tournament)) { return; } if ($tournament->getStatus() == TournamentStatus::END()) { // TODO: send message to users about finishing tournament return; } try { $this->assertEventNotExists($tournament); $this->addNextRoundToSchedule($tournament); } catch (EventAlreadyFoundException $e) { $this->container->get("logger")->error("Event is already found. Game #" . $gameEvent->getGame()->getId()); } }
/** * @param TournamentContainer $tournamentContainer */ public function onTournamentStart(TournamentContainer $tournamentContainer) { $tournament = $tournamentContainer->getTournament(); $this->removeOfflinePlayers($tournament); $this->changeTournamentStatus($tournament, TournamentStatus::CURRENT()); $this->calculateRounds($tournament); $this->manager->flush($tournament); }