<?php namespace App\Http\Controllers;

use Session;
use Request; 
use App\Custom\SQLConnection;
use App\Custom\Misc; 
use stdClass;
use DB;

class SociedadesController extends Controller {

  public function datosRelaciones() {    
    $cuit              = Request::input('cuit');
    $id_padron              = Request::input('id_padron') ?? null ;    
    $menu              = Misc::obtenerPermisosNavigator();
    //$tipo_persona      = (substr($cuit,0,1) != '3') ? 'f' : 'j';
    $tipo_persona     = SQLConnection::backendStoreProcedure('obtener_tipo_persona', array($cuit, $id_padron),'selectOne'); 
    $tipo_persona      = ($tipo_persona->tipo_persona == 'J' || $tipo_persona->tipo_persona == 'j') ? 'j' : 'f';
    //echo(var_dump($tipo_persona)); die();
    $visible           = Request::input('visible');
    $visible           = isset($visible) ? $visible : 1;
    $socios_directores = SQLConnection::backendStoreProcedure('backend_obtener_socios', array(NULL, $cuit, $visible, $tipo_persona));
    $igj = [];
    foreach ($socios_directores as $k => $soc) {
      if ($soc->cargo_codigo == 'IGJ') {
        if ($soc->estado) {
          array_push($igj,$soc);
        }
        unset($socios_directores[$k]);
      }

    }
    $socios_directores = array_values($socios_directores);
    $cargos            = SQLConnection::backendStoreProcedure("obtener_Cargos", array());
    $accionistas       = SQLConnection::backendStoreProcedure("backend_obtener_accionistas", array($cuit, $visible));
    $accionistas_de    = SQLConnection::backendStoreProcedure("backend_obtener_accionistas_de", array($cuit, $visible));
    $edictos           = SQLConnection::backendStoreProcedure("backend_obtener_sociedades_constituciones", array($cuit));
    $sin_menu          = Request::input('sin_menu') !== null ?  Request::input('sin_menu') : 0;
    $ultima_revision   = SQLConnection::backendStoreProcedure('ultima_revision_socios_', array('select',$cuit),'selectOne')->fecha_dmy; 
    $token_por_secciones = Misc::obtenerTokenSeccion('relaciones');
    return compact('socios_directores', 'menu', 'visible', 'cuit', 'cargos', 'tipo_persona', 'accionistas', 'accionistas_de', 'edictos','sin_menu','ultima_revision','igj','token_por_secciones');
  }

  public function obtenerRelaciones() {    
    return view('produccion.sociedades.relaciones')->with($this->datosRelaciones());
  }

  public function ultimaRevisionSocios() {
        $cuit  = Request::input('cuit');
        $ultima_revision = SQLConnection::backendStoreProcedure('ultima_revision_socios_', array('insert',$cuit),'selectOne')->fecha_dmy; 
        return json_encode(array('fecha' => $ultima_revision));
        
  }
  // EDICTOS ---------------------------------------------------------------------------------------------------

  public function procesarSociedadesConstituciones() {

      $cuit = Request::input('cuit');
      $id_edicto = Request::input('id_edicto');
      $cuit_sociedad = Request::input('cuit_sociedad');
      $documento_integrante = Request::input('documento_integrante');
      $cuit_integrante = Request::input('cuit_integrante');
     
      $edicto = SQLConnection::backendStoreProcedure('backend_procesar_sociedades_constituciones', array($id_edicto, $cuit_sociedad, $cuit_integrante, $documento_integrante), 'selectOne');
   
      $view = view('produccion/sociedades/tabla_edictos')->with($this->datosRelaciones())->render();

      return response()->json([
        'procesado'     => (isset($edicto) && isset($edicto->id)) ? true : false,
        'view'          => isset($view) ? $view : ''
      ]);
  }


  // SOCIOS ---------------------------------------------------------------------------------------------------

  public function procesarSocio_Original() {
    if (Request::input('cuit_persona') !== null && Request::input('cuit_persona') != '') {
      $socio = Misc::organizarRequest(['_token', 'input_autocomplete', 'nombre_persona', 'dni_persona', 'archivo_edicto', 'incluir_edicto', 'texto_edicto']);
      $edicto = Request::input('incluir_edicto');
      if(isset($edicto)) {

        if($edicto == 1) {

          $file_edicto = isset($_FILES['archivo_edicto']['name']) ? $_FILES['archivo_edicto']['name'] : '';
          if($file_edicto != '') {

            if($_FILES['archivo_edicto']['error'] == UPLOAD_ERR_OK && is_uploaded_file($_FILES['archivo_edicto']['tmp_name'])) {
                 $file_content = file_get_contents($_FILES['archivo_edicto']['tmp_name']);

                 $socio[] = $edicto;
                 $socio[] = $file_edicto;
                 $socio[] = $file_content;
            } else {
                /* error de upload */
                $socio[] = 0;
                $socio[] = '';
                $socio[] = '';           
            }

          } else {
            //--> esta por aca
              $provincia_boletin  ='';
              $fecha_boletin      ='';
              $provincia_boletin = Request::input('provincia_boletin');
              $fecha_boletin = Request::input('fecha_boletin');
              unset($socio['provincia_boletin']);
              unset($socio['fecha_boletin']);
              $socio[] = 0;
              $socio[] = '';
              $socio[] = '';
          }

        } else {
          $provincia_boletin  ='';
          $fecha_boletin      ='';
          $provincia_boletin = Request::input('provincia_boletin');
          $fecha_boletin = Request::input('fecha_boletin');
          unset($socio['provincia_boletin']);
          unset($socio['fecha_boletin']);
           $socio[] = $edicto;
           $socio[] = '';
           $socio[] = Request::input('texto_edicto');
           $socio[] = $provincia_boletin;
           $socio[] = $fecha_boletin;
        }
      }
      else {
        $socio[] = 0;
        $socio[] = '';
        $socio[] = '';
      }
      /*echo sizeof($socio).'<br><br>';*/
      //dd($socio);

      // Si es contrapartes, lo ponemos en la tabla queue
      $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');

      // echo(var_dump($socio)); die();
      $socio        = SQLConnection::backendStoreProcedure('backend_procesar_socio', array_values($socio), true);

      $view              = view('produccion.sociedades.tabla_socios_directores')->with($this->datosRelaciones())->render();
      
    }
    return response()->json([
      'procesado'     => (isset($socio) && isset($socio->id_socio)) ? true : false,
      'view'          => isset($view) ? $view : ''
    ]);
  }

  public function procesarSocio10072023() {
    if (Request::input('cuit_persona') !== null && Request::input('cuit_persona') != '') {
      $socio = Misc::organizarRequest(['_token', 'input_autocomplete', 'nombre_persona', 'dni_persona', 'archivo_edicto', 'incluir_edicto', 'texto_edicto']);
      $edicto = Request::input('incluir_edicto');
      if(isset($edicto)) {
        
        if($edicto == 1) {
          $file_edicto = isset($_FILES['archivo_edicto']['name']) ? $_FILES['archivo_edicto']['name'] : '';
          if($file_edicto != '') {

            if($_FILES['archivo_edicto']['error'] == UPLOAD_ERR_OK && is_uploaded_file($_FILES['archivo_edicto']['tmp_name'])) {
                 $file_content = file_get_contents($_FILES['archivo_edicto']['tmp_name']);

                 $socio[] = $edicto;
                 $socio[] = $file_edicto;
                 $socio[] = $file_content;
            } else {
                /* error de upload */
                $socio[] = 0;
                $socio[] = '';
                $socio[] = '';           
            }

          } else {
            //--> esta por aca
              $provincia_boletin  ='';
              $fecha_boletin      ='';
              $provincia_boletin = Request::input('provincia_boletin');
              $fecha_boletin = Request::input('fecha_boletin');
              unset($socio['provincia_boletin']);
              unset($socio['fecha_boletin']);
              $socio[] = 0;
              $socio[] = '';
              $socio[] = '';
          }

        } else {
          $provincia_boletin  ='';
          $fecha_boletin      ='';
          $provincia_boletin = Request::input('provincia_boletin');
          $fecha_boletin = Request::input('fecha_boletin');
          unset($socio['provincia_boletin']);
          unset($socio['fecha_boletin']);
          $socio[] = $edicto;
          $socio[] = '';
          $socio[] = Request::input('texto_edicto');
          $socio[] = $provincia_boletin;
          $socio[] = $fecha_boletin;
        }
      }
      else {
        $socio[] = 0;
        $socio[] = '';
        $socio[] = '';
      }

      // Si es contrapartes, lo ponemos en la tabla queue
      
      $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([
      'procesado'     => (isset($socio) && isset($socio->id_socio)) ? true : false,
      'view'          => isset($view) ? $view : ''
    ]);
  }


public function procesarSocio() {


    $cuit = Request::input('cuit');
    $cuit_persona = Request::input('cuit_persona');
    $desde = Request::input('desde');
    $hasta = Request::input('hasta');
    $cargo = Request::input('id_cargo');
    $id_socio = Request::input('id_socio');
    $tipo_persona = Request::input('tipo_persona');
    $ultimo = Request::input('ultimo');
    $edicto = Request::input('incluir_edicto');
    $archivo_edicto = Request::input('archivo_edicto');
    $contenido_archivo = Request::input('texto_edicto');
    $provincia_boletin = Request::input('provincia_boletin');
    $fecha_publicacion = Request::input('fecha_boletin');
    $user_id = Session::get("usuario")->user_id;

    if ((Request::input('cuit_persona') !== null && Request::input('cuit_persona') != '') || (Request::input('nombre_persona') !== null && Request::input('nombre_persona') != '')) {

       if(isset($edicto)) {
        
        if($edicto == 1) {
          $file_edicto = isset($_FILES['archivo_edicto']['name']) ? $_FILES['archivo_edicto']['name'] : '';
          if($file_edicto != '') {

            if($_FILES['archivo_edicto']['error'] == UPLOAD_ERR_OK && is_uploaded_file($_FILES['archivo_edicto']['tmp_name'])) {
                 $file_content = file_get_contents($_FILES['archivo_edicto']['tmp_name']);
                 $edicto = 1;
                 $archivo_edicto = $file_edicto;
                 $contenido_archivo = $file_content;
            } else {
                /* error de upload */
                $edicto = 0;
                $archivo_edicto = '';
                $contenido_archivo = '';           
            }

          } else {
            //--> esta por aca
              $edicto = 0;
              $archivo_edicto = '';
              $contenido_archivo = '';  
          }

        } else {
           $edicto = $edicto;
           $archivo_edicto = '';
           $contenido_archivo = Request::input('texto_edicto');
        }
      }
      else {
        $edicto  = 0;
        $archivo_edicto = '';
      }

      $socio   = [];
      $socio['cuit'] = $cuit; 
      $socio['cuit_persona'] = $cuit_persona;
      $socio['desde'] = $desde; 
      $socio['hasta'] = $hasta;  
      $socio['cargo'] = $cargo;
      $socio['id_socio'] = $id_socio;  
      $socio['tipo_persona'] = $tipo_persona;  
      $socio['ultimo'] = $ultimo;  
      $socio['edicto'] = $edicto;  
      $socio['archivo_edicto'] = $archivo_edicto;  
      $socio['contenido_archivo'] = $contenido_archivo;  
      $socio['provincia_boletin'] = $provincia_boletin;  
      $socio['fecha_publicacion'] = $fecha_publicacion;  
      $socio['user_id'] = $user_id;
      $socio = Misc::convertirStringsVaciosEnNull($socio);     

      // Si es contrapartes, lo ponemos en la tabla queue
      
      $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_mis', array_values($socio), true);
      //$view              = view('produccion.sociedades.tabla_socios_directores')->with($this->datosRelaciones())->render();
      
    }
    return response()->json([
      'procesado'     => (isset($socio) && isset($socio->id_socio)) ? true : false,
      'view'          => isset($view) ? $view : ''
    ]);
  }

  public function procesarStatusSocio() {    
    $socio = Request::input('id_socios');
    $sesion = Request::session()->all();
    $user_id = $sesion['usuario']->user_id;

    // Si es contrapartes, lo ponemos en la tabla queue
    $cuit = DB::selectOne("select c01_cuit from socios where id_socios = " . $socio)->c01_cuit; 
    $cuit_persona =  DB::selectOne("select c01_cuit_soc from socios where id_socios = " . $socio)->c01_cuit_soc; 
    $insert_queue = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert',NULL,NULL,$cuit), 'selectOne');
    $insert_queue = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert',NULL,NULL,$cuit_persona), 'selectOne');

    $socio = SQLConnection::backendStoreProcedure('backend_status_socio', array($socio,$user_id), true);
    $view = view('produccion.sociedades.tabla_socios_directores')->with($this->datosRelaciones())->render();    
    return response()->json([
      'procesado'     => (isset($socio) && isset($socio->id_socio)) ? true : false,
      'view'          => $view
    ]);
  }

  public function filtrarStatusSocios() {
    $view              = view('produccion.sociedades.tabla_socios_directores')->with($this->datosRelaciones())->render();
    return response()->json([
      'procesado'     => isset($view) ? true : false,
      'view'          => $view
    ]);
  }

  // ACCIONISTAS ---------------------------------------------------------------------------------------------------

  public function procesarAccionista() {
    if (Request::input('cuit_persona') !== null && Request::input('cuit_persona') != '') {
      //dd(Request::input());
      $tipo_persona      = Request::input('tipo_persona');
      $accionista        = Misc::organizarRequest(['_token', 'input_autocomplete', 'nombre_persona', 'dni_persona', 'tipo_persona']);
      //dd($accionista); 
      
      // Si es contrapartes, lo ponemos en la tabla queue
      $insert_queue = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert',NULL,NULL,$accionista["cuit"]), 'selectOne');
      $insert_queue = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert',NULL,NULL,$accionista["cuit_persona"]), 'selectOne');

      if ($tipo_persona != 'f') {
        $accionista['desde'] = Misc::convertirFormatoFecha($accionista['desde'], 'Y-m');
        $accionista['hasta'] = Misc::convertirFormatoFecha($accionista['hasta'], 'Y-m');
        $accionista      = SQLConnection::backendStoreProcedure('backend_procesar_accionista', array_values($accionista), true);
        $view            = view('produccion.sociedades.tabla_accionistas')->with($this->datosRelaciones())->render();
      }
    }
    return response()->json([
      'procesado'     => (isset($accionista) && isset($accionista->id_acc)) ? true : false,
      'view'          => (isset($view)) ? $view : ''
    ]);
  }


  //------------------------------------------------------------------------------
  public function procesarStatusAccionista() {
    $accionista        = Request::input('id_acc');
    
    // Si es contrapartes, lo ponemos en la tabla queue
    $cuit  = DB::selectOne("select cuit_sociedad from accionistas where id_accionista = " . $accionista)->cuit_sociedad; 
    $cuit_persona =  DB::selectOne("select cuit_acc from accionistas where id_accionista = " . $accionista)->cuit_acc; 
    $insert_queue = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert',NULL,NULL,$cuit), 'selectOne');
    $insert_queue = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert',NULL,NULL,$cuit_persona), 'selectOne');

    $accionista        = SQLConnection::backendStoreProcedure('backend_status_accionista', array($accionista), true);
    $view              = view('produccion.sociedades.tabla_accionistas')->with($this->datosRelaciones())->render();
    return response()->json([
      'procesado'     => (isset($accionista) && isset($accionista->id_acc)) ? true : false,
      'view'          => $view
    ]);
  }

  public function filtrarStatusAccionistas() {
    $view              = view('produccion.sociedades.tabla_accionistas')->with($this->datosRelaciones())->render();
    return response()->json([
      'procesado'     => isset($view) ? true : false,
      'view'          => $view
    ]);
  }

// ACCIONISTAS DE ---------------------------------------------------------------------------------------------------

  public function procesarAccionistaDe() {      
    if (Request::input('cuit_persona') !== null && Request::input('cuit_persona') != '') {
      $accionista_de     = Misc::organizarRequest(['_token', 'input_autocomplete', 'nombre_persona', 'dni_persona', 'tipo_persona']);
      //dd($accionista_de); 
      // Si es contrapartes, lo ponemos en la tabla queue
      $insert_queue = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert',NULL,NULL,$accionista_de["cuit"]), 'selectOne');
      $insert_queue = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert',NULL,NULL,$accionista_de["cuit_persona"]), 'selectOne');

      $accionista_de['desde'] = Misc::convertirFormatoFecha($accionista_de['desde'], 'Y-m');
      $accionista_de['hasta'] = Misc::convertirFormatoFecha($accionista_de['hasta'], 'Y-m');
      $accionista_de      = SQLConnection::backendStoreProcedure('backend_procesar_accionista_de', array_values($accionista_de), true);
      $view            = view('produccion.sociedades.tabla_accionistas_de')->with($this->datosRelaciones())->render();
    }
    return response()->json([
      'procesado'     => (isset($accionista_de) && isset($accionista_de->id_acc)) ? true : false,
      'view'          => (isset($view)) ? $view : ''
    ]);
  }

  public function procesarStatusAccionistaDe() {
    $accionista_de        = Request::input('id_acc');
    // Si es contrapartes, lo ponemos en la tabla queue
    $cuit  = DB::selectOne("select cuit_sociedad from accionistas where id_accionista = " . $accionista_de)->cuit_sociedad; 
    $cuit_persona =  DB::selectOne("select cuit_acc from accionistas where id_accionista = " . $accionista_de)->cuit_acc; 
    $insert_queue = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert',NULL,NULL,$cuit), 'selectOne');
    $insert_queue = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert',NULL,NULL,$cuit_persona), 'selectOne');

    $accionista_de        = SQLConnection::backendStoreProcedure('backend_status_accionista', array($accionista_de), true);
    $view              = view('produccion.sociedades.tabla_accionistas_de')->with($this->datosRelaciones())->render();
    return response()->json([
      'procesado'     => (isset($accionista_de) && isset($accionista_de->id_acc)) ? true : false,
      'view'          => $view
    ]);
  }

  public function filtrarStatusAccionistasDe() {
    $view              = view('produccion.sociedades.tabla_accionistas_de')->with($this->datosRelaciones())->render();
    return response()->json([
      'procesado'     => isset($view) ? true : false,
      'view'          => $view
    ]);
  }


}