<?php 
namespace App\Http\Controllers;

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

class ComponentesController extends Controller
{
    // FUNCION QUE DEVUELVE LA VISTA DE ALTA DE NUEVO COMPONENTE
    public static function nuevoComponente() {
        $documentos_disponibles = SQLConnection::backendStoreProcedure('LN_set_tipo_doc_', array('available'), 'select'); // Documentos Disponibles
        $clientes = SQLConnection::backendStoreProcedure('LED_Clientes', array('SELECT',NULL,NULL,NULL,NULL,0,env('PLATAFORMA')), 'select'); // Clientes LED
        $tareas = SQLConnection::backendStoreProcedure('LN_Tareas_', array('LISTAR_PADRES',NULL,NULL), 'select'); // Tareas Disponibles
        //
        $clientes = json_encode($clientes);
        $titulo_navbar = 'Nuevo Componente';
        //
        $ruta = '/configuracion-componentes-informes/editar-componente';
        return view('/configuracion-componentes-informes/nuevo-componente')->with(compact('documentos_disponibles','clientes','tareas','titulo_navbar','ruta'));
    }

    // FUNCION QUE DEVUELVE DA DE ALTA UN NUEVO COMPONENTE
    public static function altaNuevoComponente()
    {
        if ( isset($_POST['tipo_componente']) && isset($_POST['nombre_componente']) && isset($_POST['ruta_componente']) && preg_match('/(^\/[a-zA-Z0-9\/\-\_\.\#\?]+)$/',$_POST['ruta_componente']) && isset($_POST['descripcion_componente']) && ( isset($_POST['componente_generico']) || isset($_POST['cliente']) ) ){
            $nombre = Request::input('nombre_componente');
            $cliente = ( !is_null(Request::input('componente_generico')) && Request::input('componente_generico') == '1' ) ? NULL : Request::input('cliente'); // Generico o de Cliente
            $descripcion = Request::input('descripcion_componente');
            $tipo = Request::input('tipo_componente'); // Tipo de componente
            $titulo_componente = !empty(Request::input('titulo_componente')) ? Request::input('titulo_componente') : null; // Titulo de componente
            $ruta = Request::input('ruta_componente'); // Ruta del componente
            $tipo_doc = ( !empty(Request::input('tipo_doc_componente')) ) ? Request::input('tipo_doc_componente') : NULL;
            $tarea = ( !empty(Request::input('tarea_componente')) ) ? Request::input('tarea_componente') : NULL;
            $secciones_ic = ( !empty(Request::input('ic_componente')) ) ? Request::input('ic_componente') : NULL;
            // SE DA DE ALTA EL COMPONENTE
            SQLConnection::backendStoreProcedure('LN_componente_',array('AGREGAR',$nombre,$tipo,$descripcion,$ruta,$tipo_doc,$tarea,$cliente,1,NULL,$secciones_ic,$titulo_componente));
            //
            return 1;
        } else {
            return 0;
        } 
    }

    public static function tablaComponentes(){
        $componentes = SQLConnection::backendStoreProcedure('LN_componente_', array('LISTAR',NULL,NULL,NULL,NULL,NULL,NULL,NULL), 'select');
        $documentos_disponibles = SQLConnection::backendStoreProcedure('LN_set_tipo_doc_', array('available'), 'select'); // Documentos Disponibles
        $tareas = SQLConnection::backendStoreProcedure('LN_Tareas_', array('LISTAR_PADRES',NULL,NULL), 'select'); // Tareas Disponibles
        //$ruta = '/nuevo-generar-informe';
        $titulo_navbar = 'Edición de Componentes Existentes';
        $clientes = SQLConnection::backendStoreProcedure('LED_Clientes', array('SELECT',NULL,NULL,NULL,NULL,0,env('PLATAFORMA')), 'select'); // Clientes LED
        return view('/configuracion-componentes-informes/tabla_componentes_existentes')->with(compact('titulo_navbar','componentes','documentos_disponibles','tareas','clientes'));
    }

    public static function confirmEditarComponente()
    {
        if ( isset($_POST['tipo_componente']) && isset($_POST['nombre_componente']) && isset($_POST['ruta_componente']) && preg_match('/(^\/[a-zA-Z0-9\/\-\_\.\#\?]+)$/',$_POST['ruta_componente']) && isset($_POST['descripcion_componente']) && ( isset($_POST['componente_generico']) || isset($_POST['cliente']) ) ){
            $idComp = Request::input('idComp');
            $nombre = Request::input('nombre_componente');
            $cliente = (!is_null(Request::input('cliente')) && Request::input('cliente') != '') ? Request::input('cliente') : null;
            $descripcion = Request::input('descripcion_componente');
            $tipo = Request::input('tipo_componente'); // Tipo de componente
            $ruta = Request::input('ruta_componente'); // Ruta del componente
            $titulo_componente = !empty(Request::input('titulo_componente')) ? Request::input('titulo_componente') : null; // Titulo de componente
            $tipo_doc = ( !empty(Request::input('tipo_doc_componente')) ) ? Request::input('tipo_doc_componente') : NULL;
            $tarea = ( !empty(Request::input('tarea_componente')) ) ? Request::input('tarea_componente') : NULL;
            $seccion_ic = ( !empty(Request::input('ic_componente')) ) ? Request::input('ic_componente') : NULL;
            // SE EDITA EL COMPONENTE
            SQLConnection::backendStoreProcedure('LN_componente_',array('ACTUALIZAR',$nombre,$tipo,$descripcion,$ruta,$tipo_doc,$tarea,$cliente,1,$idComp,$seccion_ic,$titulo_componente));
            //
            return 'Cambios guardados con éxito';
        } else {
            return 0;
        } 
    }

    public static function desactivarComponente()
    {
        if ( isset($_POST['tipo_componente']) && isset($_POST['nombre_componente']) && isset($_POST['ruta_componente']) && preg_match('/(^\/[a-zA-Z0-9\/\-\_\.\#\?]+)$/',$_POST['ruta_componente']) && isset($_POST['descripcion_componente']) &&  isset($_POST['cliente']) ){
            $idComp = Request::input('idComp');
            $nombre = Request::input('nombre_componente');
            $cliente = ( !is_null(Request::input('componente_generico')) && Request::input('componente_generico') == '1' ) ? NULL : Request::input('cliente'); // Generico o de Cliente
            $descripcion = Request::input('descripcion_componente');
            $tipo = Request::input('tipo_componente'); // Tipo de componente
            $ruta = Request::input('ruta_componente'); // Ruta del componente
            $titulo_componente = !empty(Request::input('titulo_componente')) ? Request::input('titulo_componente') : null; // Titulo de componente
            $tipo_doc = ( !empty(Request::input('tipo_doc_componente')) ) ? Request::input('tipo_doc_componente') : NULL;
            $tarea = ( !empty(Request::input('tarea_componente')) ) ? Request::input('tarea_componente') : NULL;
            $seccion_ic = ( !empty(Request::input('ic_componente')) ) ? Request::input('ic_componente') : NULL;
            // Se verifica el estado para activar o desactivar componente.
            $estado = Request::input('estado_componente'); 
            if( $estado == 1 ){
                $estado = 0;
            } else {
                $estado = 1;
            }
            // SE DESACTIVA EL COMPONENTE
            SQLConnection::backendStoreProcedure('LN_componente_',array('ACTUALIZAR',$nombre,$tipo,$descripcion,$ruta,$tipo_doc,$tarea,$cliente,$estado,$idComp,$seccion_ic,$titulo_componente));
            //
            return 1;
        } else {
            return 0;
        } 
    }

}