/**
  * @return TournamentInitializator
  */
 private function createTournamentEvent() : TournamentInitializator
 {
     $frequency = '25 20 * * * *';
     $timeBegin = "+1minute";
     $tournamentName = "Create new tournament";
     $timeBase = 180000;
     return (new TournamentInitializator())->setFrequency($frequency)->setTournamentName($tournamentName)->setGameParams((new GameParams())->setTimeBase($timeBase))->setTimeBegin($timeBegin)->setTournamentParams(TournamentParamsFactory::create(TournamentType::ROUND_ROBIN()));
 }
 /**
  * @param TournamentContainer $tournamentContainer
  */
 public function onTournamentFinish(TournamentContainer $tournamentContainer)
 {
     $tournament = $tournamentContainer->getTournament();
     if ($tournament->getTournamentParams()->getType() != TournamentType::ROUND_ROBIN()) {
         return;
     }
     $this->container->get("core.service.tournament_table.factory")->create($tournament->getTournamentParams()->getType())->mixTournamentTable($tournament);
     $this->container->get("immortalchessnet.service.publish")->publishNewPost(new Post($this->container->getParameter("app_immortalchess.forum_playzone"), self::THREAD_FOR_TOURNAMENT_RESULTS, $this->container->getParameter("app_immortalchess.post_username_for_calls"), $this->container->getParameter("app_immortalchess.post_userid_for_calls"), "Турнир #{$tournament->getName()} завершен", $this->container->get("templating")->render("Post/tournamenttable_round_robin.html.twig", ["tournament" => $tournament])));
 }
 /**
  * @param TournamentType $type
  * @return TournamentTableInterface
  */
 public function create(TournamentType $type)
 {
     switch ($type) {
         case TournamentType::ROUND_ROBIN():
             return new TournamentTableRoundRobin();
         case TournamentType::SWITZ():
             return new TournamentTableSwitz();
         default:
             throw new TournamentIncorrectTypeException();
     }
 }
 /**
  * @param Tournament $tournament
  * @return TournamentDrawInterface
  * @throws TournamentIncorrectTypeException
  */
 public function create(Tournament $tournament) : TournamentDrawInterface
 {
     switch ($tournament->getTournamentParams()->getType()) {
         case TournamentType::ROUND_ROBIN():
             return $this->container->get("core.service.round_robin");
         case TournamentType::SWITZ():
             return $this->container->get("core.service.swiss");
         default:
             throw new TournamentIncorrectTypeException();
     }
 }
 /**
  * @return TournamentType
  */
 public function getType() : TournamentType
 {
     return TournamentType::SWITZ();
 }
 /**
  * @param Tournament $tournament
  */
 private function changeTournamentTypeOnSwiss(Tournament $tournament)
 {
     $tournamentParams = TournamentParamsFactory::create(TournamentType::SWITZ())->setTimeBegin($tournament->getTournamentParams()->getTimeBegin());
     $tournament->setTournamentParams($tournamentParams)->setRounds($this->container->getParameter("rounds_for_swiss"));
     $this->getManager()->persist($tournament);
     $this->getManager()->flush();
 }
 /**
  * @param string $frequency
  * @param string $timeBegin
  * @param string $tournamentName
  * @param int $timeBase
  * @param int $timeIncrement
  * @param bool $private
  * @param array|string $players
  * @param int $gamesVsOpponent
  */
 public function createTournamentEvent(string $frequency, string $timeBegin, string $tournamentName, int $timeBase, int $timeIncrement = 0, bool $private = false, string $players = '', int $gamesVsOpponent = 2)
 {
     $this->container->get("core.handler.event")->initEventAndSave((new TournamentInitializator())->setFrequency($frequency)->setPlayerIds(empty($players) ? [] : explode(',', $players))->setTournamentName($tournamentName)->setPrivate($private)->setGameParams((new GameParams())->setTimeBase($timeBase)->setTimeIncrement($timeIncrement))->setTimeBegin($timeBegin)->setTournamentParams(TournamentParamsFactory::create(TournamentType::ROUND_ROBIN())->setGamesVsOpponent($gamesVsOpponent)), "core.service.event.tournament.create");
 }
 /**
  * @return TournamentType
  */
 public function getType() : TournamentType
 {
     return TournamentType::ROUND_ROBIN();
 }