diff --git a/app/Controllers/Api/EntryApiController.php b/app/Controllers/Api/EntryApiController.php index 188516d..eda5b2b 100644 --- a/app/Controllers/Api/EntryApiController.php +++ b/app/Controllers/Api/EntryApiController.php @@ -37,14 +37,14 @@ class EntryApiController extends BaseController public function getControls() { try { + $keyword = $this->request->getGet('keyword'); $deptId = $this->request->getGet('dept_id'); $date = $this->request->getGet('date'); - if ($deptId) { - $controls = $this->controlModel->where('dept_id', $deptId)->where('deleted_at', null)->findAll(); - } else { - $controls = $this->controlModel->where('deleted_at', null)->findAll(); - } + $controls = $this->controlModel->search($keyword, $deptId); + + // Debug logging + log_message('debug', 'getControls: keyword=' . var_export($keyword, true) . ', deptId=' . var_export($deptId, true) . ', date=' . var_export($date, true) . ', found=' . count($controls)); // Filter expired controls if date provided if ($date) { @@ -61,16 +61,20 @@ class EntryApiController extends BaseController 'controlName' => $c['controlName'], 'lot' => $c['lot'], 'producer' => $c['producer'], - 'expDate' => $c['expDate'] + 'expDate' => $c['expDate'], + 'deptName' => $c['deptName'] ?? null ]; }, $controls); + log_message('debug', 'getControls: returning ' . count($data) . ' controls'); + return $this->respond([ 'status' => 'success', 'message' => 'fetch success', 'data' => $data ], 200); } catch (\Exception $e) { + log_message('error', 'getControls error: ' . $e->getMessage()); return $this->failServerError('Something went wrong: ' . $e->getMessage()); } } diff --git a/app/Controllers/Master/MasterControlsController.php b/app/Controllers/Master/MasterControlsController.php index 8989ea6..8fcbe05 100644 --- a/app/Controllers/Master/MasterControlsController.php +++ b/app/Controllers/Master/MasterControlsController.php @@ -19,10 +19,7 @@ class MasterControlsController extends BaseController { ]; } - public function index() { - $keyword = $this->request->getGet('keyword'); - try { - $rows = $this->model->search($keyword); + public function index() { $keyword = $this->request->getGet('keyword'); $deptId = $this->request->getGet('dept_id'); try { $rows = $this->model->search($keyword, $deptId); return $this->respond([ 'status' => 'success', 'message' => 'fetch success', diff --git a/app/Controllers/Master/MasterTestsController.php b/app/Controllers/Master/MasterTestsController.php index fec313a..14b1167 100644 --- a/app/Controllers/Master/MasterTestsController.php +++ b/app/Controllers/Master/MasterTestsController.php @@ -18,10 +18,7 @@ class MasterTestsController extends BaseController { ]; } - public function index() { - $keyword = $this->request->getGet('keyword'); - try { - $rows = $this->model->search($keyword); + public function index() { $keyword = $this->request->getGet('keyword'); $deptId = $this->request->getGet('dept_id'); try { $rows = $this->model->search($keyword, $deptId); return $this->respond([ 'status' => 'success', 'message' => 'fetch success', diff --git a/app/Models/Master/MasterControlsModel.php b/app/Models/Master/MasterControlsModel.php index 521828c..bd668ed 100644 --- a/app/Models/Master/MasterControlsModel.php +++ b/app/Models/Master/MasterControlsModel.php @@ -19,14 +19,40 @@ class MasterControlsModel extends BaseModel { protected $useTimestamps = true; protected $useSoftDeletes = true; - public function search($keyword = null) { - if ($keyword) { - return $this->groupStart() - ->like('control_name', $keyword) - ->orLike('lot', $keyword) - ->groupEnd() - ->findAll(); + public function search($keyword = null, $deptId = null) { + $builder = $this->builder(); + $builder->select(' + master_controls.control_id as controlId, + master_controls.control_name as controlName, + master_controls.lot, + master_controls.producer, + master_controls.exp_date as expDate, + master_depts.dept_name as deptName + '); + $builder->join('master_depts', 'master_depts.dept_id = master_controls.dept_id', 'left'); + $builder->where('master_controls.deleted_at', null); + + if ($deptId) { + $builder->where('master_controls.dept_id', $deptId); } - return $this->findAll(); + + if ($keyword) { + $builder->groupStart() + ->like('master_controls.control_name', $keyword) + ->orLike('master_controls.lot', $keyword) + ->orLike('master_controls.producer', $keyword) + ->groupEnd(); + } + + $builder->orderBy('master_controls.control_name', 'ASC'); + + $results = $builder->get()->getResultArray(); + + // Add deptName after camelCase conversion from BaseModel + foreach ($results as &$row) { + $row['deptName'] = $row['deptName'] ?? null; + } + + return $results; } } diff --git a/app/Models/Master/MasterTestsModel.php b/app/Models/Master/MasterTestsModel.php index c19c7ee..487c54b 100644 --- a/app/Models/Master/MasterTestsModel.php +++ b/app/Models/Master/MasterTestsModel.php @@ -22,7 +22,7 @@ class MasterTestsModel extends BaseModel { protected $useTimestamps = true; protected $useSoftDeletes = true; - public function search($keyword = null) { + public function search($keyword = null, $deptId = null) { $builder = $this->builder(); $builder->select(' master_tests.test_id as testId, @@ -38,6 +38,10 @@ class MasterTestsModel extends BaseModel { $builder->join('master_depts', 'master_depts.dept_id = master_tests.dept_id', 'left'); $builder->where('master_tests.deleted_at', null); + if ($deptId) { + $builder->where('master_tests.dept_id', $deptId); + } + if ($keyword) { $builder->groupStart() ->like('master_tests.test_name', $keyword) diff --git a/app/Views/entry/daily.php b/app/Views/entry/daily.php index 6f0bcdf..20749e2 100644 --- a/app/Views/entry/daily.php +++ b/app/Views/entry/daily.php @@ -39,6 +39,44 @@ +
+ + +