/** * @param Request $request * @return array * @Post( * path="api/sms", * name="api_sms_code" * ) * @RequestParam( * name="phone", * description="Номер телефона" * ) * @RequestParam( * name="mes", * description="Сообщение" * ) * @ApiDoc( * section = "Движок", * description = "Обработка входящей СМС", * statusCodes = { * 200 = "Успешно", * 404 = "Нет игры" * } * ) */ public function smsCodeAction(Request $request) { $phoneNum = $request->request->get('phone'); $message = $request->request->get('mes'); list($prefix, $taskId, $code) = explode(' ', $message) + [null, null, null]; $user = $this->getDoctrine()->getRepository('sdUserBundle:User')->findOneBy(['phone' => $phoneNum]); if (!$user) { throw new NotFoundHttpException(); } $task = $this->getDoctrine()->getRepository('sdGameBundle:Task')->find((int) $taskId); if (!$task) { throw new NotFoundHttpException(); } $engineService = $this->get('sd.game.engineservice'); $taskEntities = $engineService->getCurrentTasks($task->getGame(), $user); if (!($taskEntities['current']->getTask() === $task || $taskEntities['free']->contains($task))) { throw new NotFoundHttpException(); } $codeEnter = new CodeEnter(); $codeEnter->setUser($user); $codeEnter->setGame($task->getGame()); $codeEnter->setTask($task); $codeEnter->setText($code); $codeEnter->setDate(new \DateTime()); $result = $engineService->enterCode($codeEnter); return ['status' => 'ok', 'result' => $result]; }
/** * @param Request $request * @return array * @Post( * path = "game/code", * name = "post_code" * ) * @RequestParam( * name="taskId", * description="ID задания" * ) * @RequestParam( * name="code", * description="Код" * ) * @ApiDoc( * section = "Движок", * description = "Отправка кода", * statusCodes = { * 200 = "Успешно", * 404 = "Нет игры" * } * ) */ public function postCodeAction(Request $request) { $taskId = $request->request->get('taskId'); $code = $request->request->get('code'); /** @var User $user */ $user = $this->getUser(); $task = $this->getDoctrine()->getRepository('sdGameBundle:Task')->find($taskId); if (!$task) { throw new NotFoundHttpException(); } $game = $task->getGame(); if (!$game || !$game->isCanEnter() || !$user || !$user->getTeam() || !$game->getTeams()->contains($user->getTeam())) { throw new NotFoundHttpException(); } $engineService = $this->get('sd.game.engineservice'); $codeEnter = new CodeEnter(); $codeEnter->setUser($user); $codeEnter->setGame($game); $codeEnter->setTask($task); $codeEnter->setText($code); $codeEnter->setDate(new \DateTime()); $result = $engineService->enterCode($codeEnter); return ['result' => $result]; }