96 lines
3.9 KiB
PHP
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";
|
|
?>
|