/**
  * @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));
     }
 }