app = $app; $this->db = $db; $this->session = $session; $this->mode = (string) Param::Get('mode'); $this->id_user = (int) Param::Get("UserID"); $this->filter = (int) Param::Get("Filter_Level"); $this->parent_code = (string) $session->get('WEB_APP')['PARENT_CODE']; } public function table_detail() { $cari = Param::Get("Cari_User"); $twhere = ''; $apar = []; if ($this->filter === 99) { $twhere = "Level>=?"; $apar[] = $this->session->get('WEB_USER')['Level']; } else { $twhere = "Level=?"; $apar[] = $this->filter; } if (!empty($cari)) { $twhere .= ' AND CONCAT(Username,Nama) LIKE ?'; $apar[] = '%'.$cari.'%'; } $id = (int) $this->session->get('WEB_USER')['UserID'] ?? 0; $twhere .= ($id === 2) ? ' AND UserID>1' : ($id > 2 ? ' AND UserID>2' : ''); $obj = new Table($this->app); $obj->set_table("app_operator", "*", $twhere, $apar); $obj->add_field("UserID", "ID", "hid"); $obj->add_field("Username", "Username"); $obj->add_field("Nama", "Nama Pengguna", "awr"); $obj->add_field("Posisi", "Posisi"); $obj->add_field("Level", "Level", "l", $this->session->get('WEB_APP')['USER_LEVEL']); $obj->add_field("Aktif", "Aktif", "c", "checkbox"); $obj->set_field_order("Username", "A"); $obj->add_row_btn("menu-button", "Menu", "OperatorJS.menu_show"); $obj->add_row_btn("clipboard", "Ubah", "OperatorJS.detail_ubah"); $obj->add_row_btn("trash", "Hapus", "OperatorJS.detail_hapus"); $obj->set_func_btn("OperatorJS.detail_tambah", "+ Pengguna"); $this->app->json([ $obj->json_table("divDetail") ]); } public function detail_filter() { $form = new Form($this->app); $tfilter = $form->option("_", "Fi_Level", $this->filter, true, false, [99=>"SEMUA LEVEL PENGGUNA"] + $this->session->get('WEB_APP')['USER_LEVEL']); $ajson['html'] = '
Tampilan Berdasarkan :
'.$tfilter.'
'; $this->app->json($ajson); } public function detail_user() { $auser = [ 'UserID'=>0, 'Username'=>"", 'Nama'=>"", 'Posisi'=>"", 'Level' => 9, 'Aktif' => 1, 'Grup_MenuID' => 0 ]; if ($this->mode === 'edit') { $auser = $this->db->fetchRow('SELECT * FROM app_operator WHERE UserID=?', [$this->id_user]); } $form = new Form($this->app); $t_user = $form->textbox("_", "Username", $auser['Username'], true, true, "text", "username"); $t_nama = $form->textbox("_", "Nama", $auser['Nama'], true, false, "text", "nama pengguna"); $t_posi = $form->textbox("_", "Posisi", $auser['Posisi'], true, false, "text", "posisi pengguna"); $t_level = $form->option_ulevel("_", "Level", $auser['Level'], true, false, "", "OperatorJS.oc_Level();"); $t_pass = $form->password("_", "Password", "", true, true, "", 50, "biarkan kosong jika tidak ingin mengubah password."); $t_status = $form->switch("_", "Aktif", $auser['Aktif'], true, false, ["1","0"]); $t_grup = $form->option_db("_", "Grup_MenuID", $auser['Grup_MenuID'], true, false, "app_menu_grup", ["Grup_MenuID","Nama_Grup"], "Aktif=1", [0,"TANPA GRUP"]); $ajson['html'] = '
'.$t_user.'
'.$t_nama.'
'.$t_posi.'
'.$t_level.'

'.$t_grup.'
'.$t_pass.Invesa::Form_Info("biarkan kosong jika tidak ingin mengubah password.").'
'.$t_status.'
'; $this->app->json($ajson); } public function detail_menu() { $auser = $this->db->fetchRow("SELECT UserID,Nama,Grup_MenuID,CONVERT(DECODE(Menu,?) USING UTF8MB4) Menu FROM app_operator WHERE UserID=?", [$this->parent_code, $this->id_user]); $amenu = explode(",", $auser['Menu']); $aglist = []; $ajson = ['html' => '']; $glist = $this->db->fetchField("SELECT CONVERT(DECODE(Menu,?) USING UTF8MB4) FROM app_menu_grup WHERE Grup_MenuID=?", [$this->parent_code, $auser['Grup_MenuID']]); if (!empty($glist)) $aglist = explode(",", $glist); $amodul = $this->db->fetchAll("SELECT * FROM app_menu WHERE Level=0 AND Modul<>'IND' AND Aktif=1 ORDER BY Urut ASC"); $hasil = '
'; if (count($amodul)>1) { $hasil .= ''; $hasil .= '
'; foreach ($amodul as $i => $modul) { $alist = $this->db->fetchAll("SELECT * FROM app_menu WHERE Modul=? AND Level>0 AND Aktif=1 ORDER BY Kode", [$modul['Modul']]); $hasil .= '
'; $hasil .= $this->modul_gen($alist, $amenu, $aglist); $hasil .= '
'; } $hasil .= '
'; } else { $alist = $this->db->fetchAll("SELECT * FROM app_menu WHERE Modul=? AND Level>0 AND Aktif=1 ORDER BY Kode", [$amodul[0]['Modul']]); $hasil .= $this->modul_gen($alist, $amenu, $aglist); } $ajson['html'] .= $hasil.'
'; $ajson['html'] .= ''; $this->app->json($ajson); } public function save_user() { $sql = new SQL($this->app); $sql->set_table("app_operator"); $sql->add_param("Grup_MenuID"); $sql->add_param("Username"); $sql->add_param("Nama"); $sql->add_param("Posisi"); $sql->add_param("Level"); $sql->add_param("Aktif"); $sql->add_param("SuperID", $this->session->get('WEB_USER')['UserID']); $sql->add_where("UserID"); if ($this->mode === "add") { $sql->InsertDB(); } else if ($this->mode === "edit") { $sql->UpdateDB(); } else if ($this->mode === "del") { $sql->DeleteDB(); } // SIMPAN PASSWORD $pass = Param::Get("Password"); if (($this->mode !== "del") and !empty($pass)) { $this->db->runQuery("UPDATE app_operator SET Password=MD5(?) WHERE Username=?", [$pass, Param::Get("Username")]); } $this->app->json([ 'status' => true ]); } public function save_menu() { $amenu = explode(",", (string) Param::Get("Menu")); $ahasil = []; $amodul = $this->db->fetchAll("SELECT * FROM app_menu WHERE Level=0 AND Modul<>'IND' AND Aktif=1 ORDER BY Urut ASC"); foreach ($amodul as $modul) { $akode = $this->db->fetchColumn("SELECT Kode FROM app_menu WHERE Modul=? AND Level>0 AND Aktif=1 ORDER BY Kode", [$modul['Modul']]); $asub = array_intersect($amenu, $akode); if (count($asub)>0) $ahasil = array_merge($ahasil, [$modul['Kode']], $asub); } $this->db->runQuery("UPDATE app_operator SET Menu=ENCODE('".implode(",",$ahasil)."',?),DateStamp=NOW(),SuperID=? WHERE UserID=?", [$this->parent_code, $this->session->get('WEB_USER')['UserID'], $this->id_user]); $this->app->json([ 'status' => true ]); } public function check_user() { $ada = (int) $this->db->fetchField("SELECT COUNT(*) FROM app_operator WHERE Username=?", [Param::Get("Username")]) > 0; $this->app->json([ 'ada' => $ada ]); } private function modul_gen(array $alist = [], array $amenu = [], array $aglist = []): string { $hasil = ''; $hasil .= ''; foreach ($alist as $list) { $checked = (in_array($list['Kode'], $amenu)) ? "checked" : ""; $gchecked = (in_array($list['Kode'], $aglist)) ? "checked" : ""; $hasil .= sprintf('', str_repeat("--", $list['Level']-1)."> ".$list['Menu'], $list['Judul'], $list['Modul'], $list['Kode'], $checked, $gchecked); } $hasil .= '
Nama MenuKeterangan
%s%s
'; return $hasil; } public function index() { $this->app->json([ 'html' => '
Daftar Pengguna
 
' ]); } }