/** * @inheritDoc */ public function processPostPublish(GamePostPublishRequest $request) : Game { $user = $this->container->get("core.handler.user")->getSecureUser($request); try { $game = $this->repository->find($request->getId()); } catch (GameNotFoundException $e) { $this->getRequestError()->addError("id", "Game is not found")->throwException(ResponseStatusCode::NOT_FOUND); } /** @var Game $game */ $gamePublishEvent = new GamePublishEvent(); $gamePublishEvent->setGame($game); $gamePublishEvent->setUser($user); switch (true) { case !empty($request->getFen()): $this->container->get("event_dispatcher")->dispatch(GameEvents::PUBLISH_FEN, $gamePublishEvent->setFen($request->getFen())); break; case !empty($request->getPgn()): $this->container->get("event_dispatcher")->dispatch(GameEvents::PUBLISH_PGN, $gamePublishEvent->setPgn($request->getPgn())); break; } return $game; }