isLogin) { throw new Exception('Invalid token'); } $para = $this->sys_input; $keyword = "%"; if (isset($para['keyword'])) { $keyword .= $para['keyword'] . "%"; } $limit = 10; $offset = 0; if ($para['latestPage'] > 0) { $offset = ($para['latestPage'] - 1) * $limit; } $sql = "SELECT r.M_RuanganID AS id, r.M_RuanganM_BranchID AS branch_id, b.M_BranchName AS branch_name, b.M_BranchCode AS branch_code, r.M_RuanganCode AS code, r.M_RuanganName AS name, r.M_RuanganUserID AS user_id, r.M_RuanganCreated AS created, r.M_RuanganLastUpdated AS last_updated FROM m_ruangan r JOIN m_branch b ON b.M_BranchID = r.M_RuanganM_BranchID AND b.M_BranchIsActive = 'Y' JOIN s_regional s ON s.S_RegionalID = b.M_BranchS_RegionalID WHERE r.M_RuanganIsActive = 'Y' AND s.S_RegionalID = ? AND (? = 0 OR r.M_RuanganM_BranchID = ?) AND ( r.M_RuanganName LIKE ? OR r.M_RuanganCode LIKE ?)"; $sql_data = $sql . " ORDER BY r.M_RuanganName ASC LIMIT ? OFFSET ? "; $que_data = $this->db->query($sql_data, [ $para['regionalID'], $para['branchID'], $para['branchID'], $keyword, $keyword, $limit, $offset ]); if (!$que_data) { throw new Exception('failed to query data ruangan', 1); } $data = $que_data->result_array(); $sql_total = "SELECT COUNT(*) AS total FROM ($sql) AS x"; $que_total = $this->db->query($sql_total, [ $para['regionalID'], $para['branchID'], $para['branchID'], $keyword, $keyword, ]); if (!$que_total) { throw new Exception('failed to query total data ruangan', 1); } $total = $que_total->row_array()['total']; $this->sys_ok([ "records" => $data, "total" => $total ]); } catch (Exception $e) { $msg = '[Error] ' . $e->getMessage(); $code = $e->getCode(); if ($code == 0) { $this->sys_error($msg); } else { $this->sys_error_db($msg); } exit; } } function insertRuangan() { try { if (!$this->isLogin) { throw new Exception('Invalid token'); } $para = $this->sys_input; $userid = $this->sys_user['M_UserID']; $this->db->trans_begin(); $sql_check = "SELECT COUNT(*) AS exist FROM m_ruangan WHERE M_RuanganIsActive = 'Y' AND M_RuanganM_BranchID = ? AND M_RuanganCode = ?"; $que_check = $this->db->query($sql_check, [ $para['branchID'], $para['ruanganCode'] ]); if (!$que_check) { throw new Exception('failed to check duplicate ruangan', 1); } if ($que_check->row_array()['exist'] > 0) { throw new Exception('ruangan already exists'); } $sql = "INSERT INTO m_ruangan ( M_RuanganM_BranchID, M_RuanganName, M_RuanganCode, M_RuanganUserID, M_RuanganIsActive, M_RuanganCreated, M_RuanganLastUpdated ) VALUES (?,?,?,?,'Y',NOW(),NOW())"; $que = $this->db->query($sql, [ $para['branchID'], $para['ruanganName'], $para['ruanganCode'], $userid ]); if (!$que) { throw new Exception('failed to insert ruangan', 1); } $insert_id = $this->db->insert_id(); $this->db->trans_commit(); $this->sys_ok([ "records" => [ "id" => $insert_id, "name" => $para['ruanganName'], "msg" => "Success Insert Ruangan" ] ]); } catch (Exception $e) { $this->db->trans_rollback(); $msg = '[Error] ' . $e->getMessage(); $code = $e->getCode(); if ($code == 0) { $this->sys_error($msg); } else { $this->sys_error_db($msg); } exit; } } function updateRuangan() { try { if (!$this->isLogin) { throw new Exception('Invalid token'); } $para = $this->sys_input; $userid = $this->sys_user['M_UserID']; $this->db->trans_begin(); $sql_check = "SELECT COUNT(*) AS exist FROM m_ruangan WHERE M_RuanganIsActive = 'Y' AND M_RuanganM_BranchID = ? AND M_RuanganCode = ? AND M_RuanganID != ?"; $que_check = $this->db->query($sql_check, [ $para['branchID'], $para['ruanganCode'], $para['ruanganID'] ]); if (!$que_check) { throw new Exception('failed to check duplicate ruangan', 1); } if ($que_check->row_array()['exist'] > 0) { throw new Exception('ruangan already exists'); } $sql = "UPDATE m_ruangan SET M_RuanganM_BranchID = ?, M_RuanganName = ?, M_RuanganCode = ?, M_RuanganUserID = ?, M_RuanganLastUpdated = NOW() WHERE M_RuanganID = ? AND M_RuanganIsActive = 'Y'"; $que = $this->db->query($sql, [ $para['branchID'], $para['ruanganName'], $para['ruanganCode'], $userid, $para['ruanganID'] ]); if (!$que) { throw new Exception('failed to update ruangan', 1); } $this->db->trans_commit(); $this->sys_ok([ "records" => [ "id" => $para['ruanganID'], "name" => $para['ruanganName'], "msg" => "Success Update Ruangan" ] ]); } catch (Exception $e) { $this->db->trans_rollback(); $msg = '[Error] ' . $e->getMessage(); $code = $e->getCode(); if ($code == 0) { $this->sys_error($msg); } else { $this->sys_error_db($msg); } exit; } } function deleteRuangan() { try { if (!$this->isLogin) { throw new Exception('Invalid token'); } $para = $this->sys_input; $userid = $this->sys_user['M_UserID']; $this->db->trans_begin(); $sql = "UPDATE m_ruangan SET M_RuanganIsActive = 'N', M_RuanganUserID = ?, M_RuanganDeleted = NOW(), M_RuanganLastUpdated = NOW() WHERE M_RuanganID = ? AND M_RuanganIsActive = 'Y'"; $que = $this->db->query($sql, [ $userid, $para['ruanganID'] ]); if (!$que) { throw new Exception('failed to delete ruangan', 1); } $this->db->trans_commit(); $this->sys_ok([ "records" => [ "id" => $para['ruanganID'], "msg" => "Success Update Ruangan" ] ]); } catch (Exception $e) { $this->db->trans_rollback(); $msg = '[Error] ' . $e->getMessage(); $code = $e->getCode(); if ($code == 0) { $this->sys_error($msg); } else { $this->sys_error_db($msg); } exit; } } }