<?php

class Pagamento_Model extends CI_Model {

    function __construct() {
        parent::__construct();
        $this->load->model('Cadastro_Model');
        $this->load->model('Historico_Model');
        $this->load->library('Url');
    }

    public function inseretransacao($dados) {

        $this->db->insert('transacao', $dados);
    }
    
    public function logsms($log_sms) {

        $this->db->insert('log_sms', $log_sms);
    }

    public function recuperatransacao($id_transacao) {

        $this->db->where('id_transacao', $id_transacao);
        $this->db->order_by("data_transacao", "asc");
        $query = $this->db->get('transacao');
        

        if ($query->num_rows() > 0) {
            return $query->row_array();
        } else {
            return FALSE; 
        }
    }
    
    public function item_transacao($id_transacao) {

        $transacao = $this->recuperatransacao($id_transacao);
        $idtransacao = $transacao['id_transacao'];
        date_default_timezone_set('America/Belem');
        $data = date('Y-m-d H:i:s', time());
        $id_h = '';

        // OBTENHO OS DADOS QUE PRECISO DO CARRINHO DE COMPRAS
        foreach ($this->cart->contents() as $items) {
            $id_h = $items['id_historico'];
            
            $item_carrinho[$items['name']] = array('id_historico' => $id_h);
        }
        foreach ($item_carrinho as $produtos) {

            $dados = array(
                'transacao' => $idtransacao, 'tipo' => 'CE', 'historico' => $produtos['id_historico'], 'dt_cadastro' => $data,'dt_alteracao' => '0000-00-00 00:00:00', 'status' => 0
            );

            $this->db->insert('itens_transacao', $dados);
        }
    }
    
    public function log_transacao($id_transacao) {
        
        $transacao = $this->recuperatransacao($id_transacao);
        $idtransacao = $transacao['id_transacao'];
        date_default_timezone_set('America/Belem');
        $data = date('Y-m-d H:i:s', time());
        
         $dados = array(
                'transacao' => $idtransacao, 'email' => $_SESSION['aluno']['email'], 'data' => $data, 'situacao' => 0,'pago' => 0
            );
         
         $this->db->insert('log_transacao', $dados);
        
    }
    public function atualizatransacao($token, $id_transacao, $situacao) {
        
        $dados = array('codigo' => $token, 'situacao' =>  $situacao);
        $this->db->set($dados);
        $this->db->where('id_transacao', $id_transacao);
        $this->db->where('id_aluno', $_SESSION['aluno']['id_aluno']);
        $this->db->update('transacao');
    }
    
    public function atualiza_log_transacao_cartao($id_transacao, $cod_status) {
        
        $dados = array('situacao' => $cod_status, 'pago' => 1);
        $this->db->set($dados);
        $this->db->where('transacao', $id_transacao);
        $this->db->update('log_transacao');
    }
    
     public function atualiza_log_transacao($id_transacao) {
        
        $dados = array('situacao' => 1, 'pago' => 1);
        $this->db->set($dados);
        $this->db->where('transacao', $id_transacao);
        $this->db->update('log_transacao');
    }
    
    public function gera_hash() {
        $id_aluno = $_SESSION['aluno']['id_aluno'];
        if ($this->url->dispostivo()!= "mobile") {
        return 'AMA' . substr(md5($id_aluno . ':' . microtime() . microtime()), 0, 4) . substr(md5($id_aluno . ':' . microtime()), 0, 4);
        } else {
        return 'MAMA' . substr(md5($id_aluno . ':' . microtime() . microtime()), 0, 4) . substr(md5($id_aluno . ':' . microtime()), 0, 4);
        }
        
    }
    public function obtemitemtransacao($transacao) {
        $this->db->join('historico b', 'a.historico = b.id_historico');
        $this->db->where('transacao', $transacao);
        $query = $this->db->get('itens_transacao a');
        
        return $query->result();
    }
    public function liberacertificado($transacao) {
        
        $id_h = '';
        $item = $this->obtemitemtransacao($transacao);
        
        foreach ($item as $items) {
            
        $id_h = $items->historico;
           
        $item_carrinho = array('id_historico' => $id_h);
            
        $dados = array('certificado' => 1);
        $this->db->set($dados);
        $this->db->where('id_historico', $item_carrinho['id_historico']);
        $this->db->update('historico');
        }
        
    }
    
    public function inserecertificado($id_transacao) {
        
        date_default_timezone_set('America/Belem');
        $data = date('Y-m-d H:i:s', time());
        $id_h = '';
        $id_aluno = '';
        $endereco = '';
        $tipo = '';
        $item = $this->obtemitemtransacao($id_transacao);

        // OBTENHO OS DADOS QUE PRECISO 
        foreach ($item as $items) {
            
        $id_h = $items->historico;
        $id_aluno = $items->id_aluno; 
        $historico = $this->Historico_Model->getHistorico($id_h);
        
        if ($historico['concluido'] == 1) {
            $tipo = 5; //CERTIFICADO ELETRÔNICO
        }else {
            $tipo = 5; //CERTIFICADO PARTICIPAÇÃO
        }
//        $aluno = $this->Cadastro_Model->getAlunoPorID($id_aluno);
//        $endereco = $aluno['endereco'] .', '. $aluno['numero'] .' '. $aluno['bairro'] .'-'. $aluno['cidade'] .'-'. $aluno['estado'];
        $dados = array('id_historico' => $id_h, 'codigo_programa' => '008','data_registro' => $data, 'situacao' => 0,'rastreamento' => 0,'transacao' => $id_transacao, 'id_tipo' => $tipo);
        $this->db->insert('certificado', $dados);
        }
      
    }
    
    public function getTransacaoPendentePorId() {
        
        $sql = "SELECT t. * 
        FROM transacao t
        JOIN aluno a ON ( t.id_aluno = a.id_aluno ) 
        AND a.id_aluno = ? 
        AND (t.situacao = 2 or t.situacao = 3)
        WHERE data_transacao BETWEEN DATE_SUB( CURDATE( ) , INTERVAL 15 DAY )
        AND CURDATE() ORDER BY data_transacao DESC";
        
        $query = $this->db->query($sql, array($_SESSION['aluno']['id_aluno']));
        
        return $query->row_array();
        
    }
    
    public function getTransacaoPendentePorIdResult() {
        
        $sql = "SELECT t. * 
        FROM transacao t
        JOIN aluno a ON ( t.id_aluno = a.id_aluno ) 
        AND a.id_aluno = ? 
        AND (t.situacao = 2 or t.situacao = 3)
        WHERE data_transacao BETWEEN DATE_SUB( CURDATE( ) , INTERVAL 15 DAY )
        AND CURDATE() ORDER BY data_transacao DESC";
        
        $query = $this->db->query($sql, array($_SESSION['aluno']['id_aluno']));
        
        return $query->result();
        
    }
    // RETORNO DE PAGAMENTO
    public function update($r_transacao_set, $r_transacao_where) {
        
        $this->db->where($r_transacao_where);
        $this->db->update('transacao', $r_transacao_set);
    }
    
    public function insert($arr_log_transacao) {

       date_default_timezone_set('America/Belem');
       
       $this->db->insert('log_transacao', $arr_log_transacao);

    }
    public function count_all_data($data) {
        
        $this->db->select('count(*) as total');
        $this->db->where ($data);
        $this->db->order_by("id_log", "desc");
        $query = $this->db->get('log_transacao');
        
        return $query->result();
    }
    
    public function transacaopaga() {
        
        $this->db->join('aluno', 'transacao.id_aluno = aluno.id_aluno');
        $this->db->where('transacao.situacao', 1);
        $this->db->where('transacao.id_aluno', $_SESSION['aluno']['id_aluno']);
        $this->db->order_by("data_transacao", "desc");
        $this->db->limit(50);
        $query = $this->db->get('transacao');
        
        return $query->result();    
    }
    
    public function transacaopagadeclaracao() {
        $ano=date("Y")-1;
        $id_aluno=$_SESSION['aluno']['id_aluno'];
        $sql="SELECT curso.nome curso ,transacao.id_transacao,aluno.nome, data_transacao,valor FROM `transacao` 
            join itens_transacao on (id_transacao=transacao) 
            join historico on (historico.id_historico=itens_transacao.historico) 
            join curso on (curso.id_curso=historico.id_curso) 
            join aluno on(historico.id_aluno=aluno.id_aluno)" 
                . "where transacao.id_aluno=".$id_aluno
                . " and transacao.situacao=1 "
                . "and data_transacao like '%".$ano."%' group by id_transacao";
      
        
//        $this->db->where('situacao', 1);
//        $this->db->where('id_aluno', $_SESSION['aluno']['id_aluno']);
//        $this->db->where ('data_transacao like',"%$ano%");
//        $this->db->order_by("data_transacao", "desc");
        
        //$this->db->limit(50);
        $query = $this->db->query($sql);
        
        return $query->result();  
    }
    
    
    public function transacaopagadeclaracaoitens($id_transacao) {
        $ano=date("Y")-1;
        $id_aluno=$_SESSION['aluno']['id_aluno'];
        $sql="SELECT curso.nome curso FROM `transacao` 
            join itens_transacao on (id_transacao=transacao) 
            join historico on (historico.id_historico=itens_transacao.historico) 
            join curso on (curso.id_curso=historico.id_curso) 
            join aluno on(historico.id_aluno=aluno.id_aluno)" 
                . "where transacao.id_transacao='".$id_transacao
                . "' and transacao.situacao=1 ";
       ;
        $query = $this->db->query($sql);
        
        $cursos= $query->result(); 
       // print_r($cursos);
        if(count($cursos)==1){
        $curso= 'Matrícula no CURSO ';
        }
        else{
        $curso= 'Matrícula nos CURSOS ';    
        }
        foreach ($cursos as $c) {
            $curso= $curso.$c->curso.", ";
        }
        return mb_strtoupper($curso);
    }
    
    
    public function transacaopaga_old() {
        
        $this->db->where('situacao', 1);
        $this->db->where('id_aluno', $_SESSION['aluno']['id_aluno']);
        $this->db->order_by("data_transacao", "desc");
        $query = $this->db->get('transacao');
        
        return $query->result();    
    }
    
    public function faturaemandamento() {
        $sql = "SELECT count(*) as total
        FROM transacao t
        JOIN aluno a ON ( t.id_aluno = a.id_aluno ) 
        AND a.id_aluno = ? 
        AND (t.situacao = 2 or t.situacao = 3)
        WHERE data_transacao BETWEEN DATE_SUB( CURDATE( ) , INTERVAL 15 DAY )
        AND CURDATE() ORDER BY data_transacao DESC";
        
        $query = $this->db->query($sql, array($_SESSION['aluno']['id_aluno']));
        
        return $query->row_array();
    }
    
    public function obtemclienteativo() {
        
        $this->db->where('id_aluno', $_SESSION['aluno']['id_aluno']);
        $query = $this->db->get('amn_aluno');
        
         if ($query->num_rows() > 0) {
            return $query->row_array();    
        } else {
            return FALSE;
        }
    }
    
    public function verificacertificadopago($transacao) {
        
        $this->db->where('transacao', $transacao);
        $this->db->where('situacao', 0);
        $query = $this->db->get('certificado');
        
        if ($query->num_rows() > 0) {
            return $query->row_array();    
        } else {
            return FALSE;
        }
    }
    
    public function transacaoPagaLog($transacao) {
        
        $this->db->select("date_format(DATE(data),'%Y-%m-%d') as data");
        $this->db->where('transacao', $transacao);
        $this->db->where('situacao', 1);
        $this->db->where('pago', 1);
        return $this->db->get('log_transacao')->row_array();
    }
}
