Esempio n. 1
0
 /**
  * @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())])));
 }