proyecto_LANIA/api_estadisticas.php

91 lines
3.1 KiB
PHP

<?php
header('Content-Type: application/json');
require_once 'database/database.php';
$data = [];
// 1. Datos de Género
$queryGenero = "SELECT genero, COUNT(*) AS count FROM entrada GROUP BY genero";
$resultGenero = $conexion->query($queryGenero);
$generoData = [];
$totalGenero = 0;
while ($row = $resultGenero->fetch_assoc()) {
$generoData[$row['genero']] = (int)$row['count'];
$totalGenero += (int)$row['count'];
}
$generoPercentages = [];
foreach ($generoData as $genero => $count) {
$generoPercentages[$genero] = ($totalGenero > 0) ? round(($count / $totalGenero) * 100, 2) : 0;
}
$data['genero'] = $generoPercentages;
// 2. Datos de Edades
$queryEdad = "SELECT edad, COUNT(*) AS count FROM entrada GROUP BY edad ORDER BY
CASE
WHEN edad = 'menor' THEN 1
WHEN edad = '18-21' THEN 2
WHEN edad = '22-25' THEN 3
WHEN edad = '26-30' THEN 4
WHEN edad = '31-35' THEN 5
WHEN edad = '36-40' THEN 6
WHEN edad = '41-45' THEN 7
WHEN edad = '46-50' THEN 8
WHEN edad = '51-55' THEN 9
WHEN edad = '56-60' THEN 10
WHEN edad = 'mayor' THEN 11
ELSE 12
END";
$resultEdad = $conexion->query($queryEdad);
$edadData = [];
$totalEdad = 0;
while ($row = $resultEdad->fetch_assoc()) {
$edadData[$row['edad']] = (int)$row['count'];
$totalEdad += (int)$row['count'];
}
$edadPercentages = [];
foreach ($edadData as $edad => $count) {
$edadPercentages[$edad] = ($totalEdad > 0) ? round(($count / $totalEdad) * 100, 2) : 0;
}
$data['edad'] = $edadPercentages;
// Gráfica de barra de estados que más nos visitan
$queryEstados = "SELECT estado_procedencia, COUNT(*) AS count FROM entrada GROUP BY estado_procedencia ORDER BY count DESC LIMIT 5";
$resultEstados = $conexion->query($queryEstados);
$estadosData = [];
while ($row = $resultEstados->fetch_assoc()) {
$estadosData[$row['estado_procedencia']] = (int)$row['count'];
}
$data['estados'] = $estadosData;
// Gráfica de proveedores de exámenes que más hacen examen o colocan en el formulario
$queryProveedores = "SELECT empresa, COUNT(*) AS count FROM entrada GROUP BY empresa ORDER BY count DESC LIMIT 5";
$resultProveedores = $conexion->query($queryProveedores);
$proveedoresData = [];
while ($row = $resultProveedores->fetch_assoc()) {
$proveedoresData[$row['empresa']] = (int)$row['count'];
}
$data['proveedores'] = $proveedoresData;
// 5. Cuantas personas y datos del mes pasado (filtrado por fecha a fecha)
$fechaActual = date('Y-m-d');
$fechaMesPasadoInicio = date('Y-m-01', strtotime('last month'));
$fechaMesPasadoFin = date('Y-m-t', strtotime('last month'));
$queryMesPasado = "SELECT DATE(fecha) AS dia, COUNT(*) AS count FROM entrada
WHERE fecha BETWEEN '$fechaMesPasadoInicio' AND '$fechaMesPasadoFin'
GROUP BY DATE(fecha) ORDER BY DATE(fecha) ASC";
$resultMesPasado = $conexion->query($queryMesPasado);
$mesPasadoData = [];
while ($row = $resultMesPasado->fetch_assoc()) {
$mesPasadoData[$row['dia']] = (int)$row['count'];
}
$data['mes_pasado'] = $mesPasadoData;
echo json_encode($data);
$conexion->close();
?>