src/MDS/ApiBundle/Controller/ApiDocumentController.php line 95

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by PhpStorm.
  4.  * User: IN OUT TRAVEL
  5.  * Date: 03/01/2018
  6.  * Time: 9:27
  7.  */
  8. namespace App\MDS\ApiBundle\Controller;
  9. use App\Entity\MobileAppEvent;
  10. use App\Entity\MobileAppEventAdditionalLanguages;
  11. use App\Entity\MobileAppEventConfigLanding;
  12. use App\Entity\MobileAppEventPresentations;
  13. use App\Entity\MobileAppToken;
  14. use App\Entity\MobileAppUsersBehavior;
  15. use Symfony\Component\HttpFoundation\JsonResponse;
  16. use Symfony\Component\HttpFoundation\Request;
  17. use Symfony\Component\HttpFoundation\Response;
  18. use FOS\RestBundle\Controller\Annotations as Rest;
  19. use FOS\RestBundle\Controller\AbstractFOSRestController;
  20. class ApiDocumentController extends AbstractFOSRestController
  21. {
  22.     /**
  23.      * @Rest\Get("/api/presentations/get")
  24.      */
  25.     public function selectApiPresentationsActionRequest $request) {
  26.         $eid=$request->headers->get('eid');
  27.         $em $this->getDoctrine()->getManager();
  28.         $documents $em->getRepository(MobileAppEventPresentations::class)->findBy(
  29.             array('eid' => $eid),
  30.             array('name' => 'ASC')
  31.         );
  32.         $token $request->headers->get('token');
  33.         $uid $em->getRepository(MobileAppToken::class)->findOneBy(
  34.             array('token' => $token)
  35.         );
  36.         if(empty($uid)){
  37.             $response = new JsonResponse("Session expired! Login again"401);
  38.             return $response;
  39.         }
  40.         $category=[];
  41.         $datos = [];
  42.         if (!empty($documents)){
  43.             foreach($documents as $item){
  44.                 $cat $item->getArea();
  45.                 if(in_array($cat$category) === false){
  46.                     array_push$category$cat);
  47.                 }
  48.                 $datos[] = array(
  49.                     "id" => $item->getId(),
  50.                     "eid" => $item->getEid(),
  51.                     "name" => $item->getName(),
  52.                     "path" => 'https://' $_SERVER['HTTP_HOST']. '/' $item->getPath(),
  53.                     "title"=> $item->getTitle(),
  54.                     "description" => $item->getDescription(),
  55.                     "area"=>$item->getArea(),
  56.                     "extension"=>$item->getExtension(),
  57.                 );
  58.             }
  59.         }
  60.         $count count$datos );
  61.         $response_body json_encode(array(
  62.             'data' => $datos,
  63.             'categories' => $category,
  64.             'meta' =>  $count,
  65.         ));
  66.         
  67.         $response = new JsonResponse($response_body);
  68.         return $response;
  69.     }
  70.     /**
  71.      * @Rest\Get("/api/presentations/getNat")
  72.      */
  73.     public function selectApiPresentationsNativoActionRequest $request) {
  74.         $eid=$request->headers->get('eid');
  75.         /* Mobile Operating System */
  76.         if ($request->headers->has('operatingsystem') == true){
  77.             if (empty($request->headers->get('operatingsystem'))){
  78.                 $os null;
  79.             }else{
  80.                 $os $request->headers->get('operatingsystem');
  81.             }
  82.         }else{
  83.             $os "Web";
  84.         }
  85.         /* Mobile Model */
  86.         if ($request->headers->has('mobilemodel') == true){
  87.             if (empty($request->headers->get('mobilemodel'))){
  88.                 $mm null;
  89.             }else{
  90.                 $mm $request->headers->get('mobilemodel');
  91.             }
  92.         }else{
  93.             $mm null;
  94.         }
  95.         /* Mobile Version */
  96.         if ($request->headers->has('mobileversion') == true){
  97.             if (empty($request->headers->get('mobileversion'))){
  98.                 $mv null;
  99.             }else{
  100.                 $mv $request->headers->get('mobileversion');
  101.             }
  102.         }else{
  103.             $mv null;
  104.         }
  105.         /* Mobile lang */
  106.         if ($request->headers->has('lang') == true){
  107.             if (empty($request->headers->get('lang'))){
  108.                 $lg null;
  109.             }else{
  110.                 $lg $request->headers->get('lang');
  111.             }
  112.         }else{
  113.             $lg null;
  114.         }
  115.         $em $this->getDoctrine()->getManager();
  116.         $documents $em->getRepository(MobileAppEventPresentations::class)->findBy(
  117.             array('eid' => $eid),
  118.             array('area' => 'ASC')
  119.         );
  120.         $token $request->headers->get('token');
  121.         $uid $em->getRepository(MobileAppToken::class)->findOneBy(
  122.             array('token' => $token)
  123.         );
  124.         if(empty($uid)){
  125.             $response = new JsonResponse("Session expired! Login again"401);
  126.             return $response;
  127.         }
  128.         $category=[];
  129.         $datos = [];
  130.         if (!empty($documents)){
  131.             foreach($documents as $item){
  132.                 $cat $item->getArea();
  133.                 if(in_array($cat$category) === false){
  134.                     array_push$category$cat);
  135.                 }
  136.                 $datos[] = array(
  137.                     "id" => $item->getId(),
  138.                     "eid" => $item->getEid(),
  139.                     "name" => $item->getName(),
  140.                     "path" => 'https://' $_SERVER['HTTP_HOST']. '/' $item->getPath(),
  141.                     "title"=> $item->getTitle(),
  142.                     "description" => $item->getDescription(),
  143.                     "area"=>$item->getArea(),
  144.                     "extension"=>$item->getExtension(),
  145.                 );
  146.             }
  147.         }
  148.         $action 'List Document';
  149.         $this->saveUserBehavior($uid->getUid(), $eid$os$mm$mv$lg$action,'Document');
  150.         $count count($datos);
  151.         $response_base =array(
  152.             'data' => $datos,
  153.             'categories' => $category,
  154.             'meta' => array('count' => $count),
  155.         );
  156.         $response_body json_encode($response_baseJSON_UNESCAPED_UNICODE JSON_UNESCAPED_SLASHES );
  157.         $response = new Response($response_body200);
  158.         return $response;
  159.     }
  160.     /**
  161.      * @Rest\Get("/api/presentations/getNatWeb")
  162.      */
  163.     public function selectApiPresentationsWebActionRequest $request) {
  164.         $eid=$request->headers->get('eid');
  165.         /* Mobile Operating System */
  166.         if ($request->headers->has('operatingsystem') == true){
  167.             if (empty($request->headers->get('operatingsystem'))){
  168.                 $os null;
  169.             }else{
  170.                 $os $request->headers->get('operatingsystem');
  171.             }
  172.         }else{
  173.             $os "Web";
  174.         }
  175.         /* Mobile Model */
  176.         if ($request->headers->has('mobilemodel') == true){
  177.             if (empty($request->headers->get('mobilemodel'))){
  178.                 $mm null;
  179.             }else{
  180.                 $mm $request->headers->get('mobilemodel');
  181.             }
  182.         }else{
  183.             $mm null;
  184.         }
  185.         /* Mobile Version */
  186.         if ($request->headers->has('mobileversion') == true){
  187.             if (empty($request->headers->get('mobileversion'))){
  188.                 $mv null;
  189.             }else{
  190.                 $mv $request->headers->get('mobileversion');
  191.             }
  192.         }else{
  193.             $mv null;
  194.         }
  195.         /* Mobile lang */
  196.         if ($request->headers->has('lang') == true){
  197.             if (empty($request->headers->get('lang'))){
  198.                 $lg null;
  199.             }else{
  200.                 $lg $request->headers->get('lang');
  201.             }
  202.         }else{
  203.             $lg null;
  204.         }
  205.         $em $this->getDoctrine()->getManager();
  206.         $documents $em->getRepository(MobileAppEventPresentations::class)->findBy(
  207.             array('eid' => $eid),
  208.             array('area' => 'ASC')
  209.         );
  210.         $token $request->headers->get('token');
  211.         $uid $em->getRepository(MobileAppToken::class)->findOneBy(
  212.             array('token' => $token)
  213.         );
  214.         if(empty($uid)){
  215.             $response = new JsonResponse("Session expired! Login again"401);
  216.             return $response;
  217.         }
  218.         $category=[];
  219.         $datos = [];
  220.         if (!empty($documents)){
  221.             foreach($documents as $item){
  222.                 $cat $item->getArea();
  223.                 if(in_array($cat$category) === false){
  224.                     array_push$category$cat);
  225.                 }
  226.                 $datos[] = array(
  227.                     "id" => $item->getId(),
  228.                     "eid" => $item->getEid(),
  229.                     "name" => $item->getName(),
  230.                     "path" => 'https://' $_SERVER['HTTP_HOST']. '/' $item->getPath(),
  231.                     "title"=> $item->getTitle(),
  232.                     "description" => $item->getDescription(),
  233.                     "area"=>$item->getArea(),
  234.                     "extension"=>$item->getExtension(),
  235.                 );
  236.                 /* LIBERAR MEMORIA A MANO */
  237.                 $em->detach($item);
  238.                 unset($item);
  239.             }
  240.         }
  241.         $event $em->getRepository(MobileAppEvent::class)->findOneBy(
  242.             array('id' => $eid)
  243.         );
  244.         //CONFIGURACION LANDING
  245.         $lang = array(
  246.             'es' => array(
  247.                 "locale" => "es",
  248.                 "name" => $event->getName(),
  249.             ),
  250.         );
  251.         if (!is_null$event->getNameEn())){
  252.             $lang['en'] = array(
  253.                 "locale" => "en",
  254.                 "name" => $event->getNameEn(),
  255.             );
  256.         }
  257.         $languages $em->getRepository(MobileAppEventAdditionalLanguages::class)->findBy(
  258.             array('eid' => $event->getId())
  259.         );
  260.         foreach($languages as $languagesData){
  261.             $lang[$languagesData->getLocale()] = array(
  262.                 "locale" => $languagesData->getLocale(),
  263.                 "name" => $languagesData->getTitle(),
  264.                 "description" => $languagesData->getDescription(),
  265.             );
  266.             /* LIBERAR MEMORIA A MANO */
  267.             $em->detach($languagesData);
  268.             unset($languagesData);
  269.         }
  270.         $configuracion_query $em->getRepository(MobileAppEventConfigLanding::class)->findOneBy(
  271.             array(
  272.                 'eid' => $event->getId(),
  273.                 'keyword' => $event->getProposalId(),
  274.             ));
  275.         $serverhttps 'https://' $_SERVER['HTTP_HOST']. '/';
  276.         if (empty($configuracion_query)){
  277.             $configuracion = array(
  278.                 'logo' => "assets/img/header-logo.svg",
  279.                 'classheader' => "black",
  280.                 'idiomas' => false,
  281.                 'bodybackground' => "",
  282.                 //landing
  283.                 'murover' => false,
  284.                 'logover' => true,
  285.                 'migaspan' => true,
  286.                 'cuentaatras' => false,
  287.                 'ponentesver' => true,
  288.                 'preguntasponentes' => true,
  289.                 'botonesindexAge' => true,
  290.                 'botonesindexPon' => true,
  291.                 'botonesindexDoc' => true,
  292.                 'datefin' => true,
  293.                 'muestrasalashe' => true,
  294.                 'twittersi' => false,
  295.                 'facebooksi' => false,
  296.                 'instagramsi' => false,
  297.                 'carruselImg' => true,
  298.                 'bodyfontcolor' => "color: #000000!important;",
  299.                 'buttonfontcolor' => "color: #000000!important;",
  300.             );
  301.         }else{
  302.             $configuracion = array(
  303.                 'logo' => is_null($configuracion_query->getLogoSvg())?"assets/img/header-logo.svg":$serverhttps.$configuracion_query->getLogoSvg(),
  304.                 'classheader' => is_null($configuracion_query->getClassHeader())?"black":$configuracion_query->getClassHeader(),
  305.                 'idiomas' => $configuracion_query->getIdiomas(),
  306.                 'bodybackground' => is_null($configuracion_query->getBodybackground())?"":"background-color: ".$configuracion_query->getBodybackground()." !important;",
  307.                 //Landing
  308.                 'murover' => $configuracion_query->getMurover(), //false,
  309.                 'logover' => $configuracion_query->getLogover(), //true,
  310.                 'migaspan' => $configuracion_query->getMigaspan(), //true,
  311.                 'cuentaatras' => $configuracion_query->getCuentaatras(), //false,
  312.                 'ponentesver' => $configuracion_query->getPonentesver(), //true,
  313.                 'preguntasponentes' => $configuracion_query->getPreguntasponentes(), //true,
  314.                 'botonesindexAge' => $configuracion_query->getBotonesindexAge(), //true,
  315.                 'botonesindexPon' => $configuracion_query->getBotonesindexPon(), //true,
  316.                 'botonesindexDoc' => $configuracion_query->getBotonesindexDoc(), //true,
  317.                 'datefin' => $configuracion_query->getDatefin(), //true,
  318.                 'muestrasalashe' => $configuracion_query->getMuestrasalashe(), //true,
  319.                 'twittersi' => is_null($configuracion_query->getTwittercode())?false:true//false,
  320.                 'twittercode' => is_null($configuracion_query->getTwittercode())?"":$configuracion_query->getTwittercode(), //"",
  321.                 'facebooksi' => is_null($configuracion_query->getFacebookcode())?false:true//false,
  322.                 'facebookcode' => is_null($configuracion_query->getFacebookcode())?"":$configuracion_query->getFacebookcode(), //"",
  323.                 'instagramsi' => is_null($configuracion_query->getInstagramsi())?false:true//false,
  324.                 'instagramcode' => is_null($configuracion_query->getInstagramsi())?"":$configuracion_query->getInstagramsi(), //"",
  325.                 'carruselImg' => $configuracion_query->getCarruselImg(), //true,
  326.                 'bodyfontcolor' => is_null($configuracion_query->getBodyfontcolor())?"":"color: ".$configuracion_query->getBodyfontcolor()." !important;"//"color: #000000;",
  327.                 'buttonfontcolor' => is_null($configuracion_query->getButtonfontcolor())?"":"color: ".$configuracion_query->getButtonfontcolor()." !important;"// "",
  328.             );
  329.         }
  330.         // FIN CONFIGURACION
  331.         $action 'List Document';
  332.         $this->saveUserBehavior($uid->getUid(), $eid$os$mm$mv$lg$action,'Document');
  333.         $count count($datos);
  334.         $response_base =array(
  335.             'data' =>  array("document" => $datos,"configuracion" => $configuracion"eventlang" => $lang),
  336.             'categories' => $category,
  337.             'meta' => array('count' => $count),
  338.         );
  339.         $response_body json_encode($response_baseJSON_UNESCAPED_UNICODE JSON_UNESCAPED_SLASHES );
  340.         $response = new Response($response_body200);
  341.         return $response;
  342.     }
  343.     private function saveUserBehavior($userId$event$os$mm$mv$lg$action$module){
  344.         $em $this->getDoctrine()->getManager();
  345.         $MobileAppUsersBehavior = new MobileAppUsersBehavior();
  346.         $MobileAppUsersBehavior->setUserId($userId);
  347.         $MobileAppUsersBehavior->setEventId($event);
  348.         $MobileAppUsersBehavior->setOperatingSystem($os);
  349.         $MobileAppUsersBehavior->setMobileModel($mm);
  350.         $MobileAppUsersBehavior->setMobileVersion($mv);
  351.         $MobileAppUsersBehavior->setAction($action);
  352.         $MobileAppUsersBehavior->setModule($module);
  353.         $MobileAppUsersBehavior->setLang($lg);
  354.         $em->persist($MobileAppUsersBehavior);
  355.         $em->flush();
  356.         $em->clear();
  357.     }
  358. }