Files
2026-10-29 13:34:31 +07:00

172 lines
9.2 KiB
PHP

<?php
/*******************************************************************
PHP Class : /Controller/Display/ConfigController
Description : Konfigurasi Display POS
Created By : Siau Pheng ([email protected]).
Created Date : August 4th, 2013.
Last Modified : August 31st, 2026.
(c) 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
declare(strict_types=1);
namespace App\Controller\Display;
use flight\Engine;
use flight\Session;
use flight\database\SimplePdo;
use Webapp\DB\SQL;
use Webapp\Web\Form;
use Webapp\Web\Param;
use Webapp\Web\Table;
use App\Utils\Invesa;
class ConfigController {
private string $mode;
private string $id_reg;
protected Engine $app;
protected SimplePdo $db;
public function __construct(Engine $app, SimplePdo $db, Session $session) {
$this->app = $app;
$this->db = $db;
$this->mode = (string) Param::Get("mode");
$this->id_reg = (string) Param::Get("REG_ID", $session->get('WEB_APP')['REG_ID']);
}
public function form_display() {
if ( $this->mode === "save" ) {
$sql = new SQL($this->app);
$sql->set_table("disp_config");
$sql->add_param("MON_ENABLE");
$sql->add_param("Text_Run");
$sql->add_param("Warna");
$sql->add_param("Font");
$sql->add_param("Promo_Idle");
$sql->add_param("Promo_Durasi");
$sql->add_param("POLE_ENABLE");
$sql->add_param("POLE_PORT");
$sql->add_param("POLE_START1");
$sql->add_param("POLE_START2");
$sql->add_param("POLE_END1");
$sql->add_param("POLE_END2");
$sql->add_where("REG_ID");
$sql->UpdateDB();
$ajson['sukses'] = true;
$this->mode = "view";
}
$para = [];
if ($this->id_reg > 0) {
$para = $this->db->fetchRow("SELECT * FROM disp_config WHERE REG_ID=?", [$this->id_reg]);
$para['CabID'] = $this->db->fetchField("SELECT CABANGID FROM inv_config WHERE REG_ID=?", [$this->id_reg]) ?? 0;
$para['Nama_Cab'] = $this->db->fetchField("SELECT Nama_Cab FROM para_cabang WHERE CabID=?", [$para['CabID']]) ?? '';
}
$benable = ($this->mode === "edit") ? true : false;
$form = new Form($this->app);
$tmon_ena = $form->switch("_", "MON_ENABLE", $para['MON_ENABLE'], $benable, false, [1,0]);
$ttext_run = $form->textarea("_", "Text_Run", $para['Text_Run'], $benable, false, 2, "tulisan banner");
$twarna = $form->color("_", "Warna", $para['Warna'], $benable, false);
$tfont = $form->textbox("_", "Font", $para['Font'], $benable, false, "number");
$tpro_idle = $form->textbox("_", "Promo_Idle", $para['Promo_Idle'], $benable, false, "number");
$tpro_dur = $form->textbox("_", "Promo_Durasi", $para['Promo_Durasi'], $benable, false, "number");
$tpole_ena = $form->switch("_", "POLE_ENABLE", $para['POLE_ENABLE'], $benable, false, [1,0]);
$tpole_port = $form->option("_", "POLE_PORT", $para['POLE_PORT'], $benable, false, [$para['POLE_PORT']=>$para['POLE_PORT']]);
$tpole_end1 = $form->textbox("_", "POLE_END1", $para['POLE_END1'], $benable, false, "text", "baris 1 farewell", 20);
$tpole_end2 = $form->textbox("_", "POLE_END2", $para['POLE_END2'], $benable, false, "text", "baris 2 farewell", 20);
$tpole_start1 = $form->textbox("_", "POLE_START1", $para['POLE_START1'], $benable, false, "text", "baris 1 welcome", 20);
$tpole_start2 = $form->textbox("_", "POLE_START2", $para['POLE_START2'], $benable, false, "text", "baris 2 welcome", 20);
$ajson['html'] = '
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="monitor-tab" data-bs-toggle="tab" data-bs-target="#monitor" type="button" role="tab" aria-controls="monitor" aria-selected="true">Monitor Display</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="pole-tab" data-bs-toggle="tab" data-bs-target="#pole" type="button" role="tab" aria-controls="pole" aria-selected="false">Pole Display</button>
</li>
</ul>
<div class="tab-content border border-top-0 p-3">
<div class="tab-pane fade active show" id="monitor" role="tabpanel" aria-labelledby="monitor-tab">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="MON_ENABLE">Status Display Monitor</label>
<div class="col col-form-label">'.$tmon_ena.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="Text_Run">Tulisan Banner</label>
<div class="col">'.$ttext_run.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="Warna">Warna Tulisan</label>
<div class="col-sm-4 col-lg-5"><div class="input-group">'.$twarna.Invesa::Form_Info("Warna tulisan banner.").'</div></div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="Font">Ukuran Font</label>
<div class="col-sm-4 col-lg-5"><div class="input-group">'.$tfont.Invesa::Form_Info("Ukuran font tampilan banner.").'</div></div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="Promo_Idle">Waktu Jedah Promo</label>
<div class="col-sm-4 col-lg-5"><div class="input-group">'.$tpro_idle.Invesa::Form_Info("Waktu tunggu tampil promo setelah transaksi POS terakhir.").'</div></div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="Promo_Durasi">Waktu Durasi Promo</label>
<div class="col-sm-4 col-lg-5"><div class="input-group">'.$tpro_dur.Invesa::Form_Info("Waktu durasi penggantian tulisan promo (bagian bawah)").'</div></div>
</div>
</div>
<div class="tab-pane fade" id="pole" role="tabpanel" aria-labelledby="pole-tab">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="POLE_ENABLE">Status Pole Display</label>
<div class="col col-form-label">'.$tpole_ena.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="POLE_PORT">Port Pole Display</label>
<div class="col-sm-4 col-lg-5">'.$tpole_port.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="POLE_START1">Baris 1 Welcome</label>
<div class="col"><div class="input-group">'.$tpole_start1.Invesa::Form_Info("Maximum 20 huruf.").'</div></div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="POLE_START2">Baris 2 Welcome</label>
<div class="col"><div class="input-group">'.$tpole_start2.Invesa::Form_Info("Maximum 20 huruf.").'</div></div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="POLE_END1">Baris 1 Farewell</label>
<div class="col"><div class="input-group">'.$tpole_end1.Invesa::Form_Info("Maximum 20 huruf.").'</div></div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="POLE_END2">Baris 2 Farewell</label>
<div class="col"><div class="input-group">'.$tpole_end2.Invesa::Form_Info("Maximum 20 huruf.").'</div></div>
</div>
</div>
</div>
<input type="hidden" id="mode" value="'.$this->mode.'" >';
$ajson['Nama_Cab'] = $para['Nama_Cab'];
$this->app->json($ajson);
}
public function brow_cabang() {
$obj = new Table($this->app);
$obj->set_table("(SELECT * FROM para_cabang WHERE Aktif=1) C LEFT JOIN inv_config G ON (G.CABANGID=C.CabID)", "C.*,G.REG_ID");
$obj->add_field("REG_ID", "ID", "hid");
$obj->add_field("Kode_Cab", "Kode", "c");
$obj->add_field("Nama_Cab", "Nama Cabang", "awr");
$obj->set_field_order("Kode_Cab", "A");
$obj->set_func_select("DISPConfigJS.cab_select");
$this->app->json([ $obj->json_table("divBrowCab") ]);
}
public function index() {
$this->app->json(['html' =>
'<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Nama_Cabang" type="text" disabled readonly><button id="butBrow" class="btn btn-info" type="button"><i class="bi-search"></i></button></div></div></div><div class="card"><div class="card-body"><div id="divDisplay">&nbsp;</div><input type="hidden" id="REG_ID" value="'.$this->id_reg.'"></div></div>'
]);
}
}