<?php namespace App\Http\Controllers;

use App\Custom\SQLConnection;
use App\Custom\Misc;

use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Request;

use App\Custom\SmbClient;
use DB;

class TaskController extends Controller  {

  public static $usuarios; 
  public static $menu;

	public function obtenerTareas(){
		self::$menu      = Misc::obtenerPermisosNavigatorNoCuit();
	 	self::$usuarios = SQLConnection::backendStoreProcedure('obtener_usuarios_tareas', array());
		$usuarios = self::$usuarios;
		$menu = self::$menu;
		 
	 	return view('tareas/asignacion_tareas')->with(compact('usuarios','menu'));
	}

	public function buscarTareas(){
		$menu     = Misc::obtenerPermisosNavigatorNoCuit();
		$tipo_tarea = Request::input('tipo_tarea');
	 	$usuarios_cant   = SQLConnection::backendStoreProcedure('obtener_usuarios_tareas_cantidades', array($tipo_tarea));
	 	$usuarios_tareas_en_proceso = SQLConnection::backendStoreProcedure('obtener_usuarios_tareas_en_proceso', array($tipo_tarea));
	 	$usuarios  = (self::$usuarios) ? self::$usuarios : SQLConnection::backendStoreProcedure('obtener_usuarios_tareas', array());
	 	return view('tareas/tabla_usuarios_tareas')->with(compact('usuarios_cant','usuarios_tareas_en_proceso','tareas_historico','usuarios','menu','tipo_tarea'));
	}
 
	public function obtenerTareasHistorico(){
		$menu  = (self::$menu) ? self::$menu :  Misc::obtenerPermisosNavigatorNoCuit();
		$user_id    = Request::input('usuario_bus');
		$tipo_tarea    = Request::input('tipo_tarea_bus');
	 	$usuarios_tareas_historico = SQLConnection::backendStoreProcedure('obtener_usuarios_tareas_historico', array($tipo_tarea,$user_id));
	 	return view('tareas/tabla_usuarios_tareas_historico')->with(compact('usuarios_tareas_historico','menu','user_id','tipo_tarea'));
	}

	public function obtenerTareasAsignar(){
		$menu  = (self::$menu) ? self::$menu :  Misc::obtenerPermisosNavigatorNoCuit();
		$cuit =  Request::input('cuit_bus');
	 	$tareas_asignables   = SQLConnection::backendStoreProcedure('obtener_tareas_asignables_cuit', array($cuit,'734'));

	 	$temp = [] ; 
		foreach ($tareas_asignables as $key => $ta) {
			$temp[$key]['doc_id'] 						= $ta->doc_id;
      $temp[$key]['cuit']   						= $ta->cuit;
      $temp[$key]['nombre_persona'] 		= $ta->nombre_persona;
      $temp[$key]['periodo'] 						= $ta->periodo;
      $temp[$key]['path_archivo'] 			= $ta->path_archivo;
      $temp[$key]['balances_cargados'] 	= SQLConnection::backendStoreProcedure('obtener_balances_cuit', array($ta->cuit));
		}
		$tareas = $temp;
		//dd($tareas); 
		
	 	return view('tareas/tabla_asignacion_tareas')->with(compact('tareas','menu'));
	}

	public function obtenerBalancesCuit(){
		$cuit =  Request::input('cuit');
	 	$balances_cargados_cuit 	= SQLConnection::backendStoreProcedure('obtener_balances_cuit', array($cuit));
	 	//dd($balances_cargados_cuit); 
		return view('tareas/tabla_balances_cuit')->with(compact('balances_cargados_cuit'));
	}

	public function AsignarTareas(){
	 	$user_id 				= Request::input('user_id');
	 	$created_by 		= Session::get("usuario")->user_id;
	 	$doc_id 				= Request::input('doc_id_asi');
	 	$cuit 					= Request::input('cuit_asi');
	 	//dd($cuit);
		$path_archivo 	= Request::input('path_archivo_asi');
	 	$vigencia_desde	= Request::input('vigencia_desde');
	 	$vigencia_hasta	= Request::input('vigencia_hasta');
	 	$fecha_bal			= Request::input('fecha_bal_asi');
	 	$tipo 					= "balance";
	 	$estado 				= "GRABADO PARCIAL";
	 	$resp 					= SQLConnection::backendStoreProcedure('agregar_tarea', array($user_id,$doc_id,$cuit,$created_by, $vigencia_desde,$vigencia_hasta,$tipo),'selectOne'); 
	 	
	  self::enviarMailTarea($user_id, $cuit); 

	 	if($resp){
	 		$id = SQLConnection::backendStoreProcedure('insertar_nuevo_balance', array($cuit,$resp->task_id,$fecha_bal,$created_by),'selectOne');
	 		$smbc = new SmbClient (ENV('HOST_SLEGAL'),ENV('USS_SLEGAL'),ENV('PASS_SLEGAL'));
	 		if(!is_dir(ENV('RUTA_BALANCES').'/balances/'.$cuit)){
	 			mkdir(ENV('RUTA_BALANCES').'/balances/'.$cuit);
	 		}
	 		$pdf_route = $smbc->getWildcard($path_archivo,ENV('RUTA_BALANCES').'/balances/'.$cuit.'/'.$id->id.'.pdf');
	 	}

		$ruta_archivo = '/balances/'.$cuit.'/'.$id->id.'.pdf';
		$grabar  = SQLConnection::backendStoreProcedure('backend_archivo_balances_contables',array($id->id,$ruta_archivo),'select');

	 	$usuarios_cant   = SQLConnection::backendStoreProcedure('obtener_usuarios_tareas_cantidades', array('balance'));
	 	$usuarios_tareas_en_proceso = SQLConnection::backendStoreProcedure('obtener_usuarios_tareas_en_proceso', array('balance'));
	 	$usuarios  = (self::$usuarios) ? self::$usuarios : SQLConnection::backendStoreProcedure('obtener_usuarios_tareas', array());
	 	$tipo_tarea = 'balance';
		$menu  = (self::$menu) ? self::$menu :  Misc::obtenerPermisosNavigatorNoCuit();
	 	return view('tareas/tabla_usuarios_tareas')->with(compact('usuarios_cant','usuarios_tareas_en_proceso','tareas_historico','usuarios','menu','tipo_tarea'));
	}
 
	public function AsignarTareasNuevas(){
	 	$user_id 				= Request::input('user_id2');
	 	$created_by 		= Session::get("usuario")->user_id; 
	 	$doc_id 				= '0';
	 	$cuit 					= Request::input('cuit_nuevas1');
	 	$vigencia_desde	= Request::input('vigencia_desde2');
	 	$vigencia_hasta	= Request::input('vigencia_hasta2');
 	  $tipo =  (Request::input('tipo1')) ? Request::input('tipo1') : 'balance'; 
	 	$estado 				= "GRABADO PARCIAL";
	 	$archivos = "";
	 	$modi_alta	= Request::input('modi_alta');


	 	if ($tipo=='balance')
	 	{
	 	if ($modi_alta == 'A') {
	 			$fecha_bal	= Request::input('fecha_bal_nuevo');
				$resp 	= SQLConnection::backendStoreProcedure('agregar_tarea', array($user_id,$doc_id,$cuit,$created_by,$vigencia_desde,$vigencia_hasta,$tipo),'selectOne');
				if($resp)
				{
					$id = SQLConnection::backendStoreProcedure('insertar_nuevo_balance', array($cuit,$resp->task_id,$fecha_bal,$created_by),'selectOne');
					$temporary = explode(".", $_FILES["file_pdf"]["name"]); 
					if (isset($_FILES["file_pdf"]["error"]) && $_FILES["file_pdf"]["error"] >0 ) 
					  {
							return 'Error al cargar el Archivo PDF (118)';
						} else {
							$temporary = explode(".", $_FILES["file_pdf"]["name"]);
							$file_extension = end($temporary);
							$sourcePath = $_FILES['file_pdf']['tmp_name']; 

							$file = ENV('RUTA_BALANCES').'/balances/'.$cuit.'/'.$id->id.'.pdf';
							if(!is_dir(ENV('RUTA_BALANCES').'/balances/'.$cuit)){
									mkdir(ENV('RUTA_BALANCES').'/balances/'.$cuit, 0777,true);
							}
							move_uploaded_file($_FILES["file_pdf"]["tmp_name"],$file);
							chmod($file, 0777);
						}
			 	}
			 	$ruta_archivo = '/balances/'.$cuit.'/'.$id->id.'.pdf';
		    $grabar  = SQLConnection::backendStoreProcedure('backend_archivo_balances_contables',array($id->id,$ruta_archivo),'select');
	 } 
	 else
	 {
	 		 	$task_id	= Request::input('task_id_modi');
	 		 	$id_bal 	= Request::input('id_balance_modi');
	 		 	if ($task_id==''||$task_id==null)
	 		 	{
	 		 	//dd($user_id . ' - ' . $doc_id . ' - ' . $cuit . ' - ' . $created_by . ' - ' . $vigencia_desde . ' - ' . $vigencia_hasta . ' - ' . $tipo); 
 		 		 $resp 	= SQLConnection::backendStoreProcedure('agregar_tarea', array($user_id,$doc_id,$cuit,$created_by,$vigencia_desde,$vigencia_hasta,$tipo),'selectOne');
 		 		 SQLConnection::backendStoreProcedure('insertar_taskid_balance', array($id_bal,$resp->task_id),'selectOne');
	 		 	}
	 		 	else 
	 		 	{
				 $resp 	= SQLConnection::backendStoreProcedure('modificar_tarea', array($user_id,$vigencia_desde,$vigencia_hasta,$task_id,$tipo),'selectOne');
	 		 	}
	 }
	}
	else 
	{
		$task_id	= Request::input('task_id_modi');
		$resp 	= SQLConnection::backendStoreProcedure('modificar_tarea', array($user_id,$vigencia_desde,$vigencia_hasta,$task_id,$tipo),'selectOne');
	}

		self::enviarMailTarea($user_id, $cuit, $tipo); 

	 	$usuarios_cant   = SQLConnection::backendStoreProcedure('obtener_usuarios_tareas_cantidades', array($tipo));
	 	$usuarios_tareas_en_proceso = SQLConnection::backendStoreProcedure('obtener_usuarios_tareas_en_proceso', array($tipo));
	 	$usuarios  = (self::$usuarios) ? self::$usuarios : SQLConnection::backendStoreProcedure('obtener_usuarios_tareas', array());
	 	$tipo_tarea = $tipo;
		$menu  = (self::$menu) ? self::$menu :  Misc::obtenerPermisosNavigatorNoCuit();
	 	return view('tareas/tabla_usuarios_tareas')->with(compact('usuarios_cant','usuarios_tareas_en_proceso','tareas_historico','usuarios','menu','tipo_tarea'));

	}

public function borrarTarea(){
	 	$task_id 				= Request::input('task_id');
	 	$tipo 				  = Request::input('tipo');
	 	//dd($task_id);
	 	$resp 					= SQLConnection::backendStoreProcedure('borrar_tarea', array($task_id,$tipo),'selectOne');
	 	$usuarios_cant  = SQLConnection::backendStoreProcedure('obtener_usuarios_tareas_cantidades', array($tipo));
	 	$usuarios_tareas_en_proceso = SQLConnection::backendStoreProcedure('obtener_usuarios_tareas_en_proceso', array($tipo));
	 	$usuarios  = (self::$usuarios) ? self::$usuarios : SQLConnection::backendStoreProcedure('obtener_usuarios_tareas', array());
	 	$tipo_tarea = $tipo;
		$menu  = (self::$menu) ? self::$menu :  Misc::obtenerPermisosNavigatorNoCuit();
	 	return view('tareas/tabla_usuarios_tareas')->with(compact('usuarios_cant','usuarios_tareas_en_proceso','tareas_historico','usuarios','menu','tipo_tarea'));

}

public function verPDFBalance(){
		$nombre_persona = Request::Input('nombre_persona');
		$cuit = Request::Input('cuit');
		$task_id = Request::Input('task_id');
		$id = Request::Input('task_id');
		/*
		$archivo = ENV('RUTA_ARCHIVO_PDF').'/'.$cuit.'/'.$task_id.'.pdf';
		//dd($task_id);
		if (file_exists($archivo)){
			  $archivo = ENV('RUTA_ARCHIVO_PDF').'/'.$cuit.'/'.$task_id.'.pdf';
 		    $existe_pdf = true; 
		} 
		*/
		$bal = SQLConnection::backendStoreProcedure('[backend_balances_contables]', array($id,null,null,null,null,null), 'selectOne');
		$archivo = ENV('PATH_COMPARTIDO').$bal->ruta_archivo; 

		$existe_pdf = false;

		if (file_exists($archivo)){
			$archivo = ENV('RUTA_ARCHIVO_PDF').$bal->ruta_archivo; 	
 		  $existe_pdf = true; 
		}

		$archivo = 	'https://backend.fidelitas.com.ar' . $archivo; 
		$pdf_route = $archivo;
	 	return view('tareas/pdf')->with(compact('pdf_route'));
}

	public function obtenerPDF(){
		$path_archivo 				= Request::input('path_archivo');
		$smbc = new SmbClient (ENV('HOST_SLEGAL'),ENV('USS_SLEGAL'),ENV('PASS_SLEGAL'));
		$pdf_route = $smbc->getWildcard($path_archivo,'BALANCE-'.time().'.pdf');
		return \Response::make(file_get_contents($pdf_route), 200, [
			'Content-Type' => 'application/pdf',
			'Content-Disposition' => 'inline; filename="constancia.pdf"'
		]);
	 	return view('tareas/pdf')->with(compact('pdf_route'));
	}
/*
public function obtenerPDF(){
	 	$cuit 								= Request::input('cuit');
	 	dd($cuit);
		$path_archivo 				= Request::input('path_archivo');
		$smbc = new SmbClient (ENV('HOST_SLEGAL'),ENV('USS_SLEGAL'),ENV('PASS_SLEGAL'));
		$pdf_route = $smbc->getWildcard($path_archivo,ENV('RUTA_BALANCES').'\\'.$cuit);
		return \Response::make(file_get_contents(ENV('RUTA_BALANCES').'\\'.$cuit), 200, [
			'Content-Type' => 'application/pdf',
			'Content-Disposition' => 'inline; filename="constancia.pdf"'
		]);
	 	return view('tareas/pdf')->with(compact('pdf_route'));
	}

*/

	public function obtenerMisTareas(){
		$menu  = (self::$menu) ? self::$menu :  Misc::obtenerPermisosNavigatorNoCuit();
		$user_id    = Session::get("usuario")->user_id;
		$tareas 	  = SQLConnection::backendStoreProcedure('obtener_mis_tareas', array($user_id));
		$tareas_fin	= SQLConnection::backendStoreProcedure('obtener_mis_tareas_fin', array($user_id));
		
	 	return view('tareas/mis_tareas')->with(compact('tareas','menu','tareas_fin'));
	
	}

	public function finTarea(){
		$task_id = Request::Input('task_id');
		$tipo    = Request::Input('tipo');
		$fin_tarea = SQLConnection::backendStoreProcedure('backend_finalizar_tarea',array($task_id),"selectOne");
		
    $content 						= new \stdClass();
    $content->asignador = $fin_tarea->asignador;
    $content->username  = $fin_tarea->usuario;
    $content->empresa   = $fin_tarea->empresa; 
    $content->cuit      = $fin_tarea->cuit; 
    $content->tipo      = $tipo; 
     
    Misc::enviarMail("mails/finalizacion_tareas",$fin_tarea->email,$content,"Fin de una Tarea asignada"); 
    //Misc::enviarMail("mails/finalizacion_tareas","maria.soria@fidelitas.com.ar",$content,"Fin de una Tarea asignada"); 

  } 

	public function rechazarTarea(){   
		$task_id = Request::Input('task_id');
		$cuit    = Request::Input('cuit');
		$texto = Request::Input('texto');
		$user_id    = Session::get("usuario")->user_id;
		$a_u = Request::Input('asignador_usuario');
		$tipo_tarea =  (Request::input('tipo2')) ? Request::input('tipo2') : 'balance'; 
		
		$fecha_rechazo = SQLConnection::backendStoreProcedure('backend_rechazar_tarea',array($task_id,$texto,$user_id,$a_u),"selectOne");
		if ($a_u == 'A')
		{
			$usuarios_cant   = SQLConnection::backendStoreProcedure('obtener_usuarios_tareas_cantidades', array($tipo_tarea));
		 	$usuarios_tareas_en_proceso = SQLConnection::backendStoreProcedure('obtener_usuarios_tareas_en_proceso', array($tipo_tarea));
		 	$usuarios  = (self::$usuarios) ? self::$usuarios : SQLConnection::backendStoreProcedure('obtener_usuarios_tareas', array());
		 	//$tipo_tarea = 'balance';
			$menu  = (self::$menu) ? self::$menu :  Misc::obtenerPermisosNavigatorNoCuit(); 
			self::enviarMailTarea($user_id, $cuit,$tipo_tarea,'rechazo',$texto); 
		 	return view('tareas/tabla_usuarios_tareas')->with(compact('usuarios_cant','usuarios_tareas_en_proceso','tareas_historico','usuarios','menu','tipo_tarea'));
		}
  } 

	public function descartar(){
	 	$doc_id = Request::input('doc_id');
	 	$resp 	= SQLConnection::backendStoreProcedure('descartar_documentos', array($doc_id),'selectOne');
	 	//self::obtenerTareas();
	}

	public function enviarMailTarea($user_id, $cuit, $tipo='balance', $caso='asignacion',$texto=''){
		//dd($user_id."-".$cuit);
		$data = SQLConnection::backendStoreProcedure('backend_mails_tareas',array($user_id,$cuit),"selectOne");
    $content 						= new \stdClass();
    $content->username  = $data->usuario;
    $content->empresa   = $data->empresa; 
    $content->cuit      = $cuit; 
    $content->caso      = $caso; 
    $content->texto     = $texto; 
    $content->tipo      = $tipo; 
    Misc::enviarMail("mails/asignacion_tareas",$data->email,$content,"Asignación de Tarea Fidelitas"); 
    //Misc::enviarMail("mails/asignacion_tareas","maria.soria@fidelitas.com.ar",$content,"Asignación de Tarea Fidelitas"); 
	}


 public static function pruebaURL() {
 	
	$menu  = (self::$menu) ? self::$menu :  Misc::obtenerPermisosNavigatorNoCuit();
  //$url = 'https://seti.afip.gob.ar/padron-puc-constancia-internet/ConsultaConstanciaAction.do';
  $urls = SQLConnection::backendStoreProcedure('sp_servicios',array(),'select');
  return view('pruebas_servicios/pruebasurl')->with(compact('urls','menu'));
 }

 public static function pruebaURLTabla() {
	$menu  = (self::$menu) ? self::$menu :  Misc::obtenerPermisosNavigatorNoCuit();
  //$url = 'https://seti.afip.gob.ar/padron-puc-constancia-internet/ConsultaConstanciaAction.do';
  $urls = SQLConnection::backendStoreProcedure('sp_servicios',array(),'select');
  return view('pruebas_servicios/pruebasurl_tabla')->with(compact('urls','menu'));
 }


public static function pruebasURL() {
  //$url = 'https://seti.afip.gob.ar/padron-puc-constancia-internet/ConsultaConstanciaAction.do';
  $urls = SQLConnection::backendStoreProcedure('sp_servicios',array(),'select');
  $cuits = SQLConnection::backendStoreProcedure('sp_cuit_aleatorio',array(),'select');
  $hoja = '<table align="center" style="width:95%;font-family: Calibri,Trebuchet MS,arial,sans-serif;">';
  $hoja .='<tr style="background-color:#cccccc; font-weight: bold;"><td>Proceso</td><td>URL</td><td>Parámetros</td><td>Estado</td><td>Total_time</td></tr>'; 
  $pagina =  (Request::input('pagina')) ? Request::input('pagina') : '0'; 
  /* pagina = 1, viene de backend, 0 = viene de una url */
  //dd($pagina);
  $ie = ''; 
  foreach($urls as $url){
  	$tiempo = 0;
  	$cant = 0; 
  	if ($ie != $url->externo_interno && $url->externo_interno=='E')
  	{
  		    $hoja .= '<tr style="background-color:#cccccc;"><td colspan=5><b> EXTERNOS</b></td></tr>';
  		    $ie = 'E';
  	}
  	if ($ie != $url->externo_interno && $url->externo_interno=='I')
  	{
  		    $hoja .= '<tr style="background-color:#cccccc;"><td colspan=5><b> INTERNOS</b></td></tr>';
  		    $ie = 'I';
  	}
    if (strpos($url->parametros, 'XXXXXXXXXXX')!='0')
    {
      foreach($cuits as $cuit){
        //$url->url = str_replace('/v1/','/lñakfalñsdkf/', $url->url);

        $param = str_replace('XXXXXXXXXXX',$cuit->cuit, $url->parametros);
        $c = substr ($cuit->cuit,0,1); 
        if ($c=='3')
        {
        $param = str_replace('TYPE','COMPANY', $param);
        $param = str_replace('TIPO','J', $param);
        }
        else 
        {
        $param = str_replace('TYPE','PERSON', $param);
        $param = str_replace('TIPO','F', $param);
        }
        $resultado = self::CURLCall($url->nombre, $url->url,$param,$url->metodo);
        $hoja   .= $resultado['hoja']; 
        $tiempo += $resultado['tiempo']; 
        $estado = $resultado['estado'];
        $cant += 1; 
        $sql =  SQLConnection::backendStoreProcedure('sp_servicios_pruebas_detalle',array($url->id,$param,$resultado['estado'],$resultado['tiempo']),'selectOne');

      }
      $tiempo = $tiempo / $cant; 
      $hoja .='<tr style="font-weight: bold;"><td></td><td></td><td></td><td style="background-color:#cccccc;">Tiempo Promedio</td><td style="background-color:#cccccc;" class="text-right">'. $tiempo .'</td></tr>'; 
    }
    else
    {
      $resultado = self::CURLCall($url->nombre, $url->url,$url->parametros,$url->metodo);
      $hoja   .= $resultado['hoja']; 
      $tiempo += $resultado['tiempo']; 
      $estado = $resultado['estado'];
      $cant = 1; 
      $sql =  SQLConnection::backendStoreProcedure('sp_servicios_pruebas_detalle',array($url->id,$url->parametros,$resultado['estado'],$resultado['tiempo']),'selectOne');

    }
    $hoja .= '<tr style="background-color:#cccccc;"><td colspan=5></td></tr>';
    $sql =  SQLConnection::backendStoreProcedure('sp_servicios_pruebas',array($url->id,$estado,$tiempo),'selectOne');
    if ($pagina=='0') { echo $url->nombre, '_', $resultado['estado'], ' tiempo_promedio: ', $tiempo, "\r\n"; }

  }
  $hoja .= '</table>';
  
  if ($pagina=='1')
  {
  return view('pruebas_servicios/modal_pruebasurl')->with(compact('hoja'));
  }
}

public static function pruebaApiIc() {
  $cuit        = Request::input('cuit');
  $apikey      = Request::input('apikey');

	$params = 'cuit='.$cuit. '&apikey='.$apikey;
  $res = Misc::CURLCall('192.168.10.8/api/ic',$params,'POST');

  echo $res; 
}

public static function pruebasURL1() {
	$tiempo = 0;
	$cant = 0; 

  $url        = Request::input('url');
  $parametros = Request::input('parametros');
  $id         = Request::input('id');
  $nombre     = Request::input('nombre');
  $metodo     = Request::input('metodo');

  $hoja = '<table align="center" style="width:95%;font-family: Calibri,Trebuchet MS,arial,sans-serif;">';
  $hoja .='<tr style="background-color:#cccccc; font-weight: bold;"><td>Proceso</td><td>URL</td><td>Parámetros</td><td>Estado</td><td class="text-right">Total_time</td></tr>'; 
   if (strpos($parametros, 'XXXXXXXXXXX')!='0')
   {
       $cuits = SQLConnection::backendStoreProcedure('sp_cuit_aleatorio',array(),'select');    
   }
   if (strpos($parametros, 'XXXXXXXXXXX')!='0')
    {
      foreach($cuits as $cuit){
      	$cant += 1; 
        $param = str_replace('XXXXXXXXXXX',$cuit->cuit, $parametros);
        $c = substr ($cuit->cuit,0,1); 
        if ($c=='3')
        {
        $param = str_replace('TYPE','COMPANY', $param);
        $param = str_replace('TIPO','J', $param);
        }
        else 
        {
        $param = str_replace('TYPE','PERSON', $param);
        $param = str_replace('TIPO','F', $param);
        }
        $resultado = self::CURLCall($nombre, $url,$param,$metodo);
        $hoja   .= $resultado['hoja']; 
        $tiempo += $resultado['tiempo']; 
        $estado  = $resultado['estado']; 
        $sql =  SQLConnection::backendStoreProcedure('sp_servicios_pruebas_detalle',array($id,$param,$resultado['estado'],$resultado['tiempo']),'selectOne');
      }
    }
    else
    {
      $resultado = self::CURLCall($nombre, $url,$parametros,$metodo);
      $hoja   .= $resultado['hoja']; 
      $tiempo += $resultado['tiempo'];
      $estado  = $resultado['estado']; 
      $cant = 1; 
      $sql =  SQLConnection::backendStoreProcedure('sp_servicios_pruebas_detalle',array($id,$parametros,$resultado['estado'],$resultado['tiempo']),'selectOne');

    }
    $tiempo = $tiempo / $cant; 
    $sql = SQLConnection::backendStoreProcedure('sp_servicios_pruebas',array($id,$estado,$tiempo),'selectOne');
    $hoja .='<tr style="background-color:#cccccc; font-weight: bold;"><td></td><td></td><td></td><td>Tiempo Promedio</td><td class="text-right">'. $tiempo .'</td></tr>'; 
    $hoja .= '</table>';
    return view('pruebas_servicios/modal_pruebasurl')->with(compact('hoja'));
  }



public static function CURLCall($nombre, $url,$params,$type="POST"){
    $curl = curl_init();
    curl_setopt_array($curl, array(
      CURLOPT_URL => $url,
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_VERBOSE => true,
      CURLOPT_HEADER => true, 
      CURLOPT_ENCODING => "",
      CURLOPT_MAXREDIRS => 10,
      CURLOPT_TIMEOUT => 30,
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
      CURLOPT_CUSTOMREQUEST => $type,
      CURLOPT_POSTFIELDS => $params,
      CURLOPT_SSL_VERIFYHOST => 0,
      CURLOPT_SSL_VERIFYPEER => 0,
      CURLOPT_HTTPHEADER => array(
        "cache-control: no-cache",
        "content-type: application/x-www-form-urlencoded"
      ),
    ));

    $response = curl_exec($curl);
    $header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
    $header = substr($response, 0, $header_size);
    $body = substr($response, $header_size);

    $err      = curl_error($curl);
    $info     = curl_getinfo($curl); 

    curl_close($curl);
/*
    echo '<br><br>$err=' , $err,'<br>'; 
    echo '$response=' , $response,'<br>'; 
    echo '$header=' , $header,'<br>'; 
*/
    if (!empty($err) || strpos($response,' 400 ')!= 0 || strpos($response,' 404 ')!= 0 ) {
    	$estado = 'ERROR';
      $hoja2 = '<tr style="color:red;"><td><b>'. $nombre. '</b></td><td>' . $url. '</td><td>'. $params . '</td><td>ERROR ' . $err . '</td><td class="text-right">'. number_format($info["total_time"],6) .'</td></tr>'; 
    } else {
    	$estado = 'OK';
      $hoja2 = '<tr><td><b>'. $nombre. '</b></td><td>' . $url. '</td><td>'. $params. '</td><td>OK</td><td class="text-right">' . number_format($info["total_time"],6) . '</td></tr>'; 
    }
    //return $hoja2;
    $out['hoja'] = $hoja2; 
    $out['tiempo'] = $info["total_time"]; 
    $out['estado'] = $estado; 
    return $out; 
  }
    

}