This commit is contained in:
Hectorgh24 2025-05-19 05:16:32 -06:00
parent e82ec89051
commit 74ac76d4b1
5 changed files with 110 additions and 236 deletions

View File

@ -0,0 +1,59 @@
<?php
require_once '../config/Database.php';
require_once '../models/GraficoModel.php';
header('Content-Type: application/json'); // Aseguramos que siempre se devuelva JSON
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$input = json_decode(file_get_contents('php://input'), true);
$tipoConsulta = $input['tipoConsulta'] ?? '';
switch ($tipoConsulta) {
case 'Femenino':
$cantidad = GraficoModel::obtenerGeneroFemenino();
break;
case 'Masculino':
$cantidad = GraficoModel::obtenerGeneroMasculino();
break;
case 'Prefiero no decirlo':
$cantidad = GraficoModel::obtenerGeneroNoDefinido();
break;
case 'Menor de 18 años':
$cantidad = GraficoModel::obtenerEdadMenor18();
break;
case '18 a 24 años':
$cantidad = GraficoModel::obtenerEdad1824();
break;
case '25 a 34 años':
$cantidad = GraficoModel::obtenerEdad2434();
break;
case '35 a 44 años':
$cantidad = GraficoModel::obtenerEdad3544();
break;
case '45 a 54 años':
$cantidad = GraficoModel::obtenerEdad4554();
break;
case '55 a 64 años':
$cantidad = GraficoModel::obtenerEdad5564();
break;
case '65 años o más':
$cantidad = GraficoModel::obtenerEdad65oMas();
break;
case 'Estados':
$cantidad = GraficoModel::obtenerEstados();
echo json_encode($cantidad); // Devolver directamente el array de estados
exit; // Terminar la ejecucion aqui
case 'Examenes':
$cantidad = GraficoModel::obtenerExamenes();
echo json_encode($cantidad); // Devolver directamente el array de examenes
exit; // Terminar la ejecucion aqui
default:
$cantidad = 0;
}
echo json_encode(['cantidad' => $cantidad]);
}
?>

View File

@ -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 };
export { obtenerDatosGeneros, obtenerDatosEdades, obtenerDatosEstados, obtenerDatosExamenes };

View File

@ -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: [
@ -354,87 +354,3 @@ 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
}

View File

@ -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'] ?? '';
$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;
class GraficoModel{
private $db;
public function __construct() {
$this->Database = new Database();
$this->db = $this->Database->getInstance();
$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) = ?;

View File

@ -230,7 +230,7 @@
<!-- NAVBAR -->
<script src="https://cdn.jsdelivr.net/npm/apexcharts"></script>
<script type="module" src="../js/inicio.js"></script>
<script src="https://website-widgets.pages.dev/dist/sienna.min.js" defer></script>
<script src="../js/funcionesGraficos.js" type="module"></script>
<script src="../js/inicio.js" type="module"></script>
</body>
</html>