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

class Handler extends Admin_Controller
{
    function __construct() 
    {
        parent::__construct();
        $this->load->model('painel_model');
    }
    
    public function set_novo_arquivo()
    {
        $perfil = $this->session->perfil;
        $nome = $this->input->post('nome');
        $row = @$this->db->where('nome',$nome)->get('nwl_arquivo')->row();
        if($row == null)
        {
            $dtInsert['nome'] = $nome;
            if($perfil == 1)
                $dtInsert['tipo'] = 'Interno';
            else 
                $dtInsert['tipo'] = 'Externo';
                
            @$this->db->insert('nwl_arquivo',$dtInsert);
            
            
            $html_options = "";
            $arquivos = $this->painel_model->get_arquivos($this->session->perfil);
            if($arquivos != null){
                foreach($arquivos as $arquivo){
                    $selected = 'selected';
                    if($html_options != '')
                        $selected = '';
                    $html_options .= "<option value='$arquivo->id_arquivo' $selected > $arquivo->id_arquivo - $arquivo->nome </option>";
                }
            }
            else
            {
                $html_options = "<option>Selecione</option>";
            }
            
            $json = array(
            'valid' => true,
            'html_options' => $html_options,
            'msg' => 'Sucesso!'
            );
        }
        else{
            $json = array(
            'valid' => false,
            'msg' => "'$nome' já exite!"
            );
        }
        echo json_encode($json);
    }
    
    public function long_task()
    {
        $bg = '';
        $msg = '';
        $post = $this->input->post();
        $email = $post['email'];
        $campanha = $post['campanha'];
        //$config = @$this->db->get('nwl_config_campanha')->row();
        
        $db_campanha = @$this->db->where('id_campanha', $campanha)->get('nwl_campanha_email')->row();
        
        if($db_campanha == null)
        {
            $data = array(
            'valid' => false,
            'interrompe' => true,
            'msg' => 'Campanha não encontrada!'
            );
            echo json_encode($data);
            die();
        }
        if(!($campanha > 1) && ($post['subject'] == '' || $post['titulo'] == '' || $post['msg'] == '') )
        {
            $data = array(
            'valid' => false,
            'interrompe' => true,
            'msg' => 'Dados Incorretos!'
            );
        }
        elseif($post["arquivar"] == 1 && $post["arquivo"] == '')
        {
            $data = array(
            'valid' => false,
            'interrompe' => true,
            'msg' => 'Selecione o arquivo!'
            );
        }
        else
        {
            $arquivo = 0;
            if($post["arquivar"] == 1)
                $arquivo = $post["arquivo"];
                
            $this->load->library('newsletter/newsletter');
            if(!($campanha > 1))
            {
                $data['campanha']    = $post['titulo'];
                $data['subject']     = $post['subject'];
                $data['mensagem']    = $post['msg'];
                $result = $this->newsletter->envia($email, array(1,$arquivo), $data);
                $this->tempo($db_campanha);
                $bg = 'danger';
                $msg = 'Erro';
				if($result)
				{
				    $bg = 'success';
                    $msg = '';
				}
            }
            else
    		{
                if($db_campanha->envio == 'Unico' ){
                    if($post["arquivar"] == 1)
                        $row = @$this->db->where('email',$email)->where('id_arquivo', $arquivo)->where('id_campanha', $campanha)->where('enviado', 1)->get('nwl_log_emails')->row();
                    else
                        $row = @$this->db->where('email',$email)->where('id_campanha', $campanha)->where('enviado', 1)->get('nwl_log_emails')->row();
                }
                else{
                    $row = null;
                }
                
				if($row == null)
                {
					$result = $this->newsletter->envia($email, array($campanha,$arquivo));
					
					$bg = 'danger';
                    $msg = 'Erro';
					if($result)
					{
					    $bg = 'success';
                        $msg = '';
					}
					    
					
					$this->tempo($db_campanha);
				} 
                else {
                    $result = true;
                    $bg = 'warning';
                    $msg = 'Anteriormente';
                }
    		}
    		 
    		$data = array(
                'valid' => $result,
                'interrompe' => false,
                'bg' => $bg,
                'msg' => $msg
                );
        }
        
        echo json_encode($data);
    }
    
    private function tempo($campanha)
    {
        if($campanha->config_smtp == 0)
        sleep(3);
        if($campanha->config_smtp == 1)
        usleep(50000);
    }
    
    public function test()
    {
        $email = 'donramon.bsb@gmail.com';
        $this->load->library('emailclass');
        //include_once 'emailclass.php'; 

        $vmail = new verifyEmail(); 
        $vmail->setStreamTimeoutWait(30); 
        $vmail->Debug= FALSE; 
        $vmail->Debugoutput= 'html'; 

        $vmail->setEmailFrom('contato@viewbrasil.com.br'); 

        if ($vmail->check($email)) { 
            echo 'true';
        } else { 
            echo 'false';
        } 
    }
    
    /*private function campanha_6($email)
    {
        $tabela = 'lp_cadastro';
        $this->load->library('newsletter/newsletter');
        $result = @$this->db->where('email',$email)->get($tabela)->row();
        if($result != null)
        {
               $row = @$this->db->where('email',$result->email)->where('id_campanha', 6)->get('nwl_log_emails')->row();
                if($row == null)
                {
                    $dt['nome'] = $result->nome;
                    $dt['link'] = base_url()."blog/action/concluir_cadastro/".md5($result->email);
                    return $this->newsletter->enviar_email_campanha($result->email, 6, $dt);//<-----------------------------------------------------------------------------
                    
                }
                else {
                    return false;
                }
            
        }
        return false;
    }
    
    private function campanha_7($email)
    {
        $tabela = 'sys_users';
        $this->load->library('newsletter/newsletter');
        $result = @$this->db->where('email',$email)->get($tabela)->row();
        if($result != null)
        {
               
                    $dt['nome'] = $result->nome;
                    $dt['activation_key'] = $result->activation_key;
                    return $this->newsletter->enviar_email_campanha($result->email, 7, $dt);//<-----------------------------------------------------------------------------
                
            
        }
        return false;
    }
    
    private function campanha_8($email)
    {
        $tabela = 'sys_users';
        $this->load->library('newsletter/newsletter');
        $result = @$this->db->where('email',$email)->get($tabela)->row();
        if($result != null)
        {
               $row = @$this->db->where('email',$result->email)->where('id_campanha', 8)->get('nwl_log_emails')->row();
                if($row == null)
                {
                    $dt['nome'] = $result->nome;
                    return $this->newsletter->enviar_email_campanha($result->email, 8, $dt);//<-----------------------------------------------------------------------------
                    
                }
                else {
                    return false;
                }
            
        }
        return false;
    }
    
    public function asdlong_task()
    {
        //header('Content-Type: text/event-stream');
        // recommended to prevent caching of event data.
        // header('Cache-Control: no-cache');
          
        //LONG RUNNING TASK
        
        $emails = $this->lista();
        
        $total = count($emails);
        
        for ($i=0;$i<4;$i++) {
		    $email = trim($emails[$i]);
		    
		    if($this->test($email) === true)
		    {
		        // echo $email.'<br>';
		        $this->send_message($key,  trim($email) , ($key/$total)*100);
		    }
		    sleep(1);
		}
        
		/*foreach($emails as $key=>$email) {
		    if($this->test(trim($email)) === true)
		    {
		        $this->send_message($key,  trim($email) , ($key/$total)*100);
		    }
		    sleep(1);
		}
          
        //
        $this->send_message('CLOSE', 'Process complete', 100);
    
    }
      
    public function send_message($id, $message, $progress) {
        $d = array(
            'message' => $message,
            'progress' => $progress
        );
        echo "id: $id" . PHP_EOL;
        echo "data: " . json_encode($d) . PHP_EOL;
        echo PHP_EOL;
        ob_flush();
        flush();
    }
    
    public function test($email)
    {
        include_once 'emailclass.php'; 

        $vmail = new verifyEmail(); 
        $vmail->setStreamTimeoutWait(20); 
        $vmail->Debug= FALSE; 
        $vmail->Debugoutput= 'html'; 

        $vmail->setEmailFrom('contato@viewbrasil.com.br'); 

        if ($vmail->check($email)) { 
            return true;
        } else { 
            return false;
        } 
    }
    
    public function lista()
    {
        return array(
            'email@teste.com'
            );
    }*/
    
    
}