<?php namespace App\Http\Controllers;

use App\Custom\SQLConnection; 
use App\Custom\Misc;
use Request;
use Session;
use DateTime;
use Illuminate\Support\Facades\Input;
use DB;
use stdClass;

// use Illuminate\Session\TokenMismatchException;


class SAASController extends Controller

{
   


    public static function obtenerAdministracionClientes(){
        return view('/saas/administracionClientes');
    }

    public static function obtenerAdministracionClientesInfo(){
    	$cliente	= Session::get('usuario')->cliente['client_id'];
	  	$datos	=SQLConnection::backendStoreProcedure('SAAS_Clientes_', array('ADMINISTRACION', null,null,$cliente), 'select');
        foreach ($datos as $key => $dato)
        {
           $dato->pais = '<span class="flag-icon flag-icon-background flag-icon-'. strtolower($dato->pais) .'"></span>'; 
           $datos[$key] = $dato;  
        }
        return json_encode($datos);
    }

    public static function nuevaConsulta(){
        return view('/saas/nuevaConsulta');
    }

    public static function resultadoNuevaConsulta(){
        return view('/saas/resultadoNuevaConsulta');
    }

    public static function busquedaPadron() { 
        $cliente    = Session::get('usuario')->cliente['client_id'];
        $cc =   'AR';
        $country = SQLConnection::backendStoreProcedure('backend_obtener_paises', array(), 'select');
        $ident = SQLConnection::backendStoreProcedure('backend_obtener_identificadores_pais', array($cc), 'select');

        return view('/saas/busqueda_padron')->with(compact(['cliente', 'cc', 'country', 'ident']));
    }

    // Función que retorna datos para busqueda de personas - Diego
    public function busquedaPadronPersonas(){
		$dni = Request::input('dni');
		$cuit = Request::input('cuit');
		$razon_social = Request::input('razon_social');

		return SQLConnection::busquedaPadronPersonas($cuit,$dni,$razon_social);
	}

    // Administra Lista Negra
    public function listaNegra(){
        $user_id = Session::get('usuario')->user_id;
        $cliente = Session::get('usuario')->cliente['client_id'];
        if (isset($_POST['_idBorrar']) && Misc::validarCuil($_POST['_idBorrar'])){
            $idBorrar = $_POST['_idBorrar'];
            $visible = $_POST['_visible'];
            $action = $_POST['_action'];
            $aux = [$idBorrar,$user_id,$visible,$action,$cliente];
            SQLConnection::listaNegraDB('update',$aux);
            $cambiado = SQLConnection::listaNegraDB('selectOne',[$idBorrar,$cliente]);
            if ($cambiado[0]->visible == '1'){
                $cambiado[0]->visible = 'Activo';
            }
            elseif ($cambiado[0]->visible == '0'){
                $cambiado[0]->visible = 'Inactivo';
            }

            return $cambiado;
        }
        elseif (isset($_POST['_idSelect']) && Misc::validarCuil($_POST['_idSelect'])){
            
            $country = SQLConnection::backendStoreProcedure('SAAS_Clientes_', array('ADMINISTRACION', null,null,$cliente), 'select');
            $country = $country[0]->pais;
            $idSelect = $_POST['_idSelect'];
            $visible = $_POST['_visible'];
            $desde = $_POST['_desde'];
            $hasta = $_POST['_hasta'];
            $checkDB = SQLConnection::listaNegraDB('selectOne',[$idSelect,$cliente]);
            $aux = [$idSelect,$cliente,$user_id,$desde,$hasta,$visible,$country,];
            if($checkDB == []){
                if (Misc::validarFecha($aux[3]) && Misc::validarFecha($aux[4])){                    
                    SQLConnection::listaNegraDB('agregar',$aux);

                    $aux = SQLConnection::listaNegraDB('selectOne',[$idSelect,$cliente]);
                    if ($aux[0]->visible == '1'){
                        $aux[0]->visible = 'Activo';
                    }
                    if ($aux[0]->visible == '0'){
                        $aux[0]->visible = 'Inactivo';
                    }

                    return $aux;
                }
            }            
            else {
                return 'error';
            }
        }
        elseif (isset($_POST['_consulta']) && $_POST['_consulta'] == 'si'){            
            $consulta = [];
            $todo = SQLConnection::listaNegraDB('consultar',[0,$cliente,$user_id]);

            foreach ($todo as $dato){
                if ($dato->visible == '1'){
                    $dato->visible = 'Activo';
                }
                elseif ($dato->visible == '0'){
                    $dato->visible = 'Inactivo';
                }
                array_push($consulta, $dato);                
            }
            return $consulta;
        }
	}

    public function agregarLista(){
		$dni = Request::input('dni');
		$cuit = Request::input('cuit');
		$razon_social = Request::input('razon_social');
		return SQLConnection::busquedaPadronPersonas($cuit,$dni,$razon_social);
	}

    public static function IdentificadoresPais() {
        $cc = Request::input('country_code');
        $ident = DB::select('EXEC dbo.backend_obtener_identificadores_pais '.$cc);
        return json_encode($ident);
    }

    public static function busquedaDataPadron() {
        $country = Request::input('country_code');
        $padron = DB::select('EXEC dbo.LN_busqueda_padron ?,?', array(Request::input('identificador') , Request::input('numero')) );
        return json_encode($padron);    
    }

    public static function clienteNew() {
        $cliente    = Session::get('usuario')->cliente['client_id'];
        $identificador = Request::input('identificador');
        $numero = Request::input('numero');
        $nombre = Request::input('nombre_persona');
        $id_padron = Request::input('id_padron');
        $fecha_hoy = date("d/m/Y"); 
        $existe = 0;
        $datos  =SQLConnection::backendStoreProcedure('SAAS_Clientes_', array('ADMINISTRACION', null,null,$cliente), 'select');
        foreach ($datos as $data) {
            if($data->id_padron == $id_padron) {
                $existe = 1;
                break;
            }
        }

        return view('/modals/saas/nuevoClienteModal')->with(compact(['cliente', 'identificador', 'numero', 'nombre','id_padron','existe','fecha_hoy']));
    }

    public static function clienteInsert() {

// Alta del cliente
        $cliente            = Session::get('usuario')->cliente['client_id'];
        $user_id            = Session::get('usuario')->user_id; 
        $id_padron          = Request::input('id_padron');
        $nro_cliente        = Request::input('nro_cliente');
        $fecha_alta         = ('' != Request::input('fecha_alta')) ? date_create_from_format('!d/m/Y', Request::input('fecha_alta')) : '';
        $direccion          = Request::input('direccion');
        $localidad          = Request::input('localidad');
        $provincia          = Request::input('provincia');
        $codpos             = Request::input('codpos');
        $telefono           = Request::input('telefono');
        $nombre_contacto    = Request::input('nombre_contacto');  
        $email_contacto     = Request::input('email_contacto'); 
        $telefono_contacto  = Request::input('telefono_contacto'); 
        $adicionales        = Request::input('adicionales'); 
     
        $params = array(
                    'INSERT',  // accion
                    $user_id,  
                    '0',       // saas_cliente
                    $cliente,  
                    $nro_cliente,  
                    $id_padron,  
                    $direccion,  
                    $localidad,  
                    $provincia,  
                    '',         // pais
                    $codpos,  
                    $telefono,  
                    $nombre_contacto, 
                    $email_contacto,  
                    $telefono_contacto,  
                    $adicionales,  
                    '123456',  // clave
                    '0',       // clave_temporal
                    $fecha_alta,  // vigencia_desde
                    '',        // vigencia_hasta
                    '1'        // activo 
                    ); 

        $datos = SQLConnection::backendStoreProcedure('SAAS_Clientes_', $params, 'selectOne');

        $saas_cliente = $datos->saas_cliente; 

// Alta de los usuarios (solo los que tienen nombre y email)
        $usuario   = $_POST['usuario_nombre'];
        $sector    = $_POST['usuario_sector'];
        $email     = $_POST['usuario_email'];

        foreach( $usuario as $key => $u) 
        {
            if (!empty($usuario[$key]) && !empty($email[$key]))
            {
                $params = array(
                                'INSERT',  // accion
                                $user_id,  
                                '0',       // saas_usuario
                                $saas_cliente,  
                                $email[$key],  // el username es el email 
                                $sector[$key],  
                                $usuario[$key],  
                                $email[$key],  
                                '',  
                                '123456',  // clave
                                '0',       // clave_temporal
                                '',        // datos_adicionales
                                '',        // vigencia_desde
                                '',        // vigencia_hasta
                                '1'        // activo 
                                ); 
                $datos = SQLConnection::backendStoreProcedure('SAAS_Usuarios_', $params, 'selectOne');
            }

        }
        return "ok"; 
    }


    public static function usuarioInsert() {

        $cliente            = Session::get('usuario')->cliente['client_id'];
        $user_id            = Session::get('usuario')->user_id; 
        $usuario    = Request::input('usuario_nombre');
        $sector     = Request::input('usuario_sector');
        $email      = Request::input('usuario_email');
        $saas_cliente = Request::input('saas_cliente');
        $saas_usuario  = Request::input('saas_usuario');
        $accion         = Request::input('usu_accion');
        $activo         = Request::input('activo');
        if ($accion=='M' || $accion=='A')
        {
          if ($accion=='M')
            {  $accion = 'UPDATE'; }

          if ($accion=='A')
            {   
                $accion = 'INSERT'; 
                $saas_usuario = 0;
            }
          if (!empty($usuario) && !empty($email))
          {
              $clave = Misc::generateRandomString(6);

              $params = array(
                              $accion,  
                              $user_id,  
                              $saas_usuario,     
                              $saas_cliente,  
                              $email,  // el username es el email 
                              $sector,  
                              $usuario,  
                              $email,  
                              '',  
                              $clave,  // clave
                              '0',       // clave_temporal
                              '',        // datos_adicionales
                              '',        // vigencia_desde
                              '',        // vigencia_hasta
                              $activo    // activo 
                              ); 
              $datos = SQLConnection::backendStoreProcedure('SAAS_Usuarios_', $params, 'selectOne');

              $params = array('SELECT',null,$saas_cliente); 
              $nombre_cliente = SQLConnection::backendStoreProcedure('SAAS_Clientes_', $params, 'selectOne');

              if ($accion=='INSERT')
              {
                  $content = new stdClass();
                  $content->nombre_cliente = $nombre_cliente->nombre;
                  $content->cuit_cliente = $nombre_cliente->identificacion;
                  $content->email = $email;
                  $content->clave = $clave;
                  $to = []; 
                  $to[] = $email;
                  $to[] = 'dcl.argentina@coface.com';
                  //$to[] = 'maria.soria@fidelitas.com.ar';
                  Misc::enviarMailLED('saas/email_usuario','no-reply@fidelitas.com.ar',/*$email,*/$to,'soporte@fidelitas.com.ar','',$content,'DCL COFACE - Alta usuario','');
              }

            }

         
                $params = array(
                                'selectall',  // accion
                                $user_id,  
                                0, // saas_usuario
                                $saas_cliente,
                                $cliente);
                $data_usuarios = SQLConnection::backendStoreProcedure('SAAS_Usuarios_', $params, 'select');

                return json_encode(array('error' => 'ok', 'tabla' => view('/saas/saas_usuarios')->with(compact('data_usuarios','saas_cliente'))->render()));

        }
        else
        {
          return 'error'; 
        }
    }


 public static function controlUsuarios()
    {
        $cliente    = Session::get('usuario')->cliente['client_id'];
        $usuario   = $_POST['usuario_nombre'];
        $sector    = $_POST['usuario_sector'];
        $email     = $_POST['usuario_email'];

        $usuario = array_filter($usuario);
        $email = array_filter($email);
        $error = "ok"; 
        
        // Validación de direcciones de emails
        $res = filter_var(Request::input('email_contacto'), FILTER_VALIDATE_EMAIL); 
        if (!($res)) { $error = "novalido"; } 

        if ($error=='ok' && count($email) > 0)
        {
            foreach( $email as $key => $username) 
            {
                $username = trim($username);
                $res = filter_var($username, FILTER_VALIDATE_EMAIL); 
                if (!($res)) { $error = "novalido"; break;} 
            }
        }
        
        // Controlamos que los usuarios cargados tengan el nombre y el email.
        if ($error=='ok' && count($email) > 0 || count($usuario) > 0) 
        {
            foreach( $usuario as $key => $u) 
            {
               if (( empty($email[$key]) && !empty($usuario[$key])) ||
                   (!empty($email[$key]) &&  empty($usuario[$key])))
               {
                $error = 'error'; 
                break; 
               }
            }
        }
        
        // Controlamos que no haya repetidos
        if ($error=='ok' && count($email) > 0) 
        {
            $unicos = array_unique($email);
            $cant_unicos = count($unicos);
            $todos       = count($email);
            if($todos > $cant_unicos){
              $error="repetidos"; 
            }
        }


        // Controlamos que no esté cargado nungún usuario en la BD (y le mostramos en una lista cuáles ya están)
        $estan_BD = []; 
        if ($error=='ok' && count($email) > 0) 
        {
            foreach( $email as $key => $username) 
            {
            $username = trim($username); 
            $esta = DB::selectOne("SELECT count(*) as cant from SAAS_Usuarios where activo = 1 and username = '" . $username . "'" .
                    " and saas_cliente in (select SAAS_Cliente from SAAS_Clientes where cliente = " . $cliente . ")");
            if ( $esta->cant > 0 )
                { 
                  if (!in_array($username,$estan_BD)) {
                    $estan_BD[] = $username; 
                    $error="BD"; 
                    }
                 }
            }
        }


        $enBD = new stdClass();
        $enBD = ''; 
        foreach ($estan_BD as $j => $BD)
        {
            if (empty($enBD))
            {
                $enBD = $BD; 
            }
            else
            {
                $enBD .= ', ' . $BD; 
            }
        }

        return json_encode([
            'error'=>$error,'BD'=>$enBD
         ]);

    }

    public static function controlUsuario()
    {
        $cliente    = Session::get('usuario')->cliente['client_id'];
        $usuario    = Request::input('usuario_nombre');
        $sector     = Request::input('usuario_sector');
        $email      = Request::input('usuario_email');
        $saas_usuario   = Request::input('saas_usuario'); 


        $error = "ok"; 

        if(empty($usuario) && empty($email))
        {
          $error = "error"; 
        }
        if(empty($usuario) && !empty($email))
        {
          $error = "error"; 
        }

        if(!empty($usuario) && empty($email))
        {
          $error = "error"; 
        }

        if ($error=='ok' && !empty($email))
        {
            $res = filter_var($email, FILTER_VALIDATE_EMAIL); 
            if (!($res)) { $error = "novalido"; } 
        }

        // Controlamos que no esté cargado el usuario en la BD 
        
        $enBD = new stdClass();
        if ($error=='ok' && !empty($email)) 
        {
            $esta = DB::selectOne("SELECT count(*) as cant from SAAS_Usuarios where username = '" . $email . "'" .
                    " and saas_usuario != '" . $saas_usuario . "'" .
                    " and saas_cliente in (select SAAS_Cliente from SAAS_Clientes where cliente = " . $cliente . ")");
            if ( $esta->cant > 0 )
                { 
                    $enBD = $email; 
                    $error="BD"; 
                 }
        }

        return json_encode([
            'error'=>$error,'BD'=>$enBD
         ]);

    }

    public static function controlContrato()
    {
        $cliente    = Session::get('usuario')->cliente['client_id'];
        $nro_contrato    = Request::input('nro_contrato');
        $nro_poliza      = Request::input('nro_poliza'); 
        $saas_contrato   = !empty(Request::input('saas_contrato')) ? Request::input('saas_contrato') : 0;

        $error = "ok"; 

        if(empty($nro_contrato) && empty($nro_poliza))
        {
          $error = "error"; 
        }
        if(empty($nro_contrato) && !empty($nro_poliza))
        {
          $error = "error"; 
        }
        if(!empty($nro_contrato) && empty($nro_poliza))
        {
          $error = "error"; 
        }

        // Controlamos que no esté cargado el nro_contrato en la BD 
        
        $enBD = new stdClass();
        if ($error=='ok' && !empty($nro_contrato)) 
        {
            $esta = DB::selectOne("SELECT count(*) as cant from SAAS_Contratos where nro_contrato = '" . $nro_contrato . 
                    "' and saas_contrato != '" . $saas_contrato . "' and activo = 1" );
            if ( $esta->cant > 0 )
                { 
                    $enBD = $nro_contrato; 
                    $error="BD"; 
                 }
        }

        return json_encode([
            'error'=>$error,'BD'=>$enBD
         ]);

    }


    public static function contratoInsert() {

        $cliente        = Session::get('usuario')->cliente['client_id'];
        $user_id        = Session::get('usuario')->user_id; 
        $nro_contrato   = Request::input('nro_contrato');
        $nro_poliza     = Request::input('nro_poliza');
        $saas_cliente   = Request::input('saas_cliente');
        $saas_contrato  = Request::input('saas_contrato');

        $accion         = Request::input('con_accion');
        if ($accion=='M' || $accion=='A')
        {
          if ($accion=='M')
            {  $accion = 'UPDATE'; }

          if ($accion=='A')
            {   
                $accion = 'INSERT'; 
                $saas_contrato = 0;
            }

          if (!empty($nro_contrato) && !empty($nro_poliza))
          {
              $params = array(
                              $accion,  // accion
                              $user_id,  
                              $saas_contrato, 
                              $saas_cliente,  
                              $nro_contrato,   
                              $nro_poliza,  
                              '',        // datos_adicionales
                              '',        // vigencia_desde
                              '',        // vigencia_hasta
                              '1'        // activo 
                              ); 
              $datos = SQLConnection::backendStoreProcedure('SAAS_Contratos_', $params, 'selectOne');
          }
          return "ok"; 
        }
        else
        {
          return 'error'; 
        }

    }



    public static function saasCliente()
    {
        $cliente            = Session::get('usuario')->cliente['client_id'];
        $user_id            = Session::get('usuario')->user_id; 
        $saas_cliente = Request::input('saas_cliente'); 

        //$tab = (null != Request::input('tab')) ? Request::input('tab') : 'home';
        $tab = 'home';
      
        $params = array(
                    'SELECT',  // accion
                    $user_id,  
                    $saas_cliente,
                    $cliente);
        $clientes = SQLConnection::backendStoreProcedure('SAAS_Clientes_', $params, 'selectOne');

        $vista = view('/saas/saas_cliente')->with(compact('clientes','tab'))->render();
        return \Response::json(
                array(
                    'vista' => $vista,
                    'info'=>compact('clientes')
                ),
                200,
                [],
                JSON_NUMERIC_CHECK
            );
        return ; 

    }

  public static function saasHome() {

        $cliente      = Session::get('usuario')->cliente['client_id'];
        $user_id      = Session::get('usuario')->user_id; 
        $saas_cliente = Request::input('saas_cliente'); 

        $params = array(
                        'SELECT',  // accion
                        $user_id,  
                        $saas_cliente,
                        $cliente);
        $data_cliente = SQLConnection::backendStoreProcedure('SAAS_Clientes_', $params, 'selectOne');

        return view('/saas/saas_home')->with(compact('data_cliente'));
  }


  public static function saasUsuarios() {
        $cliente            = Session::get('usuario')->cliente['client_id'];
        $user_id            = Session::get('usuario')->user_id; 
        $saas_cliente = Request::input('saas_cliente'); 

        $params = array(
                        'selectall',  // accion
                        $user_id,  
                        0, // saas_usuario
                        $saas_cliente,
                        $cliente);
        $data_usuarios = SQLConnection::backendStoreProcedure('SAAS_Usuarios_', $params, 'select');

        return view('/saas/saas_usuarios')->with(compact('data_usuarios','saas_cliente'));
  }

  public static function saasContratos() {
        $cliente            = Session::get('usuario')->cliente['client_id'];
        $user_id            = Session::get('usuario')->user_id; 
        $saas_cliente = Request::input('saas_cliente'); 

        $params = array(
                        'selectall2',  // accion
                        $user_id,  
                        0, // saas_usuario
                        $saas_cliente,
                        $cliente);
        $data_contratos = SQLConnection::backendStoreProcedure('SAAS_Contratos_', $params, 'select');
        //return view('/saas/saas_contratos')->with(compact('data_contratos','saas_cliente'));
        $vista = \View::make('/saas/saas_contratos')->with(compact('data_contratos','saas_cliente'))->render();
        return $vista;
  }

  // MODIFICACION 14/09/2021
  //FUNCION ENCARGADA DE DEVOLVER LA SECCION ALTAMASIVA Y EL ARRAY QUE CONTIENE LA DATA DE LOS USUARIOS
  public static function saasAltamasiva(){
      $cliente = Session::get('usuario')->cliente['client_id'];
      $user_id = Session::get('usuario')->user_id;
      $saas_cliente = Request::input('saas_cliente');

      $params = array(
          'selectall', //accion
          $user_id,
          0, // saas_usuario
          $saas_cliente,
          $cliente
        );
        //--------
        $data_usuarios = SQLConnection::backendStoreProcedure('SAAS_Usuarios_', $params, 'select');
        //--------
        return view('/saas/saas_altamasiva')->with(compact('data_usuarios','saas_cliente'));
  }

  // FUNCION QUE DEVUELVE EL ARRAY CON LOS CONTRATOS ASSIGNADOS AL USUARIO ELEGIDO
  public static function saasAltamasivaContratos(){
      $cliente = Session::get('usuario')->cliente['client_id'];
      $user_id = Session::get('usuario')->user_id;
      $saas_cliente = Request::input('sass_cliente_elegido');
      $saas_usuario = Request::input('sass_usuario_elegido');
      //--------
      $params = array(
          'selectall-usuario', //accion
          $user_id, //user_id
          0, //saas_usuario_contrato
          $saas_cliente, // saas_cliente
          $saas_usuario, // saas_usuario
          0, // saas_contrato
      );
      //---------
      $data_contratos = SQLConnection::backendStoreProcedure('SAAS_Usuarios_Contratos_',$params,'select');
      //---------
      return $data_contratos;
  }

  // FUNCION QUE RECIBE EL ARCHIVO Y LOS DATOS , LOS VALIDA Y LLAMA A LA URL PARA GUARDARLE LOS CUITS
  public static function saasAltamasivaCargarArchivo(){
      $expReg = "/^\d+$/";
      $expReg1 = "/^.+\.txt$|^.+\.csv$/";
      //----
      if (preg_match($expReg,$_POST['altamasiva_cliente']) and preg_match($expReg,$_POST['altamasiva_contratos']) and preg_match($expReg,$_POST['altamasiva_usuarios']) and preg_match($expReg1,$_FILES['archivo_altamasiva']['name']) and ($_FILES['archivo_altamasiva']['type'] == 'text/plain' or $_FILES['archivo_altamasiva']['type'] == 'text/csv' or $_FILES['archivo_altamasiva']['type'] == 'application/csv') ){
        $cliente = Session::get('usuario')->cliente['client_id'];
        $saas_cliente = $_POST['altamasiva_cliente'];
        //----- VARIABLES USADOS
        $saas_contrato = $_POST['altamasiva_contratos'];
        $ruta = $_FILES['archivo_altamasiva']['tmp_name'];
        //-----
        //-----
        //$contenido = file($ruta,FILE_SKIP_EMPTY_LINES);
        $contenido = array_filter(array_map("trim", file($ruta)), "strlen");
        $expReg_del_contenido = "/^\d{11}\n?$/"; 
        //-----
        $resultado = [];
        $errores = [];
        //--- INICIO DEL LOOP
        foreach ($contenido as $cuit){
            //--- SI LA LINEA DENTRO DEL ARCHIVO ES VALIDA
            if (preg_match($expReg_del_contenido,$cuit) ){
                $cuit = substr($cuit,0,11);
                sleep(1);
                $params = "apikey=1F44A3FAA0C15C42&cuit=".$cuit."&saas_usuario_contrato=".$saas_contrato;
                $estado_de_llamada = self::callUrlAltamasiva(env('RUTA_SAAS_ALTAMASIVA'),$params,'POST');
                //--- SI LA LLAMADA DEVUELVE ERROR ENTRA POR ACA
                if ($estado_de_llamada != 200 ){
                    array_push($resultado,$cuit);
                }
                //-----
            }
            //----- SI LA LINEA DENTRO DEL ARCHIVO ES INVALIDA
            else{
                array_push($resultado,$cuit);
            }
            
        }
        $archivo = '';
        //---------- SI HUBO ERRORES
        if (count($resultado) != 0 ){
            //--- SI HUBO ERRORES EN LA LLAMADA CURL NADA MAS
            if (count($resultado) != 0 and count($errores) == 0){
                //$archivo .= "cuits validos pero hubo un fallo en la llamada \n";
                //----
                foreach($resultado as $cuit){
                    $archivo .= $cuit."\n";
                }
            }
            //---- SI HUBO ERRORES DE CUITS INVALIDOS NADA MAS
            /* elseif (count($resultado) == 0 and count($errores) != 0) {
                if (count($errores) != 0){
                    //$archivo .= "Lineas de cuit invalidos \n";
                    foreach($errores as $linea){
                        $archivo .= $linea."\n";
                    }
                }
            } */
            //----- SI HUBO ERRORES DE AMBOS TIPOS
            else{
                //$archivo .= "cuits validos pero hubo un fallo en la llamada \n";
                //--
                foreach($resultado as $cuit){
                    $archivo .= $cuit."\n";
                }
                //--
                //$archivo .= "\n";
                //$archivo .= "Lineas de cuit invalidos \n";
                //--
                /*foreach($errores as $linea){
                    $archivo .= $linea."\n";
                }*/
            }
            //-------
            header('Content-disposition: attachment; filename=resultado_de_altamasiva.txt');
            header('Content-type: text/plain; charset=utf-8');
            //----
            $archivo = utf8_decode($archivo);
            //-----
            $response = array(
                'op' => 'ok',
                'archivo' => 'resultado_de_altamasiva.txt',
                'file' => "data:text/plain;base64,".base64_encode($archivo)
            );
            //-----
            die(json_encode($response));

        }
        //---- SI NO HUBO NINGUN ERROR
        else{
            die(json_encode('0'));
        }
      }
      //----- SI LOS DATOS DEL FORMULARIO SON INVALIDOS
      else{
        die(json_encode('1'));
      }
  }

  // FUNCION ENCARGADA DE HACER LA LLAMADA PARA AGREGAR LOS CONTRAPARTES
  public static function callUrlAltamasiva($url,$params,$type="POST"){
    $curl = curl_init();
    curl_setopt_array($curl, array(
      CURLOPT_URL => $url,
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_ENCODING => "",
      CURLOPT_MAXREDIRS => 10,
      CURLOPT_TIMEOUT => 30,
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
      CURLOPT_CUSTOMREQUEST => $type,
      CURLOPT_POSTFIELDS => $params,
    ));
    $response = curl_exec($curl);
    $err = curl_error($curl);
    $status = curl_getinfo($curl,CURLINFO_HTTP_CODE);
    curl_close($curl);
    //return $response;
    return $status;
  }


  // FIN DE MODIFICACION

    public static function saasContratosAgregarUsuario() {

        $cliente            = Session::get('usuario')->cliente['client_id'];
        $user_id            = Session::get('usuario')->user_id; 
        $saas_cliente       = Request::input('saas_cliente'); 
        $saas_contrato      = Request::input('saas_contrato'); 
        $contrato       = Request::input('contrato'); 
        $poliza         = Request::input('poliza'); 
        $activo         = Request::input('activo'); 
        
        $disponibles = []; 
        $asignados   = []; 
        if ($activo == 1)
        {
        $params = array(
                        'usuarios_disponibles',  // accion
                        $user_id,  
                        0, // saas_usuario_contrato
                        $saas_cliente,
                        0, // saas_usuario
                        $saas_contrato);
                        
        $disponibles = SQLConnection::backendStoreProcedure('SAAS_Usuarios_Contratos_', $params, 'select');

        $params = array(
                'usuarios_asignados',  // accion
                $user_id,  
                0, // saas_usuario_contrato
                $saas_cliente,
                0, // saas_usuario
                $saas_contrato);
        $asignados = SQLConnection::backendStoreProcedure('SAAS_Usuarios_Contratos_', $params, 'select');
        }

        //$vista =  view('/saas/saas_contratos_agregar_usuario')->with(compact(['saas_cliente', 'saas_contrato', 'disponibles', 'asignados']));
        $vista = view('/saas/saas_contratos_agregar_usuario')->with(compact('saas_cliente','saas_contrato','disponibles','asignados','contrato','poliza','activo'))->render();

        return \Response::json(
                array(
                    'vista' => $vista
                ),
                200,
                [],
                JSON_NUMERIC_CHECK
            );
        return ; 

  }


  public static function saasContratosUsuariosMove() {
    $cliente        = Session::get('usuario')->cliente['client_id'];
    $user_id        = Session::get('usuario')->user_id; 
    $saas_cliente   = Request::input('saas_cliente'); 
    $saas_contrato  = Request::input('saas_contrato'); 
    $move           = Request::input('move');

    $disp = !empty(Request::input('disponibles')) ? Request::input('disponibles') : NULL;
    $asig = !empty(Request::input('asignados')) ? Request::input('asignados') : NULL;

    $usuarios = ($move == 'right') ? ( NULL !== $disp ? $disp : NULL ) : ( NULL !== $asig ? $asig : NULL );

    if (NULL !== $usuarios) {

      $ind = explode(",", $usuarios);

      foreach ($ind as $key => $saas_usuario) {
        if ($move == 'right') {
            $params = array(
                     'insert_usuario',  // accion
                     $user_id,  
                     0, // saas_usuario_contrato
                     $saas_cliente,
                     $saas_usuario, 
                     $saas_contrato);

            $temp = SQLConnection::backendStoreProcedure('SAAS_Usuarios_Contratos_', $params, 'selectOne');
        }
        else {
           $params = array(
                     'delete_usuario',  // accion
                     $user_id,  
                     0, // saas_usuario_contrato
                     $saas_cliente,
                     $saas_usuario, 
                     $saas_contrato);
            $temp = SQLConnection::backendStoreProcedure('SAAS_Usuarios_Contratos_', $params, 'selectOne');
        }
      }
    }

    $params = array(
                    'usuarios_disponibles',  // accion
                    $user_id,  
                    0, // saas_usuario_contrato
                    $saas_cliente,
                    0, // saas_usuario
                    $saas_contrato);
                    
    $disponibles = SQLConnection::backendStoreProcedure('SAAS_Usuarios_Contratos_', $params, 'select');

    $params = array(
            'usuarios_asignados',  // accion
            $user_id,  
            0, // saas_usuario_contrato
            $saas_cliente,
            0, // saas_usuario
            $saas_contrato);
    $asignados = SQLConnection::backendStoreProcedure('SAAS_Usuarios_Contratos_', $params, 'select');

    return json_encode( array($disponibles, $asignados) );

  }

   public static function saasContratosDelete() {
    $cliente        = Session::get('usuario')->cliente['client_id'];
    $user_id        = Session::get('usuario')->user_id; 
    $saas_cliente   = Request::input('saas_cliente'); 
    $saas_contrato  = Request::input('saas_contrato'); 
    $activo  = Request::input('activo'); 
    $params = array(
                        'delete',  // accion
                        $user_id,  
                        $saas_contrato, 
                        $saas_cliente); 
    $data = SQLConnection::backendStoreProcedure('SAAS_Contratos_', $params, 'selectOne');
    $vista = self::saasContratos();
    return array('data' => $data,'vista' => $vista);
    //return json_encode($data); 
   }
    





}
