<?php
class ControllerPaymentFuturaKomerci extends Controller {

	protected function index() {
		//ativa cartao individual
		$this->load->dmodel('checkout/order');
		$this->app();

		$language = $this->language->load('payment/FuturaKomerci');
		$this->data = array_merge($this->data, $language);

		$this->data['telefone']         = $this->customer->getTelephone();
		$this->data['documento']        = ($this->customer->getCpf()) ? $this->customer->getCpf() : $this->customer->getCnpj() ;
		$this->data['ativa_visa']       = $this->config->get('FuturaKomerci_visa_ativo');
		$this->data['ativa_mastercard'] = $this->config->get('FuturaKomerci_mastercard_ativo');
		$this->data['ativa_diners']     = $this->config->get('FuturaKomerci_diners_ativo');
		$this->data['ativa_hiper']      = $this->config->get('FuturaKomerci_hiper_ativo');
		$this->data['ativa_hipercard']  = $this->config->get('FuturaKomerci_hipercard_ativo');
		$this->data['redir']            = $this->url->link('payment/FuturaKomerci/confirm');
		$this->data['pedido']           = $this->dmodel_checkout_order->getOrder($this->session->data['order_id']);

		$this->data['order_id_md5']     = md5($this->data['pedido']['order_id']);
		$this->data['total_md5']        = md5($this->data['pedido']['total']);

		if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/payment/FuturaKomerci.tpl')) {
			$this->template = $this->config->get('config_template') . '/template/payment/FuturaKomerci.tpl';
		} else {
			$this->template = 'default/template/payment/FuturaKomerci.tpl';
		}
		$this->render('payment/FuturaKomerci');
	}

	public function ver_cupom(){
	$this->load->model('checkout/order');
	//pega os dados do cliente e pedido
	if(isset($_GET['NUMPEDIDO'])){
	//num pedido
	$pedido_na_loja = (int) $_GET['NUMPEDIDO'];
	//dados pedido
	$dados_ped = $this->DadosPedido($pedido_na_loja);
	//cod retorno
	if(isset($_GET['CODRET'])){
	$cod_retor_rede = (int) $_REQUEST['CODRET'];
	}else{
	$cod_retor_rede = 0;
	}
	// numero da autenticacao
	$autent = @$_REQUEST['NUMAUTENT'];
	// codigo da autorizacao, se tiver
	$arp = @$_REQUEST['NUMAUTOR'];
	// comprovante de venda
	$cv = @$_REQUEST['NUMCV'];
	// n�mero sequencial unico da transa��o
	$sqn = @$_REQUEST['NUMSQN'];
	// data da transa��o
	$data = @$_REQUEST['DATA'];

	$data_expi = (isset($_GET['DATA_EXPI'])) ? @$_REQUEST['DATA_EXPI'] : '' ;

	//se o pedido for aprovado = 0
	//$cod_retor_rede = 0;
	if($cod_retor_rede==0){
	//dados consultar
	$valores = "DATA=" . $data;
    $valores = $valores . "&TRANSACAO=203";
    $valores = $valores . "&TRANSORIG=" . $dados_ped['tipoPar'];
    $valores = $valores . "&PARCELAS=" . $dados_ped['numPar'];
    $valores = $valores . "&FILIACAO=" . $this->config->get('FuturaKomerci_afiliacao');
		$valores = $valores . "&DISTRIBUIDOR=";
    $valores = $valores . "&TOTAL=" . number_format($dados_ped['valPar'], 2, '.', '');
    $valores = $valores . "&NUMPEDIDO=" . $pedido_na_loja;
    $valores = $valores . "&NUMAUTOR=" . $arp;
    $valores = $valores . "&NUMCV=" . $cv;
    $valores = $valores . "&NUMSQN=" . $sqn;
	//url consulta
	$filename="http://ecommerce.redecard.com.br/pos_virtual/confirma.asp?" . $valores;
	//consulta curl
	$sessao_curl = curl_init();
	curl_setopt($sessao_curl, CURLOPT_URL, $filename);
	curl_setopt($sessao_curl, CURLOPT_CONNECTTIMEOUT, 20);
	curl_setopt($sessao_curl, CURLOPT_TIMEOUT, 40);
	curl_setopt($sessao_curl, CURLOPT_RETURNTRANSFER, true);
	$resultado = curl_exec($sessao_curl);
	curl_close($sessao_curl);
	//converte o retorno
	$arrLinhas = explode("&", $resultado);
	$i = 0;
	foreach ($arrLinhas AS $line) {
	   list($variavel, $valor) = explode('=', ($line));
	   $variavel = trim($variavel);
	   $$variavel = $valor ;
	   $i ++;
	}
	//gera o cupom link
	$URLCupom = "https://ecommerce.redecard.com.br/pos_virtual/cupom.asp?DATA=" . $data . "&TRANSACAO=201&NUMAUTOR=" . $arp . "&NUMCV=" . $cv;
	}

	//gera a parcela correta
	$parcelas = (int)$dados_ped['numPar'];
	if($parcelas==0){
	$parcelas = 1;
	}

	//layout
	echo '<html>
	<head>
	<script src="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/js/bootstrap.min.js"></script>
	<script src="app/komerci_form/futura.js"></script>
	<link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-combined.min.css" rel="stylesheet">
	<title>Recibo #'.$pedido_na_loja.'</title>
	</head>
	<body>
	<div class="container">
	<center>';
	if($this->config->get('FuturaKomerci_debug')==1){
	echo '<p style="width:750px !important;"><i>';
	echo 'Url Consulta: '.$filename.'<br>';
	if($cod_retor_rede==0){
	echo 'Resultado Consulta: '.$resultado.'<br>';
	}
	echo 'Url Cupom: '.$URLCupom.'</i>';
	echo '</p>';
	}
	echo '<h4>Resultado da Transa&ccedil;&atilde;o #'.$pedido_na_loja.'</h4>

	<table style="width:750px;">
	<tr><td align="right"><b>Total:</b></td><td>'.number_format($dados_ped['valPar'], 2, '.', '').' em '.$parcelas.'x</td></tr>';
	//gera o recibo ao cliente
	if($cod_retor_rede>1){//ok
	echo '<tr><td align="right"><b>Status:</b></td><td>NEGADO</td></tr>';
	echo '<tr><td align="right"><b>Retorno:</b></td><td>'.$cod_retor_rede.'</td></tr>';
	echo '<tr><td align="right"><b>Mensagem:</b></td><td>'.$_GET['MSGRET'].'</td></tr>';
	}elseif($cod_retor_rede==0){
	echo '<tr><td align="right"><b>Status:</b></td><td>APROVADO</td></tr>';
	echo '<tr><td align="right"><b>Autentica&ccedil;&atilde;o:</b></td><td>'.$autent.'</td></tr>';
	echo '<tr><td align="right"><b>Autoriza&ccedil;&atilde;o:</b></td><td>'.$arp.'</td></tr>';
	echo '<tr><td align="right"><b>Comprovante:</b></td><td>'.$cv.'</td></tr>';
	}
	echo '<tr><td align="right"><b>Bandeira:</b></td><td>'.$dados_ped['meioPar'].'</td></tr>';
	echo '<tr><td align="right"><b>Cart&atilde;o:</b></td><td>'.$_GET['NR_CARTAO'].' ('.$_GET['ORIGEM_BIN'].')</td></tr>';
	echo '</table>';

	if($cod_retor_rede==0){
	echo '<h4>Cupom Redecard</h4>';
	echo '<iframe src="'.$URLCupom.'" width="280" height="350" marginwidth="0" marginheight="0" scrolling="no" frameborder="0"></iframe><br>';
	}

	echo "<button class='btn btn-success' onclick='self.print()'>IMPRIMIR</button>";
	echo'
	</center>
	</div>
	</body>
	</html>';

	//atualiza os status na loja
	if($cod_retor_rede==0){
	$log = "APROVADO | Comprovante ".$cv." | Auto: ".$arp." | Aut: ".$autent." | BIN: ".$_GET['NR_CARTAO']." (".$_GET['ORIGEM_BIN'].")";
	$this->dmodel_checkout_order->update($pedido_na_loja,$this->config->get('FuturaKomerci_aprovado'), $log);
	}elseif($cod_retor_rede>1){
	$log = "NEGADO | Comprovante ".$cv." | Auto: ".$arp." | Aut: ".$autent." | BIN: ".$_GET['NR_CARTAO']." (".$_GET['ORIGEM_BIN'].")";
	$this->dmodel_checkout_order->update($pedido_na_loja,$this->config->get('FuturaKomerci_cancelado'), $log);
	}

    	//atualiza no bd
    	if($data_expi){
    	    $sql = ("UPDATE `order_komerci_form` SET
	                 `codRet`     =  '".$cod_retor_rede."',
	                 `binRet`     =  '".$_GET['NR_CARTAO']."',
	                 `data`       =  '".$data."',
	                 `origem_bin` =  '".$_GET['ORIGEM_BIN']."',
	                 `numautor`   =  '".$arp."',
	                 `numcv`      =  '".$cv."',
	                 `numautent`  =  '".$autent."',
	                 `numsqn`     =  '".$sqn."',
                     `data_expi`  =  '".$data_expi."'
	                  WHERE `pedidoId` ='".$pedido_na_loja."';");
    	}else{
    	    $sql = ("UPDATE `order_komerci_form` SET
	                 `codRet`     =  '".$cod_retor_rede."',
	                 `binRet`     =  '".$_GET['NR_CARTAO']."',
	                 `data`       =  '".$data."',
	                 `origem_bin` =  '".$_GET['ORIGEM_BIN']."',
	                 `numautor`   =  '".$arp."',
	                 `numcv`      =  '".$cv."',
	                 `numautent`  =  '".$autent."',
	                 `numsqn`     =  '".$sqn."'
	                  WHERE `pedidoId` ='".$pedido_na_loja."';");
    	}

    	$this->db->query($sql);


	}else{
	   echo "Retorno invalido!";
	}
}

	public function DadosPedido($pedido){
	$dados = $this->db->query("SELECT * FROM `order_komerci_form` WHERE pedidoId ='".$pedido."';");
	return $dados->row;
	}

	public function getStatusCielo($status)
	{
			switch($status)
			{
				case "0":
				$status = "Criada (Aguardando Pagamento)";
				$status_id = $this->config->get('FuturaKomerci_order_status_id');
				break;
				case "1":
				$status = "Em andamento";
				$status_id = $this->config->get('FuturaKomerci_pendente');
				break;
				case "2":
				$status = "Autenticada";
				$status_id = $this->config->get('FuturaKomerci_pendente');
				break;
				case "3":
				$status = "Nao autenticada";
				$status_id = $this->config->get('FuturaKomerci_pendente');
				break;
				case "4":
				$status = "Autorizada";
				$status_id = $this->config->get('FuturaKomerci_autorizado');
				break;
				case "5":
				$status = "Nao autorizada";
				$status_id = $this->config->get('FuturaKomerci_cancelado');
				break;
				case "6":
				$status = "Capturada (Aprovada)";
				$status_id = $this->config->get('FuturaKomerci_aprovado');
				break;
				case "8":
				$status = "Nao capturada";
				$status_id = $this->config->get('FuturaKomerci_pendente');
				break;
				case "9":
				$status = "Cancelada pelo Usuario";
				$status_id = $this->config->get('FuturaKomerci_cancelado');
				break;
				case "10":
				$status = "Em autenticacao";
				$status_id = $this->config->get('FuturaKomerci_pendente');
				break;
				default:
				$status = "n/a";
				$status_id = $this->config->get('FuturaKomerci_order_status_id');
				break;
			}

			return array('nome'=>$status,'id'=>$status_id);
	}

	public function mask($mask,$str){

        $str = str_replace(" ","",$str);

        for($i=0;$i<strlen($str);$i++){
            $mask[strpos($mask,"#")] = $str[$i];
        }

        return $mask;
    }

	public function confirm() {
		if(!isset($_GET['i'])){
			echo "Solicitacao Invalida!!";
			exit;
		}
		//dados
		$exe = explode('|',$_GET['i']);
		$cpf_cnpj = $exe[0];//cpf
		$tel = $exe[1];//telefone
		$hash = base64_decode($exe[2]);//hash
		//tratamento de dados 02
		$epe = explode('|',$hash);
		$num_parcelas = (int)$epe[0];
		if($num_parcelas==0){
		$num_parcelas = 1;
		}
		$total_a_pagar = (float)$epe[2];
		$bandeira = base64_decode($epe[3]);

		$dado = ($this->customer->getCpf()) ? "CPF: ".$this->mask("###.###.###-##",$cpf_cnpj) : "CNPJ: ".$this->mask("##.###.###/####-##",$cpf_cnpj) ;
		//$documento = ($this->customer->getCpf()) ? $this->mask("###.###.###-##",$cpf) : $this->mask("##.###.###/####-##",$cpf) ;

		$this->load->dmodel('checkout/order');
		$url_confirma = $this->url->link('checkout/success');
		$msg = "Pagamento Iniciado - ".$total_a_pagar." em ".$num_parcelas."x no ".$bandeira." - ".$dado." Tel: ".$this->mask("(##)####-####",$tel)."";
		$this->dmodel_checkout_order->confirm($this->session->data['order_id'], $this->config->get('FuturaKomerci_order_status_id'), $msg);
		$html = '<script>location.href = "'.$url_confirma.'";</script>';
		echo $html;
	}

	public function app() {
    $this->document->addScriptApp(array(
      'catalog/view/theme/appmobile/js/payment.komerci.js'
    ));
    $this->data['scriptsApp'] = json_encode($this->document->getScriptsApp());
  }

}
