Files
cmasa/app/Controller/Ppob/TopupController.php
T
2026-10-29 13:34:31 +07:00

126 lines
5.2 KiB
PHP

<?php
/*******************************************************************
PHP Class : /Controller/Ppob/TopupController
Description : Transaksi Topup Saldo PPOB
Created By : Siau Pheng ([email protected]).
Created Date : October 6th, 2017.
Last Modified : September 16th, 2026.
(c) 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
declare(strict_types=1);
namespace App\Controller\Ppob;
use App\Utils\PPOBClient;
use flight\Engine;
use flight\database\SimplePdo;
use Webapp\Web\Form;
use Webapp\Web\Param;
use Webapp\Web\Table;
class TopupController {
private string $mode_detail;
private PPOBClient $ppob;
protected Engine $app;
protected SimplePdo $db;
public function __construct(Engine $app, SimplePdo $db) {
$this->app = $app;
$this->db = $db;
$this->mode_detail = Param::Get("mode_detail", "");
$this->ppob = new PPOBClient($app);
}
public function table_detail() {
$ajson = [];
if ($this->mode_detail === "insert") {
// PROSES API TRIFONIA PULSA
$appob = $this->ppob->Depo(Param::Get("Bank", ""), Param::Float("Jumlah", 0));
if (count($appob)>0 && (int) $appob['Status'] === 4) {
$ajson[] = ['type'=>"msg", 'mode'=>"info", 'wait'=>2000, 'value'=>$appob['Message']];
} else {
$ajson[] = ['type'=>"msg", 'mode'=>"error", 'wait'=>2000, 'value'=>$appob['Message']];
}
}
$cari = Param::Get("Cari_Topup", "");
$tsql = ''; $asql = [];
if (!empty($cari)) {
$tsql = "CONCAT(No_Depo,DATE_FORMAT(Tgl_Depo,'%d-%m-%Y')) LIKE ?";
$asql[] = '%' . $cari . '%';
}
$obj = new Table($this->app);
$obj->set_table("ppob_depo", "*,IF(Proses=1,2,IF(DATEDIFF(Tgl_Exp,NOW())<0,1,0)) IX", $tsql, $asql);
$obj->add_field("No_Depo", "Nomor", "c");
$obj->add_field("Tgl_Depo", "Tanggal", "c", "sqltgl", "", "val-tgl");
$obj->add_field("Tgl_Exp", "Expire", "c", "sqltgl", "", "val-tgl");
$obj->add_field("Jumlah", "Jumlah", "r", "rupiah");
$obj->add_field("Bank", "Bank", "l");
$obj->add_field("Proses", "P", "c", "checkbox");
$obj->add_field("Catatan", "Catatan", "hid", "App\Utils\PPOBClient::makeWAText");
$obj->set_field_order("No_Depo", "D");
$obj->set_row_color("IX", "1", "rdanger");
$obj->set_row_color("IX", "2", "rsuccess");
$obj->add_row_btn("clipboard", "Informasi", "TopupJS.tx_info");
$ajson[] = $obj->db_table("divDetailTabel");
$this->app->json($ajson);
}
public function form_topup() {
$atabel = [ 'Tgl_Depo'=>tgl_ymd(), 'Bank'=>"BCA", 'Jumlah'=>0 ];
$form = new Form($this->app);
$ttgl = $form->datebox("_", "Tgl_Depo", $atabel['Tgl_Depo'], true, false);
$tbank = $form->radio("_", "Bank", $atabel['Bank'], true, false, ['BCA'=>"BCA",'BNI'=>"BNI",'Mandiri'=>"Mandiri",'BRI'=>"BRI"]);
$tjumlah = $form->textbox("_", "Jumlah", $atabel['Jumlah'], true, true, "double");
$ajson['html'] = '
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="Tgl_Depo">Tanggal</label>
<div class="col-sm-4 col-lg-6">'.$ttgl.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="Bank">Nama Bank</label>
<div class="col col-form-label">'.$tbank.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="Jumlah">Jumlah Topup</label>
<div class="col-sm-4 col-lg-6">'.$tjumlah.'</div>
</div>';
$this->app->json($ajson);
}
public function index() {
$this->app->json(['html' => '
<div class="fade-in">
<div class="card"><div class="card-body">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="tx-tab" data-bs-toggle="tab" data-bs-target="#tx" type="button" role="tab" aria-controls="tx" aria-selected="true"><i class="bi-database me-2"></i>Topup Saldo PPOB</button>
</li>
<li class="nav-item ms-auto w-50">
<div class="input-group"><input class="form-control" id="Cari_Topup" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div>
</li>
<li class="nav-item">
<button class="btn btn-primary mb-1 ms-2" id="butTambah" type="button"><i class="bi-plus-lg me-2"></i>Tambah</button>
</li>
</ul>
<div class="tab-content border border-top-0 p-3">
<div class="tab-pane fade active show" id="tx" role="tabpanel" aria-labelledby="tx-tab">
<div id="divDetailTabel">&nbsp;</div>
</div>
</div>
</div></div>
</div>'
]);
}
}