Files
Ontime/backendpanel/application/models/Wallet_model.php
2026-03-11 15:29:37 +07:00

300 lines
10 KiB
PHP
Executable File

<?php
class wallet_model extends CI_model
{
public function getwallet()
{
$this->db->select('mitra.nama_mitra');
$this->db->select('driver.nama_driver');
$this->db->select('pelanggan.fullnama');
$this->db->select('wallet.*');
$this->db->join('mitra', 'wallet.id_user = mitra.id_mitra', 'left');
$this->db->join('driver', 'wallet.id_user = driver.id', 'left');
$this->db->join('pelanggan', 'wallet.id_user = pelanggan.id', 'left');
$this->db->order_by('wallet.id', 'DESC');
return $this->db->get('wallet')->result_array();
}
public function gettokenmerchant($id_user)
{
$this->db->select('mitra.*');
$this->db->select('merchant.token_merchant');
$this->db->join('merchant', 'mitra.id_merchant = merchant.id_merchant', 'left');
$this->db->where('mitra.id_mitra', $id_user);
return $this->db->get('mitra')->row_array();
}
public function ubahsaldotopup($id_user, $amount, $saldo)
{
// $this->db->where('id_user', $dataC['id_pelanggan']);
// $upd = $this->db->update('saldo', array('saldo' => ($saldo - $dataC['biaya_akhir'])));
$this->db->set('saldo', $saldo['saldo'] + $amount);
$this->db->where('id_user', $id_user);
$this->db->update('saldo');
}
public function getwalletbyid($id)
{
$this->db->select('driver.nama_driver');
$this->db->select('pelanggan.fullnama');
$this->db->select('wallet.*');
$this->db->join('driver', 'wallet.id_user = driver.id', 'left');
$this->db->join('pelanggan', 'wallet.id_user = pelanggan.id', 'left');
return $this->db->get_where('wallet', ['wallet.id' => $id])->row_array();
}
public function getallsaldo()
{
$this->db->select('SUM(jumlah)as total');
return $this->db->get('wallet')->row_array();
}
public function getjumlahdiskon()
{
$this->db->select('SUM(kredit_promo) as diskon');
return $this->db->get('transaksi')->row_array();
}
public function getallsaldouser()
{
$this->db->select('mitra.nama_mitra');
$this->db->select('driver.nama_driver');
$this->db->select('pelanggan.fullnama');
$this->db->select('saldo.*');
$this->db->join('mitra', 'saldo.id_user = mitra.id_mitra', 'left');
$this->db->join('driver', 'saldo.id_user = driver.id', 'left');
$this->db->join('pelanggan', 'saldo.id_user = pelanggan.id', 'left');
return $this->db->get('saldo')->result_array();
}
public function gettotaltopup()
{
$this->db->select('SUM(jumlah)as total');
$this->db->where('status', 1);
$this->db->where('type', 'topup');
return $this->db->get('wallet')->row_array();
}
public function gettotalwithdraw()
{
$this->db->select('SUM(jumlah)as total');
$this->db->where('type', 'withdraw');
$this->db->where('status', 1);
return $this->db->get('wallet')->row_array();
}
public function gettotalorderplus()
{
$this->db->select('SUM(jumlah)as total');
$this->db->where('type', 'Order+');
return $this->db->get('wallet')->row_array();
}
public function gettotalordermin()
{
$this->db->select('SUM(jumlah)as total');
$this->db->where('type', 'Order-');
return $this->db->get('wallet')->row_array();
}
public function ubahstatuswithdrawbyid($id)
{
$this->db->set('status', 1);
$this->db->where('id', $id);
$this->db->update('wallet');
}
public function cancelstatuswithdrawbyid($id)
{
$this->db->set('status', 2);
$this->db->where('id', $id);
$this->db->update('wallet');
}
public function gettoken($id_user)
{
$this->db->select('token');
$this->db->where('id', $id_user);
return $this->db->get('pelanggan')->row_array();
}
public function getregid($id_user)
{
$this->db->select('reg_id');
$this->db->where('id', $id_user);
return $this->db->get('driver')->row_array();
}
public function getsaldo($id_user)
{
$this->db->select('saldo');
$this->db->where('id_user', $id_user);
return $this->db->get('saldo')->row_array();
}
public function ubahsaldo($id_user, $amount, $saldo)
{
// $this->db->where('id_user', $dataC['id_pelanggan']);
// $upd = $this->db->update('saldo', array('saldo' => ($saldo - $dataC['biaya_akhir'])));
$this->db->set('saldo', $saldo['saldo'] - $amount);
$this->db->where('id_user', $id_user);
$this->db->update('saldo');
}
public function send_notif($title, $message, $topic)
{
// Delegate to Notification_model, which uses FCM HTTP v1 + service account.
$CI = &get_instance();
$CI->load->model('notification_model', 'notif');
$CI->notif->send_notif($title, $message, $topic);
}
public function updatesaldowallet($data)
{
$this->db->select('mitra.nama_mitra');
$this->db->select('driver.nama_driver');
$this->db->select('pelanggan.fullnama');
$this->db->select('saldo.saldo as saldolama');
$this->db->join('mitra', 'saldo.id_user = mitra.id_mitra', 'left');
$this->db->join('driver', 'saldo.id_user = driver.id', 'left');
$this->db->join('pelanggan', 'saldo.id_user = pelanggan.id', 'left');
$this->db->where('id_user', $data['id_user']);
$saldolama = $this->db->get('saldo')->row_array();
$saldobaru = $saldolama['saldolama'] + $data['saldo'];
$this->db->set('saldo', $saldobaru);
$this->db->where('id_user', $data['id_user']);
$this->db->update('saldo');
if ($data['type_user'] == 'pelanggan') {
$nama = $saldolama['fullnama'];
} elseif ($data['type_user'] == 'mitra') {
$nama = $saldolama['nama_mitra'];
} else {
$nama = $saldolama['nama_driver'];
}
$this->db->set('status', '1');
$this->db->set('type', 'topup');
$this->db->set('rekening', 'admin');
$this->db->set('bank', 'admin');
$this->db->set('nama_pemilik', $nama);
$this->db->set('jumlah', $data['saldo']);
$this->db->set('id_user', $data['id_user']);
$this->db->insert('wallet');
}
public function updatesaldowalletwithdraw($data, $data2)
{
$this->db->select('mitra.nama_mitra');
$this->db->select('driver.nama_driver');
$this->db->select('pelanggan.fullnama');
$this->db->select('saldo.saldo as saldolama');
$this->db->join('mitra', 'saldo.id_user = mitra.id_mitra', 'left');
$this->db->join('driver', 'saldo.id_user = driver.id', 'left');
$this->db->join('pelanggan', 'saldo.id_user = pelanggan.id', 'left');
$this->db->where('id_user', $data['id_user']);
$saldolama = $this->db->get('saldo')->row_array();
$saldobaru = $saldolama['saldolama'] - $data['saldo'];
if ($saldobaru < 0) {
$this->session->set_flashdata('salah', 'Not enaugh Balances');
redirect('wallet/tambahwithdraw');
} else {
$this->db->set('saldo', $saldobaru);
$this->db->where('id_user', $data['id_user']);
$this->db->update('saldo');
if ($data['type_user'] == 'pelanggan') {
$nama = $saldolama['fullnama'];
} elseif ($data['type_user'] == 'mitra') {
$nama = $saldolama['nama_mitra'];
} else {
$nama = $saldolama['nama_driver'];
}
$this->db->set('status', '1');
$this->db->set('type', 'withdraw');
$this->db->set('rekening', $data2['rekening']);
$this->db->set('bank', $data2['bank']);
$this->db->set('nama_pemilik', $data2['nama_pemilik']);
$this->db->set('jumlah', $data['saldo']);
$this->db->set('id_user', $data['id_user']);
$this->db->insert('wallet');
}
}
public function getwalletall()
{
$this->db->select('wallet.*');
$this->db->select('merchant.token_merchant');
$this->db->select('driver.reg_id');
$this->db->select('pelanggan.token');
$this->db->select('pelanggan.id,driver.id,mitra.id_mitra,merchant.id_merchant');
$this->db->join('mitra', 'wallet.id_user=mitra.id_mitra', 'left');
$this->db->join('merchant', 'mitra.id_merchant=merchant.id_merchant', 'left');
$this->db->join('driver', 'wallet.id_user=driver.id', 'left');
$this->db->join('pelanggan', 'wallet.id_user=pelanggan.id', 'left');
return $this->db->get('wallet')->result_array();
}
public function updatekadaluarsa()
{
$this->load->model('Notification_model');
$wallet = $this->getwalletall();
foreach ($wallet as $wl) {
$date1 = date_create($wl['expired']);
$date = new DateTime('now', new DateTimeZone('Asia/Jakarta'));
$tanggal = date_format($date1, "YmdHis");
$tanggal2 = date_format($date, "YmdHis");
// var_dump($tanggal);
// var_dump($tanggal2);
// die();
if ($tanggal <= $tanggal2 && $wl['status'] == 0 && $wl['expired'] != "") {
// var_dump($tanggal);
// var_dump($tanggal2);
// die();
$this->db->set('status', '2');
$this->db->Where('status', '0');
$this->db->Where('invoice', $wl['invoice']);
$this->db->update('wallet');
$id = substr($wl['id_user'], '0', '1');
if ($id == 'M') {
$token = $wl['token_merchant'];
} else if ($id == 'P') {
$token = $wl['token'];
} else {
$token = $wl['reg_id'];
}
$title = 'Dibatalkan';
$desc = 'Pembayaran Kamu telah Dibatalkan';
if ($token !== null && trim((string) $token) !== '') {
$this->Notification_model->send_notif_topup($title, $wl['id_user'], $desc, $wl['invoice'], $token);
}
}
}
}
}