<?php


class RetornoPagamento extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->load->model('Pagamento_Model');
        $this->load->model('Cadastro_Model');
        $this->load->database();
    }
 
    public function index() { 
        
    $token=$_POST['token_transaction'];  
//    $token = 'd3138fd61fa94fb6b007add5b7987d0a';     
//    $params['token_account'] = 'a44677dac7cba94'; // DESENVOLVIMENTO
    $params['token_account'] = '32e9c1b008b07a0'; 
    $params['token_transaction'] =  $token;	
//    $urlPost = "https://api.sandbox.traycheckout.com.br/v2/transactions/get_by_token"; // DESENVOLVIMENTO
    $urlPost = "https://api.traycheckout.com.br/v2/transactions/get_by_token";
    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"){
        $codigo_pagamento   =  (string)$resposta->data_response->transaction->payment->payment_method_id;
        $pedido             =  (string)$resposta->data_response->transaction->order_number;
        $cod_status         =  (string)$resposta->data_response->transaction->status_id;
	$email              =  (string)$resposta->data_response->transaction->customer->email;

        $codigo_pagamento_cartao = array(2,3,4,5,15,16,18,19,20,25);
        $codigo_pagamento_debito = array(7,14,21,22,23);
        $codigo_pagamento_boleto = array(6);


		
        if(in_array((int)$codigo_pagamento,$codigo_pagamento_cartao)){
          $forma = 'CartaoDeCredito';
        }
        elseif(in_array((int)$codigo_pagamento,$codigo_pagamento_debito)){
          $forma = 'DebitoBancario';
        }
        elseif(in_array((int)$codigo_pagamento,$codigo_pagamento_boleto)){
          $forma = 'BoletoBancario';
        }
       /*
        * Retirar quando o site for para produção
        */
        
       
        if($cod_status==4){ $cdbanco=3;	}

 	if($cod_status==5){ $cdbanco=2;	}

 	if($cod_status==6){ $cdbanco=1;	}

 	if($cod_status==7){ $cdbanco=5;	}

 	if($cod_status==24){ $cdbanco=6;}

 	if($cod_status==87){ $cdbanco=2;}

 	if($cod_status==88){ $cdbanco=6;}

 	if($cod_status==89){ $cdbanco=5;}
        
        // RECUPERO A TRANSAÇÃO NO BANCO DE DADOS
        $id_transacao = array('id_transacao' => $pedido);
        $transacao = $this->Pagamento_Model->recuperatransacao($id_transacao['id_transacao']);
        $id_aluno = $transacao['id_aluno'];
        $aluno = $this->Cadastro_Model->getAlunoPorID($id_aluno);
        $email_aluno = $aluno['email'];
        // ATUALIZAR A TRANSAÇÃO 
        
        $r_transacao_set = array('situacao' => $cdbanco, 'tipopagamento' => $forma);
        $r_transacao_where = array('id_transacao' => $pedido);
        
        
        
        $this->Pagamento_Model->update($r_transacao_set, $r_transacao_where);
        
        // CRIA O ARRAY DE INSERCAO DE LOG        
        $arr_log_transacao = array(
            'transacao'       =>  $pedido,
            'email'           =>  $email_aluno,
            'data'            =>  date('Y-m-d H:i:s'),
            'situacao'        =>  $cod_status,
            'pago'            =>  0      
        );
        // INSERE O LOG NA TABELA
        $this->Pagamento_Model->insert($arr_log_transacao);

        // CONTAGEM DE TODOS OS REGISTROS ONDE TODOS OS PEDIDOS SÃO = PAGOS
        $data = array('transacao' =>  $pedido, 'pago' => 1);
        $log_transacao = $this->Pagamento_Model->count_all_data($data);
        $log = $log_transacao[0]->total;
       
        if( ($cod_status == 6) && ($log == 0) ){

            $arr_log_transacao = array(
            'transacao'       =>  $pedido,
            'email'           =>  $email_aluno,    
            'data'            =>  date('Y-m-d H:i:s'),
            'situacao'        =>  $cod_status,
            'pago'            =>  1
            );
           
            $this->Pagamento_Model->insert($arr_log_transacao);
            $r_transacao_set = array('situacao' => 1, 'tipopagamento' => $forma);
            $r_transacao_where = array('id_transacao' => $pedido);
            $this->Pagamento_Model->update($r_transacao_set, $r_transacao_where);
            // LIBERA OS CERTIFICADOS PAGOS
            // VERIFICA SE JÁ EXISTE UM CERTIFICADO PARA A TRANSAÇÃO
            
            $verifica = $this->Pagamento_Model->verificacertificadopago($id_transacao['id_transacao']);
           
            if ($verifica == FALSE) {
            $this->Pagamento_Model->liberacertificado($id_transacao['id_transacao']);
            $this->Pagamento_Model->inserecertificado($id_transacao['id_transacao']);
            }
        } 
      }
    }
}
