<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

    
class Zapi_whatsapp{
    
    //private $url = 'https://api.z-api.io/instances/ID_DA_INSTANCIA/token/ID_DO_TOKEN/send-messages';
    private $id_token = 'A0D976A0E8FA2ADF6C15AB6A';
    private $id_instancia = '3930CE18C55850E7E667628E4023E1BB';

    private $url = 'https://api.z-api.io/instances/';


    function __construct() 
    {
        $this->CI =& get_instance();
    }
    
    /*
    Sempre ao mandar uma mensagem armazenar ela no log_whatsapp, pra podermos saber pra quem enviamos mensagem
    $log = [
        'telefone' => $cap->telefone,
        'id_evento' => $data['id_evento'],
        'enviado' => 1,
        'enviado_em' => date("Y-m-d H:i:s")
        ];
     $this->cad_model->insertLogWhatsapp($log);
    */
    
    function sendMessage($phone, $msg){
        /*EXEMPLO de $data:
        $data = array(
          'phone' => '554499999999',
          'message' => 'Digite uma mensagem'
        );*/
        
        $msg_url = $this->url.$this->id_instancia.'/token/'.$this->id_token.'/send-messages';
        
        if($phone == '' || $phone == NULL || $msg == NULL){
            return FALSE;
        }
        
        $data = array(
          'phone' => $phone,
          'message' => $msg
        );
        
        $envio_mensagem = $this->curl($msg_url, $data);
        
        return $envio_mensagem;
    }
    
    function sendImage($phone, $image, $caption){
        /*EXEMPLO de $data:
        $data = array(
          'phone' => '554499999999',
          'image' => 'Digite uma mensagem',
          'caption' => 'Descrição'
        );*/
        
        $msg_url = $this->url.$this->id_instancia.'/token/'.$this->id_token.'/send-messages';
        
        if($phone == '' || $phone == NULL || $image == NULL || $caption == NULL){
            return FALSE;
        }
        
        $data = array(
          'phone' => $phone,
          'image' => $image,
          'caption' => $caption
        );
        
        $envio_mensagem = $this->curl($msg_url, $data);
        
        return $envio_mensagem;
    }
    
    function getChat($phone){
        /*EXEMPLO de $data:
        $data = array(
          'phone' => '554499999999'
        );*/
        
        $msg_url = $this->url.$this->id_instancia.'/token/'.$this->id_token.'/chat-messages/'.$phone;
        
        if($phone == NULL){
            return FALSE;
        }
        
        $envio_mensagem = $this->curlGet($msg_url);
        
        return $envio_mensagem;
    }
    
    
    function curl($url , $msg_body){
       
        $ch = curl_init($url);
        
        $body = json_encode($msg_body);
        
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_VERBOSE, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_AUTOREFERER, false);
        curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_POST,true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json; charset=utf-8')); 
        curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
        
        $result = curl_exec($ch);
        
        curl_close($ch);
        
        return $result;
        
    }
    
    function curlGet($url){
        // Iniciamos a função do CURL:
        $ch = curl_init($url);
        
        curl_setopt_array($ch, [
        
            // Equivalente ao -X:
            CURLOPT_CUSTOMREQUEST => 'GET',
        
            // Equivalente ao -H:
            CURLOPT_HTTPHEADER => [
                'Content-Type:application/json; charset=utf-8',
                
            ],
        
            // Permite obter o resultado
            CURLOPT_RETURNTRANSFER => 1,
        ]);
        
        $resposta = json_decode(curl_exec($ch), true);
        curl_close($ch);
        
        return $resposta;
    }
    
}