add flutter

This commit is contained in:
Ariska
2026-03-11 15:29:37 +07:00
parent c253e1a370
commit 619d758027
9490 changed files with 135801 additions and 1353 deletions
+103 -25
View File
@@ -10,6 +10,7 @@ class Pelanggan extends REST_Controller
parent::__construct();
$this->load->helper("url");
$this->load->helper('fcm_v1_helper');
$this->load->database();
$this->load->model('Pelanggan_model');
$this->load->model('wallet_model', 'wallet');
@@ -115,16 +116,37 @@ class Pelanggan extends REST_Controller
$data = file_get_contents("php://input");
$decoded_data = json_decode($data);
$reg_id = array(
'token' => $decoded_data->token
);
if (!$decoded_data || !isset($decoded_data->password)) {
$this->response(array('code' => '400', 'message' => 'Invalid request', '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;
$reg_id = array();
if ($token !== '' && function_exists('fcm_v1_is_valid_device_token') && fcm_v1_is_valid_device_token($token)) {
$reg_id['token'] = $token;
}
$condition = array(
'password' => sha1($decoded_data->password),
'no_telepon' => $decoded_data->no_telepon,
//'token' => $decoded_data->token
'password' => sha1($decoded_data->password)
);
$check_banned = $this->Pelanggan_model->check_banned($decoded_data->no_telepon);
$no_telepon_val = isset($decoded_data->no_telepon) ? trim($decoded_data->no_telepon) : '';
$email_val = isset($decoded_data->email) ? trim($decoded_data->email) : '';
$login_by_phone = $no_telepon_val !== '';
if ($login_by_phone) {
$condition['no_telepon'] = $no_telepon_val;
} else {
if ($email_val === '') {
$this->response(array('code' => '404', 'message' => 'no hp atau password salah!', 'data' => []), 200);
return;
}
$condition['email'] = $email_val;
}
$check_banned = $login_by_phone
? $this->Pelanggan_model->check_banned($no_telepon_val)
: $this->Pelanggan_model->check_banned_user($email_val);
if ($check_banned) {
$message = array(
'message' => 'banned',
@@ -136,7 +158,10 @@ class Pelanggan extends REST_Controller
$message = array();
if ($cek_login->num_rows() > 0) {
$upd_regid = $this->Pelanggan_model->edit_profile($reg_id, $decoded_data->no_telepon);
$no_telepon = $cek_login->row()->no_telepon;
if (!empty($reg_id)) {
$this->Pelanggan_model->edit_profile($reg_id, $no_telepon);
}
$get_pelanggan = $this->Pelanggan_model->get_data_pelanggan($condition);
$message = array(
@@ -206,6 +231,21 @@ class Pelanggan extends REST_Controller
$namafoto = time() . '-' . rand(0, 99999) . ".jpg";
$path = "images/pelanggan/" . $namafoto;
file_put_contents($path, base64_decode($image));
// New users may register from older apps that do not send an FCM token.
// 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) : '';
if ($incomingToken === '') {
$emailForToken = isset($dec_data->email) ? strtolower(trim((string) $dec_data->email)) : '';
if ($emailForToken !== '') {
$incomingToken = 'R' . sprintf('%u', crc32($emailForToken));
} else {
$incomingToken = 'R' . sprintf('%u', crc32('guest-' . time()));
}
}
$data_signup = array(
'id' => 'P' . time(),
'fullnama' => $dec_data->fullnama,
@@ -216,7 +256,7 @@ class Pelanggan extends REST_Controller
'tgl_lahir' => $dec_data->tgl_lahir,
'countrycode' => $dec_data->countrycode,
'fotopelanggan' => $namafoto,
'token' => $dec_data->token,
'token' => $incomingToken,
);
$signup = $this->Pelanggan_model->signup($data_signup);
if ($signup) {
@@ -831,24 +871,24 @@ class Pelanggan extends REST_Controller
$token = $this->wallet->gettoken($iduser);
$regid = $this->wallet->getregid($iduser);
$tokenmerchant = $this->wallet->gettokenmerchant($iduser);
if ($token == NULL and $tokenmerchant == NULL and $regid != NULL) {
$topic = null;
if ($token == NULL and $tokenmerchant == NULL and $regid != NULL && !empty(trim((string) $regid['reg_id']))) {
$topic = $regid['reg_id'];
} else if ($regid == NULL and $tokenmerchant == NULL and $token != NULL) {
} else if ($regid == NULL and $tokenmerchant == NULL and $token != NULL && !empty(trim((string) $token['token']))) {
$topic = $token['token'];
} else if ($regid == NULL and $token == NULL and $tokenmerchant != NULL) {
} else if ($regid == NULL and $token == NULL and $tokenmerchant != NULL && !empty(trim((string) $tokenmerchant['token_merchant']))) {
$topic = $tokenmerchant['token_merchant'];
}
$title = 'Sukses';
$message = 'Permintaan berhasil dikirim';
$saldo = $this->wallet->getsaldo($iduser);
$this->wallet->ubahsaldo($iduser, $amount, $saldo);
//$this->wallet->ubahstatuswithdrawbyid($id);
$this->wallet->send_notif($title, $message, $topic);
if ($topic !== null) {
$this->wallet->send_notif($title, $message, $topic);
}
/* END EDIT */
$message = array(
@@ -877,12 +917,26 @@ class Pelanggan extends REST_Controller
}
$data = file_get_contents("php://input");
$dec_data = json_decode($data);
log_message('debug', 'list_ride_post REQUEST: ' . $data);
$near = $this->Pelanggan_model->get_driver_ride($dec_data->latitude, $dec_data->longitude, $dec_data->fitur);
$dec_data = json_decode($data);
if (!$dec_data || !isset($dec_data->latitude, $dec_data->longitude, $dec_data->fitur)) {
log_message('error', 'list_ride_post: invalid request, missing latitude/longitude/fitur');
$message = array('data' => [], 'error' => 'Invalid request: latitude, longitude, fitur required');
$this->response($message, 200);
return;
}
$radius_km = null;
if (isset($dec_data->radius_km) && is_numeric($dec_data->radius_km)) {
$radius_km = max(1, min(100, (float) $dec_data->radius_km));
}
$near = $this->Pelanggan_model->get_driver_ride($dec_data->latitude, $dec_data->longitude, $dec_data->fitur, $radius_km);
$drivers = $near->result();
$message = array(
'data' => $near->result()
'data' => $drivers
);
log_message('debug', 'list_ride_post RESPONSE: fitur=' . $dec_data->fitur . ' lat=' . $dec_data->latitude . ' lng=' . $dec_data->longitude . ' radius_km=' . ($radius_km !== null ? $radius_km : 'default') . ' drivers_found=' . count($drivers));
$this->response($message, 200);
}
@@ -910,12 +964,26 @@ class Pelanggan extends REST_Controller
}
$data = file_get_contents("php://input");
$dec_data = json_decode($data);
log_message('debug', 'list_car_post REQUEST: ' . $data);
$near = $this->Pelanggan_model->get_driver_car($dec_data->latitude, $dec_data->longitude, $dec_data->fitur);
$dec_data = json_decode($data);
if (!$dec_data || !isset($dec_data->latitude, $dec_data->longitude, $dec_data->fitur)) {
log_message('error', 'list_car_post: invalid request, missing latitude/longitude/fitur');
$message = array('data' => [], 'error' => 'Invalid request: latitude, longitude, fitur required');
$this->response($message, 200);
return;
}
$radius_km = null;
if (isset($dec_data->radius_km) && is_numeric($dec_data->radius_km)) {
$radius_km = max(1, min(100, (float) $dec_data->radius_km));
}
$near = $this->Pelanggan_model->get_driver_car($dec_data->latitude, $dec_data->longitude, $dec_data->fitur, $radius_km);
$drivers = $near->result();
$message = array(
'data' => $near->result()
'data' => $drivers
);
log_message('debug', 'list_car_post RESPONSE: fitur=' . $dec_data->fitur . ' lat=' . $dec_data->latitude . ' lng=' . $dec_data->longitude . ' radius_km=' . ($radius_km !== null ? $radius_km : 'default') . ' drivers_found=' . count($drivers));
$this->response($message, 200);
}
@@ -946,6 +1014,7 @@ 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'
@@ -956,6 +1025,7 @@ class Pelanggan extends REST_Controller
$data = file_get_contents("php://input");
$dec_data = json_decode($data);
log_message('debug', 'request_transaksi_post: payload=' . $data);
$data_req = array(
'id_pelanggan' => $dec_data->id_pelanggan,
@@ -977,12 +1047,18 @@ class Pelanggan extends REST_Controller
$request = $this->Pelanggan_model->insert_transaksi($data_req);
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);
} else {
log_message('debug', 'request_transaksi_post: success (no id in data) payload=' . json_encode($request['data']));
}
$message = array(
'message' => 'success',
'data' => $request['data']
);
$this->response($message, 200);
} else {
log_message('error', 'request_transaksi_post: insert_transaksi fail data=' . json_encode($request['data']));
$message = array(
'message' => 'fail',
'data' => $request['data']
@@ -1001,12 +1077,14 @@ 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);
$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->response($getStatus, 200);
}