diff --git a/controllers/login.php b/controllers/LoginController.php similarity index 53% rename from controllers/login.php rename to controllers/LoginController.php index 8513090..90cb3cb 100644 --- a/controllers/login.php +++ b/controllers/LoginController.php @@ -13,12 +13,22 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (UsuarioController::iniciarSesion($usuario, $contrasena)) { session_start(); // Iniciar la sesión $_SESSION['autenticado'] = true; // Marcar la sesión como autenticada - echo json_encode(['loginExitoso' => true, 'message' => 'Inicio de sesión exitoso']); + echo json_encode([ + 'estado' => 'exitoso', + 'mensaje' => 'Inicio de sesión exitoso' + ]); } else { - echo json_encode(['loginExitoso' => false, 'message' => 'Usuario o contraseña incorrectos']); + echo json_encode([ + 'estado' => 'error', + 'mensaje' => 'Usuario o contraseña incorrectos' + ]); } } catch (Exception $e) { - echo json_encode(['loginExitoso' => false, 'message' => $e->getMessage()]); + echo json_encode([ + 'estado' => 'error', + 'mensaje' => 'Error al iniciar sesión, intentelo más tarde.', + 'res' => $e->getMessage() + ]); } } diff --git a/controllers/registrarCandidato.php b/controllers/RegistrarCandidatoController.php similarity index 100% rename from controllers/registrarCandidato.php rename to controllers/RegistrarCandidatoController.php diff --git a/controllers/registrarInfoCandidato.php b/controllers/RegistrarInfoCandidato.php similarity index 100% rename from controllers/registrarInfoCandidato.php rename to controllers/RegistrarInfoCandidato.php diff --git a/js/buscarCodigo b/js/buscarCodigo deleted file mode 100644 index c13022a..0000000 --- a/js/buscarCodigo +++ /dev/null @@ -1,140 +0,0 @@ -document.addEventListener("DOMContentLoaded", function () { - const buscarBtn = document.getElementById("buscarBtn"); - const paisSelect = document.getElementById("id_pais"); - const inputCodigoPostal = document.getElementById("codigo_postal"); - const inputButtonBuscarCodigoPostal = document.getElementById("buscarBtn"); - const estadoSelect = document.getElementById("id_estado"); - const municipioSelect = document.getElementById("id_municipio"); - const coloniaSelect = document.getElementById("id_colonia"); - const giroSelect = document.getElementById("id_giro"); - - llenarSelectGiro(); - - // Añadir un evento de cambio al select de país - paisSelect.addEventListener("change", function() { - // Si el país es México, habilitar el campo de código postal - if (paisSelect.value === "1") { - inputCodigoPostal.removeAttribute("disabled"); - inputButtonBuscarCodigoPostal.removeAttribute("disabled"); - } else { - // Si el país no es México, deshabilitar el campo de código postal - inputCodigoPostal.setAttribute("disabled", "disabled"); - inputButtonBuscarCodigoPostal.setAttribute("disabled", "disabled"); - } - }); - - //Añadir un evento al boton de buscar - buscarBtn.addEventListener("click", function () { - let inputCodigoPostal = document.getElementById("codigo_postal").value; - - //verificar si el codigo postal esta vacio - if (inputCodigoPostal) { - - // Limpia los selects antes de llenarlos - estadoSelect.innerHTML = "<option value='NULL'>Seleccione su estado</option>"; - municipioSelect.innerHTML = "<option value='NULL'>Seleccione su municipio</option>"; - coloniaSelect.innerHTML = "<option value='NULL'>Seleccione su colonia</option>"; - - // Construye la URL para la solicitud - let url = "./controllers/CatalogosController.php?codigo_postal=" + encodeURIComponent(inputCodigoPostal); - - // Realiza una solicitud HTTP GET a la URL especificada - fetch(url) - .then(response => { - //console.log("Estado de la respuesta:", response.status); - //console.log("Contenido de la respuesta:", response.json()); - - // Verifica si la respuesta del servidor es exitosa - if (!response.ok) { - throw new Error("Error en la respuesta del servidor"); - } - - // Convertir la respuesta a JSON - return response.json(); - }) - .then(data => { - // Verifica si se recibieron datos - if (data.length > 0) { - - // Quitar disable a los selects - estadoSelect.removeAttribute("disabled"); - estadoSelect.setAttribute("required", "required"); - municipioSelect.removeAttribute("disabled"); - municipioSelect.setAttribute("required", "required"); - coloniaSelect.removeAttribute("disabled"); - coloniaSelect.setAttribute("required", "required"); - - //Crea conjuntos para almacenar estados, ciudades y colonias - let estados = new Map(); - let municipios = new Map(); - let colonias = new Map(); - - // Itera sobre cada fila de datos recibidos - data.forEach(row => { - console.log(row); - estados.set(row['id_estado'], row['estado']); - municipios.set(row['id_municipio'], row['municipio']); - colonias.set(row['id_colonia'], row['colonia']); - }); - - // Añade las opciones de estados al elemento select - for (let [id_estado, estado] of estados) { - estadoSelect.innerHTML += "<option value='" + id_estado + "'>" + estado + "</option>"; - } - - // Añade las opciones de ciudades al elemento select - for (let [id_municipio, municipio] of municipios) { - municipioSelect.innerHTML += "<option value='" + id_municipio + "'>" + municipio + "</option>"; - } - - // Añade las opciones de colonias al elemento select - for (let [id_colonia, colonia] of colonias) { - coloniaSelect.innerHTML += "<option value='" + id_colonia + "'>" + colonia + "</option>"; - } - - } else { - alert("No se encontraron datos para el código postal ingresado."); - } - }) - .catch(error => { - console.error("Error en la solicitud:", error); - }); - } else { - alert("Por favor, ingrese un código postal."); - } - }); - - - function llenarSelectGiro() { - - // URL para la solicitud - let url = "./controllers/CatalogosController.php?obtener=giros"; - - // Realiza una solicitud HTTP GET a la URL especificada - fetch(url) - .then(response => { - // Verifica si la respuesta del servidor es exitosa - if (!response.ok) { - throw new Error("Error en la respuesta del servidor"); - } - - // Convertir la respuesta a JSON - return response.json(); - }) - .then(data => { - // Verifica si se recibieron datos - if (data.length > 0) { - - // Añade las opciones de giros al elemento select - data.forEach(row => { - giroSelect.innerHTML += "<option value='" + row.id_giro + "'>" + row.descripcion + "</option>"; - }); - } else { - alert("No se encontraron datos para los giros."); - } - }) - .catch(error => { - console.error("Error en la solicitud:", error); - }); - } -}); diff --git a/js/form_datos_basicos.js b/js/formulario-candidato.js similarity index 96% rename from js/form_datos_basicos.js rename to js/formulario-candidato.js index 912fb6a..9f3b61e 100644 --- a/js/form_datos_basicos.js +++ b/js/formulario-candidato.js @@ -6,7 +6,7 @@ obtenerTiposIdentificacion(); obtenerRangosEdad(); function obtenerNombresExamenes(){ - let url = "./controllers/CatalogosController.php?obtener=examenes"; + let url = "../controllers/CatalogosController.php?obtener=examenes"; fetch(url) .then(response => response.json()) .then(data => { @@ -28,7 +28,7 @@ function obtenerNombresExamenes(){ } function obtenerTiposIdentificacion(){ - let url = "./controllers/CatalogosController.php?obtener=identificacion"; + let url = "../controllers/CatalogosController.php?obtener=identificacion"; fetch(url) .then(response => response.json()) .then(data => { @@ -50,7 +50,7 @@ function obtenerTiposIdentificacion(){ } function obtenerRangosEdad(){ - let url = "./controllers/CatalogosController.php?obtener=rangosedad"; + let url = "../controllers/CatalogosController.php?obtener=rangosedad"; fetch(url) .then(response => response.json()) .then(data => { @@ -208,7 +208,7 @@ formulario.addEventListener("submit", async(event) => { // Enviar petición POST para registrar candidato try { - const respuesta = await fetch('controllers/registrarCandidato.php', { + const respuesta = await fetch('../controllers/RegistrarCandidatoController.php', { method: "POST", body: formData, }); diff --git a/js/form_datos_extendidos.js b/js/formulario-datos-candidato.js similarity index 96% rename from js/form_datos_extendidos.js rename to js/formulario-datos-candidato.js index c4dcd97..b69b9d3 100644 --- a/js/form_datos_extendidos.js +++ b/js/formulario-datos-candidato.js @@ -20,7 +20,7 @@ document.addEventListener("DOMContentLoaded", function () { // FUNCIONES - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - function llenarSelectGiro() { // URL para la solicitud - let url = "./controllers/CatalogosController.php?obtener=giros"; + let url = "../controllers/CatalogosController.php?obtener=giros"; // Realiza una solicitud HTTP GET a la URL especificada fetch(url) @@ -51,7 +51,7 @@ document.addEventListener("DOMContentLoaded", function () { } function llenarSelectNivelesEstudio(){ - let url = "./controllers/CatalogosController.php?obtener=nivelesestudio"; + let url = "../controllers/CatalogosController.php?obtener=nivelesestudio"; // Petición fetch y llenado de select fetch(url) .then(response => { @@ -75,7 +75,7 @@ document.addEventListener("DOMContentLoaded", function () { } function llenarDataListEmpresasInstituciones(){ - let url = "./controllers/CatalogosController.php?obtener=empresasinstituciones"; + let url = "../controllers/CatalogosController.php?obtener=empresasinstituciones"; fetch(url) .then(response => response.json()) .then(data => { @@ -170,7 +170,7 @@ document.addEventListener("DOMContentLoaded", function () { coloniaSelect.innerHTML = "<option value='NULL'>Seleccione su colonia</option>"; // Construye la URL para la solicitud - let url = "./controllers/CatalogosController.php?codigo_postal=" + encodeURIComponent(inputCodigoPostal); + let url = "../controllers/CatalogosController.php?codigo_postal=" + encodeURIComponent(inputCodigoPostal); // Realiza una solicitud HTTP GET a la URL especificada fetch(url) @@ -327,7 +327,7 @@ document.addEventListener("DOMContentLoaded", function () { // } try { - const respuesta = await fetch('controllers/registrarInfoCandidato.php', { + const respuesta = await fetch('../controllers/RegistrarInfoCandidato.php', { method: "POST", body: formData, }); diff --git a/js/login.js b/js/login.js index 4554a2c..86aa3a3 100644 --- a/js/login.js +++ b/js/login.js @@ -13,21 +13,24 @@ formulario.addEventListener("submit", async (event) => { data.append("contrasena", contrasena); try { - const respuestaPeticion = await fetch("controllers/login.php", { + const respuestaPeticion = await fetch("../controllers/LoginController.php", { method: "POST", body: data, }); - const verificarCredenciales = await respuestaPeticion.json(); + const respuesta = await respuestaPeticion.json(); - if (verificarCredenciales.loginExitoso) { - window.location.href = 'inicio.html'; - } else { - notificacion.textContent = "Usuario y/o contraseña incorrectos"; + if (respuesta.estado === 'exitoso') { + window.location.href = 'views/inicio.html'; + } else if(respuesta.estado === 'error') { + notificacion.textContent = respuesta.mensaje; + if(respuesta.res){ + console.error(respuesta.res) + } notificacion.style.display = "block"; } } catch (error) { - notificacion.textContent = - "Lo sentimos, el servicio no está disponible por el momento"; + notificacion.textContent = "Lo sentimos, el servicio no está disponible por el momento"; + console.error(error) } }); diff --git a/models/CandidatoModel.php b/models/CandidatoModel.php index b15fdfa..323de81 100644 --- a/models/CandidatoModel.php +++ b/models/CandidatoModel.php @@ -42,12 +42,16 @@ class CandidatoModel { $fecha_salida ) { try { - + $id_pais = (int)$id_pais; // Si el país no es México (ID 1), se asignan valores nulos a los campos de ubicación if ($id_pais !== 1) { $id_estado = null; $id_municipio = null; $id_colonia = null; + } else { + $id_estado = (int)$id_estado; + $id_municipio = (int)$id_municipio; + $id_colonia = (int)$id_colonia; } $sql = "INSERT INTO info_candidatos ( diff --git a/form_datos_basicos.html b/views/formulario-candidato.html similarity index 88% rename from form_datos_basicos.html rename to views/formulario-candidato.html index e6bdea8..85415b0 100644 --- a/form_datos_basicos.html +++ b/views/formulario-candidato.html @@ -4,7 +4,7 @@ <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href='https://unpkg.com/boxicons@2.0.9/css/boxicons.min.css' rel='stylesheet'> - <link rel="stylesheet" href="css/form.css"> + <link rel="stylesheet" href="../css/form.css"> <title>AdminSite</title> </head> <body> @@ -16,7 +16,7 @@ <img src="img/lania_logo.png" alt="Logo" style="height: 40px;"> </a> --> <ul class="side-menu"> - <li><a href="#" class="active"><i class='bx bxs-dashboard icon' ></i> Dashboard</a></li> + <li><a href="#"><i class='bx bxs-dashboard icon' ></i> Dashboard</a></li> <li class="divider" data-text="main">Main</li> <li> <a href="#"><i class='bx bxs-inbox icon' ></i> Elements <i class='bx bx-chevron-right icon-right' ></i></a> @@ -29,13 +29,13 @@ </li> <li><a href="#"><i class='bx bxs-chart icon' ></i> Charts</a></li> <li><a href="#"><i class='bx bxs-widget icon' ></i> Widgets</a></li> - <li class="divider" data-text="table and forms">Table and forms</li> - <li><a href="#"><i class='bx bx-table icon' ></i> Tables</a></li> + <li class="divider" data-text="tablas y formularios">Tablas y formularios</li> + <li><a href="#"><i class='bx bx-table icon' ></i> Tablas</a></li> <li> - <a href="#"><i class='bx bxs-notepad icon' ></i> Formularios <i class='bx bx-chevron-right icon-right' ></i></a> + <a class="active" href="#"><i class='bx bxs-notepad icon' ></i> Formularios <i class='bx bx-chevron-right icon-right' ></i></a> <ul class="side-dropdown"> - <li><a href="form_datos_basicos.html">Datos Básicos</a></li> - <li><a href="form_datos_extendidos.php">Datos Extendidos</a></li> + <li><a href="../views/formulario-candidato.html">Registro de candidato</a></li> + <li><a href="../views/formulario-datos-candidato.php">Datos de candidato</a></li> </ul> </li> </ul> @@ -162,8 +162,8 @@ </section> <!-- NAVBAR --> - <script src="js/form.js"></script> - <script src="js/form_datos_basicos.js"></script> + <script src="../js/form.js"></script> + <script src="../js/formulario-candidato.js"></script> <script src="https://website-widgets.pages.dev/dist/sienna.min.js" defer></script> </body> </html> \ No newline at end of file diff --git a/form_datos_extendidos.php b/views/formulario-datos-candidato.php similarity index 92% rename from form_datos_extendidos.php rename to views/formulario-datos-candidato.php index 52dfb85..58348ca 100644 --- a/form_datos_extendidos.php +++ b/views/formulario-datos-candidato.php @@ -16,7 +16,7 @@ if($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['id_candidato'])){ <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href='https://unpkg.com/boxicons@2.0.9/css/boxicons.min.css' rel='stylesheet'> - <link rel="stylesheet" href="css/form.css"> + <link rel="stylesheet" href="../css/form.css"> <title>AdminSite</title> </head> <body> @@ -28,7 +28,7 @@ if($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['id_candidato'])){ <img src="img/lania_logo.png" alt="Logo" style="height: 40px;"> </a> --> <ul class="side-menu"> - <li><a href="#" class="active"><i class='bx bxs-dashboard icon' ></i> Dashboard</a></li> + <li><a href="#"><i class='bx bxs-dashboard icon' ></i> Dashboard</a></li> <li class="divider" data-text="main">Main</li> <li> <a href="#"><i class='bx bxs-inbox icon' ></i> Elements <i class='bx bx-chevron-right icon-right' ></i></a> @@ -41,13 +41,13 @@ if($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['id_candidato'])){ </li> <li><a href="#"><i class='bx bxs-chart icon' ></i> Charts</a></li> <li><a href="#"><i class='bx bxs-widget icon' ></i> Widgets</a></li> - <li class="divider" data-text="table and forms">Table and forms</li> - <li><a href="#"><i class='bx bx-table icon' ></i> Tables</a></li> + <li class="divider" data-text="tablas y formularios">Tablas y formularios</li> + <li><a href="#"><i class='bx bx-table icon' ></i> Tablas</a></li> <li> - <a href="#"><i class='bx bxs-notepad icon' ></i> Formularios <i class='bx bx-chevron-right icon-right' ></i></a> + <a href="#" class="active"><i class='bx bxs-notepad icon' ></i> Formularios <i class='bx bx-chevron-right icon-right' ></i></a> <ul class="side-dropdown"> - <li><a href="form_datos_basicos.html">Datos Básicos</a></li> - <li><a href="form_datos_extendidos.php">Datos Extendidos</a></li> + <li><a href="../views/formulario-candidato.html">Registro de candidato</a></li> + <li><a href="../views/formulario-datos-candidato.php">Datos de candidato</a></li> </ul> </li> </ul> @@ -244,8 +244,8 @@ if($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['id_candidato'])){ <!-- NAVBAR --> - <script src="js/form.js"></script> - <script src="js/form_datos_extendidos.js"></script> + <script src="../js/form.js"></script> + <script src="../js/formulario-datos-candidato.js"></script> <!-- <script src="js/buscarCodigo.js"></script> --> <script src="https://website-widgets.pages.dev/dist/sienna.min.js" defer></script> </body> diff --git a/inicio.html b/views/inicio.html similarity index 95% rename from inicio.html rename to views/inicio.html index 20fd276..314be66 100644 --- a/inicio.html +++ b/views/inicio.html @@ -4,7 +4,7 @@ <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href='https://unpkg.com/boxicons@2.0.9/css/boxicons.min.css' rel='stylesheet'> - <link rel="stylesheet" href="css/inicio.css"> + <link rel="stylesheet" href="../css/inicio.css"> <title>AdminSite</title> </head> <body> @@ -27,13 +27,13 @@ </li> <li><a href="#"><i class='bx bxs-chart icon' ></i> Charts</a></li> <li><a href="#"><i class='bx bxs-widget icon' ></i> Widgets</a></li> - <li class="divider" data-text="table and forms">Table and forms</li> - <li><a href="#"><i class='bx bx-table icon' ></i> Tables</a></li> + <li class="divider" data-text="tablas y formularios">Tablas y formularios</li> + <li><a href="#"><i class='bx bx-table icon' ></i> Tablas</a></li> <li> <a href="#"><i class='bx bxs-notepad icon' ></i> Formularios <i class='bx bx-chevron-right icon-right' ></i></a> <ul class="side-dropdown"> - <li><a href="form_datos_basicos.html">Datos Básicos</a></li> - <li><a href="form_datos_extendidos.php">Datos Extendidos</a></li> + <li><a href="formulario-candidato.html">Registro de candidato</a></li> + <li><a href="formulario-datos-candidato.php">Datos de candidato</a></li> </ul> </li> </ul> @@ -259,7 +259,7 @@ <!-- NAVBAR --> <script src="https://cdn.jsdelivr.net/npm/apexcharts"></script> - <script src="js/inicio.js"></script> + <script src="../js/inicio.js"></script> <script src="https://website-widgets.pages.dev/dist/sienna.min.js" defer></script> </body> </html> \ No newline at end of file