<?php
/*
|--------------------------------------------------------------------------
| Inicio de sesion y respaldo de URL
|--------------------------------------------------------------------------
| Se inicia la sesion y se guarda la URL actual para poder regresar
| a esta pagina si el sistema lo necesita en otro flujo.
*/
session_start();
$_SESSION['url'] = $_SERVER['REQUEST_URI'];

/*
|--------------------------------------------------------------------------
| Validacion de acceso
|--------------------------------------------------------------------------
| Solo permite entrar a usuarios con sesion iniciada y nivel 2.
| Si no cumple, se redirige al inicio al final del archivo.
*/
if ((isset($_SESSION['id'])) && ($_SESSION['level']) == 2) {
    /*
    |----------------------------------------------------------------------
    | Conexion a base de datos
    |----------------------------------------------------------------------
    | Se carga el archivo donde debe existir la funcion conectar().
    */
    require_once('conex2.php');

    /*
    |----------------------------------------------------------------------
    | Validacion de funcion conectar
    |----------------------------------------------------------------------
    | Si la funcion conectar() no existe, se detiene la ejecucion.
    */
    if (!function_exists('conectar')) {
        die('Error: no existe la función conectar() en conex2.php');
    }

    /*
    |----------------------------------------------------------------------
    | Creacion de conexion global
    |----------------------------------------------------------------------
    | Se guarda la conexion en una variable global para reutilizarla
    | dentro de la funcion resultados_mysql().
    */
    $GLOBALS['___conexion_visualauditiva'] = conectar();

    /*
    |----------------------------------------------------------------------
    | Validacion de conexion
    |----------------------------------------------------------------------
    | Si no se obtiene una conexion valida, se detiene el sistema.
    */
    if (!$GLOBALS['___conexion_visualauditiva']) {
        die('Error de conexión a la base de datos');
    }

    /*
    |----------------------------------------------------------------------
    | Codificacion de caracteres
    |----------------------------------------------------------------------
    | Se establece utf8 para evitar problemas con caracteres especiales.
    */
    if ($GLOBALS['___conexion_visualauditiva'] instanceof mysqli) {
        $GLOBALS['___conexion_visualauditiva']->set_charset('utf8');
    }

    /*
    |----------------------------------------------------------------------
    | Funcion auxiliar para consultas
    |----------------------------------------------------------------------
    | Mantiene el nombre resultados_mysql() para conservar compatibilidad
    | con el codigo existente del proyecto.
    */
    if (!function_exists('resultados_mysql')) {
        function resultados_mysql($consulta) {
            /*
            |------------------------------------------------------------------
            | Recuperacion de conexion
            |------------------------------------------------------------------
            | Toma la conexion global creada al inicio del archivo.
            */
            $conexion = $GLOBALS['___conexion_visualauditiva'] ?? null;

            /*
            |------------------------------------------------------------------
            | Validacion de conexion disponible
            |------------------------------------------------------------------
            | Si no hay conexion, se regresa false para indicar error.
            */
            if (!$conexion) {
                return false;
            }

            /*
            |------------------------------------------------------------------
            | Ejecucion de consulta
            |------------------------------------------------------------------
            | Ejecuta la consulta recibida y regresa el resultado.
            */
            return mysqli_query($conexion, $consulta);
        }
    }

    /*
    |----------------------------------------------------------------------
    | Registro de usuario
    |----------------------------------------------------------------------
    | Se ejecuta cuando el usuario envia el formulario y conserva
    | la validacion de nivel 2 antes de registrar.
    */
    if ((isset($_POST['btnRegistrar'])) && ($_SESSION['level']) == 2) {
        /*
        |------------------------------------------------------------------
        | Captura de datos del formulario
        |------------------------------------------------------------------
        | Se reciben los datos enviados por POST para crear el usuario.
        */
        $user = $_POST['txtUsuario'];
        $name = $_POST['txtNombre'];
        $paterno = $_POST['txtApellidoPaterno'];
        $materno = $_POST['txtApellidoMaterno'];
        $pass1 = $_POST['passUsuario'];
        $pass2 = $_POST['passUsuario2'];
        $userlvl = $_POST['nivelUsuario'];

        /*
        |------------------------------------------------------------------
        | Validacion de contrasenas
        |------------------------------------------------------------------
        | Solo registra si las dos contrasenas capturadas coinciden.
        */
        if ($pass1 == $pass2) {
            /*
            |--------------------------------------------------------------
            | Consulta de insercion
            |--------------------------------------------------------------
            | Inserta el nuevo usuario encargado. Se conserva md5 porque
            | asi trabaja actualmente la estructura del sistema.
            */
            $myQuery = "INSERT INTO visualauditivaencargada (usuario_encargada, nombre_encargada, apellido_paterno_encargada, apellido_materno_encargada, password, nivel) VALUES ('{$user}', '{$name}', '{$paterno}', '{$materno}', md5('{$pass1}'), $userlvl)";
            
            /*
            |--------------------------------------------------------------
            | Ejecucion de registro
            |--------------------------------------------------------------
            | Si el registro se guarda correctamente, redirige al inicio.
            */
            if (resultados_mysql($myQuery)) {
                header('Location: index.php');
                exit;
            } else {
                /*
                |----------------------------------------------------------
                | Error al registrar
                |----------------------------------------------------------
                | Muestra alerta si la consulta no pudo ejecutarse.
                */
                echo "<script type=\"text/javascript\">alert('Error en los datos')</script>";
            }
        } else {
            /*
            |--------------------------------------------------------------
            | Error por contrasenas diferentes
            |--------------------------------------------------------------
            | Muestra alerta si las contrasenas no coinciden.
            */
            echo "<script type=\"text/javascript\">alert('Las contraseñas no concuerdan')</script>";
        }
    }
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <!-- Configuracion basica del documento -->
    <title>Registro Usuario</title>
    <meta charset="utf-8">

    <!-- Permite adaptar la vista a celulares y tablets -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <!-- Hoja de estilos principal de esta vista -->
    <link rel="stylesheet" type="text/css" href="styles/nuevo.css">

    <script type="text/javascript">
        /*
         * Valida que las dos contrasenas capturadas sean iguales.
         * Si no coinciden, muestra un mensaje debajo del campo.
         */
        function check() {
            if (document.getElementById('passUsuario').value == document.getElementById('passUsuario2').value) {
                document.getElementById('message').innerHTML = '';
            } else {
                document.getElementById('message').style.color = 'red';
                document.getElementById('message').innerHTML = 'Las contraseñas no coinciden';
            }
        }
    </script>
</head>
<body>
    <!-- Encabezado principal con logos y titulo del sistema -->
    <header class="topbar">
        <div class="topbar__inner">
            <!-- Logo institucional izquierdo -->
            <div class="topbar__logo topbar__logo--left">
                <img src="img/UINDLogo.png" alt="Logo izquierdo">
            </div>

            <!-- Titulo principal de la pagina -->
            <div class="topbar__title">
                <h1>Evaluación visual - auditiva</h1>
            </div>

            <!-- Logo institucional derecho -->
            <div class="topbar__logo topbar__logo--right">
                <img src="img/UNAMLogoBlanco.png" alt="Logo derecho">
            </div>
        </div>
    </header>

    <!-- Contenido principal de la vista -->
    <main class="page">
        <!-- Tarjeta del formulario de registro -->
        <section class="register-card">
            <!-- Encabezado de la tarjeta -->
            <div class="register-card__header">
                <h2>Registrar usuario</h2>
            </div>

            <!-- Cuerpo de la tarjeta -->
            <div class="register-card__body">
                <!-- Formulario para registrar un nuevo usuario -->
                <form action="#" method="POST" class="register-form">
                    <!-- Campo usuario -->
                    <div class="form-group">
                        <label for="txtUsuario">Usuario</label>
                        <div class="input-shell">
                            <span class="input-shell__icon">&#128100;</span>
                            <input type="text" name="txtUsuario" id="txtUsuario" placeholder="Usuario" required>
                        </div>
                    </div>

                    <!-- Campo nombre -->
                    <div class="form-group">
                        <label for="txtNombre">Nombre</label>
                        <div class="input-shell">
                            <span class="input-shell__icon">&#128100;</span>
                            <input type="text" name="txtNombre" id="txtNombre" placeholder="Nombre" required>
                        </div>
                    </div>

                    <!-- Campo apellido paterno -->
                    <div class="form-group">
                        <label for="txtApellidoPaterno">Apellido Paterno</label>
                        <div class="input-shell">
                            <span class="input-shell__icon">&#128100;</span>
                            <input type="text" name="txtApellidoPaterno" id="txtApellidoPaterno" placeholder="Apellido Paterno" required>
                        </div>
                    </div>

                    <!-- Campo apellido materno -->
                    <div class="form-group">
                        <label for="txtApellidoMaterno">Apellido Materno</label>
                        <div class="input-shell">
                            <span class="input-shell__icon">&#128100;</span>
                            <input type="text" name="txtApellidoMaterno" id="txtApellidoMaterno" placeholder="Apellido Materno" required>
                        </div>
                    </div>

                    <!-- Campo password -->
                    <div class="form-group">
                        <label for="passUsuario">Password</label>
                        <div class="input-shell input-shell--password">
                            <span class="input-shell__icon">&#128274;</span>
                            <input type="password" id="passUsuario" name="passUsuario" placeholder="Password" required>
                        </div>
                    </div>

                    <!-- Campo confirmacion de password -->
                    <div class="form-group">
                        <label for="passUsuario2">Confirmar Password</label>
                        <div class="input-shell input-shell--password">
                            <span class="input-shell__icon">&#128274;</span>
                            <input type="password" id="passUsuario2" name="passUsuario2" placeholder="Confirmar Password" required onblur="check();">
                        </div>

                        <!-- Mensaje dinamico para validar coincidencia de password -->
                        <span id="message" class="password-message"></span>
                    </div>

                    <!-- Campo nivel o rol del usuario -->
                    <div class="form-group">
                        <label for="nivelUsuario">Nivel / Rol</label>
                        <div class="input-shell input-shell--select">
                            <span class="input-shell__icon">&#128737;</span>
                            <select name="nivelUsuario" id="nivelUsuario" required>
                                <option value="0">Bajo</option>
                                <option value="1">Medio</option>
                                <option value="2">Alto</option>
                            </select>
                        </div>
                    </div>

                    <!-- Acciones del formulario -->
                    <div class="form-actions">
                        <input type="submit" name="btnRegistrar" id="enter" value="Registrar" onclick="return confirm('¿Registrar usuario?');">
                    </div>
                </form>
            </div>
        </section>
    </main>
</body>
</html>
<?php
} else {
    /*
    |----------------------------------------------------------------------
    | Redireccion por acceso no autorizado
    |----------------------------------------------------------------------
    | Si no hay sesion valida o el usuario no es nivel 2,
    | se manda al inicio.
    */
    header('Location: index.php');
    exit;
}
?>
