Files
BE_IBL/application/controllers/one-dash/Usermenu.php
2026-04-15 15:23:57 +07:00

1296 lines
45 KiB
PHP

<?php
class Usermenu extends MY_Controller
{
var $db;
public function index()
{
echo "Usermenu API";
}
public function __construct()
{
parent::__construct();
// $this->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);
}
}
}