173 lines
7.2 KiB
PHP
173 lines
7.2 KiB
PHP
<?php
|
|
// Connecting, selecting database
|
|
$dbconn = pg_connect("host=localhost dbname=nws user=nws password=nws")
|
|
or die('Could not connect: ' . pg_last_error());
|
|
|
|
//no gets, curent point outage info
|
|
if(empty($_GET)) {
|
|
$result = pg_query_params($dbconn,
|
|
"SELECT json_build_object('type', 'FeatureCollection','features', json_agg(json_build_object('type','Feature', 'geometry', ST_AsGeoJSON(realgeom)::json,'properties',json_build_object('time',startguess,'county',county,'state',state,'outage',outagen,'lastchange',lastchange,'cause',cause))order by startguess asc)) FROM power WHERE cwa = $1 and active = true",
|
|
array('RLX')) or die('Query failed: ' . pg_last_error());
|
|
$resultArray = pg_fetch_all($result);
|
|
echo($resultArray[0]['json_build_object']);
|
|
}
|
|
|
|
|
|
|
|
//county/state max
|
|
if($_GET['max'] ?? null) {
|
|
|
|
if($_GET['start'] ?? null) {
|
|
$starttime = pg_escape_string($_GET['start']);
|
|
if($_GET['end'] ?? null) {
|
|
$endtime = pg_escape_string($_GET['end']);
|
|
|
|
|
|
|
|
$result = pg_query_params($dbconn,
|
|
//select distinct on (county,state) max(outage),county,state from (select distinct on (county,state,update) county,state,sum(outages) as outage, update as time, sum(served) as served from countyoutages where update > '2023-04-01' and update < '2023-04-02' and cwa = 'RLX' group by county,state,update) as potato group by county,state;
|
|
"select distinct on (county,state) max(outage),county,state from (select distinct on (county,state,update) county,state,sum(outages) as outage, update as time, sum(served) as served from countyoutages where update > $2 and update < $3 and cwa = $1 group by county,state,update) as potato group by county,state",
|
|
array('RLX',$starttime,$endtime)) or die('Query failed: ' . pg_last_error());
|
|
|
|
while ($line = pg_fetch_array($result, null, PGSQL_ASSOC)) {
|
|
$array[] = $line;
|
|
}
|
|
echo json_encode($array);
|
|
}}}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (isset($_GET['county'])) {
|
|
try {
|
|
$query = "
|
|
SELECT DISTINCT ON (county, state)
|
|
county,
|
|
state,
|
|
SUM(outages) as outage,
|
|
update as time,
|
|
SUM(served) as served,
|
|
ROUND(
|
|
CAST(
|
|
CASE
|
|
WHEN SUM(served) = 0 THEN NULL
|
|
ELSE (SUM(outages)::FLOAT / SUM(served)) * 100
|
|
END AS NUMERIC
|
|
), 2
|
|
) as perout
|
|
FROM countyoutages
|
|
WHERE update = (SELECT MAX(update) FROM countyoutages)
|
|
AND (cwa = $1 OR cwa = $2 OR cwa = $3 OR cwa = $4 OR cwa = $5 OR cwa = $6 OR cwa = $7)
|
|
GROUP BY county, state, update
|
|
";
|
|
|
|
$result = pg_query_params($dbconn, $query, ['RLX','JKL','ILN','PBZ','MRX','LWX','RNK']);
|
|
if ($result === false) {
|
|
throw new Exception('Query failed: ' . pg_last_error());
|
|
}
|
|
|
|
$results = [];
|
|
while ($line = pg_fetch_array($result, null, PGSQL_ASSOC)) {
|
|
$results[] = $line;
|
|
}
|
|
|
|
header('Content-Type: application/json');
|
|
echo json_encode($results);
|
|
|
|
pg_free_result($result);
|
|
} catch (Exception $e) {
|
|
header('Content-Type: application/json');
|
|
http_response_code(500);
|
|
echo json_encode(['error' => 'Query execution failed: ' . $e->getMessage()]);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//county archive
|
|
if($_GET['countyarchive'] ?? null) {
|
|
|
|
if($_GET['start'] ?? null) {
|
|
$starttime = pg_escape_string($_GET['start']);
|
|
if($_GET['end'] ?? null) {
|
|
$endtime = pg_escape_string($_GET['end']);
|
|
|
|
|
|
|
|
$result = pg_query_params($dbconn,
|
|
//"SELECT county,state, update as time, county, state, outages as outage,served FROM countyoutages where cwa = $1 and update > $2 and update < $3 order by update asc",
|
|
"select distinct on (county,state,update) county,state,sum(outages) as outage, update as time, sum(served) as served from countyoutages where update > $9 and update < $10 and (cwa = $1 or cwa = $2 or cwa = $3 or cwa = $4 or cwa = $5 or cwa = $6 or cwa = $7 or cwa = $8) group by county,state,update",
|
|
array('RLX','JKL','ILN','PBZ','MRX','LWX','RNK','CTP',$starttime,$endtime)) or die('Query failed: ' . pg_last_error());
|
|
|
|
while ($line = pg_fetch_array($result, null, PGSQL_ASSOC)) {
|
|
$array[] = $line;
|
|
}
|
|
echo json_encode($array);
|
|
}}}
|
|
|
|
|
|
//Archive point data
|
|
if($_GET['archivepoint'] ?? null) {
|
|
$starttime = pg_escape_string($_GET['start']);
|
|
$endtime = pg_escape_string($_GET['end']);
|
|
$result = pg_query_params($dbconn,
|
|
"SELECT json_build_object('type', 'FeatureCollection','features', json_agg(json_build_object('type','Feature', 'geometry', ST_AsGeoJSON(realgeom)::json,'properties',json_build_object('time',startguess,'county',county,'state',state,'outage',outagen,'lastchange',lastchange,'cause',cause))order by startguess asc)) FROM power WHERE cwa = $1 and startguess > $2 and lastchange < $3",
|
|
array('RLX',$starttime,$endtime)) or die('Query failed: ' . pg_last_error());
|
|
$resultArray = pg_fetch_all($result);
|
|
echo($resultArray[0]['json_build_object']);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//if($_GET['svr']=='current') {
|
|
//$result = pg_query_params($dbconn,
|
|
//"SELECT json_build_object('type', 'FeatureCollection','features', json_agg(json_build_object('type','Feature', 'geometry', ST_AsGeoJSON(nwspoly)::json,'properties',json_build_object('issue',issue,'end',endtime,'vtec',vtec,'type',warntype)))) FROM svr where issue < now() and endtime > now()"
|
|
//,array('2023-01-01 01:00','2023-02-12 10:00')) or die('Query failed: ' . pg_last_error());
|
|
//$resultArray = pg_fetch_all($result);
|
|
//echo($resultArray[0]['json_build_object']);
|
|
//}
|
|
|
|
if($_GET['svr'] ?? null =='current') {
|
|
$result = pg_query($dbconn,
|
|
"SELECT json_build_object('type', 'FeatureCollection','features', json_agg(json_build_object('type','Feature', 'geometry', ST_AsGeoJSON(nwspoly)::json,'properties',json_build_object('issue',issue,'end',endtime,'vtec',vtec,'type',warntype)))) FROM svr where issue < now() and endtime > now()") or die('Query failed: ' . pg_last_error());
|
|
$resultArray = pg_fetch_all($result);
|
|
echo($resultArray[0]['json_build_object']);
|
|
}
|
|
|
|
|
|
|
|
|
|
if($_GET['svr'] ?? null == 'archive') {
|
|
if($_GET['start'] ?? null) {
|
|
$starttime = pg_escape_string($_GET['start']);
|
|
if($_GET['end'] ?? null) {
|
|
$endtime = pg_escape_string($_GET['end']);
|
|
|
|
|
|
$result = pg_query_params($dbconn,
|
|
"SELECT json_build_object('type', 'FeatureCollection','features', json_agg(json_build_object('type','Feature', 'geometry', ST_AsGeoJSON(nwspoly)::json,'properties',json_build_object('issue',issue,'end',endtime,'vtec',vtec,'type',warntype)))) FROM svr where issue > $1 and endtime < $2"
|
|
,array($starttime,$endtime)) or die('Query failed: ' . pg_last_error());
|
|
$resultArray = pg_fetch_all($result);
|
|
echo($resultArray[0]['json_build_object']);
|
|
}
|
|
}
|
|
|
|
if(!isset($_GET['start']) && !isset($_GET['end'])) {
|
|
$result = pg_query($dbconn,
|
|
"SELECT json_build_object('type', 'FeatureCollection','features', json_agg(json_build_object('type','Feature', 'geometry', ST_AsGeoJSON(nwspoly)::json,'properties',json_build_object('issue',issue,'end',endtime,'vtec',vtec,'type',warntype)))) FROM svr where issue < now() - interval '24 hours' and endtime > now() - interval '24 hours'") or die('Query failed: ' . pg_last_error());
|
|
$resultArray = pg_fetch_all($result);
|
|
echo($resultArray[0]['json_build_object']);
|
|
|
|
|
|
}
|
|
}
|
|
|
|
pg_free_result($result);
|
|
pg_close($dbconn);
|
|
?>
|