/** * @param CallDeleteAcceptRequest $acceptRequest * @return Game */ public function processDeleteAccept(CallDeleteAcceptRequest $acceptRequest) : Game { $me = $this->container->get("core.service.security")->getUserIfCredentialsIsOk($acceptRequest, $this->getRequestError()); if ($me->isBanned()) { $this->getRequestError()->addError("user", "You are banned")->throwException(ResponseStatusCode::FORBIDDEN); } $call = $this->repository->find($acceptRequest->getCallId()); if (!$call instanceof GameCall) { $this->getRequestError()->addError("call_id", "Call is not found"); $this->getRequestError()->throwException(ResponseStatusCode::NOT_FOUND); } if ($call->getFromUser() == $me) { $this->getRequestError()->addError("call_id", "This challenge is mine"); $this->getRequestError()->throwException(ResponseStatusCode::FORBIDDEN); } $game = $this->container->get("core.handler.game")->createMyGame($call->getFromUser(), $me, GameColor::getOppositeColor($call->getGameParams()->getColor()), $call->getGameParams()->isRate()); $this->container->get("core.handler.game")->changeGameStatus($game, GameStatus::PLAY); $game->setTimeWhite($call->getGameParams()->getTimeBase())->setTimeBlack($call->getGameParams()->getTimeBase()); $game->setGameParams($call->getGameParams()); $this->manager->persist($game); foreach ($this->getUserCalls($call->getFromUser()) as $call) { $this->manager->remove($call); } foreach ($this->getUserCalls($me) as $call) { $this->manager->remove($call); } $this->manager->flush(); return $this->container->get("core.handler.game")->getUserGame($game, $me); }
/** * @param CallEvent $event */ public function onNewCall(CallEvent $event) { $this->container->get("immortalchessnet.service.publish")->publishNewPost(new Post($this->container->getParameter("app_immortalchess.forum_playzone"), self::THREAD_FOR_CALLS, $event->getCall()->getFromUser()->getLogin(), $this->container->getParameter("app_immortalchess.post_userid_for_calls"), 'Новый вызов от ' . $event->getCall()->getFromUser()->getLogin(), $this->container->get("templating")->render('Post/newcall.html.twig', ['user' => $event->getCall()->getFromUser(), 'time_minutes' => $event->getCall()->getGameParams()->getTimeBase() / 60000, 'color' => GameColor::getOppositeColor($event->getCall()->getGameParams()->getColor())]))); }