Files
BE_CPONE/application/controllers/mockup/masterdata/Setupgroup.php
2026-04-27 10:31:17 +07:00

413 lines
15 KiB
PHP

<?php
class Setupgroup extends MY_Controller
{
var $db_onedev;
public function index()
{
echo "RESULT FLAG USED API";
}
public function __construct()
{
parent::__construct();
$this->db_onedev = $this->load->database("onedev", true);
}
function searchproject()
{
try {
//# cek token valid
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$q = [
'search' => '%'
];
if ($prm['search_project'] != '') {
$q['search'] = "%{$prm['search_project']}%";
}
$q['details'] = "";
if (!empty($prm['details']) && count($prm['details']) > 0 && $prm['type'] == "project") {
$mgm_mcu_numbers = [];
foreach ($prm['details'] as $detail) {
$mgm_mcu_numbers[] = "'".$detail['Mgm_McuNumber']."'";
$q['details'] .= "AND Mgm_McuGroupDetailMgm_McuID IS NULL AND Mgm_McuNumber NOT IN (".implode(',', $mgm_mcu_numbers).")";
}
}
$sql = "SELECT Mgm_McuID, Mgm_McuNumber, Mgm_McuLabel
FROM mgm_mcu
JOIN corporate ON Mgm_McuCorporateID = CorporateID AND CorporateIsActive = 'Y'
LEFT JOIN mgm_mcugroupdetail ON Mgm_McuGroupDetailMgm_McuID = Mgm_McuID AND Mgm_McuGroupDetailIsActive = 'Y'
WHERE Mgm_McuIsActive = 'Y'
AND ( Mgm_McuNumber LIKE ? OR Mgm_McuLabel LIKE ? )
{$q['details']}
LIMIT 20;";
$query = $this->db_onedev->query($sql, array($q['search'], $q['search']));
//echo $this->db_onedev->last_query();
if ($query) {
$rows = $query->result_array();
//echo $this->db_onedev->last_query();
$result = array("last_query" => $this->db_onedev->last_query(), "records" => $rows);
$this->sys_ok($result);
} else {
$this->sys_error_db("Test rows", $this->db_onedev, array(
"last_query" => $this->db_onedev->last_query()
));
exit;
}
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
function searchcorporate()
{
try {
//# cek token valid
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$q = [
'search' => '%'
];
if ($prm['search_corporate'] != '') {
$q['search'] = "%{$prm['search_corporate']}%";
}
$sql = "SELECT CorporateID, CorporateName
FROM corporate
WHERE CorporateIsActive = 'Y'
AND ( CorporateName LIKE ? )
LIMIT 20;";
$query = $this->db_onedev->query($sql, array($q['search']));
if ($query) {
$rows = $query->result_array();
//echo $this->db_onedev->last_query();
$result = array("last_query" => $this->db_onedev->last_query(), "records" => $rows);
$this->sys_ok($result);
} else {
$this->sys_error_db("Test rows", $this->db_onedev, array(
"last_query" => $this->db_onedev->last_query()
));
exit;
}
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
function searchgroupproject()
{
try {
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$filter_corporate = $prm["filter_corporate"] ?? [];
$filter_project = $prm["filter_project"] ?? [];
$current_page = $prm["current_page"] ?? 1;
$number_limit = 10;
$number_offset = ($current_page - 1) * $number_limit;
$params_count = [];
$params = [];
// hitung total
$sql_count = "SELECT COUNT(*) as total
FROM (
SELECT DISTINCT Mgm_McuGroupID
FROM mgm_mcugroup
JOIN mgm_mcugroupdetail ON Mgm_McuGroupDetailMgm_McuGroupID = Mgm_McuGroupID AND Mgm_McuGroupDetailIsActive = 'Y'
JOIN mgm_mcu ON Mgm_McuGroupDetailMgm_McuID = Mgm_McuID
JOIN corporate ON Mgm_McuCorporateID = CorporateID AND CorporateIsActive = 'Y'
WHERE Mgm_McuGroupIsActive = 'Y'
) x";
if(!empty($filter_corporate)){
$sql_count .= " AND Mgm_McuCorporateID = ?";
$params_count[] = $filter_corporate['CorporateID'];
}
if(!empty($filter_project)){
$sql_count .= " AND Mgm_McuGroupDetailMgm_McuID = ?";
$params_count[] = $filter_project['Mgm_McuID'];
}
$query = $this->db_onedev->query($sql_count, $params_count);
$tot_count = $query ? $query->row()->total : 0;
$tot_page = ceil($tot_count / $number_limit);
// ambil data
$sql = "SELECT DISTINCT Mgm_McuGroupID,mgm_mcugroup.*, '' as details
FROM mgm_mcugroup
JOIN mgm_mcugroupdetail ON Mgm_McuGroupDetailMgm_McuGroupID = Mgm_McuGroupID AND Mgm_McuGroupDetailIsActive = 'Y'
JOIN mgm_mcu ON Mgm_McuGroupDetailMgm_McuID = Mgm_McuID
JOIN corporate ON Mgm_McuCorporateID = CorporateID AND CorporateIsActive = 'Y'
WHERE Mgm_McuGroupIsActive = 'Y'
";
if(count($filter_corporate) > 0){
$sql .= " AND Mgm_McuCorporateID = ?";
$params[] = $filter_corporate['CorporateID'];
}
if(count($filter_project) > 0){
$sql .= " AND Mgm_McuGroupDetailMgm_McuID = ?";
$params[] = $filter_project['Mgm_McuID'];
}
$sql .= " LIMIT ? OFFSET ?";
$params_data = array_merge($params, [$number_limit, $number_offset]);
// print_r($params_data);
$query = $this->db_onedev->query($sql, $params_data);
//echo $this->db_onedev->last_query();
$rows = $query ? $query->result_array() : [];
if(!empty($rows)){
foreach($rows as $key => $row){
$sql = "SELECT *
FROM mgm_mcugroupdetail
JOIN mgm_mcu ON Mgm_McuGroupDetailMgm_McuID = Mgm_McuID
JOIN corporate ON Mgm_McuCorporateID = CorporateID AND CorporateIsActive = 'Y'
WHERE Mgm_McuGroupDetailMgm_McuGroupID = ? AND Mgm_McuGroupDetailIsActive = 'Y'
";
$query = $this->db_onedev->query($sql, [$row['Mgm_McuGroupID']]);
// echo $this->db_onedev->last_query();
$rows_detail = $query ? $query->result_array() : [];
$rows[$key]['details'] = $rows_detail;
}
}
$result = [
"last_query" => $this->db_onedev->last_query(),
"message" => $rows ? "Data Ditemukan" : "Data Tidak Ditemukan",
"total" => $tot_count,
"total_page" => $tot_page,
"records" => $rows
];
$this->sys_ok($result);
} catch (Exception $exc) {
$this->sys_error($exc->getMessage());
}
}
function addresultflag()
{
try {
//# cek token valid
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$name = $prm["name"];
$details = $prm["details"];
$userid = $this->sys_user["M_UserID"];
$this->db_onedev->trans_begin();
$sql = "SELECT * FROM mgm_mcugroup WHERE Mgm_McuGroupIsActive = 'Y' AND Mgm_McuGroupName = ?";
$query = $this->db_onedev->query($sql, [$name]);
if (!$query) {
$this->db_onedev->trans_rollback();
$this->sys_error_db("Mgm_McuGroup Select Error");
exit;
}
$rows = $query->result_array();
if(count($rows) > 0){
$this->sys_error("Nama sudah ada");
exit;
}
$sql = "INSERT INTO mgm_mcugroup (Mgm_McuGroupName, Mgm_McuGroupCreatedUserID, Mgm_McuGroupCreated) VALUES (?, ?, NOW())";
$query = $this->db_onedev->query($sql, [$name, $userid]);
if (!$query) {
$this->db_onedev->trans_rollback();
$this->sys_error_db("Mgm_McuGroup Insert Error");
exit;
}
$mcu_group_id = $this->db_onedev->insert_id();
if(count($details) > 0){
foreach($details as $detail){
$sql = "INSERT INTO mgm_mcugroupdetail (
Mgm_McuGroupDetailMgm_McuID,
Mgm_McuGroupDetailMgm_McuGroupID,
Mgm_McuGroupDetailCreated,
Mgm_McuGroupDetailCreatedUserID)
VALUES (?, ?, NOW(), ?)";
$query = $this->db_onedev->query($sql, [$detail['Mgm_McuID'], $mcu_group_id, $userid]);
if (!$query) {
$this->db_onedev->trans_rollback();
//echo $this->db_onedev->last_query();
$this->sys_error_db("Mgm_McuGroupDetail Insert Error");
exit;
}
}
}
$result = [
"message" => "Berhasil Tambah Data",
"records" => $mcu_group_id
];
$this->db_onedev->trans_commit();
$this->sys_ok($result);
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
function deletegroupproject()
{
try {
//# cek token valid
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$this->db_onedev->trans_begin();
$id = $prm["id"];
$userid = $this->sys_user["M_UserID"];
$sql = "SELECT * FROM mgm_mcugroup
WHERE Mgm_McuGroupID = ?
AND Mgm_McuGroupIsActive= 'Y'";
$query = $this->db_onedev->query($sql, [$id]);
$rows = $query->result_array();
if (!$rows) {
$data = $this->sys_ok("Tidak Ada yang Didelete");
return $data;
}
$sql = "UPDATE mgm_mcugroup
SET
Mgm_McuGroupIsActive = 'N',
Mgm_McuGroupDeleted = NOW(),
Mgm_McuGroupDeletedUserID = ?
WHERE Mgm_McuGroupID = ?
AND Mgm_McuGroupIsActive= 'Y'";
$query = $this->db_onedev->query($sql, [$userid, $id]);
if (!$query) {
$this->db_onedev->trans_rollback();
$this->sys_error_db("Result Flag Delete | " . $this->db_onedev->last_query());
exit;
}
$result = array("last_query" => $this->db_onedev->last_query(), "message" => "Berhasil Delete");
$this->db_onedev->trans_commit();
$this->sys_ok($result);
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
function updateresultflag()
{
try {
//# cek token valid
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$this->db_onedev->trans_begin();
$resultid = $prm["resultid"];
$resulttest = $prm["nattestid"];
$resultname = $prm["resultname"];
$resultflag = $prm["resultflag"];
$sql = "SELECT * FROM m_resultflag
WHERE M_ResultFlagID = ?
AND M_ResultFlagIsActive= 'Y'";
$query = $this->db_onedev->query($sql, [$resultid]);
$rows = $query->result_array();
if (!$rows) {
$data = $this->sys_ok("Tidak Ada yang Didelete");
return $data;
}
$row = $rows[0];
$message = [
"Nat_ID" => $row['M_ResultFlagNat_TestID'],
"Nama" => $row['M_ResultFlagName'],
"Flag" => $row['M_ResultFlagFlag']
];
$sql = "UPDATE m_resultflag
SET
M_ResultFlagNat_TestID = ?,
M_ResultFlagName = ?,
M_ResultFlagFlag = ?,
M_ResultFlagLasUpdated = NOW()
WHERE M_ResultFlagID = ?
AND M_ResultFlagIsActive= 'Y'";
$query = $this->db_onedev->query($sql, [$resulttest,$resultname,$resultflag,$resultid]);
if (!$query) {
$this->db_onedev->trans_rollback();
$result = [
"message" => "Data Gagal Diupdate",
"last_query" => $this->db_onedev->last_query(),
];
$this->sys_error_db($result);
exit;
}
$result = array("last_query" => $this->db_onedev->last_query(), "message" => "Berhasil Update");
$this->db_onedev->trans_commit();
$this->sys_ok($result);
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
}