db_onedev = $this->load->database("onedev", true); } public function search() { $prm = $this->sys_input; if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $xdate = $prm["xdate"]; $kecamatan = $prm["kecamatan"]; $filter_kecamatan = ''; if(!empty($kecamatan)){ $filter_kecamatan = " AND M_DistrictID = {$kecamatan['id']}"; } $sql_where = "WHERE T_OrderPromiseDateTime < '{$xdate}' AND T_OrderDeliveryM_DeliveryTypeID = 2 AND T_OrderDeliveryIsActive = 'Y' {$filter_kecamatan}"; $sql = " SELECT count(*) as total FROM t_orderdelivery JOIN t_orderheader ON T_OrderDeliveryT_OrderHeaderID = T_OrderHeaderID JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID JOIN t_orderpromise ON T_OrderDeliveryT_OrderHeaderID = T_OrderPromiseT_OrderHeaderID AND T_OrderPromiseDateTime < '{$prm['xdate']}' JOIN m_kelurahan ON T_OrderDeliveryM_KelurahanID = M_KelurahanID JOIN m_district ON M_KelurahanM_DistrictID = M_DistrictID $sql_where "; //echo $sql; $query = $this->db_onedev->query($sql); $tot_count = 0; if ($query) { $tot_count = $query->result_array()[0]["total"]; } else { $this->sys_error_db("t_samplestorage count", $this->db_onedev); exit; } $sql = "SELECT T_OrderDeliveryID as xid, T_OrderHeaderID as orderid, T_OrderHeaderLabNumber as labnumber, CONCAT(IFNULL(M_TitleName,''),' ',M_PatientName) as patientname, T_OrderDeliveryDestination as xaddress, DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y') as date_order, DATE_FORMAT(T_OrderPromiseDateTime,'%d-%m-%Y %H:%i') as date_promise, M_KelurahanName as kelurahan FROM t_orderdelivery JOIN t_orderheader ON T_OrderDeliveryT_OrderHeaderID = T_OrderHeaderID JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID JOIN t_orderpromise ON T_OrderDeliveryT_OrderHeaderID = T_OrderPromiseT_OrderHeaderID AND T_OrderPromiseDateTime < '{$prm['xdate']} 23:59:59' JOIN m_kelurahan ON T_OrderDeliveryM_KelurahanID = M_KelurahanID JOIN m_district ON M_KelurahanM_DistrictID = M_DistrictID $sql_where ORDER BY T_OrderPromiseDateTime ASC limit 0,20"; $query = $this->db_onedev->query($sql); //echo $this->db_onedev->last_query(); $rows = $query->result_array(); //$this->_add_address($rows); $result = array("total" => $tot_count, "records" => $rows, "sql"=> $this->db_onedev->last_query()); $this->sys_ok($result); exit; } public function searchall() { $prm = $this->sys_input; if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $xdate = $prm["xdate"]; $kecamatan = $prm["kecamatan"]; $filter_kecamatan = ''; if(!empty($kecamatan)){ $filter_kecamatan = " AND M_DistrictID = {$kecamatan['id']}"; } $sql_where = "WHERE T_OrderPromiseDateTime < '{$xdate}' AND T_OrderDeliveryM_DeliveryTypeID = 2 AND T_OrderDeliveryIsActive = 'Y' {$filter_kecamatan}"; $sql = " SELECT count(*) as total FROM t_orderdelivery JOIN t_orderheader ON T_OrderDeliveryT_OrderHeaderID = T_OrderHeaderID JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID JOIN t_orderpromise ON T_OrderDeliveryT_OrderHeaderID = T_OrderPromiseT_OrderHeaderID AND T_OrderPromiseDateTime < '{$prm['xdate']}' JOIN m_kelurahan ON T_OrderDeliveryM_KelurahanID = M_KelurahanID JOIN m_district ON M_KelurahanM_DistrictID = M_DistrictID $sql_where "; //echo $sql; $query = $this->db_onedev->query($sql); $tot_count = 0; if ($query) { $tot_count = $query->result_array()[0]["total"]; } else { $this->sys_error_db("t_samplestorage count", $this->db_onedev); exit; } $sql = "SELECT T_OrderDeliveryID as xid, T_OrderHeaderID as orderid, T_OrderHeaderLabNumber as labnumber, CONCAT(IFNULL(M_TitleName,''),' ',M_PatientName) as patientname, T_OrderDeliveryDestination as xaddress, DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y') as date_order, DATE_FORMAT(T_OrderPromiseDateTime,'%d-%m-%Y %H:%i') as date_promise, M_KelurahanName as kelurahan FROM t_orderdelivery JOIN t_orderheader ON T_OrderDeliveryT_OrderHeaderID = T_OrderHeaderID JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID JOIN t_orderpromise ON T_OrderDeliveryT_OrderHeaderID = T_OrderPromiseT_OrderHeaderID AND T_OrderPromiseDateTime < '{$prm['xdate']} 23:59:59' JOIN m_kelurahan ON T_OrderDeliveryM_KelurahanID = M_KelurahanID JOIN m_district ON M_KelurahanM_DistrictID = M_DistrictID $sql_where ORDER BY T_OrderPromiseDateTime ASC limit 0,20"; $query = $this->db_onedev->query($sql); //echo $this->db_onedev->last_query(); $rows = $query->result_array(); //$this->_add_address($rows); $result = array("total" => $tot_count, "records" => $rows, "sql"=> $this->db_onedev->last_query()); $this->sys_ok($result); exit; } function getdatasform(){ if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $rows = []; $query =" SELECT M_CourierID as id, M_StaffName as name FROM m_courier JOIN m_staff ON M_CourierM_StaffID = M_StaffID WHERE M_CourierIsActive = 'Y' "; $rows['couriers'] = $this->db_onedev->query($query)->result_array(); $result = array( "total" => count($rows) , "records" => $rows, ); $this->sys_ok($result); exit; } function getdatakecamatan(){ $prm = $this->sys_input; if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $rows = []; $query =" SELECT M_DistrictID as id, M_DistrictName as name FROM t_orderdelivery JOIN t_orderpromise ON T_OrderDeliveryT_OrderHeaderID = T_OrderPromiseT_OrderHeaderID AND T_OrderPromiseDateTime < '{$prm['xdate']}' JOIN m_kelurahan ON T_OrderDeliveryM_KelurahanID = M_KelurahanID JOIN m_district ON M_KelurahanM_DistrictID = M_DistrictID WHERE T_OrderDeliveryM_DeliveryID = 2 AND T_OrderDeliveryIsActive = 'Y' GROUP BY M_DistrictID "; // echo $query; $rows['kecamatans'] = $this->db_onedev->query($query)->result_array(); $result = array( "total" => count($rows) , "records" => $rows, ); $this->sys_ok($result); exit; } function getracks(){ if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $rows = []; $query =" SELECT Summary_SampleStorageM_AlmariID as almarid, Summary_SampleStorageM_RackID as rackid , Summary_SampleStorageRowPosition as row, Summary_SampleStorageColPosition as col FROM summary_samplestorage WHERE Summary_SampleStorageStatus = 'FILLED' "; //echo $query; $filledrows = $this->db_onedev->query($query)->result_array(); $query =" SELECT {$prm['id']} as almariid, M_RackID as id, CONCAT(M_RackCode,' ( ',M_RackRows,' x ',M_RackColumns,' )') as name, M_RackCode as code, M_RackRows as row, M_RackColumns as col, '' as rackcontens FROM m_rack WHERE M_RackM_AlmariID = {$prm['id']} AND M_RackIsActive = 'Y' "; //echo $query; $datarows = $this->db_onedev->query($query)->result_array(); foreach($datarows as $k => $v){ $rows = $v['row']; $cols = $v['col']; $rackcontens = array(); for ($x = 1; $x <= $rows; $x++) { $children = array(); for ($i = 1; $i <= $cols; $i++) { $content = $x.' x '.$i; $xrow = $x; $xcol = $i; $status = $this->checkexistfilled($filledrows, $v['id'],$xrow,$xcol); array_push($children,array('content'=>$content,'row'=>$xrow,'col'=>$xcol,'status'=>$status,'selected'=>'N')); } array_push($rackcontens,$children); } $datarows[$k]['rackcontens'] = $rackcontens; } $result = array( "total" => count($datarows) , "records" => $datarows, ); $this->sys_ok($result); exit; } function checkexistfilled($datas,$rackid,$row,$col){ $rtn = 'N'; foreach($datas as $k => $v){ if($v['rackid'] == $rackid && $v['row'] == $row && $v['col'] == $col){ $rtn = 'Y'; } } return $rtn; } function save(){ if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $userid = $this->sys_user["M_UserID"]; $numbering = $this->db_onedev->query("SELECT fn_numbering('SS') as numbering")->row()->numbering; $xdate = date('Y-m-d',strtotime($prm["date"])); $query ="INSERT INTO t_samplestorage ( T_SampleStorageNumbering, T_SampleStorageDate, T_SampleStorageTime, T_SampleStorageNote, T_SampleStorageUserID, T_SampleStorageCreated ) VALUES( '{$numbering}', '{$xdate}', '{$prm['time']}', '{$prm['note']}', '{$userid}', NOW() ) "; //echo $query; $saveheader = $this->db_onedev->query($query); $last_id = $this->db_onedev->insert_id(); if($saveheader){ foreach($prm['details'] as $k => $v){ $query ="INSERT INTO t_samplestorage_detail ( T_SampleStorageDetailT_SampleStorageID, T_SampleStorageDetailT_OrderSampleID, T_SampleStorageDetailBarcode, T_SampleStorageDetailM_AlmariID, T_SampleStorageDetailM_RackID, T_SampleStorageDetailRowPosition, T_SampleStorageDetailColumnPosition, T_SampleStorageDetailUserID, T_SampleStorageDetailCreated ) VALUES( '{$last_id}', '{$v['ordersampleid']}', '{$v['barcode']}', '{$v['almari']['id']}', '{$v['rack']['id']}', '{$v['row']}', '{$v['col']}', '{$userid}', NOW() )"; //echo $query; $savedetail = $this->db_onedev->query($query); } } $sql = "SELECT * FROM t_samplestorage WHERE T_SampleStorageID = {$last_id}"; $data_log_header = $this->db_onedev->query($sql)->result(); $sql = "SELECT * FROM t_samplestorage_detail WHERE T_SampleStorageDetailT_SampleStorageID = {$last_id}"; $data_log_details = $this->db_onedev->query($sql)->result(); $data_log = json_encode(array('header'=>$data_log_header,'details'=>$data_log_details)); $sql = "INSERT INTO one_log.log_samplestorage ( Log_SampleStorageCode, Log_SampleStorageDate, Log_SampleStorageJSON, Log_SampleStorageUserID ) VALUES( 'CREATED.SAVE', CURDATE(), '{$data_log}', {$userid} )"; //echo $sql; $this->db_onedev->query($sql); $result = array( "total" => 1 , "records" => array('status'=>'OK'), "numbering" => $numbering, "id" => $last_id ); $this->sys_ok($result); exit; } function checkbarcode(){ if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $datarows = []; $query =" SELECT CONCAT(IFNULL(M_TitleName,''),' ',M_PatientName) as patientname, T_OrderSampleID FROM t_ordersample JOIN t_orderheader ON T_OrderSampleT_OrderHeaderID = T_OrderHeaderID JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID WHERE T_OrderSampleBarcode = '{$prm['barcode']}' AND T_OrderSampleIsActive = 'Y' ORDER BY T_OrderSampleID DESC LIMIT 1 "; //echo $query; $datarows = $this->db_onedev->query($query)->row(); $result = array( "total" => count($datarows) , "records" => $datarows, ); $this->sys_ok($result); exit; } }