log("Start Monitoring Rujukan"); $this->cek(true); $this->cek_order(true); $this->cek_validasi(true); } function test() { $msg = "Testing Telegram group baru 2021-02-22 10:00:02 Pending Rujukan [* Pramita Martadinata ] : 1 *"; $msg = $this->clean_up_message($msg); echo "$msg \n"; $this->sasone($msg); } function log($msg) { $sdate = Date("Y-m-d H:i:s"); echo "$sdate $msg\n"; } function clean_up_message($msg) { return $msg; $msg = str_replace("-","\-",$msg); $msg = str_replace("(","\(",$msg); $msg = str_replace(")","\)",$msg); $msg = str_replace(".","\.",$msg); $msg = str_replace("[","\[",$msg); $msg = str_replace("]","\]",$msg); $msg = str_replace("|","\|",$msg); return $msg; } function cek_validasi($do_send=false,$date = "") { if ($date == "" ) { $xdate = new DateTime(); $xdate->sub(new DateInterval('P1D')); $date = $xdate->format('Y-m-d'); } $sql = "select tx_branch_status.* from tx_branch_status where date(TxBranchStatusCreated) >= '$date' and TxBranchStatusRetry > 10 "; $qry = $this->db->query($sql); if ($qry) { $rows = $qry->result_array(); $ids = "0"; $child_ids ="0"; foreach($rows as $r) { if($r["TxBranchStatusStage"] == "VALIDATION" ) { //print_r($r); if ($r["TxBranchStatusIsSent"] == "Y") continue; $json = json_decode($r["TxBranchStatusJson"],true); foreach($json as $j) { if ($j["incomingRefDetailID"] == "") { continue; } $ids .= "," . $j["incomingRefDetailID"]; } foreach($json as $j) { if ($j["incomingRefChildID"] == "") { continue; } $child_ids .= "," . $j["incomingRefChildID"]; } } } if($ids != "0" || $child_ids != "0" ) { $sql = "select T_OrderHeaderLabNumber, T_OrderHeaderAddOnLabNumberOrigin, group_concat(incomingRefDetailT_TestName) TestName from incoming_ref_detail join t_orderheader on incomingRefDetailID in ( $ids ) and incomingRefDetailNewT_OrderHeaderID = T_OrderHeaderID join t_orderheaderaddon on T_OrderHeaderID = T_OrderHeaderAddOnT_OrderHeaderID union select T_OrderHeaderLabNumber, T_OrderHeaderAddOnLabNumberOrigin, group_concat(incomingRefChildT_TestName) TestName from incoming_ref_child join t_orderheader on incomingRefChildID in ( $child_ids ) and incomingRefChildNewT_OrderHeaderID = T_OrderHeaderID join t_orderheaderaddon on T_OrderHeaderID = T_OrderHeaderAddOnT_OrderHeaderID group by T_OrderHeaderID "; $qry = $this->db->query($sql); if($qry) { $rows = $qry->result_array(); $msg = ""; foreach($rows as $r) { $msg .= $r["T_OrderHeaderLabNumber"] . "|*" . $r["T_OrderHeaderAddOnLabNumberOrigin"] . "*"; $msg .= "\n\t " . $r["TestName"] . "\n"; } if ($msg != "" ) { $msg = "Pending Hasil ke perujuk :\n$msg"; if ($do_send ) { $this->sasone($msg); } else { echo $msg . "\n"; } $this->log($msg); } else { $this->log("Error Hasil Ke Perujuk : " . $this->db->error()["message"]); } } else { $this->log("Error Hasil ke Perujuk : " . $this->db->error()["message"]); } } } } function order() { $this->cek_order(true); } function cek_barcode($do_send = false, $date = "") { $w_date = "AND date(incomingRefDetailLastUpdated) = date(now())"; if ($date != "" ) { $w_date = "AND date(incomingRefDetailLastUpdated) = '$date' "; } $sql = "select incomingRefDetailLastUpdated,incomingRefOriginM_BranchCode, incomingRefT_RefDeliveryOrderNumber, incomingRefDetailT_OrderHeaderLabNumber, incomingRefDetailT_TestID, incomingRefDetailT_TestName from incoming_ref_detail JOIN incoming_ref ON incomingRefDetailIncomingRefID = incomingRefID JOIN t_orderheader ON incomingRefDetailNewT_OrderHeaderID = T_OrderHeaderID AND T_OrderHeaderIsActive = 'Y' $w_date left join t_barcodelab on T_OrderHeaderID = T_BarcodeLabT_OrderHeaderID where T_BarcodeLabID IS NULL AND ((TIME_TO_SEC(time(now())) - TIME_TO_SEC(time(incomingRefDetailLastUpdated)))/60) > 5; "; $qry = $this->db->query($sql); if ($qry) { $rows = $qry->result_array(); $tot_pending_barcode = 0; $no_msg = ""; foreach($rows as $r ) { if ($no_msg != "" ) $no_msg .= "\n "; $no_msg .= $r["incomingRefOriginM_BranchCode"] . " \| " . $r["incomingRefT_RefDeliveryOrderNumber"] . " \| " . $r["incomingRefDetailT_OrderHeaderLabNumber"] . " \| " . $r["incomingRefDetailT_TestName"]; $tot_pending_barcode++; } $msg = "Pending Create Barcode : * $tot_pending_barcode *,\n" . $no_msg ; if ($tot_pending_barcode> 0 ) { if ($do_send) { $this->sasone($msg); } else { echo $msg . "\n"; } $this->log($msg); } } else { $this->log("Error Create Barcode : " . $this->db->error()["message"]); } } function cek_order($do_send = false ) { $sql = "select * from m_branch where M_BranchIsActive = 'Y' and M_BranchIsDefault = 'Y'"; $branchName = "No Branch"; $qry = $this->db->query($sql); if ($qry) { $rows = $qry->result_array(); $branchName = $rows[0]["M_BranchName"]; } else { $this->log("Error Branch : " . $this->db->error()["message"]); } $sql =" SELECT incomingRefID, incomingRefT_RefDeliveryOrderDate, incomingRefT_RefDeliveryOrderNumber, incomingRefOriginM_BranchCode, M_BranchName, incomingRefDetailID, incomingRefDetailT_OrderHeaderID, incomingRefDetailT_OrderHeaderLabNumber, incomingRefDetailM_PatientName, incomingRefDetailFoNote, incomingRefDetailVefificationNote, incomingRefDetailSamplingNote, incomingRefDetailT_TestID, incomingRefDetailT_TestName, incomingRefDetailT_OrderPromiseDateTime, incomingRefDetailT_OrderDetailID, incomingRefDetailT_BarcodeLabBarcode, incomingRefDetailPatient FROM incoming_ref_detail JOIN incoming_ref ON incomingRefDetailIncomingRefID = incomingRefID JOIN m_branch ON incomingRefOriginM_BranchCode = M_BranchCode WHERE incomingRefDetailStatus = 'Y' AND incomingRefDetailNewT_OrderHeaderID IS NULL AND date(incomingRefDetailLastUpdated) = date(now()) AND ((TIME_TO_SEC(time(now())) - TIME_TO_SEC(time(incomingRefDetailLastUpdated)))/60) > 5; "; $qry = $this->db->query($sql); if ($qry) { $rows = $qry->result_array(); $tot_pending_kirim = 0; $no_msg = ""; foreach($rows as $r ) { if ($no_msg != "" ) $no_msg .= "\n "; $no_msg .= $r["incomingRefDetailT_OrderHeaderLabNumber"] . " \| " . $r["incomingRefDetailT_TestName"]; $tot_pending_kirim++; } $msg = "Pending Create Order \[* $branchName \] : $tot_pending_kirim *,\n" . $no_msg ; if ($tot_pending_kirim > 0 ) { if ($do_send) { $this->sasone($msg); } else { echo $msg . "\n"; } $this->log($msg); } } else { $this->log("Error Create Order : " . $this->db->error()["message"]); } } function cek($do_send = false) { $sql = "select * from m_branch where M_BranchIsActive = 'Y' and M_BranchIsDefault = 'Y'"; $branchName = "No Branch"; $qry = $this->db->query($sql); if ($qry) { $rows = $qry->result_array(); $branchName = $rows[0]["M_BranchName"]; } else { $this->log("Error Pending Merujuk : " . $this->db->error()["message"]); } $sql = "SELECT distinct * FROM (SELECT T_RefDeliveryOrderID, T_RefDeliveryOrderNumber, T_RefDeliveryOrderDate, b.M_BranchID as cabang_asal_id, b.M_BranchName as cabang_asal, d.M_BranchID as cabang_tujuan_id, d.M_BranchName as cabang_tujuan FROM t_ref_deliveryorder LEFT JOIN m_branch b ON T_RefDeliveryOrderM_BranchID = b.M_BranchID LEFT JOIN m_branch d ON T_RefDeliveryOrderM_DestinationID = d.M_BranchID WHERE T_RefDeliveryOrderIsActive = 'Y' AND T_RefDeliveryOrderIsConfirm = 'Y' AND T_RefDeliveryOrderIsExternal = 'N' AND date(T_RefDeliveryOrderLastUpdated) = date(now()) AND ((TIME_TO_SEC(time(now())) - TIME_TO_SEC(time(T_RefDeliveryOrderLastUpdated)))/60) > 5 UNION SELECT T_RefDeliveryOrderID, T_RefDeliveryOrderNumber, T_RefDeliveryOrderDate, M_BranchID as cabang_asal_id, M_BranchName as cabang_asal, M_LabReferenceID as cabang_tujuan_id, M_LabReferenceName as cabang_tujuan FROM t_ref_deliveryorder LEFT JOIN m_branch ON T_RefDeliveryOrderM_BranchID = M_BranchID LEFT JOIN m_labreference d ON T_RefDeliveryOrderM_DestinationID = M_LabReferenceID WHERE T_RefDeliveryOrderIsActive = 'Y' AND T_RefDeliveryOrderIsConfirm = 'Y' AND T_RefDeliveryOrderIsExternal = 'Y' AND date(T_RefDeliveryOrderLastUpdated) = date(now()) AND ((TIME_TO_SEC(time(now())) - TIME_TO_SEC(time(T_RefDeliveryOrderLastUpdated)))/60) > 5 ) x "; $qry = $this->db->query($sql); if ($qry) { $rows = $qry->result_array(); $tot_pending_kirim = 0; $no_msg = ""; foreach($rows as $r ) { if ($no_msg != "" ) $no_msg .= ", "; $no_msg .= $r["T_RefDeliveryOrderNumber"]; $tot_pending_kirim++; } $msg = "Pending Rujukan \[* $branchName \] : $tot_pending_kirim *,\n" . $no_msg ; if ($tot_pending_kirim > 0 ) { if ($do_send) { $this->sasone($msg); } else { echo $msg . "\n"; } $this->log($msg); } } else { $this->log("Error Pending Merujuk : " . $this->db->error()["message"]); } } function sasone($msg) { $url = "http://bandungraya.aplikasi.web.id/one-api/tgram/xone_bot/chat_id"; $data = json_encode( array("text" => $msg, "id" => "-1001299107569" )); $ch = curl_init($url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($data)) ); $result = curl_exec($ch); echo $result; } }