From 74ac76d4b16b722cdb12382860e4be23bf431726 Mon Sep 17 00:00:00 2001 From: Hectorgh24 Date: Mon, 19 May 2025 05:16:32 -0600 Subject: [PATCH] xd --- controllers/graficosController.php | 59 ++++++++ js/funcionesGraficos.js | 51 +------ js/inicio.js | 90 +---------- .../graficos.php => models/GraficoModel.php | 142 +++++------------- views/inicio.html | 4 +- 5 files changed, 110 insertions(+), 236 deletions(-) create mode 100644 controllers/graficosController.php rename controllers/graficos.php => models/GraficoModel.php (57%) diff --git a/controllers/graficosController.php b/controllers/graficosController.php new file mode 100644 index 0000000..734b851 --- /dev/null +++ b/controllers/graficosController.php @@ -0,0 +1,59 @@ + $cantidad]); + } + +?> \ No newline at end of file diff --git a/js/funcionesGraficos.js b/js/funcionesGraficos.js index 1b7cc66..33138c4 100644 --- a/js/funcionesGraficos.js +++ b/js/funcionesGraficos.js @@ -1,6 +1,6 @@ async function recuperarCantidadGenero(tipoConsulta) { try { - const response = await fetch("../controllers/graficos.php", { + const response = await fetch("../controllers/graficosController.php", { method: "POST", headers: { "Content-Type": "application/json", @@ -18,7 +18,7 @@ async function recuperarCantidadGenero(tipoConsulta) { async function recuperarCantidadEdad(tipoConsulta) { try { - const response = await fetch("../controllers/graficos.php", { + const response = await fetch("../controllers/graficosController.php", { method: "POST", headers: { "Content-Type": "application/json", @@ -36,7 +36,7 @@ async function recuperarCantidadEdad(tipoConsulta) { async function recuperarCantidadEstado(tipoConsulta) { try { - const response = await fetch("../controllers/graficos.php", { + const response = await fetch("../controllers/graficosController.php", { method: "POST", headers: { "Content-Type": "application/json", @@ -59,7 +59,7 @@ async function recuperarCantidadEstado(tipoConsulta) { async function recuperarCantidadExamen(tipoConsulta) { try { - const response = await fetch("../controllers/graficos.php", { + const response = await fetch("../controllers/graficosController.php", { method: "POST", headers: { "Content-Type": "application/json", @@ -80,29 +80,6 @@ async function recuperarCantidadExamen(tipoConsulta) { } } -async function recuperarCantidadFecha(tipoConsulta) { - try { - const response = await fetch("../controllers/graficos.php", { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ tipoConsulta }), - }); - - const data = await response.json(); - - if (!Array.isArray(data)) { - throw new Error("La respuesta del backend no es un array."); - } - - return data; - } catch (error) { - console.error("Error al recuperar datos de fechas:", error); - return []; - } -} - async function obtenerDatosEdades() { const edad1 = await recuperarCantidadEdad("Menor de 18 años"); @@ -161,24 +138,6 @@ async function obtenerDatosExamenes() { } } -async function obtenerDatosFechas() { - try { - const fechas = await recuperarCantidadFecha("Fechas"); - - if (!Array.isArray(fechas)) { - console.error("Error: 'fechas' no es un array. Verifica la respuesta del backend"); - return []; - } - - const fechasValidas = fechas.filter(fecha => fecha.fecha && fecha.cantidad !== undefined); - - return fechasValidas; - } catch (error) { - console.error("Error al obtener datos de fechas:", error); - return []; - } -} - -export { obtenerDatosGeneros, obtenerDatosEdades, obtenerDatosEstados, obtenerDatosExamenes, obtenerDatosFechas }; \ No newline at end of file +export { obtenerDatosGeneros, obtenerDatosEdades, obtenerDatosEstados, obtenerDatosExamenes }; \ No newline at end of file diff --git a/js/inicio.js b/js/inicio.js index 28a7d30..6f76de7 100644 --- a/js/inicio.js +++ b/js/inicio.js @@ -163,10 +163,10 @@ allProgress.forEach(item=> { -import { obtenerDatosGeneros, obtenerDatosEdades, obtenerDatosEstados,obtenerDatosExamenes } from './funcionesGraficos.js'; +import { obtenerDatosGeneros, obtenerDatosEdades, obtenerDatosEstados,obtenerDatosExamenes } from '../js/funcionesGraficos.js'; async function inicializarGrafico() { - const [femenino, masculino, noDefinido] = await obtenerDatosGeneros(); + const [femenino, masculino, noDefinido] = await obtenerDatosGeneros(""); const options = { series: [ @@ -353,88 +353,4 @@ async function inicializarGrafico4() { } -inicializarGrafico4(); - - -document.addEventListener('DOMContentLoaded', () => { - const btnbuscar = document.getElementById('buscar'); - btnbuscar.addEventListener('click', async function () { - const fechaInicioInput = document.getElementById('date1').value; - const fechaFinInput = document.getElementById('date2').value; - - if (fechaInicioInput === "" || fechaFinInput === "") { - alert("Por favor, ingrese ambas fechas."); - return; - } - - // Convertir las fechas al formato YYYY-MM-DD - const fechaInicio = convertirFechaAFormatoISO(fechaInicioInput); - const fechaFin = convertirFechaAFormatoISO(fechaFinInput); - - try { - const response = await fetch('../controllers/graficos.php', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - tipoConsulta: 'Fechas', - fechaInicio: fechaInicio, - fechaFin: fechaFin, - }), - }); - - const data = await response.json(); - console.log("Respuesta del servidor:", data); - - if (Array.isArray(data) && data.length > 0) { - const seriesData = data.map(fecha => fecha.total); - const categories = data.map((_, index) => `Registro ${index + 1}`); - - const options5 = { - series: [{ - name: 'Cantidad de registros', - data: seriesData, - }], - chart: { - height: 350, - type: 'bar', - }, - plotOptions: { - bar: { - horizontal: false, - columnWidth: '55%', - borderRadius: 5, - }, - }, - dataLabels: { - enabled: false, - }, - xaxis: { - categories: categories, - }, - tooltip: { - y: { - formatter: function (val) { - return val + " registros"; - }, - }, - }, - }; - - const chart5 = new ApexCharts(document.querySelector("#chart5"), options5); - chart5.render(); - } else { - alert("No se encontraron datos para las fechas seleccionadas."); - } - } catch (error) { - console.error("Error al obtener los datos:", error); - } -}); -}); - -// Función para convertir fechas al formato YYYY-MM-DD -function convertirFechaAFormatoISO(fecha) { - const partes = fecha.split('-'); // Suponiendo que el input usa el formato DD-MM-YYYY - return `${partes[0]}-${partes[1]}-${partes[2]}`; // Retorna YYYY-MM-DD -} \ No newline at end of file +inicializarGrafico4(); \ No newline at end of file diff --git a/controllers/graficos.php b/models/GraficoModel.php similarity index 57% rename from controllers/graficos.php rename to models/GraficoModel.php index 69904b5..a2c12d3 100644 --- a/controllers/graficos.php +++ b/models/GraficoModel.php @@ -2,76 +2,16 @@ require_once '../config/Database.php'; -if ($_SERVER['REQUEST_METHOD'] === 'POST') { - $input = json_decode(file_get_contents('php://input'), true); - $tipoConsulta = $input['tipoConsulta'] ?? ''; +class GraficoModel{ + private $db; - $graficos = new Graficos(); - - switch ($tipoConsulta) { - case 'Femenino': - $cantidad = $graficos->obtenerGeneroFemenino(); - break; - case 'Masculino': - $cantidad = $graficos->obtenerGeneroMasculino(); - break; - case 'Prefiero no decirlo': - $cantidad = $graficos->obtenerGeneroNoDefinido(); - break; - case 'Menor de 18 años': - $cantidad = $graficos->obtenerEdadMenor18(); - break; - case '18 a 24 años': - $cantidad = $graficos->obtenerEdad1824(); - break; - case '25 a 34 años': - $cantidad = $graficos->obtenerEdad2434(); - break; - case '35 a 44 años': - $cantidad = $graficos->obtenerEdad3544(); - break; - case '45 a 54 años': - $cantidad = $graficos->obtenerEdad4554(); - break; - case '55 a 64 años': - $cantidad = $graficos->obtenerEdad5564(); - break; - case '65 años o más': - $cantidad = $graficos->obtenerEdad65oMas(); - break; - case 'Estados': - $cantidad = $graficos->obtenerEstados(); - echo json_encode($cantidad); // Devolver directamente el array de estados - exit; // Terminar la ejecucion aqui - case 'Examenes': - $cantidad = $graficos->obtenerExamenes(); - echo json_encode($cantidad); // Devolver directamente el array de examenes - exit; // Terminar la ejecucion aqui - case 'Fechas': - $fechaInicio = $input['fechaInicio'] ?? ''; - $fechaFin = $input['fechaFin'] ?? ''; - $cantidad = $graficos->obtenerFecha($fechaInicio, $fechaFin); - echo json_encode($cantidad); - exit; - default: - $cantidad = 0; - } - - echo json_encode(['cantidad' => $cantidad]); -} - -class Graficos{ - private $Database; - protected $db; - - public function __construct() { - $this->Database = new Database(); - $this->db = $this->Database->getInstance(); - } + public function __construct() { + $db = DataBase::getInstance(); + } - public function obtenerGeneroFemenino() { - $query = $this->db->prepare("SELECT COUNT(*) AS Femenino FROM candidato WHERE id_genero = 2 "); + public static function obtenerGeneroFemenino() { + $query = self::$db->prepare("SELECT COUNT(*) AS Femenino FROM candidato WHERE id_genero = 2 "); $query->execute(); $resultado = $query->get_result(); $output = "0"; @@ -82,13 +22,13 @@ class Graficos{ } } $query->close(); - $this->db->close(); + self::$db->close(); return $output; } - public function obtenerGeneroMasculino() { - $query = $this->db->prepare("SELECT COUNT(*) AS Maculino FROM candidato WHERE id_genero = 1 "); + public static function obtenerGeneroMasculino() { + $query = self::$db->prepare("SELECT COUNT(*) AS Maculino FROM candidato WHERE id_genero = 1 "); $query->execute(); $resultado = $query->get_result(); $output = "0"; @@ -99,13 +39,13 @@ class Graficos{ } } $query->close(); - $this->db->close(); + self::$db->close(); return $output; } - public function obtenerGeneroNoDefinido() { - $query = $this->db->prepare("SELECT COUNT(*) AS NoDefinido FROM candidato WHERE id_genero = 3 "); + public static function obtenerGeneroNoDefinido() { + $query = self::$db->prepare("SELECT COUNT(*) AS NoDefinido FROM candidato WHERE id_genero = 3 "); $query->execute(); $resultado = $query->get_result(); $output = "0"; @@ -116,13 +56,13 @@ class Graficos{ } } $query->close(); - $this->db->close(); + self::$db->close(); return $output; } - public function obtenerEdadMenor18() { - $query = $this->db->prepare("SELECT COUNT(*) AS menorEdad FROM candidato WHERE id_rango_edad = 1"); + public static function obtenerEdadMenor18() { + $query = self::$db->prepare("SELECT COUNT(*) AS menorEdad FROM candidato WHERE id_rango_edad = 1"); $query->execute(); $resultado = $query->get_result(); $output = "0"; @@ -133,13 +73,13 @@ class Graficos{ } } $query->close(); - $this->db->close(); + self::$db->close(); return $output; } - public function obtenerEdad1824() { - $query = $this->db->prepare("SELECT COUNT(*) AS edad1824 FROM candidato WHERE id_rango_edad = 2"); + public static function obtenerEdad1824() { + $query = self::$db->prepare("SELECT COUNT(*) AS edad1824 FROM candidato WHERE id_rango_edad = 2"); $query->execute(); $resultado = $query->get_result(); $output = "0"; @@ -150,13 +90,13 @@ class Graficos{ } } $query->close(); - $this->db->close(); + self::$db->close(); return $output; } - public function obtenerEdad2434() { - $query = $this->db->prepare("SELECT COUNT(*) AS edad2434 FROM candidato WHERE id_rango_edad = 3"); + public static function obtenerEdad2434() { + $query = self::$db->prepare("SELECT COUNT(*) AS edad2434 FROM candidato WHERE id_rango_edad = 3"); $query->execute(); $resultado = $query->get_result(); $output = "0"; @@ -167,13 +107,13 @@ class Graficos{ } } $query->close(); - $this->db->close(); + self::$db->close(); return $output; } - public function obtenerEdad3544() { - $query = $this->db->prepare("SELECT COUNT(*) AS edad3544 FROM candidato WHERE id_rango_edad = 4"); + public static function obtenerEdad3544() { + $query = self::$db->prepare("SELECT COUNT(*) AS edad3544 FROM candidato WHERE id_rango_edad = 4"); $query->execute(); $resultado = $query->get_result(); $output = "0"; @@ -184,14 +124,14 @@ class Graficos{ } } $query->close(); - $this->db->close(); + self::$db->close(); return $output; } - public function obtenerEdad4554() { - $query = $this->db->prepare("SELECT COUNT(*) AS edad4554 FROM candidato WHERE id_rango_edad = 5"); + public static function obtenerEdad4554() { + $query = self::$db->prepare("SELECT COUNT(*) AS edad4554 FROM candidato WHERE id_rango_edad = 5"); $query->execute(); $resultado = $query->get_result(); $output = "0"; @@ -202,14 +142,14 @@ class Graficos{ } } $query->close(); - $this->db->close(); + self::$db->close(); return $output; } - public function obtenerEdad5564() { - $query = $this->db->prepare("SELECT COUNT(*) AS edad5564 FROM candidato WHERE id_rango_edad = 6"); + public static function obtenerEdad5564() { + $query = self::$db->prepare("SELECT COUNT(*) AS edad5564 FROM candidato WHERE id_rango_edad = 6"); $query->execute(); $resultado = $query->get_result(); $output = "0"; @@ -220,13 +160,13 @@ class Graficos{ } } $query->close(); - $this->db->close(); + self::$db->close(); return $output; } - public function obtenerEdad65oMas() { - $query = $this->db->prepare("SELECT COUNT(*) AS edad65oMas FROM candidato WHERE id_rango_edad = 7"); + public static function obtenerEdad65oMas() { + $query = self::$db->prepare("SELECT COUNT(*) AS edad65oMas FROM candidato WHERE id_rango_edad = 7"); $query->execute(); $resultado = $query->get_result(); $output = "0"; @@ -237,14 +177,14 @@ class Graficos{ } } $query->close(); - $this->db->close(); + self::$db->close(); return $output; } - public function obtenerEstados() { + public static function obtenerEstados() { try { - $query = $this->db->prepare("SELECT estados.nombre AS estado, COUNT(*) AS cantidad + $query = self::$db->prepare("SELECT estados.nombre AS estado, COUNT(*) AS cantidad FROM estados INNER JOIN info_candidatos ON info_candidatos.id_estado = estados.id GROUP BY estados.nombre @@ -268,9 +208,9 @@ class Graficos{ } } -public function obtenerExamenes() { +public static function obtenerExamenes() { try { - $query = $this->db->prepare("SELECT nombre_examen AS examen , COUNT(*) AS cantidad + $query = self::$db->prepare("SELECT nombre_examen AS examen , COUNT(*) AS cantidad FROM examen INNER JOIN candidato ON candidato.id_examen = examen.id_examen GROUP BY nombre_examen @@ -295,9 +235,9 @@ public function obtenerExamenes() { } -public function obtenerFecha($fechaInicio, $fechaFin) { +public static function obtenerFecha($fechaInicio, $fechaFin) { try { - $query = $this->db->prepare("SELECT COUNT(*) AS total + $query = self::$db->prepare("SELECT COUNT(*) AS total FROM candidato WHERE DATE(fecha_entrada) = ? AND DATE(fecha_salida) = ?; diff --git a/views/inicio.html b/views/inicio.html index a26c1ba..f3d5fd5 100644 --- a/views/inicio.html +++ b/views/inicio.html @@ -230,7 +230,7 @@ - - + + \ No newline at end of file