Files
REG_IBL/one-api/application/controllers/tgram/Report.php
2026-05-25 20:01:37 +07:00

257 lines
9.8 KiB
PHP

<?php
class Report extends MY_Controller
{
public function __construct()
{
parent::__construct();
}
function verifikasi($tgramID) {
$sql = "select tGramReportIsVerified from tgram_report where tGramReportTgramID = ?";
$qry = $this->db->query($sql, array($tgramID));
$verified = false;
if($qry) {
$rows = $qry->result_array();
if(count($rows) > 0 && $rows[0]["tGramReportIsVerified"] == "Y") {
$verified = true;
}
}
return $verified;
}
function get_branch($code) {
$sql = "select * from m_branch where M_BranchCode = ?";
$qry = $this->db->query($sql, array($code));
$name = "";
$ip = "";
if($qry) {
$rows = $qry->result_array();
if(count($rows) > 0 ) {
$name = $rows[0]["M_BranchName"];
$ip= $rows[0]["M_BranchIPAddress"];
}
}
return array($name,$ip);
}
function clean_up_message($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 list_send_message($id, $message) {
$a_message = explode("\n\n",$message);
foreach($a_message as $msg) {
if(trim($msg) == "") continue;
$this->send($id, $msg);
}
}
function long_send_message($id, $message) {
if (strlen($message) > 4096 ) {
$p_message = substr($message,0,4000);
$message = substr($message,4000);
$this->send($id, p_message);
$still_have_message = true;
$counter = 1;
while( $still_have_message ) {
if (strlen($message) > 4096 ) {
$p_message = substr($message,0,4000);
$message = substr($message,4000);
$this->send($id, p_message);
$still_have_message = true;
} else {
$this->send($id ,$message);
$still_have_message = false;
}
$counter++;
if ($counter == 4 ) $still_have_message = false;
}
} else {
$this->send($id, $message);
}
}
function branch_hasil($ip,$date) {
$url = "http://$ip/one-api/tgram/hasil/list";
$data = array ("date" => $date);
$j_data = json_encode($data);
$message = $this->post($url,$j_data);
return $message;
}
function branch_download($ip,$noreg) {
$url = "http://$ip/one-api/tgram/hasil/download";
$data = array ("noreg" => $noreg);
$j_data = json_encode($data);
$message = $this->post($url,$j_data);
return $message;
}
function register() {
$prm = $this->sys_input;
switch($prm["cmd"]) {
case "download":
$id = $prm["tgramID"];
$noreg = $prm["noreg"];
// 006S6M63DA
$kode_cabang= substr($noreg,8,2);
list($branchName,$branchIP) = $this->get_branch($kode_cabang);
if ($branchName == "" ) {
$kode_cabang= substr($noreg,0,2);
list($branchName,$branchIP) = $this->get_branch($kode_cabang);
}
$branchIP = "devone.aplikasi.web.id";
$hasil = $this->branch_download($branchIP,$noreg);
$j_hasil = json_decode($hasil,true);
if ($j_hasil) {
if ($j_hasil["status"] == "OK" ) {
$msg = $j_hasil["msg"];
foreach($j_hasil["reports"] as $r) {
$fname = $r["fname"];
$text = $msg . "Hasil\t: " . $r["name"];
$text = $this->clean_up_message($text);
$pdf_url = "http://" . $branchIP . $r["url"];
//echo "\nsenddoc\n$id\n$pdf_url\n$fname\n";
$this->senddoc($id,$text,$pdf_url, $fname);
}
} else {
$this->send($id,$j_hasil["msg"]);
}
}
break;
case "hasil":
$kode_cabang = $prm["branchCode"];
$tanggal = $prm["date"];
if(! $this->verifikasi($prm["tgramID"]) ) {
echo json_encode( array("status"=>"ERR", "message" => "Not Verified") );
exit;
}
list($branchName,$branchIP) = $this->get_branch($kode_cabang);
$branchIP = "devone.aplikasi.web.id";
$message = "Daftar Permintaan Hasil dikirim WA \n$branchName\nTanggal $tanggal\n";
$message .= $this->branch_hasil($branchIP,$tanggal);
$message = $this->clean_up_message($message);
$this->list_send_message($prm["tgramID"],$message);
echo json_encode( array("status"=>"OK", "message" => "") );
break;
case "register" :
$sql = "insert into tgram_report(tGramReportTgramID, tGramReportName, tGramReportM_BranchCode)
values(?,?,?)";
$qry = $this->db->query($sql, array($prm["tgramID"], $prm["name"], $prm["branchCode"]));
if($qry) {
$request_contact = "Konfirmasi Registrasi, dengan mengirimkan contact\.";
$this->send($prm["tgramID"],$request_contact,true);
echo json_encode( array("status"=>"OK", "message" => "") );
} else {
echo json_encode( array("status"=>"ERR", "message" => print_r($this->db->error(),true) ));
}
break;
case "register-contact":
$sql = "update tgram_report set tGramReportHp=? where tGramReportTgramID = ? ";
$qry = $this->db->query($sql, array($prm["hp"], $prm["tgramID"]));
if($qry) {
$request_contact = "Contact anda sudah di terima, menunggu verifikasi admin\.";
$this->send($prm["tgramID"],$request_contact,true);
echo json_encode( array("status"=>"OK", "message" => "") );
} else {
echo json_encode( array("status"=>"ERR", "message" => print_r($this->db->error(),true) ));
}
break;
}
}
function post($url,$data) {
$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);
return $result;
}
public function send($id,$text,$req_contact = false) {
$prm = $this->sys_input;
$url = "https://api.telegram.org/bot903313223:AAH26dxAjoOd3TcuLIJFPQ19wOzgF_ZRvkc/sendMessage";
$data = array (
"chat_id" => $id ,
"parse_mode" => "MarkdownV2",
"text" => $text
);
if ($req_contact === true ) {
$data["reply_markup"] = array('keyboard' => array( array(
array("text" => "Kirimkan contact saya", "request_contact" => true )
)));
}
$j_data = json_encode($data);
$result = $this->post($url,$j_data);
//echo "\nResult tgram: " . $result . "\n";
}
function build_data_files($boundary, $fields, $files){
$data = '';
$eol = "\r\n";
$delimiter = '-------------' . $boundary;
foreach ($fields as $name => $content) {
$data .= "--" . $delimiter . $eol
. 'Content-Disposition: form-data; name="' . $name . "\"".$eol.$eol
. $content . $eol;
}
foreach($files as $file) {
$data .= "--" . $delimiter . $eol
. 'Content-Disposition: form-data; name="' . $file["name"] . '"; filename="' . $file["fname"] . '"' . $eol
//. 'Content-Type: image/png'.$eol
. 'Content-Transfer-Encoding: binary'.$eol
;
$data .= $eol;
$data .= $file["content"] . $eol;
$data .= "--" . $delimiter . "--".$eol;
}
return $data;
}
function senddoc($id, $text, $pdf_url, $name) {
$url = "https://api.telegram.org/bot903313223:AAH26dxAjoOd3TcuLIJFPQ19wOzgF_ZRvkc/sendDocument";
$fields = array( "chat_id" => $id , "caption" => $text , "parse_mode" => "MarkdownV2");
$files[] = array(
"name" => "document",
"fname" => $name,
"content" => file_get_contents($pdf_url)
);
$boundary ="-myboundary-bizOneRpt-" . uniqid();
$delimiter = '-------------' . $boundary;
$message = $this->build_data_files($boundary,$fields,$files);
$result = $this->post_mf($url,$message,$delimiter);
//echo "\ntgram senddoc :\n$result\n";
}
function post_mf($url,$data,$delimiter) {
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => $data,
CURLOPT_HTTPHEADER => array(
"Content-Type: multipart/form-data; boundary=" . $delimiter,
"Content-Length: " . strlen($data)
),
));
$result_a = curl_exec($curl);
$err = curl_error($curl);
$result = $result_a;
if ($err) {
$result = $result_a . "\nERR : " . print_r($err,true) . "\n" ;
}
return $result;
}
}
?>