<?php
/**
* Created by PhpStorm.
* User: IN OUT TRAVEL
* Date: 03/01/2018
* Time: 9:27
*/
namespace App\MDS\ApiBundle\Controller;
use App\Entity\MobileAppEvent;
use App\Entity\MobileAppEventAdditionalLanguages;
use App\Entity\MobileAppEventConfigLanding;
use App\Entity\MobileAppEventPresentations;
use App\Entity\MobileAppToken;
use App\Entity\MobileAppUsersBehavior;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use FOS\RestBundle\Controller\Annotations as Rest;
use FOS\RestBundle\Controller\AbstractFOSRestController;
class ApiDocumentController extends AbstractFOSRestController
{
/**
* @Rest\Get("/api/presentations/get")
*/
public function selectApiPresentationsAction( Request $request) {
$eid=$request->headers->get('eid');
$em = $this->getDoctrine()->getManager();
$documents = $em->getRepository(MobileAppEventPresentations::class)->findBy(
array('eid' => $eid),
array('name' => 'ASC')
);
$token = $request->headers->get('token');
$uid = $em->getRepository(MobileAppToken::class)->findOneBy(
array('token' => $token)
);
if(empty($uid)){
$response = new JsonResponse("Session expired! Login again", 401);
return $response;
}
$category=[];
$datos = [];
if (!empty($documents)){
foreach($documents as $item){
$cat = $item->getArea();
if(in_array($cat, $category) === false){
array_push( $category, $cat);
}
$datos[] = array(
"id" => $item->getId(),
"eid" => $item->getEid(),
"name" => $item->getName(),
"path" => 'https://' . $_SERVER['HTTP_HOST']. '/' . $item->getPath(),
"title"=> $item->getTitle(),
"description" => $item->getDescription(),
"area"=>$item->getArea(),
"extension"=>$item->getExtension(),
);
}
}
$count = count( $datos );
$response_body = json_encode(array(
'data' => $datos,
'categories' => $category,
'meta' => $count,
));
$response = new JsonResponse($response_body);
return $response;
}
/**
* @Rest\Get("/api/presentations/getNat")
*/
public function selectApiPresentationsNativoAction( Request $request) {
$eid=$request->headers->get('eid');
/* Mobile Operating System */
if ($request->headers->has('operatingsystem') == true){
if (empty($request->headers->get('operatingsystem'))){
$os = null;
}else{
$os = $request->headers->get('operatingsystem');
}
}else{
$os = "Web";
}
/* Mobile Model */
if ($request->headers->has('mobilemodel') == true){
if (empty($request->headers->get('mobilemodel'))){
$mm = null;
}else{
$mm = $request->headers->get('mobilemodel');
}
}else{
$mm = null;
}
/* Mobile Version */
if ($request->headers->has('mobileversion') == true){
if (empty($request->headers->get('mobileversion'))){
$mv = null;
}else{
$mv = $request->headers->get('mobileversion');
}
}else{
$mv = null;
}
/* Mobile lang */
if ($request->headers->has('lang') == true){
if (empty($request->headers->get('lang'))){
$lg = null;
}else{
$lg = $request->headers->get('lang');
}
}else{
$lg = null;
}
$em = $this->getDoctrine()->getManager();
$documents = $em->getRepository(MobileAppEventPresentations::class)->findBy(
array('eid' => $eid),
array('area' => 'ASC')
);
$token = $request->headers->get('token');
$uid = $em->getRepository(MobileAppToken::class)->findOneBy(
array('token' => $token)
);
if(empty($uid)){
$response = new JsonResponse("Session expired! Login again", 401);
return $response;
}
$category=[];
$datos = [];
if (!empty($documents)){
foreach($documents as $item){
$cat = $item->getArea();
if(in_array($cat, $category) === false){
array_push( $category, $cat);
}
$datos[] = array(
"id" => $item->getId(),
"eid" => $item->getEid(),
"name" => $item->getName(),
"path" => 'https://' . $_SERVER['HTTP_HOST']. '/' . $item->getPath(),
"title"=> $item->getTitle(),
"description" => $item->getDescription(),
"area"=>$item->getArea(),
"extension"=>$item->getExtension(),
);
}
}
$action = 'List Document';
$this->saveUserBehavior($uid->getUid(), $eid, $os, $mm, $mv, $lg, $action,'Document');
$count = count($datos);
$response_base =array(
'data' => $datos,
'categories' => $category,
'meta' => array('count' => $count),
);
$response_body = json_encode($response_base, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES );
$response = new Response($response_body, 200);
return $response;
}
/**
* @Rest\Get("/api/presentations/getNatWeb")
*/
public function selectApiPresentationsWebAction( Request $request) {
$eid=$request->headers->get('eid');
/* Mobile Operating System */
if ($request->headers->has('operatingsystem') == true){
if (empty($request->headers->get('operatingsystem'))){
$os = null;
}else{
$os = $request->headers->get('operatingsystem');
}
}else{
$os = "Web";
}
/* Mobile Model */
if ($request->headers->has('mobilemodel') == true){
if (empty($request->headers->get('mobilemodel'))){
$mm = null;
}else{
$mm = $request->headers->get('mobilemodel');
}
}else{
$mm = null;
}
/* Mobile Version */
if ($request->headers->has('mobileversion') == true){
if (empty($request->headers->get('mobileversion'))){
$mv = null;
}else{
$mv = $request->headers->get('mobileversion');
}
}else{
$mv = null;
}
/* Mobile lang */
if ($request->headers->has('lang') == true){
if (empty($request->headers->get('lang'))){
$lg = null;
}else{
$lg = $request->headers->get('lang');
}
}else{
$lg = null;
}
$em = $this->getDoctrine()->getManager();
$documents = $em->getRepository(MobileAppEventPresentations::class)->findBy(
array('eid' => $eid),
array('area' => 'ASC')
);
$token = $request->headers->get('token');
$uid = $em->getRepository(MobileAppToken::class)->findOneBy(
array('token' => $token)
);
if(empty($uid)){
$response = new JsonResponse("Session expired! Login again", 401);
return $response;
}
$category=[];
$datos = [];
if (!empty($documents)){
foreach($documents as $item){
$cat = $item->getArea();
if(in_array($cat, $category) === false){
array_push( $category, $cat);
}
$datos[] = array(
"id" => $item->getId(),
"eid" => $item->getEid(),
"name" => $item->getName(),
"path" => 'https://' . $_SERVER['HTTP_HOST']. '/' . $item->getPath(),
"title"=> $item->getTitle(),
"description" => $item->getDescription(),
"area"=>$item->getArea(),
"extension"=>$item->getExtension(),
);
/* LIBERAR MEMORIA A MANO */
$em->detach($item);
unset($item);
}
}
$event = $em->getRepository(MobileAppEvent::class)->findOneBy(
array('id' => $eid)
);
//CONFIGURACION LANDING
$lang = array(
'es' => array(
"locale" => "es",
"name" => $event->getName(),
),
);
if (!is_null( $event->getNameEn())){
$lang['en'] = array(
"locale" => "en",
"name" => $event->getNameEn(),
);
}
$languages = $em->getRepository(MobileAppEventAdditionalLanguages::class)->findBy(
array('eid' => $event->getId())
);
foreach($languages as $languagesData){
$lang[$languagesData->getLocale()] = array(
"locale" => $languagesData->getLocale(),
"name" => $languagesData->getTitle(),
"description" => $languagesData->getDescription(),
);
/* LIBERAR MEMORIA A MANO */
$em->detach($languagesData);
unset($languagesData);
}
$configuracion_query = $em->getRepository(MobileAppEventConfigLanding::class)->findOneBy(
array(
'eid' => $event->getId(),
'keyword' => $event->getProposalId(),
));
$serverhttps = 'https://' . $_SERVER['HTTP_HOST']. '/';
if (empty($configuracion_query)){
$configuracion = array(
'logo' => "assets/img/header-logo.svg",
'classheader' => "black",
'idiomas' => false,
'bodybackground' => "",
//landing
'murover' => false,
'logover' => true,
'migaspan' => true,
'cuentaatras' => false,
'ponentesver' => true,
'preguntasponentes' => true,
'botonesindexAge' => true,
'botonesindexPon' => true,
'botonesindexDoc' => true,
'datefin' => true,
'muestrasalashe' => true,
'twittersi' => false,
'facebooksi' => false,
'instagramsi' => false,
'carruselImg' => true,
'bodyfontcolor' => "color: #000000!important;",
'buttonfontcolor' => "color: #000000!important;",
);
}else{
$configuracion = array(
'logo' => is_null($configuracion_query->getLogoSvg())?"assets/img/header-logo.svg":$serverhttps.$configuracion_query->getLogoSvg(),
'classheader' => is_null($configuracion_query->getClassHeader())?"black":$configuracion_query->getClassHeader(),
'idiomas' => $configuracion_query->getIdiomas(),
'bodybackground' => is_null($configuracion_query->getBodybackground())?"":"background-color: ".$configuracion_query->getBodybackground()." !important;",
//Landing
'murover' => $configuracion_query->getMurover(), //false,
'logover' => $configuracion_query->getLogover(), //true,
'migaspan' => $configuracion_query->getMigaspan(), //true,
'cuentaatras' => $configuracion_query->getCuentaatras(), //false,
'ponentesver' => $configuracion_query->getPonentesver(), //true,
'preguntasponentes' => $configuracion_query->getPreguntasponentes(), //true,
'botonesindexAge' => $configuracion_query->getBotonesindexAge(), //true,
'botonesindexPon' => $configuracion_query->getBotonesindexPon(), //true,
'botonesindexDoc' => $configuracion_query->getBotonesindexDoc(), //true,
'datefin' => $configuracion_query->getDatefin(), //true,
'muestrasalashe' => $configuracion_query->getMuestrasalashe(), //true,
'twittersi' => is_null($configuracion_query->getTwittercode())?false:true, //false,
'twittercode' => is_null($configuracion_query->getTwittercode())?"":$configuracion_query->getTwittercode(), //"",
'facebooksi' => is_null($configuracion_query->getFacebookcode())?false:true, //false,
'facebookcode' => is_null($configuracion_query->getFacebookcode())?"":$configuracion_query->getFacebookcode(), //"",
'instagramsi' => is_null($configuracion_query->getInstagramsi())?false:true, //false,
'instagramcode' => is_null($configuracion_query->getInstagramsi())?"":$configuracion_query->getInstagramsi(), //"",
'carruselImg' => $configuracion_query->getCarruselImg(), //true,
'bodyfontcolor' => is_null($configuracion_query->getBodyfontcolor())?"":"color: ".$configuracion_query->getBodyfontcolor()." !important;", //"color: #000000;",
'buttonfontcolor' => is_null($configuracion_query->getButtonfontcolor())?"":"color: ".$configuracion_query->getButtonfontcolor()." !important;", // "",
);
}
// FIN CONFIGURACION
$action = 'List Document';
$this->saveUserBehavior($uid->getUid(), $eid, $os, $mm, $mv, $lg, $action,'Document');
$count = count($datos);
$response_base =array(
'data' => array("document" => $datos,"configuracion" => $configuracion, "eventlang" => $lang),
'categories' => $category,
'meta' => array('count' => $count),
);
$response_body = json_encode($response_base, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES );
$response = new Response($response_body, 200);
return $response;
}
private function saveUserBehavior($userId, $event, $os, $mm, $mv, $lg, $action, $module){
$em = $this->getDoctrine()->getManager();
$MobileAppUsersBehavior = new MobileAppUsersBehavior();
$MobileAppUsersBehavior->setUserId($userId);
$MobileAppUsersBehavior->setEventId($event);
$MobileAppUsersBehavior->setOperatingSystem($os);
$MobileAppUsersBehavior->setMobileModel($mm);
$MobileAppUsersBehavior->setMobileVersion($mv);
$MobileAppUsersBehavior->setAction($action);
$MobileAppUsersBehavior->setModule($module);
$MobileAppUsersBehavior->setLang($lg);
$em->persist($MobileAppUsersBehavior);
$em->flush();
$em->clear();
}
}