demo transaksi
This commit is contained in:
@@ -18,6 +18,71 @@ class Pelanggan extends REST_Controller
|
||||
date_default_timezone_set('Asia/Jakarta');
|
||||
}
|
||||
|
||||
/**
|
||||
* Structured API request log for order-related endpoints.
|
||||
*/
|
||||
private function log_order_api_request($endpoint, $rawBody)
|
||||
{
|
||||
log_message('debug', '[ORDER_API][' . $endpoint . '][REQUEST] ' . $rawBody);
|
||||
}
|
||||
|
||||
/**
|
||||
* Structured API response log for order-related endpoints.
|
||||
*/
|
||||
private function log_order_api_response($endpoint, $responsePayload)
|
||||
{
|
||||
log_message('debug', '[ORDER_API][' . $endpoint . '][RESPONSE] ' . json_encode($responsePayload));
|
||||
}
|
||||
|
||||
/**
|
||||
* Log candidate drivers targeted by customer order flow.
|
||||
*/
|
||||
private function log_order_driver_targets($endpoint, $idTransaksi, $driverList)
|
||||
{
|
||||
$ids = array();
|
||||
if (is_array($driverList)) {
|
||||
foreach ($driverList as $d) {
|
||||
if (is_object($d) && isset($d->id)) {
|
||||
$ids[] = (string) $d->id;
|
||||
} else if (is_array($d) && isset($d['id'])) {
|
||||
$ids[] = (string) $d['id'];
|
||||
}
|
||||
}
|
||||
}
|
||||
log_message(
|
||||
'debug',
|
||||
'[ORDER_API][' . $endpoint . '][DRIVER_TARGETS] id_transaksi=' . $idTransaksi .
|
||||
' total=' . count($ids) . ' driver_ids=' . implode(',', $ids)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Store raw request/response on transaksi row for dashboard detail (requires DB columns).
|
||||
*/
|
||||
private function save_order_creation_logs($id_transaksi, $raw_request, $response_payload, $driver_targets)
|
||||
{
|
||||
$id_transaksi = (int) $id_transaksi;
|
||||
if ($id_transaksi <= 0) {
|
||||
return;
|
||||
}
|
||||
$rows = array();
|
||||
if (is_array($driver_targets)) {
|
||||
foreach ($driver_targets as $d) {
|
||||
$rows[] = json_decode(json_encode($d), true);
|
||||
}
|
||||
}
|
||||
$backend_driver = json_encode(array(
|
||||
'note' => 'Candidate drivers from get_data_driver_histroy after order create; client apps may use Firebase/FCM for dispatch.',
|
||||
'candidate_drivers' => $rows,
|
||||
), JSON_UNESCAPED_UNICODE);
|
||||
$this->Pelanggan_model->save_transaksi_api_log(
|
||||
$id_transaksi,
|
||||
$raw_request,
|
||||
json_encode($response_payload, JSON_UNESCAPED_UNICODE),
|
||||
$backend_driver
|
||||
);
|
||||
}
|
||||
|
||||
function index_get()
|
||||
{
|
||||
$this->response("Api for Ontime!", 200);
|
||||
@@ -120,9 +185,20 @@ class Pelanggan extends REST_Controller
|
||||
$this->response(array('code' => '400', 'message' => 'Invalid request', 'data' => []), 200);
|
||||
return;
|
||||
}
|
||||
if (function_exists('fcm_v1_validate_login_device_token_from_app')) {
|
||||
$fcm_err = fcm_v1_validate_login_device_token_from_app($decoded_data);
|
||||
if (is_array($fcm_err)) {
|
||||
$this->response(
|
||||
array('code' => $fcm_err['code'], 'message' => $fcm_err['message'], 'data' => []),
|
||||
200
|
||||
);
|
||||
return;
|
||||
}
|
||||
}
|
||||
// Only save FCM token when valid (relogin overwrites invalid/placeholder tokens).
|
||||
$token = isset($decoded_data->token) ? trim((string) $decoded_data->token) : '';
|
||||
$token = (isset($decoded_data->reg_id) && trim((string) $decoded_data->reg_id) !== '') ? trim((string) $decoded_data->reg_id) : $token;
|
||||
$token = function_exists('fcm_v1_device_token_from_request')
|
||||
? fcm_v1_device_token_from_request($decoded_data)
|
||||
: '';
|
||||
$reg_id = array();
|
||||
if ($token !== '' && function_exists('fcm_v1_is_valid_device_token') && fcm_v1_is_valid_device_token($token)) {
|
||||
$reg_id['token'] = $token;
|
||||
@@ -236,7 +312,9 @@ class Pelanggan extends REST_Controller
|
||||
// Generate a deterministic placeholder based on email so the column is never empty.
|
||||
// This placeholder is intentionally SHORT / starting with "R" + digits so
|
||||
// fcm_v1_is_valid_device_token() will treat it as invalid for push.
|
||||
$incomingToken = isset($dec_data->token) ? trim((string) $dec_data->token) : '';
|
||||
$incomingToken = function_exists('fcm_v1_device_token_from_request')
|
||||
? fcm_v1_device_token_from_request($dec_data)
|
||||
: (isset($dec_data->token) ? trim((string) $dec_data->token) : '');
|
||||
if ($incomingToken === '') {
|
||||
$emailForToken = isset($dec_data->email) ? strtolower(trim((string) $dec_data->email)) : '';
|
||||
if ($emailForToken !== '') {
|
||||
@@ -1007,6 +1085,7 @@ class Pelanggan extends REST_Controller
|
||||
|
||||
function request_transaksi_post()
|
||||
{
|
||||
$endpoint = 'request_transaksi_post';
|
||||
if (!isset($_SERVER['PHP_AUTH_USER'])) {
|
||||
header("WWW-Authenticate: Basic realm=\"Private Area\"");
|
||||
header("HTTP/1.0 401 Unauthorized");
|
||||
@@ -1014,18 +1093,19 @@ class Pelanggan extends REST_Controller
|
||||
} else {
|
||||
$cek = $this->Pelanggan_model->check_banned_user($_SERVER['PHP_AUTH_USER']);
|
||||
if ($cek) {
|
||||
log_message('debug', 'request_transaksi_post: banned user ' . $_SERVER['PHP_AUTH_USER']);
|
||||
$message = array(
|
||||
'message' => 'fail',
|
||||
'data' => 'Status User Banned'
|
||||
);
|
||||
log_message('debug', '[ORDER_API][' . $endpoint . '] banned user ' . $_SERVER['PHP_AUTH_USER']);
|
||||
$this->log_order_api_response($endpoint, $message);
|
||||
$this->response($message, 200);
|
||||
}
|
||||
}
|
||||
|
||||
$data = file_get_contents("php://input");
|
||||
$dec_data = json_decode($data);
|
||||
log_message('debug', 'request_transaksi_post: payload=' . $data);
|
||||
$this->log_order_api_request($endpoint, $data);
|
||||
|
||||
$data_req = array(
|
||||
'id_pelanggan' => $dec_data->id_pelanggan,
|
||||
@@ -1046,9 +1126,23 @@ class Pelanggan extends REST_Controller
|
||||
);
|
||||
|
||||
$request = $this->Pelanggan_model->insert_transaksi($data_req);
|
||||
$idTransaksiNum = 0;
|
||||
if ($request['status'] && !empty($request['data'])) {
|
||||
foreach ($request['data'] as $row) {
|
||||
if (is_object($row) && isset($row->id)) {
|
||||
$idTransaksiNum = (int) $row->id;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($request['status']) {
|
||||
if (isset($request['data'][0]->id)) {
|
||||
log_message('debug', 'request_transaksi_post: success id_transaksi=' . $request['data'][0]->id . ' id_pelanggan=' . $dec_data->id_pelanggan . ' fitur=' . $dec_data->order_fitur);
|
||||
$idTransaksi = $idTransaksiNum > 0 ? $idTransaksiNum : 'unknown';
|
||||
$driverTargets = $idTransaksiNum > 0
|
||||
? $this->Pelanggan_model->get_data_driver_histroy($idTransaksiNum)->result()
|
||||
: array();
|
||||
$this->log_order_driver_targets($endpoint, $idTransaksi, $driverTargets);
|
||||
if ($idTransaksiNum > 0) {
|
||||
log_message('debug', 'request_transaksi_post: success id_transaksi=' . $idTransaksiNum . ' id_pelanggan=' . $dec_data->id_pelanggan . ' fitur=' . $dec_data->order_fitur);
|
||||
} else {
|
||||
log_message('debug', 'request_transaksi_post: success (no id in data) payload=' . json_encode($request['data']));
|
||||
}
|
||||
@@ -1056,6 +1150,8 @@ class Pelanggan extends REST_Controller
|
||||
'message' => 'success',
|
||||
'data' => $request['data']
|
||||
);
|
||||
$this->log_order_api_response($endpoint, $message);
|
||||
$this->save_order_creation_logs($idTransaksiNum, $data, $message, $driverTargets);
|
||||
$this->response($message, 200);
|
||||
} else {
|
||||
log_message('error', 'request_transaksi_post: insert_transaksi fail data=' . json_encode($request['data']));
|
||||
@@ -1063,12 +1159,14 @@ class Pelanggan extends REST_Controller
|
||||
'message' => 'fail',
|
||||
'data' => $request['data']
|
||||
);
|
||||
$this->log_order_api_response($endpoint, $message);
|
||||
$this->response($message, 200);
|
||||
}
|
||||
}
|
||||
|
||||
function check_status_transaksi_post()
|
||||
{
|
||||
$endpoint = 'check_status_transaksi_post';
|
||||
if (!isset($_SERVER['PHP_AUTH_USER'])) {
|
||||
header("WWW-Authenticate: Basic realm=\"Private Area\"");
|
||||
header("HTTP/1.0 401 Unauthorized");
|
||||
@@ -1077,14 +1175,19 @@ class Pelanggan extends REST_Controller
|
||||
|
||||
$data = file_get_contents("php://input");
|
||||
$dec_data = json_decode($data);
|
||||
log_message('debug', 'check_status_transaksi_post: payload=' . $data);
|
||||
$this->log_order_api_request($endpoint, $data);
|
||||
|
||||
$dataTrans = array(
|
||||
'id_transaksi' => $dec_data->id_transaksi
|
||||
);
|
||||
|
||||
$getStatus = $this->Pelanggan_model->check_status($dataTrans);
|
||||
log_message('debug', 'check_status_transaksi_post: result=' . json_encode($getStatus));
|
||||
$this->log_order_driver_targets(
|
||||
$endpoint,
|
||||
isset($dec_data->id_transaksi) ? $dec_data->id_transaksi : 'unknown',
|
||||
isset($getStatus['list_driver']) ? $getStatus['list_driver'] : array()
|
||||
);
|
||||
$this->log_order_api_response($endpoint, $getStatus);
|
||||
$this->response($getStatus, 200);
|
||||
}
|
||||
|
||||
@@ -1321,6 +1424,7 @@ class Pelanggan extends REST_Controller
|
||||
|
||||
function request_transaksi_send_post()
|
||||
{
|
||||
$endpoint = 'request_transaksi_send_post';
|
||||
if (!isset($_SERVER['PHP_AUTH_USER'])) {
|
||||
header("WWW-Authenticate: Basic realm=\"Private Area\"");
|
||||
header("HTTP/1.0 401 Unauthorized");
|
||||
@@ -1332,12 +1436,15 @@ class Pelanggan extends REST_Controller
|
||||
'message' => 'fail',
|
||||
'data' => 'Status User Banned'
|
||||
);
|
||||
log_message('debug', '[ORDER_API][' . $endpoint . '] banned user ' . $_SERVER['PHP_AUTH_USER']);
|
||||
$this->log_order_api_response($endpoint, $message);
|
||||
$this->response($message, 200);
|
||||
}
|
||||
}
|
||||
|
||||
$data = file_get_contents("php://input");
|
||||
$dec_data = json_decode($data);
|
||||
$this->log_order_api_request($endpoint, $data);
|
||||
|
||||
$data_req = array(
|
||||
'id_pelanggan' => $dec_data->id_pelanggan,
|
||||
@@ -1368,16 +1475,29 @@ class Pelanggan extends REST_Controller
|
||||
|
||||
$request = $this->Pelanggan_model->insert_transaksi_send($data_req, $dataDetail);
|
||||
if ($request['status']) {
|
||||
$resultRows = $request['data']->result();
|
||||
$message = array(
|
||||
'message' => 'success',
|
||||
'data' => $request['data']->result()
|
||||
'data' => $resultRows
|
||||
);
|
||||
$idTransaksiNum = 0;
|
||||
if (!empty($resultRows[0]) && is_object($resultRows[0]) && isset($resultRows[0]->id)) {
|
||||
$idTransaksiNum = (int) $resultRows[0]->id;
|
||||
}
|
||||
$idTransaksi = $idTransaksiNum > 0 ? $idTransaksiNum : 'unknown';
|
||||
$driverTargets = $idTransaksiNum > 0
|
||||
? $this->Pelanggan_model->get_data_driver_histroy($idTransaksiNum)->result()
|
||||
: array();
|
||||
$this->log_order_driver_targets($endpoint, $idTransaksi, $driverTargets);
|
||||
$this->log_order_api_response($endpoint, $message);
|
||||
$this->save_order_creation_logs($idTransaksiNum, $data, $message, $driverTargets);
|
||||
$this->response($message, 200);
|
||||
} else {
|
||||
$message = array(
|
||||
'message' => 'fail',
|
||||
'data' => []
|
||||
);
|
||||
$this->log_order_api_response($endpoint, $message);
|
||||
$this->response($message, 200);
|
||||
}
|
||||
}
|
||||
@@ -1457,6 +1577,7 @@ class Pelanggan extends REST_Controller
|
||||
|
||||
function inserttransaksimerchant_post()
|
||||
{
|
||||
$endpoint = 'inserttransaksimerchant_post';
|
||||
if (!isset($_SERVER['PHP_AUTH_USER'])) {
|
||||
header("WWW-Authenticate: Basic realm=\"Private Area\"");
|
||||
header("HTTP/1.0 401 Unauthorized");
|
||||
@@ -1468,12 +1589,15 @@ class Pelanggan extends REST_Controller
|
||||
'message' => 'fail',
|
||||
'data' => 'Status User Banned'
|
||||
);
|
||||
log_message('debug', '[ORDER_API][' . $endpoint . '] banned user ' . $_SERVER['PHP_AUTH_USER']);
|
||||
$this->log_order_api_response($endpoint, $message);
|
||||
$this->response($message, 200);
|
||||
}
|
||||
}
|
||||
|
||||
$data = file_get_contents("php://input");
|
||||
$dec_data = json_decode($data);
|
||||
$this->log_order_api_request($endpoint, $data);
|
||||
|
||||
$data_transaksi = array(
|
||||
'id_pelanggan' => $dec_data->id_pelanggan,
|
||||
@@ -1531,9 +1655,14 @@ class Pelanggan extends REST_Controller
|
||||
$message = array(
|
||||
'message' => 'success',
|
||||
'data' => $result['data'],
|
||||
|
||||
|
||||
);
|
||||
$tid = isset($result['id_transaksi']) ? (int) $result['id_transaksi'] : 0;
|
||||
$driverTargets = $tid > 0
|
||||
? $this->Pelanggan_model->get_data_driver_histroy($tid)->result()
|
||||
: array();
|
||||
$this->log_order_driver_targets($endpoint, $tid ?: 'unknown', $driverTargets);
|
||||
$this->log_order_api_response($endpoint, $message);
|
||||
$this->save_order_creation_logs($tid, $data, $message, $driverTargets);
|
||||
$this->response($message, 200);
|
||||
} else {
|
||||
$message = array(
|
||||
@@ -1541,6 +1670,7 @@ class Pelanggan extends REST_Controller
|
||||
'data' => []
|
||||
|
||||
);
|
||||
$this->log_order_api_response($endpoint, $message);
|
||||
$this->response($message, 200);
|
||||
}
|
||||
} else {
|
||||
@@ -1549,6 +1679,7 @@ class Pelanggan extends REST_Controller
|
||||
'data' => []
|
||||
|
||||
);
|
||||
$this->log_order_api_response($endpoint, $message);
|
||||
$this->response($message, 200);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user