<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Session;
use App\Custom\SQLConnection;
use App\Custom\Misc;
use DB;
use stdClass;
use DateTime;

class FormularioController extends Controller
{
    /**Menu forms */
    public function forms(){
        return view('/ag-formularios/menu_form');
    }
    /**crear form*/
    public static function createFrom()
    {
        //
        return view('/ag-modal/template_form');

    }
    /**vista de creear form, pero con el json insertado para poder editarlo/duplicarlo */
    public static function createFrom_editar()
    {
        $tipo_doc = request()->input("tipo_doc");
        $D = request()->input("D");
        //dd($D);
        // Conexión y ejecución del procedimiento almacenado
        $db = DB::connection('demo_sqlsrv');   
        $tipos = $db->select('EXEC dbo.LN_tipos_doc_new ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', 
        array('select', $tipo_doc, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null), 'select');

        // Supongamos que el JSON viene en el campo txt_json del resultado
        $jsonData = $tipos[0]->txt_json; // Asegúrate de que txt_json es parte de $tipos

        return view('/ag-modal/template_form')->with(['jsonData'=> $jsonData, 'D'=> $D , 'tipo_doc'=> $tipo_doc ]);
    }
    /**TABLA CON DOC PARA ASIGNARLOS A DAGA */
    public function template_list(){

        $db = DB::connection('demo_sqlsrv');// Connecto a la base
                                            //llamo a los datos
                                            
        $tipos = $db->select('EXEC dbo.LN_tipos_doc_new ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('search', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null), 'select');
        //-> documentos/formularios
        $sets = $db->select('EXEC dbo.LN_set_docs_ ?,?,?,?,?,?,?,?,?', array('search',NULL,NULL,NULL,NULL,NULL,NULL,NULL,env('PLATAFORMA')), 'select'); 
        // -> DAGAS/FACON  
        $clientes = $db->select('EXEC dbo.LED_Clientes ?,?,?,?,?,?,?', array('SELECT',NULL,NULL,NULL,NULL,0,env('PLATAFORMA')), 'select');
        // -> Clientes 
        $titulo_navbar = 'Sets de documentos Existentes';
        // -> titulo 
         $clientes = json_encode($clientes);
        // dd($clientes);       
        return view('/ag-modal/template_list')->with(compact(['tipos','sets','titulo_navbar','clientes']));;
    }
    /** TABLA CON DAGAS PARA MOSTRAR EN LA VIEW DE ASIGNACIONES */
    public static function setsDaga(){
        
        $db = DB::connection('demo_sqlsrv');// Connecto a la base
        //llamo a los 
        $sets = $db->select('EXEC dbo.LN_set_docs_ ?,?,?,?,?,?,?,?,?', array('search',NULL,NULL,NULL,NULL,NULL,NULL,NULL,env('PLATAFORMA')), 'select');
        $titulo_navbar = 'Sets de documentos Existentes';

        //dd($sets);
        //return view('/ag-modal/modal_daga_asigno')->with(compact(['sets','titulo_navbar']));;
       // return view('/ag-modal/template_list')->with(compact(['sets','titulo_navbar']));;

    } 
    
    public function insert_doc_json(){
       // dd($_POST);
        $D = request()->input("D");
        $tipo_doc = request()->input("tipo_doc");
        $nombre = request()->input("nombre");
        $doc_json = request()->input("doc_json");
        $codpais = request()->input("codpais");
        $modalidad = request()->input("modalidad");
        $vigencia = request()->input("vigencia");
        $esBalance = request()->input("esBalance");
        //FALTA AGREGAR ESTOS
        $juridica = request()->input("juridica");
        $monotributo = request()->input("monotributo");
        $autonoma = request()->input("autonoma");
        $imgPerfil = request()->input("imgPerfil");
        $imgTaxID = request()->input("imgTaxID");
        $concentido = request()->input("concentido");
        $evidencia = request()->input("evidencia");
        $es_manif_bienes = request()->input("es_manif_bienes");
        //$nombre = $_POST['nombre'];
        //$doc_json = $_POST['doc_json'];
        //dd($doc_json);
        $userid = Session::get('usuario')->user_id;
        //
        //$respuesta = SQLConnection::backendStoreProcedure('ln_tipos_doc_new', array('INSERT',$nombre,$created,$userid,NULL,NULL,$doc_json), 'selectOne');
        // 
        //dd("LLLEGUE");
        $db = DB::connection('demo_sqlsrv');

        if($D == '' and $tipo_doc == ''){
            $inserted = $db->select('EXEC dbo.LN_tipos_doc_new ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?',array('INSERT',NULL,$nombre,$codpais,$modalidad,$vigencia,NULL,NULL,NULL,$esBalance,$userid,$es_manif_bienes,$juridica,$monotributo,$autonoma,$imgPerfil ,$concentido,$imgTaxID,$evidencia,NULL,$doc_json));            
        } elseif ($D == '' and $tipo_doc != ''){
            // aca es update, Es un DOC EDITADO, en  el exec se le agrega user_modif,fecha_modif, id que se va a modificar
            $inserted = $db->select('EXEC dbo.LN_tipos_doc_new ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?',array('UPDATE',$tipo_doc,$nombre,$codpais,$modalidad,$vigencia,NULL,NULL,NULL,$esBalance,$userid,$es_manif_bienes,$juridica,$monotributo,$autonoma,$imgPerfil ,$concentido,$imgTaxID,$evidencia,NULL,$doc_json));        
        }elseif( $D == '!D'){
            //aca es insert, es un duplicado
            $inserted = $db->select('EXEC dbo.LN_tipos_doc_new ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?',array('INSERT',$tipo_doc,$nombre,$codpais,$modalidad,$vigencia,NULL,NULL,NULL,$esBalance,$userid,$es_manif_bienes,$juridica,$monotributo,$autonoma,$imgPerfil ,$concentido,$imgTaxID,$evidencia,NULL,$doc_json));  
        }
         //dd($inserted);
        //return json_encode($inserted);
        return $inserted; 
    }    

    public static function crearSetDocumentos(){
        if ( isset($_POST['docs_elegidos']) && is_array($_POST['docs_elegidos']) && count($_POST['docs_elegidos']) > 0 && isset($_POST['nombre_set']) && ( (isset($_POST['cliente']) && Misc::validacionesGenerica(request()->input('cliente'),'numero') ) || isset($_POST['set_generico']) ) ){
            $nombre_set = request()->input('nombre_set');
            $descripcion = request()->input('descripcion_set');
            $cliente = request()->input('cliente') ?? null;
            $hab_contratistas = (is_null(request()->input('hab_contratistas'))) ? 0 : 1;
            $hab_subcontratistas = (is_null(request()->input('hab_subcontratistas'))) ? 0 : 1;
            $userid = Session::get('usuario')->user_id;
            $docs_elegidos = $_POST['docs_elegidos'];
            $id_plataforma = Session::get('webdata')['servicio_contratado'] ?? env('PLATAFORMA');
            // Se valida que el set de documentos no tenga un nombre que otro tiene
            // SE DA DE ALTA EL SET
            //CAMBIAR ACA //$set_id = SQLConnection::backendStoreProcedure('LN_set_docs_',array('insert',NULL,$nombre_set,$descripcion,$cliente,$hab_contratistas,$hab_subcontratistas,$userid,$id_plataforma),'selectOne');
            // SE DAN DE ALTA LOS TIPOS DOCS DEL SET
            $db = DB::connection('demo_sqlsrv');
            $set_id = $db->select('EXEC dbo.LN_set_docs_ ?,?,?,?,?,?,?,?,?,?',array('insert',NULL,$nombre_set,$descripcion,$cliente,$hab_contratistas,$hab_subcontratistas,$userid,$id_plataforma),'select');
            if ( isset($set_id->idSet) ){
                self::addTipoDocsToSet($set_id->idSet,$docs_elegidos);
            }

        } else {
            return 1;
        }
    }
    /**
     * FUNCION QUE DA DE ALTA TIPO DOCS EN ARRAY
     * 
     * @param string id del set
     * @param array lista de tipo docs a dar de alta
     * 
     * @return int
     */
    private static function addTipoDocsToSet($set_doc,$tipo_docs){
        foreach( $tipo_docs as $doc ){
            $tolerancia = request()->input('tolerancia_carga_'.$doc);
            $carga = request()->input('carga_'.$doc);
            $verifica = request()->input('verifica_'.$doc);
            $vb = ( $verifica == 'F' ) ? 1 : 0;
            $vc = ( $verifica == 'C' ) ? 1 : 0;
            $peso_score = (  empty(request()->input('peso_score_'.$doc)) ) ? NULL : request()->input('peso_score_'.$doc) ;
            $activo = ( request()->input('activo_'.$doc) !== NULL ) ? 1 : 0;
            $killer = ( request()->input('killer_'.$doc) !== NULL ) ? 1 : 0;
            $userid = Session::get('usuario')->user_id;
            //
            $db = DB::connection('demo_sqlsrv');
            //$temp = SQLConnection::backendStoreProcedure('LN_set_tipo_doc_V2', array('INSERT', $set_doc, $doc, $userid, $tolerancia, $activo, $peso_score, $killer, $vb, $vc), 'selectOne');
            $temp = $db->select('EXEC dbo.LN_set_tipo_doc_V2 ?,?,?,?,?,?,?,?,?,?',array('INSERT', $set_doc, $doc, $userid, $tolerancia, $activo, $peso_score, $killer, $vb, $vc),'select');
           
        }
        return 1;
    }
    


}