Files
be-accone/application/controllers/itemdivision/Itemdivision.php

365 lines
13 KiB
PHP

<?php
class Itemdivision extends MY_Controller {
var $db_onedev;
public function index()
{
echo "AUTH API";
}
public function __construct()
{
parent::__construct();
$this->db_onedev = $this->load->database("onedev", true);
}
// search item
function search_item()
{
try {
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$search_item = isset($prm['search_item']) ? trim($prm['search_item']) : '';
$where_search = '%'.$search_item.'%';
$itemCategoryID = isset($prm['itemCategoryID']) ? (int) $prm['itemCategoryID'] : (int) 0;
$where_item_category_id = ($itemCategoryID > 0) ? "AND itemCategoryID = '$itemCategoryID'" : "";
// $number_offset = ($prm["current_page"] > 0) ? ($prm["current_page"] - 1) * 20 : 0;
// $number_limit = 2;
$number_limit = 10;
$number_offset = ($prm["current_page"] > 0) ? ($prm["current_page"] - 1) * $number_limit : 0;
$sql = "SELECT
M_ItemID,
IFNULL(itemCategoryName, '') AS itemCategoryName,
IFNULL(M_ItemCode, '') AS M_ItemCode,
IFNULL(M_ItemDesc, '') AS M_ItemDesc
from m_item
join item_category
ON M_ItemItem_CategoryID = itemCategoryID
AND itemCategoryIsActive = 'Y'
WHERE M_ItemIsActive = 'Y'
$where_item_category_id
AND (
M_ItemDesc LIKE '$where_search'
OR M_ItemCode LIKE '$where_search'
)
ORDER BY M_ItemID ASC";
$sql_total = "SELECT count(*) as total FROM ($sql) as x";
$qry_total = $this->db_onedev->query($sql_total);
$totalCount = 0;
$totalPage = 0;
if ($qry_total) {
$totalCount = $qry_total->result_array()[0]["total"];
$totalPage = ceil($totalCount / $number_limit);
} else {
$this->sys_error_db("select m_item count error", $this->db_onedev);;
exit;
}
$sql_select = $sql . " LIMIT $number_limit OFFSET $number_offset";
$qry = $this->db_onedev->query($sql_select);
if(!$qry){
$this->db_onedev->trans_rollback();
$this->sys_error_db("select m_item error", $this->db_onedev);
exit;
}
$rows = $qry->result_array();
$response = [
"total" => $totalPage,
"totalFilter" => $totalCount,
"records" => $rows,
"sql" => $this->db_onedev->last_query()
];
$this->sys_ok($response);
} catch (Exception $exc) {
$this->sys_error($exc->getMessage());
}
}
// dropdown item_category
function dropdown_item_category()
{
$prm = $this->sys_input;
try {
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$sql = "SELECT
itemCategoryID,
itemCategoryName
FROM item_category
WHERE itemCategoryIsActive = 'Y'
ORDER BY itemCategoryID ASC";
// echo $sql;
// die();
$qry = $this->db_onedev->query($sql, array());
if (!$qry) {
// $this->db->trans_rollback();
$this->sys_error_db("Error get dropdown item_category");
exit;
}
$rows = $qry->result_array();
if(count($rows) > 0){
$response = [
"records" => $rows,
"sql" => $this->db_onedev->last_query()
];
$this->sys_ok($response);
} else {
$rows[] = [
"M_ItemID" => 0,
"itemCategoryName" => "Item Tidak Ada",
"M_ItemCode" => "",
"M_ItemDesc" => ""
];
$response = [
"records" => $rows,
"sql" => $this->db_onedev->last_query()
];
$this->sys_ok($response);
}
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
// item division list
function item_division_list()
{
try {
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$M_ItemID = isset($prm['M_ItemID']) ? (int) $prm['M_ItemID'] : (int) 0;
$where_item_id = ($M_ItemID > 0) ? "AND M_ItemDivisionM_ItemID = '$M_ItemID'" : "";
// $number_offset = ($prm["current_page"] > 0) ? ($prm["current_page"] - 1) * 20 : 0;
// $number_limit = 2;
$number_limit = 10;
$number_offset = ($prm["current_page"] > 0) ? ($prm["current_page"] - 1) * $number_limit : 0;
$sql = "SELECT
IFNULL(M_ItemDivisionID, 0) AS M_ItemDivisionID,
IFNULL(M_ItemDivisionM_ItemID, 0) AS M_ItemDivisionM_ItemID,
DivisionName,
IFNULL(DivisionID, 0) AS DivisionID,
CASE
WHEN M_ItemDivisionIsActive = 'Y'
THEN 1
ELSE 0
END as IsChecked
from division
left join m_itemdivision
ON DivisionID = M_ItemDivisionID
$where_item_id
where DivisionIsActive = 'Y'
ORDER BY DivisionID asc";
$sql_total = "SELECT count(*) as total FROM ($sql) as x";
$qry_total = $this->db_onedev->query($sql_total);
$totalCount = 0;
$totalPage = 0;
if ($qry_total) {
$totalCount = $qry_total->result_array()[0]["total"];
$totalPage = ceil($totalCount / $number_limit);
} else {
$this->sys_error_db("select m_itemdivision count error", $this->db_onedev);;
exit;
}
// $sql_select = $sql . " LIMIT $number_limit OFFSET $number_offset";
$sql_select = $sql;
$qry = $this->db_onedev->query($sql_select);
if(!$qry){
$this->db_onedev->trans_rollback();
$this->sys_error_db("select m_itemdivision error", $this->db_onedev);
exit;
}
$rows = $qry->result_array();
$response = [
"total" => $totalPage,
"totalFilter" => $totalCount,
"records" => $rows,
"sql" => $this->db_onedev->last_query()
];
$this->sys_ok($response);
} catch (Exception $exc) {
$this->sys_error($exc->getMessage());
}
}
// update m_itemdivision
function update_item_division()
{
try {
// Cek token valid
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$this->db_onedev->trans_begin();
$prm = $this->sys_input;
$userid = $this->sys_user["M_UserID"];
$M_ItemDivisionID = isset($prm['M_ItemDivisionID']) ? $prm['M_ItemDivisionID'] : [];
$M_ItemID = isset($prm['M_ItemID']) ? (int) $prm['M_ItemID'] : (int) 0;
$where_item_id = ($M_ItemID > 0) ? "AND M_ItemDivisionM_ItemID = '$M_ItemID'" : "";
// $sql_u = "";
// var_dump($M_ItemDivisionID);
if(count($M_ItemDivisionID) > 0){
foreach ($M_ItemDivisionID as $row) {
$id = $row['M_ItemDivisionID'];
$M_ItemDivisionDivisionID = $row['DivisionID'];
// $M_ItemDivisionM_ItemID = $row['M_ItemDivisionM_ItemID'];
$flag = ($row['IsChecked'] === "1") ? "Y" : "N";
// check data jika ada update jika tidak ada insert
$sql_c = "SELECT *
FROM m_itemdivision
WHERE M_ItemDivisionID = '$id'";
$qry_c = $this->db_onedev->query($sql_c);
if(!$qry_c){
$this->db_onedev->trans_rollback();
$this->sys_error_db("query check data m_itemdivision", $this->db_onedev);
exit;
}
$rc = $qry_c->result_array();
if(count($rc) > 0) {
// update
$sql_u = "UPDATE m_itemdivision SET
M_ItemDivisionIsActive = '$flag',
M_ItemDivisionLastUpdatedUserID = '$userid',
M_ItemDivisionLastUpdated = NOW()
WHERE M_ItemDivisionID = '$id'";
// echo $sql_u;
$query_u = $this->db_onedev->query($sql_u);
if(!$query_u){
$this->db_onedev->trans_rollback();
$this->sys_error_db("query m_itemdivision update", $this->db_onedev);
exit;
}
} else{
// insert
$sql_i = "INSERT INTO m_itemdivision (
M_ItemDivisionM_ItemID,
M_ItemDivisionDivisionID,
M_ItemDivisionIsActive,
M_ItemDivisionCreated,
M_ItemDivisionCreatedUserID
) VALUES (
'$M_ItemID',
'$M_ItemDivisionDivisionID',
'Y',
NOW(),
$userid
)";
$query_i = $this->db_onedev->query($sql_i);
if(!$query_i){
$this->db_onedev->trans_rollback();
$this->sys_error_db("query m_itemdivision insert", $this->db_onedev);
exit;
}
}
}
}
$number_limit = 10;
$number_offset = ($prm["current_page"] > 0) ? ($prm["current_page"] - 1) * $number_limit : 0;
$sql = "SELECT
IFNULL(M_ItemDivisionID, 0) AS M_ItemDivisionID,
IFNULL(M_ItemDivisionM_ItemID, 0) AS M_ItemDivisionM_ItemID,
DivisionName,
IFNULL(DivisionID, 0) AS DivisionID,
CASE
WHEN M_ItemDivisionIsActive = 'Y'
THEN 1
ELSE 0
END as IsChecked
from division
left join m_itemdivision
ON DivisionID = M_ItemDivisionID
$where_item_id
where DivisionIsActive = 'Y'
ORDER BY DivisionID asc";
$sql_total = "SELECT count(*) as total FROM ($sql) as x";
$qry_total = $this->db_onedev->query($sql_total);
$totalCount = 0;
$totalPage = 0;
if ($qry_total) {
$totalCount = $qry_total->result_array()[0]["total"];
$totalPage = ceil($totalCount / $number_limit);
} else {
$this->sys_error_db("select m_itemdivision count error", $this->db_onedev);;
exit;
}
$sql_select = $sql;
$qry = $this->db_onedev->query($sql_select);
if(!$qry){
$this->db_onedev->trans_rollback();
$this->sys_error_db("select m_itemdivision error", $this->db_onedev);
exit;
}
$this->db_onedev->trans_commit();
$rows = $qry->result_array();
$response = [
"total" => $totalPage,
"totalFilter" => $totalCount,
"records" => $rows,
"sql" => $this->db_onedev->last_query()
];
$this->sys_ok($response);
} catch (Exception $exc) {
$this->sys_error($exc->getMessage());
}
}
}