Files
dev-chiefworks f76abffdcd first commit
2022-05-31 16:21:53 -04:00

96 lines
3.9 KiB
PHP

<?php
$job_name = "update packing_lot Job";
echo "[" . date("Y-m-d H:i:s") . "] $job_name is starting.\n";
require('./lock.php');
//$lock_file = lock_pid_file();
require('./../backend.php');
require('./common/SVY21.php');
set_time_limit(0); // No limit!
$httpAuthToken = $savvyext->cfgReadChar('system.oauth2_token');
$db_host = $savvyext->cfgReadChar('database.host');
$db_name = $savvyext->cfgReadChar('database.name');
$db_user = $savvyext->cfgReadChar('database.user');
$db_pass = $savvyext->cfgReadChar('database.pass');
$db_port = $savvyext->cfgReadLong('database.port');
$connstr = "host=${db_host} port=${db_port} dbname=${db_name} user=${db_user} password=${db_pass}";
$con = pg_connect($connstr); // or die ("Could not connect to server\n");
$db_host = $savvyext->cfgReadChar('database_replica.host');
$db_name = $savvyext->cfgReadChar('database_replica.name');
$db_user = $savvyext->cfgReadChar('database_replica.user');
$db_pass = $savvyext->cfgReadChar('database_replica.pass');
$db_port = $savvyext->cfgReadLong('database_replica.port');
$readOnlyReplicaConnstr = "host=${db_host} port=${db_port} dbname=${db_name} user=${db_user} password=${db_pass}";
$readOnlyReplicaConn = pg_connect($readOnlyReplicaConnstr);
// Step 1: get URA token
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://www.ura.gov.sg/uraDataService/insertNewToken.action",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 1000, //1000s
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"accesskey: support@float.sg",
"cache-control: no-cache",
),
));
$response = json_decode(curl_exec($curl), true);
$err = curl_error($curl);
curl_close($curl);
$token = $response['Result'] ?? '';
if ($err) {
echo "cURL Error #1: Cannot get URA token!!! - " . $err;
}
// Step2. get car parking
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://www.ura.gov.sg/uraDataService/invokeUraDS?service=Car_Park_Details",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 1000, //1000s
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"accesskey: support@float.sg",
"token: $token",
"cache-control: no-cache"
),
));
$response = json_decode(curl_exec($curl), true);
$err = curl_error($curl);
curl_close($curl);
$parking_lots = $response['Result'] ?? [];
if ($err) {
echo "cURL Error #2: Cannot get car parking - " . $err;
}
// Step 3. INSERT data to database
if (!empty($parking_lots)) {
$now = (new \DateTime())->format('Y-m-d H:i:s');
$svy21 = new SVY21();
pg_query($con, 'DELETE FROM parking_lot');
pg_query($con, 'ALTER SEQUENCE parking_lot_id_seq RESTART WITH 1');
foreach ($parking_lots as $key => $lot) {
foreach ($lot['geometries']??[] as $geo){
list($n, $e) = explode(',',$geo['coordinates']);
list($lat, $long) = $svy21->CnvEN2LL($n, $e);
$res = pg_insert($con, 'parking_lot', [
'ppcode' => $lot['ppCode'] ?? '',
'name' => $lot['ppName'] ?? '',
'address' => $lot['ppName'] ?? '',
'lat' => strval($lat),
'long' => strval($long),
'weekday_price' => (float)str_replace('$', '', $lot['weekdayRate']??0),
'sat_price' => (float)str_replace('$', '', $lot['satdayRate']??0),
'sun_price' => (float)str_replace('$', '', $lot['sunPHRate']??0),
'start_time' => $lot['startTime'] ?? '',
'end_time' => $lot['endTime'] ?? '',
'updated_time' => $now,
], PGSQL_DML_ASYNC);
}
}
}
//unlock_pid_file($lock_file);
echo "[" . date("Y-m-d H:i:s") . "] " . $job_name . " completed.\n";
?>