Add status/name/nolab/company filters to search_v2
Previously search_v2 ignored all filters from the request. Now status=''/any, name, nolab, company are applied dynamically. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -397,18 +397,42 @@ class Patient extends MY_Controller
|
||||
|
||||
$startdate = isset($prm["startdate"]) && $prm["startdate"] != '' ? $prm["startdate"] : date('Y-m-d');
|
||||
$enddate = isset($prm["enddate"]) && $prm["enddate"] != '' ? $prm["enddate"] : date('Y-m-d');
|
||||
$name = isset($prm["name"]) ? trim($prm["name"]) : '';
|
||||
$nolab = isset($prm["nolab"]) ? trim($prm["nolab"]) : '';
|
||||
$status = isset($prm["status"]) ? trim($prm["status"]) : '';
|
||||
$company = isset($prm["company"]["M_CompanyID"]) ? (int)$prm["company"]["M_CompanyID"] : 0;
|
||||
|
||||
$page = isset($prm["page"]) && $prm["page"] > 0 ? (int)$prm["page"] : 1;
|
||||
$limit = 8;
|
||||
$offset = ($page - 1) * $limit;
|
||||
|
||||
// Build dynamic WHERE filters
|
||||
$extra_where = '';
|
||||
$extra_params = array();
|
||||
if ($status != '') {
|
||||
$extra_where .= ' AND tse.T_SendEmailStatus = ?';
|
||||
$extra_params[] = $status;
|
||||
}
|
||||
if ($name != '') {
|
||||
$extra_where .= ' AND tse.T_SendEmailPatientName LIKE ?';
|
||||
$extra_params[] = '%' . $name . '%';
|
||||
}
|
||||
if ($nolab != '') {
|
||||
$extra_where .= ' AND toh.T_OrderHeaderLabNumber LIKE ?';
|
||||
$extra_params[] = '%' . $nolab . '%';
|
||||
}
|
||||
if ($company > 0) {
|
||||
$extra_where .= ' AND toh.T_OrderHeaderM_CompanyID = ?';
|
||||
$extra_params[] = $company;
|
||||
}
|
||||
|
||||
// ================= TOTAL DATA =================
|
||||
$sql_count = "SELECT COUNT(*) as total
|
||||
FROM t_send_email tse
|
||||
JOIN t_orderheader toh
|
||||
JOIN t_orderheader toh
|
||||
ON tse.T_SendEmailT_OrderHeaderID = toh.T_OrderHeaderID
|
||||
JOIN (
|
||||
SELECT
|
||||
SELECT
|
||||
T_OrderPromiseT_OrderHeaderID,
|
||||
MAX(T_OrderPromiseDateTime) AS T_OrderPromiseDateTime
|
||||
FROM t_orderpromise
|
||||
@@ -418,14 +442,15 @@ class Patient extends MY_Controller
|
||||
ON tp_latest.T_OrderPromiseT_OrderHeaderID = toh.T_OrderHeaderID
|
||||
WHERE tse.T_SendEmailIsActive = 'Y'
|
||||
AND DATE(tp_latest.T_OrderPromiseDateTime)
|
||||
BETWEEN ? AND ?";
|
||||
BETWEEN ? AND ?
|
||||
{$extra_where}";
|
||||
|
||||
$query_count = $this->db_onedev->query($sql_count, array($startdate, $enddate));
|
||||
$query_count = $this->db_onedev->query($sql_count, array_merge(array($startdate, $enddate), $extra_params));
|
||||
$total_data = $query_count->row()->total;
|
||||
|
||||
|
||||
// ================= DATA DENGAN LIMIT =================
|
||||
$sql = "SELECT
|
||||
$sql = "SELECT
|
||||
tse.T_SendEmailT_OrderHeaderID as order_id,
|
||||
tse.T_SendEmailT_OrderHeaderID as T_OrderHeaderID,
|
||||
tse.T_SendEmailPatientName,
|
||||
@@ -438,17 +463,17 @@ class Patient extends MY_Controller
|
||||
DATE(tp_latest.T_OrderPromiseDateTime) AS order_promise_date,
|
||||
toh.T_OrderHeaderLabNumber AS No_Reg,
|
||||
mc.M_CompanyName AS Kel_Pelanggan,
|
||||
(SELECT T_OrderDeliveryID
|
||||
FROM t_orderdelivery
|
||||
WHERE T_OrderDeliveryT_OrderHeaderID = tse.T_SendEmailT_OrderHeaderID
|
||||
AND T_OrderDeliveryM_DeliveryTypeID = 3
|
||||
AND T_OrderDeliveryIsActive = 'Y'
|
||||
(SELECT T_OrderDeliveryID
|
||||
FROM t_orderdelivery
|
||||
WHERE T_OrderDeliveryT_OrderHeaderID = tse.T_SendEmailT_OrderHeaderID
|
||||
AND T_OrderDeliveryM_DeliveryTypeID = 3
|
||||
AND T_OrderDeliveryIsActive = 'Y'
|
||||
LIMIT 1) as delivery_id
|
||||
FROM t_send_email tse
|
||||
JOIN t_orderheader toh
|
||||
JOIN t_orderheader toh
|
||||
ON tse.T_SendEmailT_OrderHeaderID = toh.T_OrderHeaderID
|
||||
JOIN (
|
||||
SELECT
|
||||
SELECT
|
||||
T_OrderPromiseT_OrderHeaderID,
|
||||
MAX(T_OrderPromiseDateTime) AS T_OrderPromiseDateTime
|
||||
FROM t_orderpromise
|
||||
@@ -456,19 +481,19 @@ class Patient extends MY_Controller
|
||||
GROUP BY T_OrderPromiseT_OrderHeaderID
|
||||
) tp_latest
|
||||
ON tp_latest.T_OrderPromiseT_OrderHeaderID = toh.T_OrderHeaderID
|
||||
JOIN m_company mc
|
||||
JOIN m_company mc
|
||||
ON toh.T_OrderHeaderM_CompanyID = mc.M_CompanyID
|
||||
WHERE tse.T_SendEmailIsActive = 'Y'
|
||||
AND DATE(tp_latest.T_OrderPromiseDateTime)
|
||||
BETWEEN ? AND ?
|
||||
{$extra_where}
|
||||
ORDER BY toh.T_OrderHeaderDate ASC
|
||||
LIMIT ? OFFSET ?";
|
||||
|
||||
$query = $this->db_onedev->query($sql, array(
|
||||
$startdate,
|
||||
$enddate,
|
||||
$limit,
|
||||
$offset
|
||||
$query = $this->db_onedev->query($sql, array_merge(
|
||||
array($startdate, $enddate),
|
||||
$extra_params,
|
||||
array($limit, $offset)
|
||||
));
|
||||
|
||||
if (!$query) {
|
||||
|
||||
Reference in New Issue
Block a user