<?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 stdClass;


class DirectoriosController extends Controller {

    /**
     * Funcion que cambia
     * de estado de la relacion
     * @access public
     * @return string
     */
    public function cambiarEstadoRelacion() {
        $socio = Request::input('id_socios');
        if (is_null($socio) || empty($socio)) {
            return Response::JSON(['error' => 1, 'mensaje' => 'No se recibio el id de socio.']);
        }
        //
        $user_id = Session::get('usuario')->user_id;
        // Si es contrapartes, lo ponemos en la tabla queue
        $socio = SQLConnection::backendStoreProcedure('backend_status_socio', array($socio, $user_id), true);
        //
        return Response::JSON(['error' => 0, 'mensaje' => 'OK']);
    }

    /**
     * Función que devuelve
     * el formulario que da 
     * de alta un relación
     * @access public
     * @return string
     */
    public function formAltaRelacion() {
        if (isset($_POST['cuit_sociedad'])) {
            $cuit_sociedad = Request::input('cuit_sociedad');
            $id_edicto = Request::input('id_edicto');
            $id_padron_soc = SQLConnection::busquedaPadronAutocomplete($cuit_sociedad, 1);
            $id_padron_soc = !is_null($id_padron_soc) && !empty($id_padron_soc) ? $id_padron_soc[0]->id_padron : null;
            // texto edicto 
            $edicto = NULL;
            if (!is_null($id_edicto)) {
                $edicto = SQLConnection::backendStoreProcedure('backend_obtener_edictos', array(NULL, $id_edicto), 'selectOne');
            }
            // directorios de la sociedad
            $directorios = SQLConnection::backendStoreProcedure('backend_obtener_socios', array(NULL, $cuit_sociedad, '1', 'J'));
            // cargos
            $cargos = SQLConnection::backendStoreProcedure('obtener_Cargos', array());
            //
            $vista = \View::make('/directorios/alta_directorio')->with(compact('cuit_sociedad', 'edicto', 'directorios', 'cargos', 'id_padron_soc'));
            $vista = $vista->__toString();
            //
            return Response::JSON(['error' => 0, 'vista' => $vista, 'mensaje' => 'OK']);
        }
    }

    /**
     * Función que devuelve
     * el formulario que da 
     * de alta un relación de
     * ultimo edicto
     * @access public
     * @return string
     */
    public function formAltaRelacionUltimoEdicto() {
        if (isset($_POST['cuit_sociedad'])) {
            $cuit_sociedad = Request::input('cuit_sociedad');
            $id_edicto = Request::input('id_edicto');
            // texto edicto 
            $edicto = NULL;
            if (!is_null($id_edicto)) {
                $edicto = SQLConnection::backendStoreProcedure('backend_obtener_edictos', array(NULL, $id_edicto), 'selectOne');
            }
            // cargos
            $cargos = SQLConnection::backendStoreProcedure('obtener_Cargos', array());
            //
            $vista = \View::make('/directorios/alta_directorio_completo_ultimo_edicto')->with(compact('cuit_sociedad', 'edicto', 'cargos'));
            $vista = $vista->__toString();
            //
            return Response::JSON(['error' => 0, 'vista' => $vista, 'mensaje' => 'OK']);
        }
    }



    /**
     * Funcion que da de
     * alta una relación
     * @access public
     * @return string
     */
    public function altaRelacion() {
        $user_id = Session::get("usuario")->user_id;
        $cuit_sociedad = Request::input('cuit_empresa');
        $cuit_persona = Request::input('cuit_asignar');
        $desde = Request::input('desde');
        $hasta = Request::input('hasta');
        $cargo = Request::input('id_cargo');
        $tipo_persona = Request::input('tipo_persona');
        $ultimo = Request::input('ultimo');
        $id_padron_empresa = Request::input('id_padron_empresa');
        $id_padron_persona = Request::input('id_padron_persona');
        //
        $socio = [];
        $socio['cuit'] = $cuit_persona;
        $socio['cuit_persona'] = $cuit_sociedad;
        $socio['desde'] = $desde;
        $socio['hasta'] = $hasta;
        $socio['cargo'] = $cargo;
        $socio['id_socio'] = NULL;
        $socio['tipo_persona'] = $tipo_persona;
        $socio['ultimo'] = $ultimo;
        $socio['edicto'] = NULL;
        $socio['archivo_edicto'] = '';
        $socio['contenido_archivo'] = '';
        $socio['provincia_boletin'] = '';
        $socio['fecha_publicacion'] = '';
        $socio['user_id'] = $user_id;
        $socio['id_padron_empresa'] = $id_padron_empresa;
        $socio['id_padron_persona'] = $id_padron_persona;
        $socio = Misc::convertirStringsVaciosEnNull($socio);
        //
        $insert_queue = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', NULL, NULL, $socio["cuit"]), 'selectOne');
        $insert_queue = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', NULL, NULL, $socio["cuit_persona"]), 'selectOne');
        //
        $socio = SQLConnection::backendStoreProcedure('backend_procesar_socio', array_values($socio), true);
        //
        return Response::JSON(['error' => 0, 'mensaje' => 'OK', 'id_socio' => $socio]);
    }

    /**
     * Funcion que 
     * modifica una relación
     * @access public
     * @return string
     */
    public function modificarRelacion() {
        $user_id = Session::get("usuario")->user_id;
        $id_padron_empresa = Request::input('id_padron_empresa');
        $id_padron_persona = Request::input('id_padron_persona');
        $cuit_sociedad = Request::input('cuit_sociedad');
        $cuit_persona = Request::input('cuit_persona');
        $id_socio = Request::input('id_socio');
        $desde = Request::input('desde');
        $hasta = Request::input('hasta');
        $cargo = Request::input('id_cargo');
        $tipo_persona = Request::input('tipo_persona');
        $ultimo = Request::input('ultimo');
        //
        $socio = [];
        $socio['cuit'] = $cuit_persona;
        $socio['cuit_persona'] = $cuit_sociedad;
        $socio['desde'] = $desde;
        $socio['hasta'] = $hasta;
        $socio['cargo'] = $cargo;
        $socio['id_socio'] = $id_socio;
        $socio['tipo_persona'] = $tipo_persona;
        $socio['ultimo'] = $ultimo;
        $socio['edicto'] = NULL;
        $socio['archivo_edicto'] = '';
        $socio['contenido_archivo'] = '';
        $socio['provincia_boletin'] = '';
        $socio['fecha_publicacion'] = '';
        $socio['user_id'] = $user_id;
        $socio['id_padron_empresa'] = $id_padron_empresa;
        $socio['id_padron_persona'] = $id_padron_persona;
        $socio = Misc::convertirStringsVaciosEnNull($socio);
        //
        $insert_queue = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', NULL, NULL, $socio["cuit"]), 'selectOne');
        $insert_queue = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', NULL, NULL, $socio["cuit_persona"]), 'selectOne');
        //
        $socio = SQLConnection::backendStoreProcedure('backend_procesar_socio', array_values($socio), true);
        //
        return Response::JSON(['error' => 0, 'mensaje' => 'OK']);
    }

    public function dataEdicto() {
        $id_edicto = Request::input('id_edicto');
        $cuit = Request::input('cuit');
        // $id_edicto = '13331';
        $estado = Request::input('estado');
        $fuente_asgin = Request::input('fuente');
        $edicto_data = SQLConnection::backendStoreProcedure("BackendDirectorioEdictosAI",array('SELECT_EDICTO',NULL,$id_edicto),true);
        // $edicto_data = SQLConnection::backendStoreProcedure("BackendDirectorioEdictosAI",array('SELECT_EDICTO',NULL,$id_edicto),'selectOne');
        $procesado = 0;
        if (!is_null($edicto_data)) {
            $edicto_data->fuente = is_null($edicto_data->fuente) && $fuente_asign != '' ? $fuente_asign : $edicto_data->fuente;
            $vinculos = SQLConnection::backendStoreProcedure("dbo.BackendDirectorioEdictosAI",array('EDICTO_DATOS',NULL,$id_edicto),true);
            // $vinculos = SQLConnection::backendStoreProcedure("BackendDirectorioEdictosAI",array('EDICTO_DATOS',NULL,$id_edicto));
            $edicto_data->directorio = [];
            $edicto_data->accionistas = [];
            if ( !empty($vinculos) ) {
                foreach ( $vinculos as $reg ) {
                    if ( $reg->cargo == 'Socio' ) {
                        array_push($edicto_data->accionistas,$reg);
                    } else {
                        array_push($edicto_data->directorio,$reg);
                    }
                }
            }
            $edicto_data->accionistas_de = SQLConnection::backendStoreProcedure("dbo.BackendDirectorioEdictosAI",array('EDICTO_DATOS_VINC',NULL,$id_edicto));
            $procesado = $edicto_data->procesado;
        }
        $fuentes = ['BORA','BUENOS AIRES','CORDOBA','SANTA FE','MENDOZA','CATAMARCA','CHACO','SALTA','MISIONES','JUJUY','LA PAMPA','NEUQUEN','TUCUMAN','ENTRE RIOS','LA RIOJA','SAN LUIS','RIO NEGRO','BS AS JUDICIALES','SANTA FE JUDICIALES','CORDOBA JUDICIALES','CHUBUT','SANTA CRUZ','FORMOSA','CORRIENTES','SANTIAGO DEL ESTERO','TIERRA DEL FUEGO','SAN JUAN'];
        // $cargos = SQLConnection::backendStoreProcedure('obtener_Cargos',array());
        $cargos = SQLConnection::backendStoreProcedure('dbo.obtener_Cargos',array());
        $directorio = SQLConnection::backendStoreProcedure('backend_obtener_socios',array(NULL,$cuit,'1','J'));
        $accionistas = SQLConnection::backendStoreProcedure("backend_obtener_accionistas", array($cuit, 1));
        $accionistas_de = SQLConnection::backendStoreProcedure("backend_obtener_accionistas_de", array($cuit, 1));
        $vista = \View::make('/informes-blue/actividades-tarea/asignacion-edicto-data')->with(compact('edicto_data','fuentes','id_edicto','cuit','cargos','directorio','accionistas','accionistas_de'));

        // dd($edicto_data);

        return json_encode(['error' => 0, 'mensaje' => 'OK', 'vista' => $vista->render(), 'procesado' => $procesado]);
    }

    public function edicionIA() {
        $usuario = Session::get('usuario')->user_id;
        $id_fide = Request::input('id_fide');
        $taxid_edicto = Request::input('taxid_edicto');
        $nombre_edicto = Request::input('nombre_edicto');
        $fecha_publicacion = Request::input('fecha_publicacion');
        $fuente = Request::input('fuente');
        $tipo_publicacion = Request::input('tipo_edicto');
        $domicilio_edicto = Request::input('domicilio_edicto');
        $domicilio_anterior_edicto = Request::input('domicilio_acterior_edicto');
        $nombre_anterior_edicto = Request::input('nombre_acterior_edicto');
        $fecha_asamblea = Request::input('fecha_asamblea');
        $usuario = Session::get('usuario')->user_id;

        $fecha_publicacion = $fecha_publicacion != '' ? new \Datetime($fecha_publicacion) : NULL;
        $fecha_asamblea = $fecha_asamblea != '' ? new \Datetime($fecha_asamblea) : $fecha_publicacion;

        dd($fecha_asamblea,$fecha_publicacion);

        // @id_fide               int,
        // @documento_soc         varchar(50) ,
        // @razon_social          varchar(180),
        // @fecha_publicacion     date,
        // @fuente                varchar(30) , *
        // @tipo_publicacion      varchar(120),
        // @domicilio_actual      varchar(500),
        // @localidad_actual      varchar(50) , *
        // @provincia_actual      varchar(50) ,
        // @codpos_actual         varchar(10) ,
        // @domicilio_anterior    varchar(500),
        // @razon_social_anterior varchar(180)

        // $db->select('EXEC dbo.edictos_ia_update ?,?,?,?,?,?,?,?,?,?,?,?,?',array($id_fide,$taxid_edicto,$nombre_edicto,$fecha_publicacion,$fuente,$tipo_publicacion,$domicilio_edicto,null,null,null,$domicilio_anterior_edicto,$nombre_anterior_edicto,$fecha_asamblea));

        $cantidad_directorio = Request::input('cantidad_directorio');
        $cantidad_socios = Request::input('cantidad_socios');
        $cantidad_accionista = Request::input('cantidad_accionista');
        if ( $cantidad_directorio > 0 ) {
            for ($i = 0; $i < $cantidad_directorio; $i++) {
                $id_soc = Request::input('idsoc_dir_'.$i);
                $idp = Request::input('idp_dir_'.$i) ?? NULL;
                $taxid = Request::input('taxid_dir_'.$i);
                $dni = Request::input('dni_dir_'.$i);
                $razon_social = Request::input('nombre_dir_'.$i);
                $domicilio = Request::input('domicilio_dir_'.$i);
                $cargo = Request::input('cargo_dir_'.$i);
                $ultimo = Request::input('ultimo_dir_'.$i);
                $estado_civil = Request::input('estado_civil_dir_'.$i);
                $conyugue = Request::input('conyugue_dir_'.$i);

                // @apellido_nombre varchar(200),
                // @DNI varchar(20),
                // @cuit varchar(50),
                // @domicilio varchar(500),
                // @estado_civil varchar(50),
                // @conyuge varchar(200),
                // @cargo varchar(200),
                // @permanece_en_cargo varchar(10)

                // $db->select('EXEC dbo.edictos_ia_personas_update ?,?,?,?,?,?,?,?',array($razon_social,$dni,$taxid,$domicilio,$estado_civil,$conyugue,$cargo,$ultimo));

                // ---------------------------------------------------------------------------------------

                // @p_cuit varchar(20),
                // @p_cuit_socio varchar(20),
                // @p_desde varchar(20),
                // @p_hasta varchar(20),
                // @p_cargo varchar(20),
                // @p_id_socio int,
                // @p_tipo_persona varchar(1),
                // @p_ultimo varchar(1),
                // @p_edicto tinyint,
                // @p_archivo_edicto varchar(200),
                // @p_contenido_archivo text,
                // @provincia_boletin varchar(50) = null,
                // @fecha_publicacion varchar(20) = null,
                // @user_id int = null,
                // @id_padron_empresa int = null,
                // @id_padron_socio int = null,
                // @p_id_edictos_ia int

                $desde = NULL;
                $hasta =  NULL;
                $tipo_persona =  NULL;

                $socio = SQLConnection::backendStoreProcedure('dbo.backend_procesar_socio', array($taxid_edicto,$taxid,$desde,$hasta,$cargo,$id_soc,$tipo_persona,$ultimo,'','',$fuente,$fecha_publicacion,$idp,$id_fideC ), true); 
                // Devuelve un id de socio, hay que almacenarlo para ultimo directorio completo
            }
        }
        if ( $cantidad_socios > 0 ) {
            for ($i = 0; $i < $cantidad_socios; $i++) {
                $id_soc = Request::input('idsoc_soc_'.$i);
                $idp = Request::input('idp_soc_'.$i);
                $taxid = Request::input('taxid_soc_'.$i);
                $dni = Request::input('dni_soc_'.$i);
                $razon_social = Request::input('nombre_soc_'.$i);
                $domicilio = Request::input('domicilio_soc_'.$i);
                $cargo = Request::input('cargo_soc_'.$i);
                $ultimo = Request::input('ultimo_soc_'.$i);
                $estado_civil = Request::input('estado_civil_soc_'.$i);
                $conyugue = Request::input('conyugue_soc_'.$i);

                // @apellido_nombre varchar(200),
                // @DNI varchar(20),
                // @cuit varchar(50),
                // @domicilio varchar(500),
                // @estado_civil varchar(50),
                // @conyuge varchar(200),
                // @cargo varchar(200),
                // @permanece_en_cargo varchar(10)

                // $db->select('EXEC dbo.edictos_ia_personas_update ?,?,?,?,?,?,?,?',array($razon_social,$dni,$taxid,$domicilio,$estado_civil,$conyugue,$cargo,$ultimo));

                // ---------------------------------------------------------------------------------------

                // @p_cuit varchar(20),
                // @p_cuit_socio varchar(20),
                // @p_desde varchar(20),
                // @p_hasta varchar(20),
                // @p_cargo varchar(20),
                // @p_id_socio int,
                // @p_tipo_persona varchar(1),
                // @p_ultimo varchar(1),
                // @p_edicto tinyint,
                // @p_archivo_edicto varchar(200),
                // @p_contenido_archivo text,
                // @provincia_boletin varchar(50) = null,
                // @fecha_publicacion varchar(20) = null,
                // @user_id int = null,
                // @id_padron_empresa int = null,
                // @id_padron_socio int = null,
                // @p_id_edictos_ia int

                // $socio = SQLConnection::backendStoreProcedure('backend_procesar_socio', array_values(), true); 
                // Devuelve un id de socio, hay que almacenarlo para ultimo directorio completo
            }
        }
        if ( $cantidad_accionista > 0 ) {
            for ($i = 0; $i < $cantidad_accionista; $i++) {
                $id_soc = Request::input('idsoc_acc_'.$i);
                $idp = Request::input('idp_acc_'.$i);
                $taxid = Request::input('taxid_acc_'.$i);
                $razon_social = Request::input('nombre_acc_'.$i);
                $domicilio = Request::input('domicilio_acc_'.$i);
                $cargo = Request::input('cargo_acc_'.$i);

                // @nombre varchar(500),
                // @cuit varchar(20),
                // @pais varchar(100),
                // @domicilio varchar(500),
                // @rol varchar(100)

                // $db->select('EXEC dbo.edictos_ia_vinculadas_update ?,?,?,?,?',array($razon_social,$taxid,null,$domicilio,$cargo));

                // ---------------------------------------------------------------------------------------

                // @p_cuit varchar(20),
                // @p_cuit_socio varchar(20),
                // @p_desde varchar(20),
                // @p_hasta varchar(20),
                // @p_cargo varchar(20),
                // @p_id_socio int,
                // @p_tipo_persona varchar(1),
                // @p_ultimo varchar(1),
                // @p_edicto tinyint,
                // @p_archivo_edicto varchar(200),
                // @p_contenido_archivo text,
                // @provincia_boletin varchar(50) = null,
                // @fecha_publicacion varchar(20) = null,
                // @user_id int = null,
                // @id_padron_empresa int = null,
                // @id_padron_socio int = null,
                // @p_id_edictos_ia int

                // $socio = SQLConnection::backendStoreProcedure('backend_procesar_socio', array_values(), true); 
                // Devuelve un id de socio, hay que almacenarlo para ultimo directorio completo
            }
        }
        // dd('aca');
        // dd($cantidad_directorio);
        
        return 'aca';
    }
}