src/Controller/ApiController.php line 99

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Challenge;
  4. use App\Repository\ChallengeRepository;
  5. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
  10. use Symfony\Component\HttpFoundation\JsonResponse;
  11. use App\Service\PlayerService;
  12. use App\Service\ChallengeService;
  13. /**
  14.  * @Route("/api")
  15.  */
  16. class ApiController extends AbstractController
  17. {
  18.     const RESPONSE_TYPE_NEXT 'next';
  19.     const RESPONSE_TYPE_NON_PREMIUM 'nonpremium';
  20.     const RESPONSE_TYPE_NO_MORE 'unavailable';
  21.     /**
  22.      * @Route("/", name="api_index", methods={"GET"})
  23.      */
  24.     public function index()
  25.     {
  26.        return new JsonResponse(['status' => 'alive'], 200);
  27.     }
  28.     /**
  29.      * @Route("/make-premium", name="make_premium", methods={"POST"})
  30.      */
  31.     public function makePremium(Request $requestPlayerService $player_service)
  32.     {
  33.         $parameters json_decode($request->getContent(), true);
  34.         $identificator $parameters['identificator'];
  35.         /* Get Current Player */
  36.         $player $player_service->getPlayer($identificatortrue);
  37.         return new JsonResponse('OK'200);
  38.     }
  39.     /**
  40.      * @Route("/check-premium", name="check_premium", methods={"POST"})
  41.      */
  42.     public function checkPremium(Request $requestPlayerService $player_service)
  43.     {
  44.         
  45.         $parameters json_decode($request->getContent(), true);
  46.         $identificator $parameters['identificator'];
  47.         
  48.         /* Get Current Player */
  49.         $premium $player_service->checkPlayer($identificatortrue);
  50.         return new JsonResponse($premium200);
  51.     }
  52.     /**
  53.      * @Route("/set-language", name="set_language", methods={"POST"})
  54.      */
  55.     public function setLanguage(Request $requestPlayerService $player_service)
  56.     {
  57.         $parameters json_decode($request->getContent(), true);
  58.         $identificator $parameters['identificator'];
  59.         $language $parameters['language'];
  60.         /* Get Current Player */
  61.         $player $player_service->setLanguage($identificator$language);
  62.         return new JsonResponse('OK'200);
  63.     }
  64.     /**
  65.      * @Route("/get-language", name="get_language", methods={"POST"})
  66.      */
  67.     public function getLanguage(Request $requestPlayerService $player_service)
  68.     {
  69.         $parameters json_decode($request->getContent(), true);
  70.         $identificator $parameters['identificator'];
  71.         /* Get Current Player */
  72.         $player $player_service->getPlayer($identificator);
  73.         $language $player->getLanguage();
  74.         if(!$language){
  75.             $language 'en';
  76.         }
  77.         $result = [
  78.             'language' => $language,
  79.         ];
  80.         return new JsonResponse($result200);
  81.     }
  82.     /**
  83.      * @Route("/next", name="api_next_challenge", methods={"POST"})
  84.      */
  85.     public function next(Request $requestPlayerService $player_serviceChallengeService $challenge_service)
  86.     {
  87.         /*
  88.             {
  89.                 "identificator": "v1a6dfv41a681ae",
  90.                 "type": "random"
  91.             }
  92.         */
  93.         $parameters json_decode($request->getContent(), true);
  94.         $identificator $parameters['identificator'];
  95.         $required_type $parameters['type'];
  96.         
  97.         /* Get Current Player */
  98.         $player $player_service->getPlayer($identificator);
  99.         /* Get Unseen Challenge */
  100.         $challenge $challenge_service->getUnseenChallenge($player$required_type);
  101.         
  102.         if($challenge == 'nonpremium'){
  103.             $result = [
  104.                 'reponse_type' => self::RESPONSE_TYPE_NON_PREMIUM,
  105.             ];
  106.         }
  107.         elseif($challenge){
  108.             /* Log Action For Player */
  109.             $player_service->createLog($player$challenge'seen');
  110.             if($player->getLanguage() == 'es'){
  111.                 $challenge_result $challenge->getChallengeEsp();
  112.             }
  113.             elseif($player->getLanguage() == 'fr'){
  114.                 $challenge_result $challenge->getChallengeFr();
  115.             }
  116.             else{
  117.                 $challenge_result $challenge->getChallengeEn();
  118.             }
  119.             $result = [
  120.                 'challenge' => $challenge_result,
  121.                 'reponse_type' => self::RESPONSE_TYPE_NEXT,
  122.             ];
  123.         }
  124.         else{
  125.             $result = [
  126.                 'reponse_type' => self::RESPONSE_TYPE_NO_MORE,
  127.             ];
  128.         }
  129.         return new JsonResponse($result200);
  130.     }
  131. }