| Server IP : 127.0.0.1 / Your IP : 216.73.216.109 Web Server : Apache/2.4.54 (Win64) OpenSSL/1.1.1q PHP/8.1.10 System : Windows NT DESKTOP-E5T4RUN 10.0 build 19045 (Windows 10) AMD64 User : SERVERWEB ( 0) PHP Version : 8.1.10 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/laragon/www/modules/unidades/assets/redMonica/ |
Upload File : |
<?php
ob_start();
header('Content-Type: application/json');
$host = "localhost";
$dbname = "db_provegaq";
$user = "postgres";
$password = "ADMIN";
try {
$pdo = new PDO("pgsql:host=$host;dbname=$dbname", $user, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
http_response_code(500);
die(json_encode(["error" => "Error al conectar a la base de datos: " . $e->getMessage()]));
}
$sqlLast = "SELECT fecha, valor
FROM medicion_aire
WHERE estado = false
ORDER BY fecha DESC, id_medicion_aire DESC
LIMIT 1";
$stmtFecha = $pdo->query($sqlLast);
$rowFecha = $stmtFecha->fetch(PDO::FETCH_ASSOC);
if ($rowFecha) {
$ultima_fecha = $rowFecha['fecha'];
$ultima_fecha = date('Y-m-d', strtotime($ultima_fecha));
} else {
$ultima_fecha = date('Y-m-d');
}
$sqlMediciones = "
SELECT valor
FROM medicion_aire
WHERE estado = false AND fecha::date = :fecha::date
ORDER BY fecha DESC, id_medicion_aire DESC
LIMIT 1
";
$stmtMediciones = $pdo->prepare($sqlMediciones);
$stmtMediciones->execute(['fecha' => $ultima_fecha]);
$row = $stmtMediciones->fetch(PDO::FETCH_ASSOC);
$ica_value = $row ? floatval($row['valor']) : 0;
$sqlCategoria = "
SELECT * FROM categoria_aire
WHERE :ica_value BETWEEN valor_minimo::DECIMAL AND valor_maximo::DECIMAL AND estado = false
LIMIT 1
";
$stmtCategoria = $pdo->prepare($sqlCategoria);
$stmtCategoria->bindValue(':ica_value', $ica_value, PDO::PARAM_STR); // Force as string
$stmtCategoria->execute();
$categoria = $stmtCategoria->fetch(PDO::FETCH_ASSOC);
if (!$categoria) {
http_response_code(500);
die(json_encode(["error" => "No se encontró categorÃa para el valor ICA: $ica_value"]));
}
$sqlRiesgo = "
SELECT g.grupo, g.recomendacion
FROM grupos_riesgo g
WHERE g.id_categoria_aire = :id_categoria
";
$stmtRiesgo = $pdo->prepare($sqlRiesgo);
$stmtRiesgo->execute(['id_categoria' => $categoria['id_categoria_aire']]);
$riesgo = $stmtRiesgo->fetchAll(PDO::FETCH_ASSOC);
$sqlAllCategorias = "SELECT * FROM categoria_aire where estado = false ORDER BY valor_minimo ASC";
$stmtAllCategorias = $pdo->query($sqlAllCategorias);
$allCategorias = $stmtAllCategorias->fetchAll(PDO::FETCH_ASSOC);
$sqlAllGroups = "SELECT g.*, c.categoria
FROM grupos_riesgo g
JOIN categoria_aire c ON g.id_categoria_aire = c.id_categoria_aire
WHERE g.estado = false
ORDER BY c.valor_minimo ASC, g.grupo ASC";
$stmtAllGroups = $pdo->query($sqlAllGroups);
$allGroupsRaw = $stmtAllGroups->fetchAll(PDO::FETCH_ASSOC);
$allGroups = [];
foreach ($allGroupsRaw as $grp) {
$allGroups[$grp['categoria']][] = $grp;
}
$response = [
"fecha" => $ultima_fecha,
"ica" => [
"valor" => $ica_value,
"clasificacion" => $categoria['categoria'],
"color" => $categoria['color'],
"descripcion" => $categoria['descripcion'],
"recomendaciones_gral" => $categoria['recomendacion'],
"grupos_riesgo" => $riesgo
],
"mediciones" => ["valor" => $ica_value],
"allCategorias" => $allCategorias,
"allGroups" => $allGroups
];
ob_end_clean();
echo json_encode($response);
exit();