<?php

namespace App\Http\Middleware;

use Closure;
use App\Custom\Misc;
//use Misc;
use Session;
use Request;
//----
use App\Custom\SQLConnection;
use stdClass;
use App\Http\Controllers\LoginController;

class Sesion {
  public function handle($request, Closure $next){
    $usuario             = Session::get('usuario');
    $token_validacion    = Request::input('token_id_usuario');
    $token_por_secciones = Request::input('token_por_secciones');
    //----
   	if(!$usuario and $_SERVER['REMOTE_ADDR'] != substr(env('URL_BASE'),7) ){
   		if(!$token_validacion){
        if (!$token_por_secciones) {
    		  return redirect('/?ns');
        }
    	}
    }
    //---
    if ($_SERVER['REMOTE_ADDR'] == substr(env('URL_BASE'),7) ){
      //--
      if ( $_POST['sessionkey'] == env('SESSION_BACKEND_FIDELITAS_KEY') ){
        $usuario = new stdClass();
        $usuario->user_id = '15342812';
        $cliente = SQLConnection::obtenerCliente(ENV('ID_INFORME_COMERCIAL'),$usuario->user_id);
        //---
        foreach ($cliente as $key => $value) {
					if($key == 'client_id') {
						$client_id = $value->client_id;
					}
					$cliente_ordenado[$value->id_producto] = $value;
				}
        //---
        $secciones = LoginController::obtenerSeccionesHabilitadas($usuario->user_id);
				$secciones = array_change_key_case($secciones, CASE_LOWER);
				$usuario->informe_comercial = false;
				if($secciones){
					$cliente_ordenado[ENV('ID_INFORME_COMERCIAL')]->secciones = $secciones;
					$usuario->informe_comercial = true;
				}
				$usuario->cliente 				= $cliente_ordenado;
				$usuario->cliente['client_id']	= $client_id;
        //----
        Session::put('usuario',$usuario);
        Session::put('externo',true);
				Session::put('sesion_externa',true);
      }
      else{
        return redirect('/?ns');
      }
      //--
    }
    //----
    if(isset($usuario->user_horario) && $usuario->user_horario != null)  {
      $minutos = 0;
      $minutos = date('H') * 20  + date('i');
      if($minutos < $usuario->user_horario->hora_desde || $minutos > $usuario->user_horario->hora_hasta){
        Session::flush();
        return redirect('/?ns');
      }
    }
    //
    $response = $next($request);                                                                                                                                                                               
    $response->headers->set('Cache-Control','no-cache, no-store, max-age=0, must-revalidate');
    $response->headers->set('Pragma','no-cache');
    $response->headers->set('Expires','Sun, 02 Jan 1990 00:00:00 GMT');
    return $response;
    //return $next($request);
	}
}		