<?php

class RotornoTransparente extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->load->model('Pagamento_Model');
        $this->load->model('Cadastro_Model');
        $this->load->database();
    }

    public function index() {

//        if ($this->input->post('resposta')!=null) {
        $resposta = $this->input->post("resposta", TRUE);
        $resposta = $this->security->xss_clean($resposta);
        //recebe dados da transação
//        $dados = array(
//            'status'=>0,
//            'conteudo'=>$resposta,
//            'data_publicacao'=>'2019-02-02'
//        );
//        $this->Cadastro_Model->add($dados);
//        die;
//         $resposta = json_decode('{"transacao":"141910362951112954111185529433","meiopagamento":"VISA","cod_status":"3","url_retorno":"https:\/\/www.aporfia.com.br\/amazonia\/retorno_transparente","pedido":"AMA0ee06387","valor":"28"}');
        $resposta = json_decode($resposta);
//        echo '<pre>';
//        var_dump($resposta);
//        die;
        $transacao = $this->Pagamento_Model->recuperatransacao($resposta->pedido);

        if ($transacao != null) {

            $aluno = $this->Cadastro_Model->getAlunoPorID($transacao['id_aluno']);
            $cod_status = $resposta->cod_status;
            $meio_pagamento_op = $resposta->meiopagamento;
            $cod_transacao = $resposta->transacao;
//
//        $this->load->model('Certificado_Model', 'certificado');
//        $this->certificado->enviaPorEmail($resposta->pedido);
//        die();
            //adequando o tipo de pagamento
            $meios_pagamento_cartao = array(
                "VISA",
                "MASTERCARD",
                "DINERS",
                "AMERICAN",
                "ELO",
                "AURA",
                "HIPERCARD",
                "HIPER",
                "JCB",
                "DISCOVER"
            );
            $meios_pagamento_debito = array(
                "BRADESCO",
                "MASTERCARD",
                "PEELA",
                "ITAU"
            );

            $meios_pagamento_saldo = array(
                "SALDO"
            );


            if (in_array($meio_pagamento_op, $meios_pagamento_cartao)) {
                $meio_pagamento = "CartaoDeCredito";
            } else if (in_array($meio_pagamento_op, $meios_pagamento_debito)) {
                $meio_pagamento = "DebitoBancario";
            } else if (in_array($meio_pagamento_op, $meios_pagamento_saldo)) {
                $meio_pagamento = "Saldo";
            } else if ($meio_pagamento_op == "BOLETO") {
                $meio_pagamento = "BoletoBancario";
            } else {
                $meio_pagamento = "outro";
            }

            /**
             *  0 – INICIADO
             *  1 – APROVADO/PAGO
             *  2 – EM PROCESSAMENTO/EM MONITORAMENTO
             *  3 – AGUARDANDO PAGAMENTO
             *  5 – CANCELADO/REPROVADO
             *  6 - EM CONTESTAÇÃO/EM RECUPERAÇÃO
             */
            //adequando o codigo de status
            if ($cod_status == 1) {
                $status_pagamento = 3;              //aguardando pagamento do boleto
            } else if ($cod_status == 3 || $cod_status == 4) {
                $status_pagamento = 1;              //pago         
            } else if ($cod_status == 7 || $cod_status == 10) {
                $status_pagamento = 5;              //cancelado reprovado         
            } else if ($cod_status == 5 || $cod_status == 6) {
                $status_pagamento = 6;              //em recuperação em contestação         
            } else if ($cod_status == 12) {
                $status_pagamento = 2;              //em recuperação em contestação         
            }


            //atualiza transação no banco de dados
            $r_transacao_set = array(
                'situacao' => $status_pagamento,
                'tipopagamento' => $meio_pagamento,
                'codigo' => $cod_transacao
            );
            $r_transacao_where = array(
                'id_transacao' => $transacao['id_transacao']);
            $this->Pagamento_Model->update($r_transacao_set, $r_transacao_where);



            //armazena log transação 
            $arr_log_transacao = array(
                'transacao' => $transacao['id_transacao'],
                'email' => $aluno['email'],
                'data' => date('Y-m-d H:i:s'),
                'situacao' => $status_pagamento,
                'pago' => 0
            );

            //Insere log no banco de dados
            $this->Pagamento_Model->insert($arr_log_transacao);
            
            // RETIRA OS CERTIFICADOS DO ALUNO
            
            if ($status_pagamento == 6) {
              $this->load->model('Certificado_Model', 'certificado');
              $this->certificado->retiraCertificado($resposta->pedido);
            }
            
            //Verificando se o pedido já não foi egistrado como pago
            $log_transacao = $this->Pagamento_Model->count_all_data(
                    array(
                        'transacao' => $transacao['id_transacao'],
                        'pago' => 1
            ));
            $log = $log_transacao[0]->total;

            //se o codigo de pagamento estiver notificando pagamento

            if (($cod_status == 3) && ($log == 0)) {

                //insere log na banco de dados com registro de pagamento
                $arr_log_transacao = array(
                    'transacao' => $transacao['id_transacao'],
                    'email' => $aluno['email'],
                    'data' => date('Y-m-d H:i:s'),
                    'situacao' => $status_pagamento,
                    'pago' => 1
                );
                $this->Pagamento_Model->insert($arr_log_transacao);

                //atualiza transação
                $r_transacao_set = array(
                    'situacao' => 1,
                    'tipopagamento' => $meio_pagamento);
                $r_transacao_where = array(
                    'id_transacao' => $transacao['id_transacao']);
                $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($transacao['id_transacao']);

                if ($verifica == FALSE) {

                    $this->Pagamento_Model->liberacertificado($transacao['id_transacao']);
                    $this->Pagamento_Model->inserecertificado($transacao['id_transacao']);
                    $this->load->model('Certificado_Model', 'certificado');
                    $this->certificado->enviaPorEmail($resposta->pedido);
                }
                
                

            }
        }
//        }else{
//            echo json_encode(array('status'=>0, 'dados'=>null, 'msg'=>'Acesso invalido'));
//        } 
    }

}
