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

class PaymentReturnApi extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->load->model('certificados_model', 'tm');
    }
    
    private function convertTipoPagamento($tipo_pagamento)
    {
        switch ($tipo_pagamento)
        {
            case "VISA":
                return 1;
                break;
            case "MASTERCARD":
                return 2;
                break;
            case "DINERS":
                return 55;
                break;
            case "AMERICAN":
                return 37;
                break;
            case "ELO":
                return 63;
                break;
            case "AURA":
                return 45;
                break;
            case "HIPERCARD":
                return 56;
                break;
            case "BOLETO":
                return 10;
                break;
            default:
            return 10000;
        }
    }
    
    private function convertStatus($status)
    {
        /*
         Iniciado 1 - 1
         Pago 3 - 3
         Concluído 4 - 4
         Contestação 5 – 5 
         Devolvido 6 - 6
         Cancelado 7 - 7
         Em recuperação 8 - 1
         Chargeback 9 - 8
         Reprovado 10 - 7
         Em Análise 11 - 1
         */
        
        switch ($status):
            case 1:
                return 1;
                break;
            case 3:
                return 3;
                break;
            case 4:
                return 4;
                break;
            case 5:
                return 5;
                break;
            case 6:
                return 6;
                break;
            case 7:
                return 7;
                break;
            case 8:
                return 1;
                break;
            case 9:
                return 8;
                break;
            case 10:
                return 7;
                break;
            case 11:
                return 1;
                break;
            default:
                return 10000;
        endswitch;
    }

    public function listenReturnCertificado()
    {
        $resposta = $this->input->post("resposta", TRUE);
        $response = $this->security->xss_clean($resposta);
        $response = json_decode($response, TRUE);
        
        if( !empty($response) &&  count($response)>0 )
        {
            
            $status = filter_var($response['cod_status'], FILTER_SANITIZE_NUMBER_INT);
            $status_validos = [1,3,5,6,7,8,9,10,11];

            if( in_array($status, $status_validos) )
            {
                $tipo_pagamento = strip_tags($response['meiopagamento']);
                $tipo_pagamento = filter_var($tipo_pagamento, FILTER_SANITIZE_STRING);
                $tipo_pagamento = $this->convertTipoPagamento($tipo_pagamento);
                    
                $status = $this->convertStatus($status);
                
                if( ($tipo_pagamento!==10000) && ($status!==10000) )
                {
                    $datad=date('Y-m-d H:i:s');
                    $pedido = strip_tags($response['pedido']);
                    $pedido = filter_var($pedido, FILTER_SANITIZE_STRING);
                    
                    if($pedido!=false)
                    {
                        $this->load->model('certificados_model', 'cm');
                        
                        $this->cm->altera_status_fatura_certificado($pedido, $status, $tipo_pagamento, $datad);
                    }
                }
            }
        }

    }
    
    public function listenReturnPlano()
    {
        //$resposta = '{"transacao":"fd1e55090294eb496e64604aad8080f8","meiopagamento":"BOLETO","cod_status":1,"url_retorno":"https:\/\/ www.meusite.com.br\/f\/","pedido":"fd1e55090294eb496e64604aad8080f8"}';
	$resposta = $this->input->post("resposta", TRUE);
        $response = $this->security->xss_clean($resposta);
        $response = json_decode($response, TRUE);
        
        if( isset($response) &&  count($response)>0 )
        {
            $status = filter_var($response['cod_status'], FILTER_SANITIZE_NUMBER_INT);
            $status_validos = [1,3,5,6,7,8,9,10,11];
            
            $tipo_pagamento = strip_tags($response['meiopagamento']);
            $tipo_pagamento = filter_var($tipo_pagamento, FILTER_SANITIZE_STRING);
            $tipo_pagamento = $this->convertTipoPagamento($tipo_pagamento);
            
            if( in_array($status, $status_validos) )
            {
                $status = $this->convertStatus($status);
                
                if( ($tipo_pagamento!==10000) && ($status!==10000) )
                {
                    $transacao_id = strip_tags($response['pedido']);
                    $transacao_id = filter_var($transacao_id, FILTER_SANITIZE_STRING);
                    
                    $this->load->model('transacao_model', 'tr');
                    $transacao = $this->tr->get_transacao_by_trancacao($transacao_id);
                    
                    
                    $id_aluno = $transacao[0]['id_aluno'];
                    $plano = $transacao[0]['cod_plano'];
                    $tipo = $transacao[0]['tipo'];
                    $datadia = date("Y-m-d");
                    
                  
                    $data_transacao = array('transacao'=>$transacao_id, 'situacao'=>$status, 'tipo_pagamento'=>$tipo_pagamento, 'data_alteracao'=>$datadia);
                    $this->load->model('usuarios_model');
                    
                    if($status!=4)
                    {
                        $this->tr->update_transacao($data_transacao);
                    }
		
                    if($status==6 && $tipo==1 )
                    {
                        $aluno = array('dt_val_ass'=>$datadia, 'id_fic'=>$id_aluno);
                        
                        $this->usuarios_model->update_conta_aluno($aluno);
                    }
                    
                    if( ($status==3)  && ($tipo==1) )
                    {
                        
                        $dataa = date("d-m-Y");
                        $plano = (int)$plano;
                        
                        if($plano==1)
                        {
                            $datav = date('Y-m-d', strtotime("+180 days",strtotime($dataa)));
                            echo $datav;
                        }		

                        if($plano==2)
                        {
                            $datav=date('Y-m-d', strtotime("+365 days",strtotime($dataa)));
                        }		

                        if($plano==3)
                        {
                            $datav=date('Y-m-d', strtotime("+30 days",strtotime($dataa)));
                        }		

                        if($plano==4)
                        {
                            $datav=date('Y-m-d', strtotime("+180 days",strtotime($dataa)));
                        }		

                        if($plano==5)
                        {
                            $datav=date('Y-m-d', strtotime("+360 days",strtotime($dataa)));
                        }
                        
                        $aluno = array('dt_val_ass'=>$datav, 'id_fic'=>$id_aluno);
                        $this->usuarios_model->update_conta_aluno($aluno);	 
                    }
                    
                }
            }
                    
        }

    }
}