db = $this->load->database("default", true); $this->db->query("use one_dash"); } function corss() { global $_SERVER; if (isset($_SERVER["HTTP_ORIGIN"])) { header("Access-Control-Allow-Origin: " . $_SERVER["HTTP_ORIGIN"]); } else { header("Access-Control-Allow-Origin: */*"); } header("Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS"); header( "Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization" ); if ( isset($_SERVER["REQUEST_METHOD"]) && $_SERVER["REQUEST_METHOD"] == "OPTIONS" ) { http_response_code(200); echo json_encode("OK"); exit(); } } // list user all public function get_list_user() { $this->corss(); try { // PAKE POST DARI FLUTTER $param = $this->sys_input; $name = "%%"; if (isset($param['search_user'])) { $name = trim($param["search_user"]); $name = '%' . $param['search_user'] . '%'; } $sql_user = "SELECT M_UserID, M_UserFullName, M_UserIsAdmin, M_UserIsLoggedIn FROM m_user WHERE M_UserIsActive = 'Y' AND M_UserFullName LIKE '$name' "; $qry_user = $this->db->query($sql_user, []); if (!$qry_user) { $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } $last_qry_user = $this->db->last_query(); $rst_user = $qry_user->result_array(); $result = [ "list_user" => $rst_user, "last_qry_user" => $last_qry_user ]; $this->sys_ok($result); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } // list menu all public function get_list_menu() { $this->corss(); try { $sql_menu = "SELECT M_MenuID, M_MenuName, false as isActive from m_menu where M_MenuIsActive = 'Y' "; $qry_menu = $this->db->query($sql_menu, []); if (!$qry_menu) { $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } $last_qry_menu = $this->db->last_query(); $rst_menu = $qry_menu->result_array(); // ubah isActive 1 jadi true, jika 0 false foreach ($rst_menu as &$item) { $item['isActive'] = ($item['isActive'] === '1') ? true : false; } $result = [ "list_menu" => $rst_menu, "last_qry_menu" => $last_qry_menu ]; $this->sys_ok($result); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } // list menu by user id function list_menu_by_user_id_v1() { try { // if (!$this->isLogin) { // $this->sys_error("Invalid Token"); // exit; // } $param = $this->sys_input; $id = "0"; if (isset($param['id'])) { $id = $param["id"]; } $sql = "select M_MenuID, M_MenuName from m_user_permission join m_menu ON M_UserPermissionM_MenuID = M_MenuID AND M_MenuIsActive = 'Y' where M_UserPermissionM_UserID = ? AND M_UserPermissionIsActive = 'Y'"; $qry = $this->db->query($sql, [$id]); if (!$qry) { $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } $rst = $qry->result_array(); $this->sys_ok(array("records" => $rst)); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function list_menu_by_user_id_v2() { try { // if (!$this->isLogin) { // $this->sys_error("Invalid Token"); // exit; // } $param = $this->sys_input; $id = "0"; if (isset($param['id'])) { $id = $param["id"]; } $sql_menu_active = "select M_MenuID, M_MenuName, true as isActive from m_user_permission join m_menu ON M_UserPermissionM_MenuID = M_MenuID AND M_MenuIsActive = 'Y' where M_UserPermissionM_UserID = ? AND M_UserPermissionIsActive = 'Y'"; $qry_menu_active = $this->db->query($sql_menu_active, [$id]); if (!$qry_menu_active) { $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } $rst_menu_active = $qry_menu_active->result_array(); // all menu not active $sql_menu_not_active = "select M_MenuID, M_MenuName, false as isActive from m_menu WHERE M_MenuIsActive = 'Y' AND M_MenuID Not In( select M_MenuID from m_user_permission join m_menu ON M_UserPermissionM_MenuID = M_MenuID AND M_MenuIsActive = 'Y' where M_UserPermissionM_UserID = ? AND M_UserPermissionIsActive = 'Y' ) "; $qry_menu_not_active = $this->db->query($sql_menu_not_active, [$id]); if (!$qry_menu_not_active) { $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } $last_qry_menu_not_active = $this->db->last_query(); $rst_menu_not_active = $qry_menu_not_active->result_array(); $result = []; // menu active if (count($rst_menu_active) > 0) { foreach ($rst_menu_active as $key => $vx) { $result[] = $vx; } } // menu not active if (count($rst_menu_not_active) > 0) { foreach ($rst_menu_not_active as $key => $vx) { $result[] = $vx; } } // ubah isActive 1 jadi true, jika 0 false foreach ($result as &$item) { $item['isActive'] = ($item['isActive'] === '1') ? true : false; } // proses sorting M_MenuID ASC $M_MenuID = array_column($result, 'M_MenuID'); array_multisort($M_MenuID, SORT_ASC, $result); // print_r($result); // exit; $this->sys_ok(array("records" => $result)); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } // function list_menu_by_user_id_test() // { // try { // // if (!$this->isLogin) { // // $this->sys_error("Invalid Token"); // // exit; // // } // $param = $this->sys_input; // $id = "0"; // if (isset($param['id'])) { // $id = $param["id"]; // } // $this->sys_ok(array("records" => $result)); // } catch (Exception $exc) { // $message = $exc->getMessage(); // $this->sys_error($message); // } // } function list_menu_by_user_id_22_11_2023() { try { // if (!$this->isLogin) { // $this->sys_error("Invalid Token"); // exit; // } $param = $this->sys_input; $id = "0"; if (isset($param['id'])) { $id = $param["id"]; } $sql_check = "select M_MenuID, M_MenuName, true as isActive from m_user_permission join m_menu ON M_UserPermissionM_MenuID = M_MenuID AND M_MenuIsActive = 'Y' where M_UserPermissionM_UserID = ? AND M_UserPermissionIsActive = 'Y' AND M_UserPermissionM_MenuID = 1"; $qry_check = $this->db->query($sql_check, [$id]); if (!$qry_check) { $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } $rst_check_isAdminUser = $qry_check->result_array(); $result = []; if (count($rst_check_isAdminUser) > 0) { $sql_menu_active = "select M_MenuID, M_MenuName, 'true' as isActive from m_user_permission join m_menu ON M_UserPermissionM_MenuID = M_MenuID AND M_MenuIsActive = 'Y' where M_UserPermissionM_UserID = ? AND M_UserPermissionIsActive = 'Y' AND M_UserPermissionM_MenuID = 1 UNION select M_MenuID, M_MenuName, IF(M_UserPermissionIsActive='Y','true','false') as isActive from m_user_permission join m_menu ON M_UserPermissionM_MenuID = M_MenuID AND M_MenuIsActive = 'Y' WHERE M_MenuIsActive = 'Y' AND M_UserPermissionIsActive = 'Y' AND M_MenuID Not In( select M_MenuID from m_user_permission join m_menu ON M_UserPermissionM_MenuID = M_MenuID AND M_MenuIsActive = 'Y' where M_UserPermissionM_UserID = ? AND M_UserPermissionIsActive = 'Y' AND M_UserPermissionM_MenuID = 1 )"; $qry_menu_active = $this->db->query($sql_menu_active, [$id, $id]); if (!$qry_menu_active) { $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } $rst_menu_active = $qry_menu_active->result_array(); if (count($rst_menu_active) > 0) { foreach ($rst_menu_active as $key => $vx) { $result[] = [ "M_MenuID" => $vx['M_MenuID'], "M_MenuName" => $vx['M_MenuName'], "isActive" => ($vx['isActive'] == "true") ? true : false ]; } } // print_r($rst_menu_active); // exit; // proses sorting M_MenuID ASC $M_MenuID = array_column($result, 'M_MenuID'); array_multisort($M_MenuID, SORT_ASC, $result); } else { $sql_menu_active = "select M_MenuID, M_MenuName, true as isActive from m_user_permission join m_menu ON M_UserPermissionM_MenuID = M_MenuID AND M_MenuIsActive = 'Y' where M_UserPermissionM_UserID = ? AND M_UserPermissionIsActive = 'Y'"; $qry_menu_active = $this->db->query($sql_menu_active, [$id]); if (!$qry_menu_active) { $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } $rst_menu_active = $qry_menu_active->result_array(); // all menu not active $sql_menu_not_active = "select M_MenuID, M_MenuName, false as isActive from m_menu WHERE M_MenuIsActive = 'Y' AND M_MenuID Not In( select M_MenuID from m_user_permission join m_menu ON M_UserPermissionM_MenuID = M_MenuID AND M_MenuIsActive = 'Y' where M_UserPermissionM_UserID = ? AND M_UserPermissionIsActive = 'Y' ) "; $qry_menu_not_active = $this->db->query($sql_menu_not_active, [$id]); if (!$qry_menu_not_active) { $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } $last_qry_menu_not_active = $this->db->last_query(); $rst_menu_not_active = $qry_menu_not_active->result_array(); $result = []; // menu active if (count($rst_menu_active) > 0) { foreach ($rst_menu_active as $key => $vx) { $result[] = $vx; } } // menu not active if (count($rst_menu_not_active) > 0) { foreach ($rst_menu_not_active as $key => $vx) { $result[] = $vx; } } // ubah isActive 1 jadi true, jika 0 false foreach ($result as &$item) { $item['isActive'] = ($item['isActive'] === '1') ? true : false; } // proses sorting M_MenuID ASC $M_MenuID = array_column($result, 'M_MenuID'); array_multisort($M_MenuID, SORT_ASC, $result); } // print_r($result); // exit; $this->sys_ok(array("records" => $result)); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function list_menu_by_user_id() { try { // if (!$this->isLogin) { // $this->sys_error("Invalid Token"); // exit; // } $param = $this->sys_input; $id = "0"; if (isset($param['id'])) { $id = $param["id"]; } // $sql_check = "select // M_MenuID, // M_MenuName, // true as isActive // from m_user_permission // join m_menu // ON M_UserPermissionM_MenuID = M_MenuID // AND M_MenuIsActive = 'Y' // where M_UserPermissionM_UserID = ? // AND M_UserPermissionIsActive = 'Y' // AND M_UserPermissionM_MenuID = 1"; $sql_check = "select M_UserIsAdmin from m_user WHERE M_UserID = ? AND M_UserIsActive = 'Y'"; $qry_check = $this->db->query($sql_check, [$id]); if (!$qry_check) { $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } $rst_check_isAdminUser = $qry_check->result_array(); $result = []; // print_r($rst_check_isAdminUser); // exit; $isAdmin = false; if (count($rst_check_isAdminUser) > 0) { if ($rst_check_isAdminUser[0]['M_UserIsAdmin'] == "Y") { $isAdmin = true; } } if ($isAdmin == true) { // echo 'admin'; $sql_menu_active = "select M_MenuID, M_MenuName, 'true' as isActive from m_menu WHERE M_MenuIsActive = 'Y' AND M_MenuID = 1 UNION select M_MenuID, M_MenuName, IF(M_UserPermissionIsActive='Y','true','false') as isActive from m_menu left join m_user_permission ON M_MenuID = M_UserPermissionM_MenuID AND M_MenuIsActive = 'Y' AND M_UserPermissionM_UserID = ? "; // $sql_menu_active = "select // M_MenuID, // M_MenuName, // IF(M_UserPermissionIsActive='Y','true','false') as isActive // from m_user_permission // join m_menu // ON M_UserPermissionM_MenuID = M_MenuID // AND M_MenuIsActive = 'Y' // AND M_UserPermissionM_UserID = ?"; // $qry_menu_active = $this->db->query($sql_menu_active, [$id, $id]); $qry_menu_active = $this->db->query($sql_menu_active, [$id]); if (!$qry_menu_active) { $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } $rst_menu_active = $qry_menu_active->result_array(); if (count($rst_menu_active) > 0) { foreach ($rst_menu_active as $key => $vx) { $result[] = [ "M_MenuID" => $vx['M_MenuID'], "M_MenuName" => $vx['M_MenuName'], "isActive" => ($vx['isActive'] == "true") ? true : false ]; } } // print_r($rst_menu_active); // exit; // proses sorting M_MenuID ASC $M_MenuID = array_column($result, 'M_MenuID'); array_multisort($M_MenuID, SORT_ASC, $result); } else { $sql_menu_active = "select M_MenuID, M_MenuName, 'false' as isActive from m_menu WHERE M_MenuIsActive = 'Y' AND M_MenuID = 1 UNION select M_MenuID, M_MenuName, IF(M_UserPermissionIsActive='Y','true','false') as isActive from m_menu left join m_user_permission ON M_MenuID = M_UserPermissionM_MenuID AND M_MenuIsActive = 'Y' AND M_UserPermissionM_UserID = ? "; // $qry_menu_active = $this->db->query($sql_menu_active, [$id, $id]); $qry_menu_active = $this->db->query($sql_menu_active, [$id]); if (!$qry_menu_active) { $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } $rst_menu_active = $qry_menu_active->result_array(); if (count($rst_menu_active) > 0) { foreach ($rst_menu_active as $key => $vx) { $result[] = [ "M_MenuID" => $vx['M_MenuID'], "M_MenuName" => $vx['M_MenuName'], "isActive" => ($vx['isActive'] == "true") ? true : false ]; } } // proses sorting M_MenuID ASC $M_MenuID = array_column($result, 'M_MenuID'); array_multisort($M_MenuID, SORT_ASC, $result); } // print_r($result); // exit; $this->sys_ok(array("records" => $result)); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } // menu permission by user id function get_permission_by_user_id() { try { // if (!$this->isLogin) { // $this->sys_error("Invalid Token"); // exit; // } $param = $this->sys_input; $id = "0"; if (isset($param['id'])) { $id = $param["id"]; } $sql = "SELECT M_UserPermissionM_UserID as permissionUserID, M_UserPermissionIsNasional as permissionIsNasional, M_UserPermissionRegionalJSON as permissionRegionalJSON, M_UserPermissionM_MenuID as permissionMenuID FROM one_dash.m_user_permission WHERE M_UserPermissionIsActive = 'Y' AND M_UserPermissionM_UserID = ?"; $qry = $this->db->query($sql, [$id]); if (!$qry) { $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } $rst = $qry->result_array(); $this->sys_ok(array("records" => $rst)); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } // list scope all function get_scope() { try { // if (!$this->isLogin) { // $this->sys_error("Invalid Token"); // exit; // } // $sql = "SELECT M_BranchID as branchID, M_BranchName as branchName // FROM one_dash.m_branch WHERE M_BranchIsActive = 'Y'"; // $sql = " // SELECT // S_RegionalID, // S_RegionalName, // false as isActive // FROM s_regional // WHERE S_RegionalIsActive = 'Y'"; $sql = "select 0 as S_RegionalID, 'Nasional' as S_RegionalName, false as isActive UNION SELECT S_RegionalID, S_RegionalName, false as isActive FROM s_regional WHERE S_RegionalIsActive = 'Y' "; $qry = $this->db->query($sql, []); if (!$qry) { $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } $rst = $qry->result_array(); // ubah isActive 1 jadi true, jika 0 false foreach ($rst as &$item) { $item['isActive'] = ($item['isActive'] === '1') ? true : false; } $this->sys_ok(array("records" => $rst)); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } // list scope by user id and menu id function get_permission_scope_by_menu_id_user_id() { try { // if (!$this->isLogin) { // $this->sys_error("Invalid Token"); // exit; // } $param = $this->sys_input; $user_id = "0"; if (isset($param['user_id'])) { $user_id = $param["user_id"]; } $menu_id = "0"; if (isset($param['menu_id'])) { $menu_id = $param["menu_id"]; } // scope default $sql_default = " select 0 as S_RegionalID, 'Nasional' as S_RegionalName, false as isActive UNION SELECT S_RegionalID, S_RegionalName, false as isActive FROM s_regional WHERE S_RegionalIsActive = 'Y'"; $qry_default = $this->db->query($sql_default); if (!$qry_default) { $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } $rst_scope_default = $qry_default->result_array(); // ubah isActive 1 jadi true, jika 0 false foreach ($rst_scope_default as $item) { $item['isActive'] = ($item['isActive'] === '1') ? true : false; } // scope nasional $sql_isNasional = " select 0 as S_RegionalID, 'Nasional' as S_RegionalName, true as isActive UNION SELECT S_RegionalID, S_RegionalName, false as isActive FROM s_regional WHERE S_RegionalIsActive = 'Y'"; $qry_isNasional = $this->db->query($sql_isNasional); if (!$qry_isNasional) { $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } $rst_scope_isNasional = $qry_isNasional->result_array(); // ubah isActive 1 jadi true, jika 0 false foreach ($rst_scope_isNasional as $item) { $item['isActive'] = ($item['isActive'] === '1') ? true : false; } $sql = "SELECT M_UserPermissionIsNasional as permissionIsNasional, M_UserPermissionRegionalJSON as permissionRegionalJSON FROM m_user_permission WHERE M_UserPermissionIsActive = 'Y' AND M_UserPermissionM_UserID = $user_id AND M_UserPermissionM_MenuID = $menu_id"; $qry = $this->db->query($sql); if (!$qry) { $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } $rst = $qry->row_array(); $result = []; $result_decode = []; $result_x = []; if (!empty($rst['permissionRegionalJSON'])) { $newString = str_replace("\\", "", $rst['permissionRegionalJSON']); $result_decode = json_decode($newString, true); if ($result_decode != null || $result_decode != "null") { $result_x = json_decode($newString, true); } } // klu permissionIsNasional nya N pakai dibawah if ($rst['permissionIsNasional'] == "N") { // ambil array $result_x hanya menu active // compare sama array default // jika sama maka ambil yg active, jk tidak ditambahkan for ($i = 0; $i < count($result_x); $i++) { $result_x[$i]['isActive'] = ($result_x[$i]['isActive'] === "true") ? true : false; } $id_regional = []; foreach ($result_x as $key => $vx) { $id_regional[] = $vx['S_RegionalID']; } $array_sisa_default = array_filter($rst_scope_default, function ($item) use ($id_regional) { $id = $item['S_RegionalID']; return !in_array($id, $id_regional); }); // print_r($array_sisa_default); // exit; foreach ($array_sisa_default as $index => $item) { $array_sisa_default[$index]['isActive'] = ($item['isActive'] === '1') ? true : false; } $regional = array_merge($result_x, $array_sisa_default); usort($regional, function ($a, $b) { if ($a['S_RegionalID'] > $b['S_RegionalID']) { return 1; } if ($a['S_RegionalID'] < $b['S_RegionalID']) { return -1; } return 0; }); // // $result = [ // // "permissionIsNasional" => $rst['permissionIsNasional'], // // "permissionRegionalJSON" => $result_x // // ]; $result = [ "permissionIsNasional" => $rst['permissionIsNasional'], // "permissionRegionalJSON" => $result_n "permissionRegionalJSON" => $regional ]; } // permissionIsNasional nya Y else { if ($rst['permissionIsNasional'] == "Y") { for ($i = 0; $i < count($rst_scope_isNasional); $i++) { $rst_scope_isNasional[$i]['isActive'] = ($rst_scope_isNasional[$i]['isActive'] === "1") ? true : false; } $result = [ "permissionIsNasional" => $rst['permissionIsNasional'], "permissionRegionalJSON" => $rst_scope_isNasional ]; } else { for ($i = 0; $i < count($rst_scope_default); $i++) { $rst_scope_default[$i]['isActive'] = ($rst_scope_default[$i]['isActive'] === "1") ? true : false; } // tidak ada menu yg user miliki balik ke default $result = [ "permissionIsNasional" => "", "permissionRegionalJSON" => $rst_scope_default ]; } } // $this->sys_ok(array("records" => $result)); $this->sys_ok(array("records" => $result)); // $this->sys_ok(array("records" => $result)); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } // checked or not menu (middle) function add_permission_menu() { try { // if (!$this->isLogin) { // $this->sys_error("Invalid Token"); // exit; // } $param = $this->sys_input; $user_id = "0"; if (isset($param['user_id'])) { $user_id = $param["user_id"]; } $menu_id = "0"; if (isset($param['menu_id'])) { $menu_id = $param["menu_id"]; } // $value merupakan isActive atau tidak di flutter $value = "0"; if (isset($param['value'])) { $value = $param["value"]; } if ($user_id == "0" || $menu_id == "0" || $value == "0") { $this->sys_error("User ID, Menu ID & value are mandatory"); } $active = "N"; if ($value == "true") { $active = 'Y'; } $sql_cek = "SELECT * FROM one_dash.m_user_permission WHERE M_UserPermissionM_UserID = ? AND M_UserPermissionM_MenuID = ?"; $qry_cek = $this->db->query($sql_cek, [$user_id, $menu_id]); if (!$qry_cek) { $this->db->trans_rollback(); $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } $rst_cek = $qry_cek->result_array(); // klu menu nya Admin User if ($menu_id == "1") { $sql_update = "UPDATE one_dash.m_user SET M_UserIsAdmin =? WHERE M_UserID = ?"; $qry_update = $this->db->query($sql_update, [$active, $user_id]); if (!$qry_update) { $this->db->trans_rollback(); $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } // UPDATE TOKEN USER UNTUK AUTO LOGOUT $sql_update_token_user = "UPDATE m_user SET M_UserIsLoggedIn = 'N', M_UserLastAccess = now(), M_UserActiveToken = NULL WHERE M_UserID = ?"; $qry_update_token = $this->db->query($sql_update_token_user, array($user_id)); if (!$qry_update_token) { $this->db->trans_rollback(); $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } } if (count($rst_cek) == 0) { //insert menu baru $sql_insert = "INSERT INTO one_dash.m_user_permission ( M_UserPermissionIsNasional, M_UserPermissionM_UserID, M_UserPermissionRegionalJSON, M_UserPermissionM_MenuID ) VALUES(?,?,?,?)"; $qry_insert = $this->db->query($sql_insert, ['N', $user_id, '[]', $menu_id]); if (!$qry_insert) { $this->db->trans_rollback(); $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } // UPDATE TOKEN USER UNTUK AUTO LOGOUT $sql_update_token_user = "UPDATE m_user SET M_UserIsLoggedIn = 'N', M_UserLastAccess = now(), M_UserActiveToken = NULL WHERE M_UserID = ?"; $qry_update_token = $this->db->query($sql_update_token_user, array($user_id)); if (!$qry_update_token) { $this->db->trans_rollback(); $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } } else { // update menu M_UserPermissionRegionalJSON diabaikan $sql_update = "UPDATE one_dash.m_user_permission SET M_UserPermissionIsActive = '$active' WHERE M_UserPermissionM_UserID = $user_id AND M_UserPermissionM_MenuID = $menu_id"; // echo $sql_update; // exit; $qry_update = $this->db->query($sql_update); if (!$qry_update) { $this->db->trans_rollback(); $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } // UPDATE TOKEN USER UNTUK AUTO LOGOUT $sql_update_token_user = "UPDATE m_user SET M_UserIsLoggedIn = 'N', M_UserLastAccess = now(), M_UserActiveToken = NULL WHERE M_UserID = ?"; $qry_update_token = $this->db->query($sql_update_token_user, array($user_id)); if (!$qry_update_token) { $this->db->trans_rollback(); $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } } $this->sys_ok("Success"); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } // checked or not scope (right) function add_permission_scope() { try { // if (!$this->isLogin) { // $this->sys_error("Invalid Token"); // exit; // } $param = $this->sys_input; $user_id = "0"; if (isset($param['user_id'])) { $user_id = $param["user_id"]; } $menu_id = "0"; if (isset($param['menu_id'])) { $menu_id = $param["menu_id"]; } $json = "0"; if (isset($param['json'])) { $json = $param["json"]; } $isNasional = "N"; if (isset($param['is_nasional'])) { $isNasional = $param["is_nasional"]; } if ($user_id == "0" || $menu_id == "0" || $json == "0") { $this->sys_error("User ID, Menu ID & json are mandatory"); } $sql_cek = "SELECT * FROM one_dash.m_user_permission WHERE M_UserPermissionM_UserID = ? AND M_UserPermissionM_MenuID = ? AND M_UserPermissionIsActive = 'Y'"; $qry_cek = $this->db->query($sql_cek, [$user_id, $menu_id]); if (!$qry_cek) { $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } $rst_cek = $qry_cek->result_array(); if (count($rst_cek) > 0) { $sql_update = "UPDATE one_dash.m_user_permission SET M_UserPermissionIsNasional = ? WHERE M_UserPermissionM_MenuID = ? AND M_UserPermissionM_UserID = ?"; $qry_update = $this->db->query($sql_update, [$isNasional, $menu_id, $user_id]); if (!$qry_update) { $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } $sql_update = "UPDATE one_dash.m_user_permission SET M_UserPermissionRegionalJSON= ? WHERE M_UserPermissionM_MenuID = ? AND M_UserPermissionM_UserID = ?"; $qry_update = $this->db->query($sql_update, [$json, $menu_id, $user_id]); if (!$qry_update) { $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } // UPDATE TOKEN USER UNTUK AUTO LOGOUT $sql_update_token_user = "UPDATE m_user SET M_UserIsLoggedIn = 'N', M_UserLastAccess = now(), M_UserActiveToken = NULL WHERE M_UserID = ?"; $qry_update_token = $this->db->query($sql_update_token_user, array($user_id)); if (!$qry_update_token) { $this->db->trans_rollback(); $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } $this->sys_ok("Success"); } else { $this->sys_error("No data match"); } } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } // scope is nasional by user id and menu id function get_permission_scope_nasional() { try { // if (!$this->isLogin) { // $this->sys_error("Invalid Token"); // exit; // } $param = $this->sys_input; $user_id = "0"; if (isset($param['user_id'])) { $user_id = $param["user_id"]; } $menu_id = "0"; if (isset($param['menu_id'])) { $menu_id = $param["menu_id"]; } $sql = "SELECT M_UserPermissionIsNasional as permissionIsNasional FROM m_user_permission WHERE M_UserPermissionIsActive = 'Y' AND M_UserPermissionM_UserID = $user_id AND M_UserPermissionM_MenuID = $menu_id"; $qry = $this->db->query($sql); if (!$qry) { $error = array( "message" => $this->db->error()["message"], "sql" => $this->db->last_query() ); $this->sys_error_db($error); exit; } $rst = $qry->row_array(); $result = [ "permissionIsNasional" => "" ]; if (count($rst) > 0) { // array_push($result, $rst['permissionIsNasional']); $result = [ "permissionIsNasional" => $rst['permissionIsNasional'] ]; } else { $result = [ "permissionIsNasional" => "" ]; } $this->sys_ok(array("records" => [$result])); // $this->sys_ok(array("records" => $result)); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } }