/**
  * Costruttore del servizio
  * 
  * @param ContainerInterface $container
  * @return MainKernel
  */
 public function __construct(ContainerInterface $container, SettingManager $settingManager)
 {
     $this->container = $container;
     $this->settingManager = $settingManager;
     $this->logManager = $container->get('techg.log');
     $this->session = $container->get('session');
     $this->requestId = uniqid(rand(), true);
     $this->userBrowserInfo = UtilityManager::getBrowser();
     // Inizializzo la sessione
     $this->session->start();
     $request = $container->get('request');
     // Gestisco il salvataggio nei cookie dell' Id di sessione
     if ($request->cookies->has('tgSessionId')) {
         $this->cookieId = $request->cookies->get('tgSessionId');
     } else {
         if ($request->cookies->has('tgSessionFirstId')) {
             $this->cookieId = uniqid(null, true);
             $this->tempCookieId = $request->cookies->get('tgSessionFirstId');
             $this->cookieObj = new Cookie('tgSessionId', $this->cookieId, time() + 3600 * 24 * 7);
         } else {
             $this->cookieId = 'NO-COOKIE-SUPPORT';
             $tempId = $this->session->getId();
             $this->cookieObj = new Cookie('tgSessionFirstId', $tempId, time() + 3600 * 24 * 1);
         }
         $this->saveCookie = true;
     }
     // Mappo la master request nell'array apposito
     $this->masterRequest = $this->mapRequest($request, true);
     // Qua dovrei lanciare un evento che carichi i moduli attivi nel kernel
     // a quel punto sapendo quali sono attivi, posso ragionare di conseguenza
     $this->userGeoPosition = $container->get('techg.geocoder')->getGeoInfoByIp($this->getMasterRequest('ip'));
     $this->guessedLocale = $this->masterRequest['guessedLocale'];
     // ************************************************************************************************
     // Qui ho finito completamente il l'inizializzazione del kernel
     // ************************************************************************************************
     $this->isInit = true;
     // *********************************************************************
     // Da qui si potrebbe definire PostInit
     // Faccio partire l'evento che indica ai moduli che il kernel è inizializzato
     // *********************************************************************
     $container->get('event_dispatcher')->dispatch(TechGKernelInitEvent::onKernelInit, new TechGKernelInitEvent($this));
 }
 public function renderRequest($request_id)
 {
     $serializer = \JMS\Serializer\SerializerBuilder::create()->build();
     $request = null;
     $response = null;
     $reqStatus = 'ok';
     $warning = false;
     $reqIcon = 'page';
     $returnCode = 0;
     $requestLogs = $this->em->getRepository("TechGSfBaseprjBundle:Log")->getLogsByRequestId($request_id);
     // Setto la request e la response
     foreach ($requestLogs as $k => $log) {
         // decodifico gli info
         $log['info'] = json_decode($requestLogs[$k]['info'], true);
         // Se è la request la tolgo dall'array e la tratto a parte
         if ($log['log_type'] == LogManager::TYPE_SAVE_REQUEST) {
             $request = $log['info']['request'];
             $request['queryString'] = $request['queryString'] != '' ? '?' . $request['queryString'] : '';
             $request['onlyBaseUri'] = str_replace($request['queryString'], '', $request['requestUri']);
             $request['data'] = UtilityManager::time_ago(\DateTime::createFromFormat('Y-m-d H:i:s', $log['log_date']));
             // Se esiste la response, prendo anche quella
             if (array_key_exists('response', $log['info'])) {
                 $response = json_decode($log['info']['response'], true);
                 $returnCode = $response['status_code'];
             }
             // infine la tolgo dall'array dei log validi
             unset($requestLogs[$k]);
         } else {
             $requestLogs[$k] = $this->renderLog($log);
         }
     }
     switch ($returnCode) {
         case '500':
         case '501':
             $reqStatus = 'error';
             $reqIcon = 'http_status_server_error';
             break;
         case '404':
             $reqStatus = 'nofound';
             $reqIcon = 'page_white_error';
             break;
         case 0:
             $reqStatus = 'warning';
             $reqIcon = 'page_white_error';
             break;
         case 302:
             $reqStatus = 'forward';
             $reqIcon = 'arrow_up';
             break;
         default:
             if (array_key_exists(LogManager::LEVEL_WARNING, $request['typecount'])) {
                 $reqStatus = 'warning';
                 $reqIcon = 'page_white_error';
             }
             if (array_key_exists(LogManager::LEVEL_ERROR, $request['typecount'])) {
                 $reqStatus = 'error';
                 $reqIcon = 'http_status_server_error';
             }
             break;
     }
     $returnValue = array();
     $returnValue['obj'] = $request;
     $returnValue['html'] = $this->tgKernel->getTemplatingEngine()->render('TechGSfBaseprjBundle:GPanel:Component/render_request.html.twig', array('request' => $request, 'response' => $response, 'logs' => $requestLogs, 'reqStatus' => $reqStatus, 'reqIcon' => $reqIcon));
     return $returnValue;
 }