/** * @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 GameEvent $gameEvent */ public function onGameChangeStatus(GameEvent $gameEvent) { if ($gameEvent->getGame()->getStatus() != GameStatus::END) { return; } try { $tournament = $this->container->get("core.handler.tournament")->getTournamentForGame($gameEvent->getGame()); } catch (TournamentGameNotFoundException $e) { return; } $this->updatePlayersTotals($gameEvent->getGame()); if (!$this->container->get("core.handler.tournament")->isCurrentRoundFinished($tournament)) { return; } $this->container->get("event_dispatcher")->dispatch(TournamentEvents::ROUND_FINISHED, (new TournamentContainer())->setTournament($tournament)); $this->recalculateCoefficients($tournament); if ($tournament->getRounds() == $tournament->getCurrentRound()) { $this->changeTournamentStatus($tournament, TournamentStatus::END()); $this->manager->flush($tournament); $this->container->get("event_dispatcher")->dispatch(TournamentEvents::TOURNAMENT_FINISHED, (new TournamentContainer())->setTournament($tournament)); } }