<?php


class Pagamento extends CI_Controller {
    
    function __construct() {
        
        parent::__construct();
        $this->load->model('Cadastro_Model');
        $this->load->model('Cursos_Model');
        $this->load->model('Pagamento_Model');
        $this->load->library('Criptografia');
        $this->load->library('Url');
        $this->load->library('Boleto');
        $this->load->database();
    }
    
    public function retornopagamento() {
        $id_transacao = $this->input->post('transacao');
      
        $this->db->where('id_transacao', $id_transacao);
        $this->db->where('codigo IS NOT NULL');
        $log = $this->db->get('transacao')->row_array();
        
        if (empty($log)) {
            echo json_encode(array('situacao' => 'falha'));
            exit();
        }
        
        $this->db->insert('log_informa_pagamento', array(
            'id_transacao' => $id_transacao,
            'data' => date('Y-m-d')
        ));
        
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, 'https://www.ovumpay.com.br/reenvio/'.$log['codigo']);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_exec($ch);
        
        
        echo json_encode(array('situacao' => 'sucesso'));
    }
    
    public function finalizarpedido() {
          
        if (isset($_SESSION['aluno']) == TRUE) {
            (isset($_SESSION['controle-aluno']) == TRUE) ? redirect('carreira') : ''; 
            $id = $_SESSION['aluno']['id_aluno'];
            $aluno = $this->Cadastro_Model->getAlunoPorID($id);
            $dados = array(
                'ativo' => $this->Pagamento_Model->obtemclienteativo(),
                'saldo' => $this->saldo(),
                'parcelas' => $this->gera_parcela(),
                'termos' => $this->Cadastro_Model->obtemTermo(), 
                'titulo' => 'Finalizar Pedido', 
                'erro_conf' => NULL, 
                'descricao' => '',
                'aluno' => $aluno);
            $this->load->view('finalizarpedido', $dados);    
         } else {
             redirect();
         }
    }
    
    public function boletomovel() {
          
        if (isset($_SESSION['aluno']) == TRUE) {
            
            if ($this->url->dispostivo() == "mobile") {
            
            $id = $_SESSION['aluno']['id_aluno'];
            $aluno = $this->Cadastro_Model->getAlunoPorID($id);
            $dados = array('ativo' => $this->Pagamento_Model->obtemclienteativo(),'saldo' => $this->saldo(),'parcelas' => $this->gera_parcela(),'termos' => $this->Cadastro_Model->obtemTermo(), 'titulo' => 'Boleto Móvel', 'erro_conf' => NULL, 'aluno' => $aluno);
            $this->load->view('commons/pagamento/boleto_mobile', $dados);    
            } 
            
        } else {
             redirect();
         }
    }
    
    public function enviasms() {
            
            $ddd = $this->input->post('ddd_celular');
            $celular = $this->input->post('celular');
            $codigoBoleto = $this->input->post('codigo');
            $fatura = $this->input->post('fatura');
            $this->form_validation->set_rules('ddd_celular', 'Ddd', 'trim|required|min_length[2]|max_length[2]|is_numeric', array('required' => ' O DDD está em branco. ', 'min_length' => ' O campo ddd deve conter pelo menos 2 caracteres.', 'max_length' => ' O campo ddd não deve conter mais de 2 caracteres.','is_numeric' => ' O campo ddd deve conter apenas caracteres numéricos.'));
            $this->form_validation->set_rules('celular', 'Celular', 'trim|required|min_length[9]|max_length[9]|is_numeric', array('required' => ' O Celular está em branco. ', 'min_length' => ' O campo celular deve conter pelo menos 9 caracteres.', 'max_length' => ' O campo celular não deve conter mais de 9 caracteres.','is_numeric' => ' O campo celular deve conter apenas caracteres numéricos.'));
            
            if ($this->form_validation->run() == FALSE) {
            $form = validation_errors();
            $data = array('situacao' => 'form-erro', 'erro_form' => $form);
            echo json_encode($data);    
            } else {
                
                $telefone = $ddd.$celular;
                
                $mensagem = "Amazonia Boleto: ". str_replace(" ", "", str_replace(".", "", $codigoBoleto));
//                $this->url->enviasms($telefone, $mensagem); 
                $sms = $this->url->enviasms_1_3($telefone, $mensagem, $this->session->userdata("aluno")['email']);

                
                if ($sms == 1) {
                  $log_sms = array("ddd"=> $ddd, "celular" => $celular,
                                    "codigo_boleto"=>str_replace(" ", "", str_replace(".", "", $codigoBoleto)), "codigo_fatura"=>$fatura, "data_envio"=>date('Y-m-d H:i:s'));
                  
                  $this->Pagamento_Model->logsms($log_sms);
                  $this->session->unset_userdata('id_transacao');
                  $data = array('situacao' => 'enviado');
                  echo json_encode($data);
                } else {
                   $data = array('situacao' => 'erro');
                  echo json_encode($data); 
                }
            }

    }
    
    public function saldo() {
           
           $id = $_SESSION['aluno']['id_aluno'];
           $ch = curl_init();
        //Chaves de acesso  API enviadas via POST
            $post = array (
                'id_aluno' => $id 
            );
            
            $url_base = base_url();//"http://35.196.200.227/amazonia"; 
            
            curl_setopt($ch, CURLOPT_URL, $url_base.'');
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
            curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
            $requisicao = curl_exec($ch);
            
            $api_result = json_decode($requisicao);
            
            curl_close ($ch); 
            
            if ($api_result != NULL ) {
            
            $saldo = $api_result->saldo;
    
            return $saldo;    
            }
    }
    
    
    public function descricao() {

        $certificados = '';
        foreach ($this->cart->contents() as $items) {
            $certificados .= $items['name'] . ', ';
        }
        $regra = substr($certificados, 0, -2);
        $descricao = 'TAXA DE ENVIO DO(S) CERTIFICADO(S) ' . $regra;

        return $descricao;
    }
    
    /**
     * Funcao que executa a divisão das parcelas do valor
     */
     public function gera_parcela() {

        $valor = $this->cart->total();
        $MIN_VAL = 5;
        $NUM_PARCELAS = 6;
        $parcelas = array();

        for ($i = 1; $i <= $NUM_PARCELAS; $i++) {
            
            $valor_parcelado = $valor / $i;
            if ($valor_parcelado < $MIN_VAL) {
            break;
            } 
            $parcelas[] = $valor_parcelado;            
        }
       
        if (empty($parcelas)) {
        return FALSE;   
        }else {
        return $parcelas;
        }
    }
   
    public function transacao($forma) {
        $codigo = $this->Pagamento_Model->gera_hash();
        $this->session->set_userdata("id_transacao", $codigo);
        if ($forma == 'BoletoBancario' ||  $forma == 'Debito') {
        $dados = array('id_transacao' => $codigo, 'data_transacao' => date('Y-m-d'), 'situacao' => 0, 'tipopagamento' => 0, 'valor' => $this->cart->total(), 'id_aluno' => $_SESSION['aluno']['id_aluno'], 'certificado' => 0, 'data_envio' => '0000-00-00','tipo' => 'CE');
        $this->Pagamento_Model->inseretransacao($dados);
        } else {
        $dados = array('id_transacao' => $codigo, 'data_transacao' => date('Y-m-d'), 'situacao' => 0, 'tipopagamento' => $forma, 'valor' => $this->cart->total(), 'id_aluno' => $_SESSION['aluno']['id_aluno'], 'certificado' => 0, 'data_envio' => '0000-00-00','tipo' => 'CE');
        $this->Pagamento_Model->inseretransacao($dados);    
        }
        $id_transacao = $_SESSION['id_transacao'];
        
        $this->Pagamento_Model->recuperatransacao($id_transacao);
        $this->Pagamento_Model->item_transacao($id_transacao);
        $this->Pagamento_Model->log_transacao($id_transacao);
    }
    
    
    public function processapagamento() {
        if (isset($_SESSION['aluno']) == TRUE) {
        $cpf = preg_replace('#[^0-9]#', '', $this->input->post('cpf'));
        $forma = $this->input->post('flagOpcaPagamento');
        $id = $_SESSION['aluno']['id_aluno'];
        $aluno = $this->Cadastro_Model->getAlunoPorID($id);

        if ($forma == 'CartaoCredito' ) {

        $this->form_validation->set_rules('numero_cartao', 'Numero_cartao', 'trim|required|min_length[13]|max_length[19]', array('required' => 'O número do cartão está em branco', 'min_length' => 'Verifique o número do cartão', 'max_length' => 'Verifique o número do cartão'));
        $this->form_validation->set_rules('exp_cartao', 'Exp_cartao', 'trim|required|max_length[5]', array('required' => 'O validade do cartão está em branco', 'max_length' => 'Verifique validade do cartão'));
        $this->form_validation->set_rules('codigo_seguranca', 'Codigo_seguranca', 'trim|required|max_length[10]', array('required' => 'O código de seguranca do cartão está em branco', 'max_length' => 'Verifique o código de seguranca do cartão'));
        $this->form_validation->set_rules('nome_portador', 'Nome_portador', 'trim|required', array('required' => 'O nome do portador do cartão está em branco'));
        
        if ($this->form_validation->run() == FALSE) {
        
        $form = validation_errors('<div class="alert alert-warning alert-conf" role="alert"><div class=""> <i class="fa fa-info-circle"></i> <span> ', ' </span> </div> </div>');
        $this->session->set_flashdata('erro-form-boleto', $form);
        redirect('finalizarpedido');
            
        } else {    
        $transacao = $this->transacao($forma);   
        
        $nome = $aluno['nome'];
	$email = $aluno['email'];
	$telefone = $aluno['telefone'];
	$endereco = $aluno['endereco'];
	$numero = $aluno['numero'];
	$cep = $aluno['cep'];
	$bairro = $aluno['bairro'];
	$cidade = $aluno['cidade'];
	$estado = $aluno['estado'];
	$ddd = $aluno['ddd'];    
        
        $Forma= $this->input->post('forma');
        
        $Parcelas = ( $this->input->post('parcelas')  ) ? $this->input->post('parcelas') : '';
	$numerocartao = ( str_replace('-', '', $this->input->post('numero_cartao'))) ?  str_replace('-','',$this->input->post('numero_cartao')) : '';
        $NomePortador = ( $this->input->post('nome_portador') ) ?  $this->input->post('nome_portador') : '';
	$Expiracao =    ( $this->input->post('exp_cartao')  ) ?  $this->input->post('exp_cartao') : '';
	$CodigoSeguranca= ( $this->input->post('codigo_seguranca') ) ? $this->input->post('codigo_seguranca') : '';
        
        if ($Expiracao == '') {
		$Expiracao = "00/00";
	}
	$ext = explode("/", $Expiracao);
	$mesvalidade = $ext[0];
	$anovalidade = $ext[1] + 2000;
	$va = $anovalidade . $mesvalidade;
	$agora = date('Y-m-d\TH:i:s');
        
        $valor = ($this->cart->total())*100;
        
        $descricao = $this->descricao();
        
        $id_transacao = $_SESSION['id_transacao'];
	

	if ($Parcelas > 1) {
		$parcelamento = 2;
	}
	
	if ($Parcelas == 1) {
		$parcelamento = 1;
	}
	
	$string = <<<XML
<?xml version='1.0' encoding="ISO-8859-1"?>
<requisicao-transacao id='1030463848' versao='1.2.1'>
	 <dados-ec>
	        <numero>1030463848</numero>
	        <chave>28b92fc1ac9d6b9527af579a99ac03611791458416b43b0d24423ddafac68d24</chave>
	 </dados-ec>
	<dados-portador>
        <numero>$numerocartao</numero>
        <validade>$va</validade>
        <indicador>1</indicador>
        <codigo-seguranca>$CodigoSeguranca</codigo-seguranca>
    </dados-portador>
 <dados-pedido>
        <numero>$id_transacao</numero>
        <valor>$valor</valor>
        <moeda>986</moeda>
        <data-hora>$agora</data-hora>
        <descricao>$descricao</descricao>
        <idioma>PT</idioma>
        <soft-descriptor>Curso Online</soft-descriptor>
    </dados-pedido>
 	<forma-pagamento>
        <bandeira>$Forma</bandeira>
        <produto>$parcelamento</produto>
        <parcelas>$Parcelas</parcelas>
    </forma-pagamento>
 <url-retorno>null</url-retorno>
    <autorizar>3</autorizar>
    <capturar>true</capturar>
</requisicao-transacao>
XML;
	$url = 'https://ecommerce.cbmp.com.br/servicos/ecommwsec.do';
	
	$ch = curl_init();
	flush();
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS, 'mensagem=' . $string);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
	curl_setopt($ch, CURLOPT_FAILONERROR, true);
	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
	curl_setopt($ch, CURLOPT_TIMEOUT, 40);
	$string = curl_exec($ch);
	
	curl_close($ch);
	
        $xml = simplexml_load_string($string);
        $pg = 0;

        if ($xml->tid) {
		$td = (String) $xml->tid; // TOKEN DO CARTÃO DE CRÉDITO 
		$cod_status = $xml->autorizacao->codigo;
                // SE OCORRER ERRO 
                
		if ($cod_status == 5) {
                  
			$cod_status_banco = 7;
                        $this->session->set_flashdata('erro-transacao', '<div class="alert alert-warning alert-conf" role="alert"><i class="fa fa-info-circle"></i> Transação não aprovada</div>');
                        echo'<script> window.location ="finalizarpedido"</script>';                       
                }
		// SE SUCESSO 
		if ($cod_status == 4 || $cod_status == 6) {
                        
                                            
                        $this->session->set_flashdata('sucesso-transacao', '<div class="alert alert-success alert-conf" role="alert"><i class="fa fa-check-circle"></i> Transação aprovada</div>');
                        $token = $xml->tid;
                        $situacao = 1;
                        $this->Pagamento_Model->atualizatransacao($token,$id_transacao, $situacao);
                        $this->Pagamento_Model->atualiza_log_transacao_cartao($id_transacao, $cod_status);
                        $this->Pagamento_Model->obtemitemtransacao($id_transacao);
                        $this->Pagamento_Model->liberacertificado($id_transacao);
                        $this->Pagamento_Model->inserecertificado($id_transacao);
                        $this->cart->destroy();
                        $this->session->unset_userdata('id_transacao');
                        echo'<script> window.location ="cursosmatriculados"</script>';
		}		
        } else {
          $this->session->set_flashdata('erro-transacao', '<div class="alert alert-warning alert-conf" role="alert"><i class="fa fa-info-circle"></i> Transação não aprovada</div>');
          echo'<script> window.location ="finalizarpedido"</script>';      
        }
       }
      } else if ($forma == 'BoletoBancario' ||  $forma == 'Debito') {
        
        $transacao = $this->transacao($forma); 
        
        $this->form_validation->set_rules('cpf', 'Cpf', 'trim|required|min_length[11]|max_length[14]', array('required' => 'O CPF está em branco', 'min_length' => 'Verifique o seu CPF', 'max_length' => 'Verifique o seu CPF'));
        
        if ($this->form_validation->run() == FALSE) {
        
        $form = validation_errors('<div class="alert alert-warning alert-conf" role="alert"><div class=""> <i class="fa fa-info-circle"></i> <span> ', ' </span> </div> </div>');
        $this->session->set_flashdata('erro-form-boleto', $form);
        redirect('finalizarpedido');
            
        } else {
        $nome = $aluno['nome'];
	$email = $aluno['email'];
	$telefone = $aluno['telefone'];
	$endereco = $aluno['endereco'];
	$numero = $aluno['numero'];
	$cep = $aluno['cep'];
	$bairro = $aluno['bairro'];
	$cidade = $aluno['cidade'];
	$estado = $aluno['estado'];
	$ddd = $aluno['ddd'];   
        
        $cpf = preg_replace('#[^0-9]#', '', $this->input->post('cpf'));
        
        $TelefoneFixo = $ddd.$telefone;
        $id_transacao = $_SESSION['id_transacao'];
        $NomePortador = $this->input->post('nome-portador');//Nome Impresso no Cartão
	$numerocartao = $this->input->post('numerocartao');//Numero Impresso no Cartão
	$mesvalidade  = $this->input->post('mesvalidade');//Mês validade
	$anovalidade  = $this->input->post('anovalidade');//Ano Validade
	$CodigoSeguranca = $this->input->post('CodigoSeguranca');//Código de Segurança Impresso no Cartão

	$params['token_account'] = 'a44677dac7cba94';        
//	$params['token_account'] = '32e9c1b008b07a0';     
	$params['customer[name]'] = $nome;
	$params['customer[cpf]'] = $cpf;
	$params['customer[email]'] = $email;
	$params['customer[contacts][][type_contact]'] = 'M';
	$params['customer[contacts][][number_contact]'] = $TelefoneFixo;
	
	$params['customer[addresses][][type_address]'] = 'B';
	$params['customer[addresses][][postal_code]'] =$cep;
	$params['customer[addresses][][street]'] = $endereco;
	$params['customer[addresses][][number]'] = $numero;
	$params['customer[addresses][][completion]'] = 'A';
	$params['customer[addresses][][neighborhood]'] =$bairro;
	$params['customer[addresses][][city]'] = $cidade;
	$params['customer[addresses][][state]'] =$estado;
        
        /* Dados da Transação */
	$params['transaction[available_payment_methods]'] = '2,3,4,5,6,7,14,15,16,18,19,21,22,23';
	$params['transaction[order_number]'] = $id_transacao;
        $base = base_url();
	$params['transaction[customer_ip]'] =  $_SERVER["REMOTE_ADDR"];
	$params['transaction[url_notification]'] = $base.'retorno';
        
        $params['transaction_product[][description]'] = $this->descricao();
	$params['transaction_product[][quantity]'] = '1';
	$params['transaction_product[][price_unit]'] = $this->cart->total();
        
        $params['transaction_product[][code]'] = '1';
	// $params['transaction_product[][sku_code]'] = '0001';
	$params['transaction_product[][extra]'] = '';
        
        /* Dados para Pagamento */
	$params['payment[payment_method_id]'] = $this->input->post('Forma');
	$params['payment[split]'] = '01';//quantidade de parcelas
	$params['payment[card_name]'] = $NomePortador;//Nome Impresso no Cartão
	$params['payment[card_number]'] =$numerocartao;//Numero Impresso no Cartão
	$params['payment[card_expdate_month]'] =$mesvalidade;//Mês validade
	$params['payment[card_expdate_year]'] =$anovalidade;//Ano Validade
	$params['payment[card_cvv]'] =$CodigoSeguranca;//Código de Segurança Impresso no Cartão
	
	$urlPost = "https://api.sandbox.traycheckout.com.br/v2/transactions/pay_complete";
//  	$urlPost = "https://api.traycheckout.com.br/v2/transactions/pay_complete";

        ob_start();
	
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, $urlPost);
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt ($ch, CURLOPT_SSLVERSION, 6);
	//curl_setopt ($ch, CURLOPT_SSLVERSION,'CURL_SSLVERSION_TLSv1_2');
	curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
	curl_exec($ch);
	
	/* XML de retorno */
	$resposta = simplexml_load_string(ob_get_contents());
       
	ob_end_clean();
	curl_close($ch);
        if($resposta->message_response->message == "success"){
            
             //Tratamento dos dados de resposta da consulta.
            $link=$resposta->data_response->transaction->payment->url_payment;
	    $token=$resposta->data_response->transaction->token_transaction; 
            $situacao = 0; // SITUAÇÃO [PENDENTE]
            if ($this->url->dispostivo() == "mobile") {
                
                $linha = $resposta->data_response->transaction->payment->linha_digitavel;
                $this->boleto->setIpte($linha);
                $digitacao = $this->boleto->getIpte();
                $url_pagamento = $resposta->data_response->transaction->payment->url_payment;
                $id = $_SESSION['aluno']['id_aluno'];
                $aluno = $this->Cadastro_Model->getAlunoPorID($id);
                $dados = array('valor' => $resposta->data_response->transaction->payment->price_original,'fatura' => $id_transacao,'url' => $url_pagamento,'linha' => $digitacao,'ativo' => $this->Pagamento_Model->obtemclienteativo(),'termos' => $this->Cadastro_Model->obtemTermo(), 'titulo' => 'Boleto Móvel', 'erro_conf' => NULL, 'aluno' => $aluno);
                $this->Pagamento_Model->atualizatransacao($token,$id_transacao, $situacao);
                $this->cart->destroy();
                $this->session->unset_userdata('id_transacao');
                $this->load->view('commons/pagamento/boleto_mobile', $dados);    
            } else {
 
            $this->Pagamento_Model->atualizatransacao($token,$id_transacao, $situacao);
            $this->cart->destroy();
            $this->session->unset_userdata('id_transacao');
            header("location: $link"); 
            }
        } else {
            $message_complete = (array)$resposta->error_response->validation_errors->validation_error->message_complete;
            $message_complete = "Atenção: Houve um erro ao processar sua transação de pagamento: ".$message_complete[0];
            $this->session->set_flashdata('erro-transacao', '<div class="alert alert-warning alert-conf" role="alert"><i class="fa fa-info-circle"></i> "'.$message_complete.'"</div>');
            echo'<script> window.location ="finalizarpedido"</script>';
        } 
       }
      } 
      else if ($forma == 'Saldo') {
          
         $this->form_validation->set_rules('cpf', 'Cpf', 'trim|required|min_length[11]|max_length[14]', array('required' => 'O CPF está em branco', 'min_length' => 'Verifique o seu CPF', 'max_length' => 'Verifique o seu CPF'));
        
        if ($this->form_validation->run() == FALSE) {
        
        $form = validation_errors('<div class="alert alert-warning alert-conf" role="alert"><div class=""> <i class="fa fa-info-circle"></i> <span> ', ' </span> </div> </div>');
        $this->session->set_flashdata('erro-form-boleto', $form);
        redirect('finalizarpedido');
            
        } else { 
         $transacao = $this->transacao($forma);
         $id_transacao = $_SESSION['id_transacao'];
         // ENVIO DOS DADOS PARA A API DE CONSUMO DE SALDO
         $ch = curl_init();
        //Chaves de acesso  API enviadas via POST
            $post = array (
                'token' => 'iNvQaCVGaPJ7773eoB2lFXdiF0S',
                'chave' => 'de3d61a0811511d3b1866g0648:PX1PWk86IONVUlNPUw==',
                'nome' => 'AMAZONIA CURSOS',
                'id_aluno' => $_SESSION['aluno']['id_aluno'],
                'valor' => $this->cart->total(),
                'id_unico' =>  $id_transacao,
                'dispositivo' => '',
                'navegador' => ''
            );
            
            
            $url_base = base_url();
            
            
            curl_setopt($ch, CURLOPT_URL, $url_base.'');
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
            curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

            $requisicao = curl_exec($ch);
            curl_close ($ch); 
           
            $api_result = json_decode($requisicao);

            if (($api_result->status) == 1) {
            $token =  $api_result->token;
            $situacao = 1; 
            $this->Pagamento_Model->atualizatransacao($token,$id_transacao, $situacao);
            $this->Pagamento_Model->liberacertificado($id_transacao);
            $this->Pagamento_Model->inserecertificado($id_transacao);
            $this->Pagamento_Model->atualiza_log_transacao($id_transacao);
            $this->cart->destroy();
            $this->session->unset_userdata('id_transacao');
            
            $this->session->set_flashdata('sucesso-saldo', '<div class="alert alert-success alert-conf" role="alert"><i class="fa fa-check-circle"></i> Transação realizada com sucesso</div>');    
            echo'<script> window.location ="cursosmatriculados"</script>';
            } else if ($api_result->mensagem == "ERRO 010: Saldo Insuficiente") {
            $this->session->set_flashdata('erro-saldo', '<div class="alert alert-warning alert-conf" role="alert"><i class="fa fa-info-circle"></i> Saldo insuficiente para realizar essa transação</div>');
            redirect('finalizarpedido');
            } else if ($api_result->mensagem == "ERRO 016: Aluno sem permissao") {
            $this->session->set_flashdata('erro-permissao', '<div class="alert alert-warning alert-conf" role="alert"><i class="fa fa-info-circle"></i> Você não possui uma conta ativa para realizar essa transação</div>');    
            echo'<script> window.location ="finalizarpedido"</script>';
            }
        }    
      }
      
   } else {
             redirect();
         }
  }
   
  
  public function financeiro_declaracao_teste() {
      $id_transacao='AMA8838aa62';
      $this->load->library('pdf');
     $transacaopaga = $this->Pagamento_Model->transacaopagadeclaracaoitens($id_transacao);
     
     print_r($transacaopaga);
     
    
  }
   
    public function financeiro_declaracao() {
      $this->load->library('pdf');
      $transacaopaga = $this->Pagamento_Model->transacaopagadeclaracao(); 
//     echo "<pre>";
//     print_r($transacaopaga);
//     exit();
      $pdf = new PDF('L', 'mm', 'A4');
               $pdf->AliasNbPages();
            $pdf->AddPage("P");
                $ano=date("Y")-1;
               $pdf->SetMargins(19, 18);
               $pdf->setY("10");
            $pdf->Image('assets/img/logoovumtec.png', 13, 20,60,20); //logo
            $pdf->SetFont('Arial', 'B', 9);
            $pdf->Ln(1); //quebra de linha
             $pdf->setX(220);
            $pdf->setY("20");
             $pdf->setX("10");
             $pdf->SetFont('Arial', 'B', 14);
            $pdf->Cell(0, 13, utf8_decode('OVUMTEC SOLUÇÕES'), 0, 1, 'R');
            //$this->fpdf->setY("25");
            //$this->fpdf->setX("10");
            //$this->fpdf->SetFont('Arial', '', 8);
            //$this->fpdf->Cell(0, 13, utf8_decode('Razão social: Cidade Aprendizagem'), 0, 1, 'R');
            $pdf->setY("28");
            $pdf->setX("10");
            $pdf->SetFont('Arial', '', 8);
            $pdf->Cell(0, 13, utf8_decode('Travessa Quatorze de Março, 221'), 0, 1, 'R');
            $pdf->setY("31");
            $pdf->setX("10");
            $pdf->SetFont('Arial', '', 8);
            $pdf->Cell(0, 13, utf8_decode('Umarizal - Belém/PA - CEP: 66055-490'), 0, 1, 'R');
            $pdf->setY("34");
            $pdf->setX("10");
            $pdf->SetFont('Arial', '', 8);
            $pdf->Cell(0, 13, 'CNPJ: 10.910.194/0001-16', 0, 1, 'R');
            $pdf->setY("50");
            $pdf->setX("19");
            $pdf->SetFont('Arial', 'B', 12);
            $ano=date("Y")-1;
            $pdf->Cell(0, 7, utf8_decode('Declaração dos Valores Pagos a Ovumtec Soluções'), 0, 1, 'C');
            $pdf->Cell(0, 7, utf8_decode('Referente ao Ano de ' . $ano), 0, 1, 'C');
            $alunonome=$_SESSION['aluno']['nome'];
            $pdf->Cell(0, 7, utf8_decode('Aluno: '. $alunonome) , 0, 1, 'C');
            $pdf->setY('80');
            $pdf->setX("19");
            $pdf->SetFont('Arial', 'B', 8);
            $pdf->Cell(0, 13, 'Item', 0, 1, 'L');

            $pdf->setY('80');
            $pdf->setX("155");
            $pdf->SetFont('Arial', 'B', 8);
            $pdf->Cell(0, 13, 'Data', 0, 1, 'L');

            $pdf->setY('80');
            $pdf->SetFont('Arial', 'B', 8);
            $pdf->Cell(0, 13, 'Valor', 0, 1, 'R');

        
            $valor = 0;
              $linha = 70;
            foreach ($transacaopaga as $peimazon10) {
                
                $linha =$linha+ 20;
                
           
                $idt=$peimazon10->id_transacao;
                $transacaopaga2 = $this->Pagamento_Model->transacaopagadeclaracaoitens($idt);
                $pdf->SetFont('Arial', '', 8);
//                $valor2 = $peimazon10->valor;
//                $primeiro = substr($valor2, 0, strlen($valor2) - 2);
//                $segundo = substr($valor2, strlen($valor2) - 2, strlen($valor2) + 2);
//                $total = $primeiro . ',' . $segundo;
                $pdf->setY($linha);
                $pdf->setX("19");
                $pdf->setY($linha);
                $pdf->MultiCell(110, 4, utf8_decode($transacaopaga2), 0, 'L', 0, 0);
                
                $pdf->setY($linha);

               $pdf->setX("150");
                $pdf->SetFont('Arial', '', 8);
                //$this->fpdf->Cell(0, 13, utf8_decode($nomeproduto.' '.$pe->nome), 0, 1, 'L');
              $pdf->MultiCell(50, 4, date('d/m/Y', strtotime($peimazon10->data_transacao)), 0, 'L', 0, 0);
                $pdf->setY($linha);

              $pdf->setY($linha);
                $pdf->setX("100");
             $pdf->SetFont('Arial', '', 8);
               $valor=$peimazon10->valor;
// 1 234,56
                $pdf->Cell(0, 5, 'R$ ' . number_format($valor, 2, ',', ' '), 0, 1, 'R');
                $linha += 10;
//                $valor += $valor2;
               $total=$total+$valor;
            }
            $pdf->setY($linha+10);
            $pdf->Cell(0, 13, 'Valor Total: R$ ' . number_format($total, 2, ',', ' '), 0, 1, 'R');
                  $pdf->setY($linha+30);
            $pdf->SetFont('Arial', 'B', 8);
            //ßßß$pdf->Cell(0, 13, 'Valor Total: R$ ' . $total, 0, 1, 'R');
           $pdf->SetFont('Arial', 'B', 8);
            $pdf->SetFont('Arial', '', 11);
            $pdf->Cell(0, 7, utf8_decode('Os gastos declarados, realizados durante o ano de ' . $ano . ', foram para cursos de formação continuada.'), 0, 1, 'L');
          $pdf->Cell(0, 7, utf8_decode('Verifique com seu contador se podem ser abatidos em sua Declaração de Rendimentos.'), 0, 1, 'L');
            $pdf->Output();
                 
                 
                 
    }
        public function financeiro() {
      
        if (isset($_SESSION['aluno']) == TRUE) {
            $transacao_pendente = $this->Pagamento_Model->getTransacaoPendentePorIdResult();
            $transacaopaga = $this->Pagamento_Model->transacaopaga();
            $id = $_SESSION['aluno']['id_aluno'];
            $aluno = $this->Cadastro_Model->getAlunoPorID($id);
            $dados = array(
                'pendente' => $transacao_pendente,
                'transacaopaga' => $transacaopaga,
                'termos' => $this->Cadastro_Model->obtemTermo(), 
                'titulo' => 'Financeiro', 
                'aluno' => $aluno,
                'descricao' => 'O aluno pode acompanhar todos os pagamentos realizados no Amazônia Cursos',
                'controle' => $this    
                );
                 
            $this->load->view('financeiro', $dados);    
         } else {
             redirect();
         }
    }
    
    public function transacaoItens($transacao) {
       
        $item = $this->Pagamento_Model->obtemitemtransacao($transacao);
        $certificados = '';
        
        foreach ($item as $itens) {
            $curso = $this->Cursos_Model->obtemCursosNomePorID($itens->id_curso);
            $certificados .= $curso['nome'] . ', ';
        }
        $regra = substr($certificados, 0, -2);
        return $descricao = 'CURSOS(S) ' . $regra;
        
        
    }
    public function dataPagamento($transacao) {
        return $this->Pagamento_Model->transacaoPagaLog($transacao);
    }
    
    public function cancelaCompra() {

        $identificador = $this->criptografia->decodifica($this->input->post('transacao'));

        $transacao = $this->Pagamento_Model->recuperatransacao($identificador);
        
        if ($transacao['situacao'] != 6) {
            $aluno = $this->Cadastro_Model->getAlunoPorID($transacao['id_aluno']);

            $r_transacao_set = array(
                'situacao' => 6,
                'tipopagamento' => $transacao['tipopagamento'],
                'codigo' => $transacao['codigo']
            );
            $r_transacao_where = array(
                'id_transacao' => $transacao['id_transacao']
            );
            // ATUALIZA A TRANSACAO
            $this->Pagamento_Model->update($r_transacao_set, $r_transacao_where);

            //LOG DA TRANSACAO

            $arr_log_transacao = array(
                'transacao' => $transacao['id_transacao'],
                'email' => $aluno['email'],
                'data' => date('Y-m-d H:i:s'),
                'situacao' => 6,
                'pago' => 0
            );

            //INSERE O LOG NO BD

            $this->Pagamento_Model->insert($arr_log_transacao);

            // RETIRA OS CERTIFICADOS DO ALUNO

            $this->load->model('Certificado_Model', 'certificado');
            $this->certificado->retiraCertificado($identificador);

            // ADICIONA O VALOR DA TRANSACAO COMO SALDO NA OVUMPAY NEGOCIOS
            $this->load->library('Negocios');

            $adiciona = $this->negocios->adicionasaldo($transacao['valor'], $aluno['email'], $transacao['id_aluno'], $identificador);

            if ($adiciona['status'] == 1) {
                echo json_encode(array('situacao' => TRUE, 'valor' => number_format($transacao['valor'], 2, ',', '.')));
            } else {
                echo json_encode(array('situacao' => FALSE, 'mensagem' => $adiciona['mensagem']));
            }
        }
    }

}
