<?php

namespace App\Http\Controllers;

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

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

class LegalesController extends Controller {

    public static $ent_bancaria;
    public static $fuentes;
    public static $eventos;
    public static $eventos_morosidad;
    public static $tipos_causas;
    public static $tipo_procesos;

    // Central de Deudores

    public function obtenerCentralDeudores() {
        $token_id_usuario = MainController::obtenerParametrosInformeComercial();
        $token_por_secciones = $this->obtenerTokenSeccion('bancos');
        //valido si el usuario tiene el permiso correspondiente para acceder a la sección solicitada.
        $valido = Misc::restriccionPermiso('DEUDORES');
        if (!$valido) {
            return redirect('/menu');
        }
        //obtenemos los permisos para el menu, ésta variable debe asignarse al compact de la vista.
        $menu = Misc::obtenerPermisosNavigator();
        //$cuit = Session::get('cuit');
        $cuit = Request::Input('cuit');
        $meses = 60;
        $visible = 1;
        $central_deudores = SQLConnection::backendCentralDeudores($cuit, $meses, $visible);

        //self::$ent_bancaria  = SQLConnection::obtenerEntidadesBancarias();
        //$ent_bancaria = self::$ent_bancaria;

        self::$ent_bancaria = SQLConnection::obtenerCodigos("obtener_EntidadesBancarias");
        $ent_bancaria = self::$ent_bancaria;

        self::$fuentes = SQLConnection::obtenerCodigos("obtener_Fuentes");
        $fuentes = self::$fuentes;

        self::$eventos = SQLConnection::obtenerCodigos("obtener_Eventos_deudas");
        $eventos = self::$eventos;
        //print_r($eventos); die(); 	

        $params = array($cuit);

        $bloqueo_cendeu = SQLConnection::backendStoreProcedure("backend_cendeu_bloqueo", $params, 'select');
        $cancela_cendeu = SQLConnection::backendStoreProcedure("backend_cendeu_cancela", $params, 'select');

        return view('legales/central_deudores')->with(compact('central_deudores', 'meses', 'visible', 'ent_bancaria', 'eventos', 'fuentes', 'bloqueo_cendeu', 'cancela_cendeu', 'menu', 'cuit', 'token_por_secciones', 'token_id_usuario'));
    }

    public function filtrarCentralDeudores() {
        //$cuit = Session::get('cuit');
        $cuit = Request::Input('cuit');
        /*
        $meses = (Request::input('meses')) ? Request::input('meses') : 6;
        $visible = (Request::input('visible')) ? Request::input('visible') : 1;
        $todos = (Request::input('todos')) ? Request::input('todos') : "N";
        */
        $meses = Request::input('meses');
        $visible = Request::input('visible');
        $central_deudores = SQLConnection::backendCentralDeudores($cuit, $meses, $visible);

        return view('legales/tabla_central_deudores')->with(compact('central_deudores', 'meses', 'visible', 'cuit'));
    }

    /*
        public function visibleCentralDeudores(){ 
            $id_cendeu= Request::input('id_cendeu');
            $visible_central_deudores = SQLConnection::backendVisible($id_cendeu,'backend_vigente_central_deudores');
            return json_encode(array('error' => $visible_central_deudores->error,'mensaje' => $visible_central_deudores->mensaje)); 
        }
    */
    
    //TODO al intentar activar un registro inactivo, la pagina se recarga pero no ocurre nada
    public function visibleCentralDeudores() {
        $id_cendeu = Request::input('id_cendeu');
        $cuit = Request::input('cuit');
        $user_id = Session::get("usuario")->user_id;
        //$id_padron = Session::get("id_padron");
        $id_padron = null;
        //$visible_central_deudores = SQLConnection::backendVisible($id_cendeu,'backend_vigente_central_deudores');						
        $visible_central_deudores = SQLConnection::backendStoreProcedure("backend_vigente_central_deudores", array($id_cendeu, $id_padron, $user_id, $cuit), 'selectOne');

        return json_encode(array('error' => $visible_central_deudores->error, 'mensaje' => $visible_central_deudores->mensaje));
    }

    public function altaCentralDeudores() {

        //$cuit 			= Session::get('cuit');
        $cuit = Request::Input('cuit');
        $codigo_ent = Request::input('banco');
        $fec_inf = Request::input('periodo');
        $deuda_total = Request::input('monto');
        $situacion = Request::input('situacion');
        $observaciones = Request::input('observaciones');
        $accion = Request::input('accion');
        $meses = Request::input('meses');
        $visible = Request::input('visible');
        if ($accion == 'M') {
            self::visibleCentralDeudores();
        }
        $mensaje_central_deudores = SQLConnection::backendAltaCentralDeudores($cuit, $codigo_ent, $fec_inf, $situacion, $deuda_total, $observaciones);
        $central_deudores = SQLConnection::backendCentralDeudores($cuit, $meses, $visible);
        return json_encode(array('error' => $mensaje_central_deudores->error, 'mensaje' => $mensaje_central_deudores->mensaje,
            'tabla' => view('legales/tabla_central_deudores')->with(compact('central_deudores', 'visible', 'meses', 'cuit'))->render()
        ));

    }

    /****************************/
    /* Bloqueo Central Deudores */
    /****************************/

    public function bloqueoCendeu() {
        $cuit = Request::Input('cuit');
        $bloqueo_cendeu = SQLConnection::obtenerCendeuBloqueo($cuit);
        $ent_bancaria = (self::$ent_bancaria) ? self::$ent_bancaria : SQLConnection::obtenerCodigos("obtener_EntidadesBancarias");

        return view('legales/tabla_bloqueo_cendeu')->with(compact('bloqueo_cendeu', 'ent_bancaria', 'cuit'));
    }

    public function visibleBloqueoCendeu() {
        $id_cendeu_bloqueo = Request::input('id_cendeu_bloqueo');
        $visible_central_deudores = SQLConnection::backendVisible($id_cendeu_bloqueo, 'backend_visible_bloqueo_cendeu');
        return self::bloqueoCendeu();
    }

    public function altaBloqueoCendeu() {
        $cuit = Request::Input('cuit');
        $codigo_ent = Request::input('blq_banco');
        $periodo_hta = Request::input('blq_periodo_hta');
        $blq_observaciones = Request::input('blq_observaciones');
        //$id_persona = Session::get('id_padron');
        $id_persona = null;
        $usuario = Session::get("usuario")->user_id;

        $params = array($cuit, $codigo_ent, $periodo_hta, $blq_observaciones, $id_persona, $usuario);
        $blq_mensaje = SQLConnection::backendStoreProcedure("backend_alta_cendeu_bloqueo", $params, 'selectOne');
        $tabla = self::bloqueoCendeu();

        return json_encode(array('error' => $blq_mensaje->error, 'mensaje' => $blq_mensaje->mensaje, 'tabla' => $tabla->render()));

    }

    /**********************************/
    /* Cancelaciones Central Deudores */
    /**********************************/

    public function cancelaCendeu() {
        //$cuit = Session::get('cuit');
        $cuit = Request::Input('cuit');
        $cancela_cendeu = SQLConnection::obtenerCendeuCancela($cuit);
        //$ent_bancaria  = (self::$ent_bancaria) ? self::$ent_bancaria : SQLConnection::obtenerEntidadesBancarias();
        $ent_bancaria = (self::$ent_bancaria) ? self::$ent_bancaria : SQLConnection::obtenerCodigos("obtener_EntidadesBancarias");
        $fuentes = (self::$fuentes) ? self::$fuentes : SQLConnection::obtenerCodigos("obtener_Fuentes");
        $eventos = (self::$eventos) ? self::$eventos : SQLConnection::obtenerCodigos("obtener_Eventos_Deudas");
        //print_r($eventos); die(); 

        return view('legales/tabla_cancela_cendeu')->with(compact('cancela_cendeu', 'ent_bancaria', 'fuentes', 'eventos', 'cuit'));
    }

    public function visibleCancelaCendeu() {
        $id_cendeu_cancela = Request::input('id_cendeu_cancela');
        $visible_central_deudores = SQLConnection::backendVisible($id_cendeu_cancela, 'backend_visible_cancela_cendeu');
        return self::cancelaCendeu();
    }

    public function altaCancelaCendeu() {
        //$cuit 			= Session::get('cuit');
        $cuit = Request::Input('cuit');
        $codigo_ent = Request::input('can_banco');
        $periodo_dde = Request::input('can_periodo_dde');
        $periodo_hta = Request::input('can_periodo_hta');
        $can_evento = Request::input('can_evento');
        $can_fecha = Request::input('can_fecha');
        $can_fuente = Request::input('can_fuente');
        $can_fecha_fuente = Request::input('can_fecha_fuente');
        $can_observaciones = Request::input('can_observaciones');
        //$id_persona = Session::get('id_padron');
        $id_persona = null;
        $usuario = Session::get("usuario")->user_id;

        $params = array($cuit, $codigo_ent, $periodo_dde, $periodo_hta, $can_evento, $can_fecha, $can_fuente, $can_fecha_fuente, $can_observaciones, $id_persona, $usuario);
        $can_mensaje = SQLConnection::backendStoreProcedure("backend_alta_cendeu_cancela", $params, 'selectOne');
        $tabla = self::cancelaCendeu();

        return json_encode(array('error' => $can_mensaje->error, 'mensaje' => $can_mensaje->mensaje, 'tabla' => $tabla->render()));

    }

    /**********************/
    /* Cheques rechazados */
    /**********************/
    public function obtenerChequesRechazados() {
        //$cuit = Session::get('cuit');
        $cuit = Request::Input('cuit');
        //$id_persona = Session::get('id_padron');
        $id_persona = null;
        $solo_contar = 0;
        $meses = 60;
        $visible = 1;
        $params = array($cuit, $id_persona, $solo_contar, $meses, $visible);
        $cheques_rechazados = SQLConnection::backendStoreProcedure("backend_cheques_rechazados", $params);
        $causales = SQLConnection::backendStoreProcedure("obtener_causales_cheques", array());
        return view('legales/cheques_rechazados')->with(compact('cheques_rechazados', 'meses', 'visible', 'causales', 'cuit'));
    }

    public function filtrarChequesRechazados() {
        //$cuit = Session::get('cuit');
        $cuit = Request::Input('cuit');
        //$id_persona = Session::get('id_padron');
        $id_persona = null;
        $solo_contar = 0;
        $meses = Request::input('meses');
        $visible = Request::input('visible');
        $params = array($cuit, $id_persona, $solo_contar, $meses, $visible);
        $cheques_rechazados = SQLConnection::backendStoreProcedure("backend_cheques_rechazados", $params);
        $causales = SQLConnection::backendStoreProcedure("obtener_causales_cheques", array());

        return view('legales/tabla_cheques_rechazados')->with(compact('cheques_rechazados', 'meses', 'visible', 'causales', 'cuit'));
    }

    public function visibleChequesRechazados() {
        //$cuit = Session::get('cuit');
        $cuit = Request::Input('cuit');
        $id_cheque = Request::input('id_cheque');
        $usuario = Session::get("usuario")->user_id;

        $params = array($cuit, $id_cheque, $usuario);
        $mensaje_visible = SQLConnection::backendStoreProcedure("backend_vigente_cheques_rechazados", $params, 'selectOne');

        // cargo nuevamente cheques rechazados
        //$id_persona = Session::get('id_padron');
        $id_persona = null;
        $solo_contar = 0;
        $meses = Request::input('meses');
        $visible = Request::input('visible');

        $params = array($cuit, $id_persona, $solo_contar, $meses, $visible);
        $cheques_rechazados = SQLConnection::backendStoreProcedure("backend_cheques_rechazados", $params);
        $causales = SQLConnection::backendStoreProcedure("obtener_causales_cheques", array());
        return json_encode(array('error' => $mensaje_visible->error, 'mensaje' => $mensaje_visible->mensaje,
            'tabla' => view('legales/tabla_cheques_rechazados')->with(compact('cheques_rechazados', 'visible', 'meses', 'causales', 'cuit'))->render()));
        //return json_encode(array('error' => $visible_cheques_rechazados->error,'mensaje' => $visible_cheques_rechazados->mensaje)); 
    }

    public function altaChequesRechazados() {

        $user_id = Session::get("usuario")->user_id;
        //$cuit = Session::get('cuit');
        $cuit = Request::Input('cuit');
        //$id_persona = Session::get('id_padron');
        $id_persona = null;

        $cuit_fir = Request::input('cuit_firmante');
        $cuit_rel = Request::input('Cuit_relacionado');
        $nro_cheque = Request::input('nro_cheque');
        $importe = Request::input('importe');
        $fecha_pag = Request::input('fecha_pago');
        $fecha_rec = Request::input('fecha_rechazo');
        $fecha_lev = Request::input('fecha_levantamiento');
        $id_causa = Request::input('id_causa');

        $accion = Request::input('accion');
        $meses = Request::input('meses');
        $visible = Request::input('visible');

        if ($accion == 'A') {
            // alta cheque
            $params = array($cuit_fir, $cuit_rel, $nro_cheque, $importe, $fecha_pag, $fecha_rec, $fecha_lev, $id_causa, $user_id);
            $mensaje_cheques_rechazados = SQLConnection::backendStoreProcedure("backend_alta_cheques_rechazados", $params, 'selectOne');

        } else {
            // modificacion cheque
            self::visibleChequesRechazados();

            $params = array($cuit, $nro_cheque, $fecha_rec, $fecha_pag, $fecha_lev, $importe, $id_causa, $user_id, $visible);
            $mensaje_cheques_rechazados = SQLConnection::backendStoreProcedure("backend_modificacion_cheques_rechazados", $params, 'selectOne');
        }

        $solo_contar = 0;
        $params = array($cuit, $id_persona, $solo_contar, $meses, $visible);
        $cheques_rechazados = SQLConnection::backendStoreProcedure("backend_cheques_rechazados", $params);
        $causales = SQLConnection::backendStoreProcedure("obtener_causales_cheques", array());
        return json_encode(array('error' => $mensaje_cheques_rechazados->error,
            'mensaje' => $mensaje_cheques_rechazados->mensaje,
            'tabla' => view('legales/tabla_cheques_rechazados')->with(compact('cheques_rechazados', 'visible', 'meses', 'causales', 'cuit'))->render()
        ));
    }

    public function verificarChequesGemelos() {
        //$cuit = Session::get('cuit');
        $cuit = Request::Input('cuit');
        $id_cheque = Request::input('id_cheque');

        $params = array($cuit, $id_cheque);
        $res = SQLConnection::backendStoreProcedure("backend_verificar_cheques_gemelos", $params, 'selectOne');
        return json_encode($res);
    }


    /*********************/
    /* Causas Judiciales como Actor y Demandano */
    /*********************/

    public function obtenerJuicios() {
        $token_id_usuario = MainController::obtenerParametrosInformeComercial();
        $token_por_secciones = $this->obtenerTokenSeccion('legales');
        //valido si el usuario tiene el permiso correspondiente para acceder a la sección solicitada.
        $valido = Misc::restriccionPermiso('JUDICIALES');
        if (!$valido) {
            return redirect('/menu');
        }
        //obtenemos los permisos para el menu, ésta variable debe asignarse al compact de la vista.
        $menu = Misc::obtenerPermisosNavigator();
        //$cuit = Session::get('cuit');
        $cuit = Request::Input('cuit');
        $nombre_persona = Request::input("nombre_persona");
        $ident = Request::input("ident");
        $meses = 60;
        $visible = 1;

        $params = array(NULL, 'D', $cuit, $meses, $visible);
        //var_dump($params);
        $juicios_demandado = SQLConnection::backendStoreProcedure("backend_juicios_demandado_actor", $params);

        $params = array(NULL, 'A', $cuit, $meses, $visible);
        //var_dump($juicios_actor);
        $juicios_actor = SQLConnection::backendStoreProcedure("backend_juicios_demandado_actor", $params);

        self::$tipos_causas = SQLConnection::obtenerCodigos("obtener_tipos_causas");
        $tipos_causas = self::$tipos_causas;

        self::$tipo_procesos = SQLConnection::obtenerCodigos("obtener_tipo_procesos");
        $tipo_procesos = self::$tipo_procesos;

        return view('legales/juicios')->with(compact('juicios_demandado', 'juicios_actor', 'meses', 'visible', 'tipos_causas', 'tipo_procesos', 'menu', 'cuit', 'token_por_secciones', 'token_id_usuario', 'nombre_persona', 'ident'));
    }

    public function filtrarJuicios() {

        //$cuit = Session::get('cuit');
        $cuit = Request::Input('cuit');
        $meses = Request::input('meses');
        $visible = Request::input('visible');

        $params = array(NULL, 'D', $cuit, $meses, $visible);
        $juicios_demandado = SQLConnection::backendStoreProcedure("backend_juicios_demandado_actor", $params);

        $params = array(NULL, 'A', $cuit, $meses, $visible);
        $juicios_actor = SQLConnection::backendStoreProcedure("backend_juicios_demandado_actor", $params);


        $tabla_demandado = view('legales/tabla_juicios_demandado')->with(compact('juicios_demandado', 'meses', 'visible', 'cuit'))->render();
        $tabla_actor = view('legales/tabla_juicios_actor')->with(compact('juicios_actor', 'meses', 'visible', 'cuit'))->render();

        return json_encode(array('tablad' => $tabla_demandado, 'tablaa' => $tabla_actor));

    }

    public function modalJuicios() {
        $id_juicio = Request::input('id_juicio');
        $cuit = Request::input('cuit');
        $causas_judiciales = SQLConnection::backendStoreProcedure("backend_juicios_demandado_actor", array($id_juicio, NULL, NULL, NULL, NULL), 'selectOne');
        $tipos_causas = (self::$tipos_causas) ? self::$tipos_causas : SQLConnection::obtenerCodigos("obtener_tipos_causas");
        $tipo_procesos = (self::$tipo_procesos) ? self::$tipo_procesos : SQLConnection::obtenerCodigos("obtener_tipo_procesos");
        return view('modals/modal_juicios')->with(compact('causas_judiciales', 'tipos_causas', 'tipo_procesos', 'cuit'));

    }

    public function visibleJuicios() {
        $id_juicio = Request::input('id_juicio');
        $cuit = Request::input('cuit');
        //print_r($id_juicio); 
        $visible_mje = SQLConnection::backendVisible($id_juicio, 'backend_visible_juicios');
        return json_encode(array('error' => $visible_mje->error, 'mensaje' => $visible_mje->mensaje));
    }

    public function visibleJuiciosSinCuit() {
        $id_juicio = Request::input('id_juicio');
        $visible_mje = SQLConnection::backendVisible($id_juicio, 'backend_visible_juicios');
        return json_encode(array('error' => $visible_mje->error, 'mensaje' => $visible_mje->mensaje));
    }

    public function abmJuicios() {
        //$cuit 		  = Session::get("cuit");
        $cuit = Request::Input('cuit');
        //$nombre     = Session::get("nombre");
        $nombre = Request::Input('nombre_persona');
        $user_id = Session::get("usuario")->user_id;
        //$id_padron 	= Session::get("id_padron");
        $id_padron = null;

        $valores = [];
        $valores['cuit'] = $cuit;
        $valores['nombre'] = $nombre;
        $valores['id_padron'] = $id_padron;
        $valores['user_id'] = $user_id;

        foreach (request()->except('_token', 'visible', 'meses', 'dni_actor', 'dni_demandado') as $key => $valor) {

            if (empty($valor)) {
                $valor = '';
            }
            $valores[$key] = $valor;
            //var_dump($key); var_dump($valor); 
        }

        $valores = array_values($valores);

        $store_procedure = 'backend_abm_juicios';
        $mensaje_abm = SQLConnection::backendStoreProcedure($store_procedure, $valores, "selectOne");

        $visible = (Request::input('visible') == "") ? 1 : Request::input('visible');
        $meses = (Request::input('meses') == "") ? 6 : Request::input('meses');

        $params = array(NULL, 'D', $cuit, $meses, $visible);
        $juicios_demandado = SQLConnection::backendStoreProcedure("backend_juicios_demandado_actor", $params);

        $params = array(NULL, 'A', $cuit, $meses, $visible);
        $juicios_actor = SQLConnection::backendStoreProcedure("backend_juicios_demandado_actor", $params);

        return json_encode(array('error' => $mensaje_abm->error, 'mensaje' => $mensaje_abm->mensaje,
            'tablad' => view('legales/tabla_juicios_demandado')->with(compact('juicios_demandado', 'meses', 'visible', 'cuit'))->render(),
            'tablaa' => view('legales/tabla_juicios_actor')->with(compact('juicios_actor', 'meses', 'visible', 'cuit'))->render()
        ));

    }

    /*********************/
    /* Cargar Causas Judiciales */
    /*********************/

    public function obtenerJuiciosSinCuit($id_juicio = '0',$en_modal=0) {
        $menu = Misc::obtenerPermisosNavigatorNoCuit();
        //valido si el usuario tiene el permiso correspondiente para acceder a la sección solicitada.
        $valido = Misc::restriccionPermiso('JUDICIALES');
        if (!$valido) {
            return redirect('/menu');
        }
        self::$tipos_causas = SQLConnection::obtenerCodigos("obtener_tipos_causas");
        $tipos_causas = self::$tipos_causas;

        self::$tipo_procesos = SQLConnection::obtenerCodigos("obtener_tipo_procesos");
        $tipo_procesos = self::$tipo_procesos;

        self::$fuentes = SQLConnection::obtenerCodigos("obtener_Fuentes");
        $fuentes = self::$fuentes;

        $params = array($id_juicio, null, null, null, null);
        $causas_judiciales = SQLConnection::backendStoreProcedure("backend_juicios_demandado_actor", $params, 'selectOne');
        if ($en_modal==1) {
            return view('/legales/new/juicios_sincuit_modal')->with(compact('id_juicio', 'causas_judiciales', 'tipos_causas', 'tipo_procesos', 'fuentes', 'menu'));
        } else {
            return view('/legales/new/juicios_sincuit')->with(compact('id_juicio', 'causas_judiciales', 'tipos_causas', 'tipo_procesos', 'fuentes', 'menu'));
        }
    }

    public function obtenerJuiciosSinCuitId() {
        $id_juicio = Request::input('id');
        return self::obtenerJuiciosSinCuit($id_juicio,1);
    }

    public function obtenerJuiciosSinCuitBKP($id_juicio = '0') {
        $menu = Misc::obtenerPermisosNavigatorNoCuit();
        //valido si el usuario tiene el permiso correspondiente para acceder a la sección solicitada.
        $valido = Misc::restriccionPermiso('JUDICIALES');
        if (!$valido) {
            return redirect('/menu');
        }

        self::$tipos_causas = SQLConnection::obtenerCodigos("obtener_tipos_causas");
        $tipos_causas = self::$tipos_causas;

        self::$tipo_procesos = SQLConnection::obtenerCodigos("obtener_tipo_procesos");
        $tipo_procesos = self::$tipo_procesos;

        self::$fuentes = SQLConnection::obtenerCodigos("obtener_Fuentes");
        $fuentes = self::$fuentes;

        $params = array($id_juicio, null, null, null, null);
        $causas_judiciales = SQLConnection::backendStoreProcedure("backend_juicios_demandado_actor", $params, 'selectOne');
        //var_dump($juicios); 
        // return view('legales/juicios_sincuit')->with(compact('id_juicio','causas_judiciales','tipos_causas','tipo_procesos','fuentes', 'menu'));
        return view('/legales/new/juicios_sincuit')->with(compact('id_juicio', 'causas_judiciales', 'tipos_causas', 'tipo_procesos', 'fuentes', 'menu'));
    }

    public function obtenerJuiciosSinCuitIdBKP() {
        $id_juicio = Request::input('id');

        return self::obtenerJuiciosSinCuit($id_juicio);
    }


    public function abmJuiciosSinCuit() {
        $user_id = Session::get("usuario")->user_id;
        $valores = [];
        $valores['user_id'] = $user_id;
        //
        $valores['id_juicio'] = Request::input('id_juicio') ?? NULL;
        $valores['fuente'] = Request::input('fuente') ?? NULL;
        $valores['fecha_fuente'] = Request::input('fecha_fuente') ?? NULL;
        $valores['texto'] = Request::input('texto') ?? NULL;
        $valores['cuit_demandado'] = Request::input('cuit_demandado') ?? NULL;
        $valores['nombre_demandado'] = Request::input('nombre_demandado') ?? NULL;
        $valores['cuit_actor'] = Request::input('cuit_actor') ?? NULL;
        $valores['nombre_actor'] = Request::input('nombre_actor') ?? NULL;
        $valores['fecha_causa'] = Request::input('fecha_causa') ?? NULL;
        $valores['id_tipo_causa'] = Request::input('id_tipo_causa') ?? NULL;
        $valores['estado_procesal'] = Request::input('estado_procesal') ?? NULL;
        $valores['tipo_de_novedad'] = Request::input('tipo_de_novedad') ?? NULL;
        $valores['id_tipo_procesos'] = Request::input('id_tipo_procesos') ?? NULL;
        $valores['juzgado'] = Request::input('juzgado') ?? NULL;
        $valores['localidad_del_juzgado'] = Request::input('localidad_del_juzgado') ?? NULL;
        $valores['secretaria'] = Request::input('secretaria') ?? NULL;
        $valores['radicacion'] = Request::input('radicacion') ?? NULL;
        $valores['objeto'] = Request::input('objeto') ?? NULL;
        $valores['expediente'] = Request::input('expediente') ?? NULL;
        $valores['foja'] = Request::input('foja') ?? NULL;
        $valores['orden'] = Request::input('orden') ?? NULL;
        $valores['decreto'] = Request::input('decreto') ?? NULL;
        $valores['verificaciones'] = Request::input('verificaciones') ?? NULL;
        $valores['inf_articulo_35'] = Request::input('inf_articulo_35') ?? NULL;
        $valores['inf_articulo_39'] = Request::input('inf_articulo_39') ?? NULL;
        $valores['aud_informativa'] = Request::input('aud_informativa') ?? NULL;
        $valores['observaciones'] = Request::input('observaciones') ?? NULL;
        $valores['nombre_y_apellido_del_sindico'] = Request::input('nombre_y_apellido_del_sindico') ?? NULL;
        $valores['calle_domicilio_del_sindico'] = Request::input('calle_domicilio_del_sindico') ?? NULL;
        $valores['nro_domicilio_del_sindico'] = Request::input('nro_domicilio_del_sindico') ?? NULL;
        $valores['piso_domicilio_del_sindico'] = Request::input('piso_domicilio_del_sindico') ?? NULL;
        $valores['dpto_domicilio_del_sindico'] = Request::input('dpto_domicilio_del_sindico') ?? NULL;
        $valores['localidad_domicilio_del_sindico'] = Request::input('localidad_domicilio_del_sindico') ?? NULL;
        $valores['provincia_domicilio_del_sindico'] = Request::input('provincia_domicilio_del_sindico') ?? NULL;
        //
        $valores = array_values($valores);
        $store_procedure = 'backend_abm_juicios_sincuit';
        $mensaje_abm = SQLConnection::backendStoreProcedure($store_procedure, $valores, "selectOne");

        return json_encode(array('error' => $mensaje_abm->error, 'mensaje' => $mensaje_abm->mensaje));

    }

    public function buscarJuicios() {
        $menu = Misc::obtenerPermisosNavigatorNoCuit();
        //valido si el usuario tiene el permiso correspondiente para acceder a la sección solicitada.
        $valido = Misc::restriccionPermiso('JUDICIALES');
        if (!$valido) {
            return redirect('/menu');
        }

        self::$fuentes = SQLConnection::obtenerCodigos("obtener_Fuentes");
        $fuentes = self::$fuentes;

        // return view('legales/buscar_juicios')->with(compact('menu','fuentes'));
        return view('/legales/new/buscar_juicios')->with(compact('menu', 'fuentes'));
    }

    public function buscarJuiciosFiltro() {
        $menu = Misc::obtenerPermisosNavigatorNoCuit();

        $razon_social = Request::input('nombreb');
        $fuente = Request::input('fuenteb') ?? '';
        $fecha_fuente = Request::input('fecha_fuenteb') ?? '';
        /*
        // preparo $razon_social para el CONTAINS()
        $razon_social = preg_replace("/[ \t]{2,}/", " ", trim($razon_social));
        $razon_social = '"*' . str_replace(' ', '*" NEAR "*', $razon_social) . '*"';

        $params = array($razon_social,$fuente, $fecha_fuente);
        $juicios = SQLConnection::backendStoreProcedure('backend_buscar_juicios', $params);
        */
        //22/02/2022: Lo de arriba se cambió por ésto
        // Hace todos los controles de sinonimos como en www.fidelitas 

        $razon_social = str_replace('#', 'ñ', $razon_social);
        $razon_social_completa = '';

        $razon_social_completa = Misc::diccionarioSinonimos2020($razon_social);

        if (!$razon_social_completa) {
            $razon_social_completa = "\"" . $razon_social . "\"";
        }
        $params = array($razon_social_completa, $fuente, $fecha_fuente);
        $juicios = SQLConnection::backendStoreProcedure('backend_buscar_juicios', $params);
        // Fin 22/01/2022 
        // return view('legales/tabla_buscar_juicios')->with(compact('juicios','menu'));
        return view('/legales/new/tabla_buscar_juicios')->with(compact('juicios', 'menu'));
    }

    public function buscarJuiciosPadron() {
        $menu = Misc::obtenerPermisosNavigatorNoCuit();
        $valido = Misc::restriccionPermiso('PROCESOS');
        if (!$valido) {
            return redirect('/menu');
        }
        $desde = 'Asignaciones de CUIT en juicios';

        return view('/legales/new/buscador_padron')->with(compact(['menu', 'desde']));
        // return view('/buscador_padron')->with(compact(['menu','desde']));
    }


    //-- FUNCION QUE BUSCA LOS JUICIOS SIN CUIT
    public function buscarJuiciosSC() {
        $menu = Misc::obtenerPermisosNavigatorNoCuit();
        //valido si el usuario tiene el permiso correspondiente para acceder a la sección solicitada.
        $valido = Misc::restriccionPermiso('PROCESOS');
        if (!$valido) {
            return redirect('/menu');
        }
        $desde = Request::input('desde');
        $cuitb = Request::input('cuitb');
        $nombre_personab = Request::input('nombre_personab');
        return view('/legales/new/buscar_juicios_sin_cuit')->with(compact('menu', 'desde', 'cuitb', 'nombre_personab'));
        // return view('legales/buscar_juicios_sin_cuit')->with(compact('menu','desde','cuitb','nombre_personab')); 
    }

    //-- FUNCION QUE CREA LA TABLA PARA JUICIOS SIN CUIT.
    public function buscarJuiciosFiltroSC() {
        $menu = Misc::obtenerPermisosNavigatorNoCuit();

        $cuit = Request::input('cuit');
        $razon_social = Request::input('nombreb');


        // preparo $razon_social para el CONTAINS()
        $razon_social = preg_replace("/[ \t]{2,}/", " ", trim($razon_social));
        $razon_social = '"*' . str_replace(' ', '*" NEAR "*', $razon_social) . '*"';
        $params = array($razon_social, 'D');

        $juicios_demandado = SQLConnection::backendStoreProcedure('backend_buscar_juicios_sc', $params);
        foreach ($juicios_demandado as $key => $value) {
            if ($value->fecha_causa == null) {
                $juicios_demandado[$key]->fecha_causa = strval($value->anio) . '-01-01';
                $juicios_demandado[$key]->fecha_causa_dmy = $value->anio;
            }
        }
        $params = array($razon_social, 'A');
        $juicios_actor = SQLConnection::backendStoreProcedure('backend_buscar_juicios_sc', $params);
        foreach ($juicios_actor as $key => $value) {
            if ($value->fecha_causa == null) {
                $juicios_actor[$key]->fecha_causa = strval($value->anio) . '-01-01';
                $juicios_actor[$key]->fecha_causa_dmy = $value->anio;
            }
        }

        // return view('legales/tabla_buscar_juicios_sin_cuit')->with(compact('juicios_demandado','juicios_actor','menu','cuit'));
        return view('legales/new/tabla_buscar_juicios_sin_cuit')->with(compact('juicios_demandado', 'juicios_actor', 'menu', 'cuit'));
    }

    public function updateJuiciosSC() {
        $accion = Request::Input('accion');
        $cuit = Request::Input('cuit');
        $ids = [];
        if ($accion == 'D') {
            $ids = Request::Input('idsD');
        }
        if ($accion == 'A') {
            $ids = Request::Input('idsA');
        }
        $user_id = Session::get("usuario")->user_id;
        $lista = implode(",", $ids);
        /*
        var_dump($accion);
        var_dump($cuit);
        var_dump($lista);
        die(); 
        */
        $params = array($accion, $cuit, $lista, $user_id);
        $juicios_update = SQLConnection::backendStoreProcedure('backend_update_juicios_sc', $params, 'selectOne');
        //dd($juicios_update); 
        return json_encode(array('error' => $juicios_update->error, 'mensaje' => $juicios_update->mensaje));
    }




    /*********************/
    /* Causas Judiciales */
    /*********************/

    public function obtenerCausasJudiciales($view = "legales/causas_judiciales") {
        //$razon_social = Session::get('nombre');
        $razon_social = Request::Input('nombre_persona');
        //$cuit = Session::get('cuit');
        $cuit = Request::Input('cuit');
        $meses = Request::input('meses') || 60;
        $visible = Request::input('visible') || 1;
        // preparo $razon_social para el CONTAINS()
        $razon_social = preg_replace("/[ \t]{2,}/", " ", trim($razon_social));
        $razon_social = '"*' . str_replace(' ', '*" NEAR "*', $razon_social) . '*"';

        $params = array(NULL, $razon_social, $cuit, $meses, $visible);
        //var_dump($params); 
        $causas_judiciales = SQLConnection::backendStoreProcedure("backend_causas_judiciales", $params);
        $tipos_causas = SQLConnection::backendStoreProcedure('obtener_tipos_causas', array());

        return view($view)->with(compact('causas_judiciales', 'meses', 'visible', 'tipos_causas', 'cuit'));
    }

    public function filtrarCausasJudiciales() {
        return self::obtenerCausasJudiciales('legales/tabla_causas_judiciales');
    }

    public function visibleCausasJudiciales() {
        $id_juicio = Request::input('id_juicio');
        $usuario = Session::get("usuario")->user_id;

        $params = array($id_juicio, $usuario);
        $mensaje_visible = SQLConnection::backendStoreProcedure("backend_vigente_causas_judiciales", $params, 'selectOne');

        $tabla_causas_judiciales = self::obtenerCausasJudiciales('legales/tabla_causas_judiciales');

        return json_encode(array('error' => $mensaje_visible->error, 'mensaje' => $mensaje_visible->mensaje, 'tabla' => $tabla_causas_judiciales->render()));
    }

    public function altaCausasJudiciales() {
        $user_id = Session::get("usuario")->user_id;
        $accion = Request::input('accion');

        // Si es una ALTA, id_juicio = NULL 
        $id_juicio = ($accion == 'A') ? NULL : Request::input('id_juicio');

        // Preparo $params para la store procedure
        $params = array();
        $params["id_juicio"] = $id_juicio;
        $params["usuario"] = $user_id;
        foreach (request()->except('_token', 'accion', 'meses', 'visible', 'id_juicio') as $key => $valor) {
            $params[$key] = $valor;
        }
        ksort($params);
        $params = array_values($params);

        $mensaje = SQLConnection::backendStoreProcedure("backend_alta_mod_causas_judiciales", $params, 'selectOne');
        $tabla_causas_judiciales = self::obtenerCausasJudiciales('legales/tabla_causas_judiciales');
        return json_encode(array('error' => $mensaje->error, 'mensaje' => $mensaje->mensaje, 'tabla' => $tabla_causas_judiciales->render()));
    }

    public function modalCausasJudiciales() {
        $id_juicio = Request::input('id_juicio');
        $causas_judiciales = SQLConnection::backendStoreProcedure("backend_causas_judiciales", array($id_juicio, NULL, NULL, NULL, NULL), 'selectOne');
        $tipos_causas = SQLConnection::backendStoreProcedure("obtener_tipos_causas", array());
        // TODO: VISTA NO EXISTE
        return view('legales/modal_causas_judiciales')->with(compact('causas_judiciales', 'tipos_causas', 'cuit'));
    }


    /************************/
    /* Quiebras y concursos */
    /************************/

    public function obtenerConcursosQuiebras($view = "legales/concursos_quiebras") {
        //$razon_social = Session::get('nombre');
        $razon_social = Request::Input('nombre_persona');
        //$cuit = Session::get('cuit');
        $cuit = Request::Input('cuit');
        $meses = Request::input('meses') || 60;
        $visible = Request::input('visible') || 1;
        // preparo $razon_social para el CONTAINS()
        $razon_social = preg_replace("/[ \t]{2,}/", " ", trim($razon_social));
        $razon_social = '"*' . str_replace(' ', '*" NEAR "*', $razon_social) . '*"';

        $params = array(NULL, $razon_social, $cuit, $meses, $visible);
        $quiebras = SQLConnection::backendStoreProcedure("backend_concursos_quiebras", $params);
        $tipos_causas = SQLConnection::backendStoreProcedure('obtener_tipos_causas', array());
        return view($view)->with(compact('quiebras', 'meses', 'visible', 'tipos_causas', 'cuit'));
    }

    public function filtrarConcursosQuiebras() {
        return self::obtenerConcursosQuiebras('legales/tabla_concursos_quiebras');
    }

    public function visibleConcursosQuiebras() {
        $id_juicio = Request::input('id_juicio');
        $usuario = Session::get("usuario")->user_id;

        $params = array($id_juicio, $usuario);

        // uso la misma store de causas_judiciales porque la tabla es la misma = [Fidelitas].[juicios]
        $mensaje_visible = SQLConnection::backendStoreProcedure("backend_vigente_causas_judiciales", $params, 'selectOne');

        $tabla_quiebras = self::obtenerConcursosQuiebras('legales/tabla_concursos_quiebras');

        return json_encode(array('error' => $mensaje_visible->error, 'mensaje' => $mensaje_visible->mensaje, 'tabla' => $tabla_quiebras->render()));
    }

    public function altaConcursosQuiebras() {
        $user_id = Session::get("usuario")->user_id;
        $accion = Request::input('accion');

        // Si es una ALTA, id_juicio = NULL 
        $id_juicio = ($accion == 'A') ? NULL : Request::input('id_juicio');

        // Preparo $params para la store procedure
        $params = array();
        $params["id_juicio"] = $id_juicio;
        $params["usuario"] = $user_id;
        foreach (request()->except('_token', 'accion', 'meses', 'visible', 'id_juicio') as $key => $valor) {
            $params[$key] = $valor;
        }
        ksort($params);
        $params = array_values($params);

        $mensaje = SQLConnection::backendStoreProcedure("backend_alta_mod_concursos_quiebras", $params, 'selectOne');
        $tabla_quiebras = self::obtenerConcursosQuiebras('legales/tabla_concursos_quiebras');
        return json_encode(array('error' => $mensaje->error, 'mensaje' => $mensaje->mensaje, 'tabla' => $tabla_quiebras->render()));
    }

    public function modalConcursosQuiebras() {
        $id_juicio = Request::input('id_juicio');
        $quiebras = SQLConnection::backendStoreProcedure("backend_concursos_quiebras", array($id_juicio, NULL, NULL, NULL, NULL), 'selectOne');
        $tipos_causas = SQLConnection::backendStoreProcedure("obtener_tipos_causas", array());
        //TODO: vista no existe
        return view('legales/modal_concursos_quiebras')->with(compact('quiebras', 'tipos_causas', 'cuit'));
    }

    /**************************************************/
    /* Morosidad Comercial y/o Financiera							*/
    /**************************************************/
    public function obtenerMorosidad() {
        $token_id_usuario = MainController::obtenerParametrosInformeComercial();
        $token_por_secciones = $this->obtenerTokenSeccion('bancos');
        $menu = Misc::obtenerPermisosNavigator();
        //valido si el usuario tiene el permiso correspondiente para acceder a la sección solicitada.
        $valido = Misc::restriccionPermiso('MOROSIDAD');
        if (!$valido) {
            return redirect('/menu');
        }
        //$cuit = Session::get('cuit');
        $cuit = Request::Input('cuit');
        $meses = 60;
        $visible = 1;

        $params = array($cuit, $meses, $visible);
        $morosidad = SQLConnection::backendStoreProcedure("backend_morosidad", $params, 'select');

        self::$fuentes = SQLConnection::obtenerCodigos("obtener_Fuentes");
        $fuentes = self::$fuentes;

        self::$eventos_morosidad = SQLConnection::obtenerCodigos("obtener_Eventos_morosidad");
        $eventos_morosidad = self::$eventos_morosidad;

        self::$eventos = SQLConnection::obtenerCodigos("obtener_Eventos_Deudas");
        $eventos = self::$eventos;

        $params = array($cuit);

        $cancela_morosidad = SQLConnection::backendStoreProcedure("backend_morosidad_cancela", $params, 'select');

        return view('legales/morosidad')->with(compact('morosidad', 'meses', 'visible', 'eventos_morosidad', 'fuentes', 'eventos', 'cancela_morosidad', 'menu', 'cuit', 'token_por_secciones', 'token_id_usuario'));
    }

    public function filtrarMorosidad() {
        //$cuit = Session::get('cuit');
        $cuit = Request::Input('cuit');
        $meses = Request::input('meses');
        $visible = Request::input('visible');

        $params = array($cuit, $meses, $visible);
        $morosidad = SQLConnection::backendStoreProcedure("backend_morosidad", $params, 'select');

        return view('legales/tabla_morosidad')->with(compact('morosidad', 'meses', 'visible', 'cuit'));
    }

    public function visibleMorosidad() {
        $id_morosidad = Request::input('id_morosidad');
        //print_r($id_morosidad); die(); 
        $visible_morosidad = SQLConnection::backendVisible($id_morosidad, 'backend_visible_morosidad');
        return json_encode(array('error' => $visible_morosidad->error, 'mensaje' => $visible_morosidad->mensaje));
    }

    public function altaModMorosidad() {
        //$cuit 			= Session::get('cuit');
        $cuit = Request::Input('cuit');


        $id_morosidad = Request::input('id_morosidad');
        $cau_codigo = Request::input('causa');
        $fecha = Request::input('fecha');
        $codigo_ent = Request::input('entidad');
        $monto_original = Request::input('monto_original');
        $monto_act = Request::input('monto_act');
        $observaciones = Request::input('observaciones');
        //$id_persona = Session::get('id_padron');
        $id_persona = null;
        $usuario = Session::get("usuario")->user_id;

        $accion = Request::input('accion');
        $meses = Request::input('meses');
        $visible = Request::input('visible');

        if ($accion == 'M') {
            self::visibleMorosidad();
        }

        $params = array($cuit, $cau_codigo, $fecha, $codigo_ent, $monto_original, $monto_act, $observaciones, $id_persona, $usuario);

        $mensaje_morosidad = SQLConnection::backendStoreProcedure("backend_alta_morosidad", $params, 'selectOne');

        $params = array($cuit, $meses, $visible);
        $morosidad = SQLConnection::backendStoreProcedure("backend_morosidad", $params, 'select');

        return json_encode(array('error' => $mensaje_morosidad->error, 'mensaje' => $mensaje_morosidad->mensaje,
            'tabla' => view('legales/tabla_morosidad')->with(compact('morosidad', 'visible', 'meses', 'cuit'))->render()
        ));

    }

    /**********************************/
    /* Cancelaciones Morosidad        */
    /**********************************/

    public function cancelaMorosidad() {
        //$cuit = Session::get('cuit');
        $cuit = Request::Input('cuit');

        $params = array($cuit);
        $cancela_morosidad = SQLConnection::backendStoreProcedure("backend_morosidad_cancela", $params, 'select');

        $fuentes = (self::$fuentes) ? self::$fuentes : SQLConnection::obtenerCodigos("obtener_Fuentes");
        $eventos_morosidad = (self::$eventos_morosidad) ? self::$eventos_morosidad : SQLConnection::obtenerCodigos("obtener_eventos_morosidad");
        $eventos = (self::$eventos) ? self::$eventos : SQLConnection::obtenerCodigos("obtener_Eventos_Deudas");
        /*print_r($cancela_morosidad); 
        print_r($fuentes); 
        print_r($eventos); 
        die();*/
        return view('legales/tabla_cancela_morosidad')->with(compact('cancela_morosidad', 'fuentes', 'eventos', 'eventos_morosidad', 'cuit'));
    }

    public function visibleCancelaMoros() {
        $id_morosidad_cancela = Request::input('id_morosidad_cancela');
        $visible_morosidad = SQLConnection::backendVisible($id_morosidad_cancela, 'backend_visible_cancela_morosidad');
        return self::cancelaMorosidad();
    }

    public function altaCancelaMoros() {
        //$cuit 			= Session::get('cuit');
        $cuit = Request::Input('cuit');
        $can_entidad = Request::input('can_entidad');
        $periodo_dde = Request::input('can_periodo_dde');
        $periodo_hta = Request::input('can_periodo_hta');
        $can_evento = Request::input('can_evento');
        $can_fecha = Request::input('can_fecha');
        $can_fuente = Request::input('can_fuente');
        $can_fecha_fuente = Request::input('can_fecha_fuente');
        $can_observaciones = Request::input('can_observaciones');
        //$id_persona = Session::get('id_padron');
        $id_persona = null;
        $usuario = Session::get("usuario")->user_id;

        $params = array($cuit, $can_entidad, $periodo_dde, $periodo_hta, $can_evento, $can_fecha, $can_fuente, $can_fecha_fuente, $can_observaciones, $id_persona, $usuario);

        $can_mensaje = SQLConnection::backendStoreProcedure("backend_alta_morosidad_cancela", $params, 'selectOne');
        $tabla = self::cancelaMorosidad();

        return json_encode(array('error' => $can_mensaje->error, 'mensaje' => $can_mensaje->mensaje, 'tabla' => $tabla->render()));

    }

    /* Funciones genericas */
    public function verificarExistenciaCuit() {
        $params = array(Request::input('cuit'));
        $store_procedure = "backend_verificar_existencia_cuit";
        $res = SQLConnection::backendStoreProcedure($store_procedure, $params, 'selectOne');
        return json_encode($res);
    }
    //
    public function obtenerTokenSeccion($secciones = '') {
        $usuario = Session::get('usuario');
        $hora_actual = date("h:i:s");
        $datos = new \stdClass;
        $datos->usuario = $usuario;
        $datos->user_id = $usuario->user_id;
        $datos->hora_actual = $hora_actual;
        $datos->secciones = $secciones;
        $datos = Misc::encrypt(json_encode($datos));
        return $datos;
    }

}