<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Request;

use App\Custom\SQLConnection;
use App\Custom\Misc;
use App\Http\Controllers\LoginController;

class MainController extends Controller {
    public function obtenerMain() {
        return redirect('/mis-tareas');
    }

    public function obtenerDashboard(){
		//30601399446
		$formularios = array();
		$traducciones_pendientes = SQLConnection::backendStoreProcedure('backend_traducciones_pendientes',array(),"selectOne");
		Session::put('traducciones_pendientes',$traducciones_pendientes);
		// $menu = Misc::obtenerPermisosNavigatorNoCuit();
		Session::forget('cuit');
		Session::forget('nombre');
		Session::forget('cli_codigo');
		Session::forget('cli_cuit');
		Session::forget('cli_nombre');
		$userId = Session::get('usuario')->user_id;
		$userName = Session::get('usuario')->first_name.' '.Session::get('usuario')->last_name;
		// ------ GENERA INCONVENIENTES AL PASAR EN BACKEND2 "SQLSTATE[HY000] Unknown host machine name (SYBASE) (severity 2)" - POSIBLEMENTE FALTE DECLARACIÓN DE VARIABLE DE ENTORNO.
		// $formularios = SQLConnection::formulariosWP('','',$userName,'','','','', 'nav');
		// return view('dashboard')->with(compact('menu', 'formularios'));
		// -------------
		// -- ESTE IF ES DE PRUEBA, PARA CREAR LAS INTERFAZ DEL MENU NUEVO EN BACKEND. 
		$id_menu_plataforma = Session::get('webdata')['id_menu_plataforma'];
		if( $id_menu_plataforma == 'PRODBACK' ){
			$datos_dashboard = DashboardController::datosDashboard();
			return view('/backend-inquiro/dashboard_inquiro_backend')->with(compact('datos_dashboard'));  /* BACKEND IV ACTUAL */
		} else {
			return view('/backend-inquiro/dashboard_inquiro_backend');  /* BACKEND IV ACTUAL */
		}
		// return view('dashboard')->with(compact('menu')); /* MENU VIEJITO, A LOS TUMBOS PERO LEVANTÓ */
		// } else{
		// 	return view('dashboard')->with(compact('menu'));
		// }
		// --
	}


    public static function notificacionesBackend() {
        //$notificaciones = SQLConnection::backendStoreProcedure('LN_panel_reports',array('NOTIFAINICIAR', Session::get('usuario')->user_id,NULL, null,env('PLATAFORMA'),null,env('PLATAFORMA'),NULL));
        $notificaciones = self::obtenerUsuariosNotificaciones();
        $notificaciones = (!$notificaciones) ? [] : $notificaciones;
        $hoy = date_create(date('Y-m-d'));
        // dd($notificaciones);
        //
        return view('/backend-inquiro/notificaciones')->with(compact('notificaciones', 'hoy'));
    }

    /**
     * Funcion que devuelve el contenido del archivo de 
     * notificaciones
     * @access private
     * @return string|null|boolean
     */
    private static function obtenerUsuariosNotificaciones() {
        // 5546717,41904867,28750576,87455253,78993863,436897241
        $usuario = hash('md5', Session::get('usuario')->user_id);
        // $usuario = hash('md5','436897241');
        // dd(Session::all());
        $file_name = env('PATH_NOTIFICATIONS') . '/notificacion_' . $usuario . '.json';
        if (file_exists($file_name)) {
            return json_decode(file_get_contents($file_name));
        }
        return '';
    }
    public static function busquedaPadron(){

		$dni          = Request::input('dni') ?? null;
		$cuit         = Request::input('cuit') ?? null;
		$razon_social = Request::input('razon_social') ?? null;

		$buscar = $cuit ?? ($dni ?? $razon_social); 
		
	 	return json_decode(VerificadorDocNuevoController::busquedaPadron($buscar));

	}

    public static function obtenerPadronGenereicoLedOrg() {
        Session::forget('cuit');
        Session::forget('nombre');
        Session::save();
        $desde = "Carga y análisis de balances";
        return view("/busqueda_padron_generico_led/busqueda-padron")->with(compact('desde'));
    }

    public static function obtenerPadronGenereicoLed() {
        Session::forget('cuit');
        Session::forget('nombre');
        Session::save();

        $desde = "Carga y análisis de balances";
		
		try {
            $paises = SQLConnection::backendStoreProcedure('backend_obtener_paises', array());
            $provincias = SQLConnection::backendStoreProcedure('abm_provincias', array("BUSQUEDA-POR-PAISES", NULL, NULL, 'AR', 1));
    
            // Ordenar los paises alfabeticamente por el nombre (country_name)
            usort($paises, function($a, $b) {
                return strcmp($a->country_name, $b->country_name);
            });
            // Ordenar las provincias alfabéticamente por el nombre (prv_nombre)
            usort($provincias, function($a, $b) {
                return strcmp($a->prv_nombre, $b->prv_nombre);
            });
        } catch (\Exception $e) {
            // Manejar el error (loguear o mostrar un mensaje)
            Log::error('Error al obtener provincias: ' . $e->getMessage());
            $provincias = []; // Asignar un array vacío en caso de error
        }
		return view("/buscador_padron_general")->with(compact("desde","provincias","paises"));               
    }

    public static function obtenerParametrosInformeComercial($es_array = 0) {
        //llamado en Front MainC:obtenerCompacto = $token_id_usuario
        $usuario = Session::get('usuario');
        $hora_actual = date("h:i:s");
        $clientes = SQLConnection::obtenerCliente(ENV('ID_INFORME_COMERCIAL'), $usuario->user_id);
        $cliente_ordenado = [];
        $secciones = LoginController::obtenerSeccionesHabilitadas($usuario->user_id);
        $secciones = array_change_key_case($secciones, CASE_LOWER);
        foreach ($clientes as $cliente) {
            $cliente_ordenado[$cliente->id_producto] = $cliente;
            $cliente_ordenado[$cliente->id_producto]->secciones = $secciones;
        }
        $datos = new \stdClass;
        $datos->usuario = $usuario;
        $datos->usuario->cliente = $cliente_ordenado;
        $datos->user_id = $usuario->user_id;
        $datos->hora_actual = $hora_actual;
        $datos->usuario->sesion_externa = true; //pato 18-12-17
        $datos = Misc::encrypt(json_encode($datos));
        return $datos;
    }
}
