<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Request;
use App\Custom\SQLConnection;
use App\Custom\Misc;
use Session;

class ControlarApiController extends Controller
{
    public static function panel_de_administracion() {
        // Se obtiene el valor del parametro 'cliente' de la solicitud o se establece como nulo si no esta presente
        $cliente = Request::Input("cliente") ?? null; 
        
        $resultado = SQLConnection::backendStoreProcedure('panel_control_api',array($cliente));
        
        // Si se obtiene un resultado valido
        if (isset($resultado)){
            // Se convierte el resultado a formato JSON
            $contenido = json_encode($resultado);    
    
            // Se retorna la vista 'panel_de_administracion' con los datos 'contenido' y 'cliente'
            return view('/control_de_apis/new/panel_de_administracion',compact("contenido","cliente"));
        }
        
        // Si no se obtiene un resultado valido
        else{
            // Se definen los datos para el control de errores
            $seccion = "ControlarApiController";
            $nombre_funcion = "panel_de_administracion";
            $mensaje = "Fallo en la variable 'resultado'";
            
            // Se llama a la funcion de control de errores
            SQLConnection::control_erores($seccion, $nombre_funcion, $mensaje);
            
            // Se retorna la vista de error 'vista_con_error'
            return view("errors/vista_con_error");
        }
    }

    /* FUNCIONES NUEVAS PARA EL PANEL DE APIS */

    // FUNCION QUE DEVUELVE EL MODAL DE MODIFICACIONES
    public static function modal_topes_panel_nuevo(){
        $puntero = Session::get('usuario');
        $id = Request::Input("id") ?? null; 
        $cliente = Request::Input("cliente") ?? null; 
        
        $monedas   = SQLConnection::obtenerMonedas();
        $productos = SQLConnection::backendStoreProcedure("backend_clientes_productos",[$cliente],'select'); 
        $usuarios  = SQLConnection::backendStoreProcedure("cliente_usuarios_productos",[$cliente],'select');
         
        return view("/control_de_apis/modal_modificar",compact('monedas','productos','usuarios'));
             
    }

        // FUNCION ENCARGADA DE DEVOLVER LA DOCUMENTACION COMERCIAL DEL PRODUCTO
        public static function llamar_documentacion_comercial(){
            $expReg = "/^\d{1,3}$/";
            if (Misc::validar_data($expReg,$_POST['product_id']) and ($_POST['_indicador'] == '0' or $_POST['_indicador'] == '1' ) ){
                //------ SI LOS DATOS SON VALIDOS SE LAS ASIGNA A UNA VARIABLE AMIGABLE
                $id_producto = $_POST['product_id'];
                $indicador_de_documentaciones = $_POST['_indicador'];
                
                //--- SI EL INDICADOR ES 0 , SE LES LLEVA A LA SECCION COMERCIAL
                if ( $indicador_de_documentaciones == '0'){
                    //-------- SI EL INDICADOR DE DOCUMENTACIONES ES 0 SE DEVUELVE LA DOCUMENTACION COMERCIAL
                    $archivo = env('URL_DOCUMENTACION_COMERCIAL').'/'.$id_producto.'_comercial.pdf';
                    //------ SI LA DOCUMENTACION COMERCIAL DEL PRODUCTO EXISTE
                    if ( file_exists($archivo) ){
                        //----
                        $nombre_archivo = basename($archivo);
                        //--------
                        $contenido = file_get_contents($archivo);
                        //$contenido = implode($contenido);
                        //$contenido = utf8_decode($contenido);
                        //---------
                        $response = array(
                            'op'=> 'ok',
                            'archivo' => $nombre_archivo,
                            'file' => "data:application/pdf;base64,".base64_encode($contenido) 
                        );
                        die(json_encode($response));
                    }
                    //------- SI NO EXISTE LA DOCUMENTACION COMERICAL DEL PRODUCTO
                    else{
                        return 'No Hay un archivo con este nombre';    
                    }
                }
                //---- SI EL INDICADOR ES 1 ,SE LES LLEVA A LA SECCION TECNICA
                else{
                    //-------- SI EL INDICADOR DE DOCUMENTACIONES ES 1 SE DEVUELVE LA DOCUMENTACION TECNICA
                    $archivo = env('URL_DOCUMENTACION_TECNICA').'/'.$id_producto.'_tecnica.pdf';
                    //------ SI LA DOCUMENTACION TECNICA DEL PRODUCTO EXISTE
                    if ( file_exists($archivo) ){
                        //----
                        $nombre_archivo = basename($archivo);
                        //------
                        $contenido = file_get_contents($archivo);
                        //$contenido = implode($contenido);
                        //$contenido = utf8_decode($contenido);
                        //---------
                        $response = array(
                            'op'=> 'ok',
                            'archivo' => $nombre_archivo,
                            'file' => "data:application/pdf;base64,".base64_encode($contenido) 
                        );
                        die(json_encode($response));
                    }
                    //------- SI NO EXISTE LA DOCUMENTACION TECNICA DEL PRODUCTO
                    else{
                        return 'No Hay un archivo con este nombre';    
                    }
                }
            //-------
            }
            //------ SI LOS DATOS MANDADOS SON INVALIDOS SE ALERTA
            else{
                $servidor = $_SERVER['REMOTE_ADDR'];
                $seccion = 'ControlarApiController';
                $nombre_funcion = 'llamar_documentacion_comercial';
                $mensaje = 'Datos invalidos recibidos por este ip '.$servidor;
                SQLConnection::control_erores($seccion,$nombre_funcion,$mensaje);
            }
        }
}
