257 lines
9.8 KiB
PHP
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;
|
|
}
|
|
|
|
}
|
|
?>
|