<?php
//Hugo: 22/10/2015- comunicação com webservice gera parcela pagseguro
class pagseguro {

	public function __construct($registry) {

	  $this->config   = $registry->get('config');
	  $this->db       = $registry->get('db');
	  $this->session  = $registry->get('session');
	  $this->registry = $registry;
	  if($this->config->get('pagseguro_parcela')){
		  if(!isset($this->session->data['fator_perfil_pagseguro'])){
			$this->session->data['fator_perfil_pagseguro']=$this->getFator();
		  }
	  }
	}

	public function ConsultaParcela($url, $post = NULL, array $header = array()){

	    try{
			$ch = curl_init();
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
			curl_setopt($ch, CURLOPT_URL,$url);

			if(count($header) > 0) {
				curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
			}

			if($post !== null) {
				curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
			}

			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
			curl_setopt($ch, CURLOPT_TIMEOUT, 300);
			$data = curl_exec($ch);
			$erro = curl_error($ch) . ' - Code: ' . curl_errno($ch);

			if(!$data){
				//$data ='Deu Erro: '.$erro; ocultei o erro para não mostrar ao cliente
			}
			//$data=curl_getinfo($ch);
			curl_close($ch);

			return $data;

		}catch(Exception $e){
			//deu erro na consulta
		}
	}


    public  function  getFator(){

	    $user      = $this->config->get('pagseguro_email');
	    $token     = $this->config->get('pagseguro_token');

		$bandeira  = 'visa';
		$vlProduto = '1000.00';
		$request   = 'https://ws.pagseguro.uol.com.br/v2/installments?email='.$user.'&token='.$token.'&amount='.$vlProduto.'&cardBrand='.$bandeira ;


		$resultado = $this->ConsultaParcela($request);
		$resultado = simplexml_load_string($resultado);

		if($resultado){
			$fator = array();

			for($i=0;$i< sizeof($resultado);$i++){
				$fator[$i] = (strval($resultado->installment[$i]->amount)/$vlProduto);
			}

			$FatorPerfil = array();
			for ($i=12;$i>=1;$i--){
				$FatorPerfil[$i]= $fator;
				array_pop($fator);
			}
			   $FatorPerfil = serialize($FatorPerfil);

			return $FatorPerfil;
		}else{
			return false;
		}
	}

	public function getPerfil($vlProduto){

		if(isset($this->session->data['fator_perfil_pagseguro'])){
		    $vlmin=4.9999; //4.99992 pq ele arredonda para 5
			$FatorPerfil = unserialize($this->session->data['fator_perfil_pagseguro']);
		    for($l=11;$l>=0;$l--){
				if(	((float)$FatorPerfil[12][$l] * (float)$vlProduto) >=$vlmin) {
					break ;
				}elseif(($l==0) && ($vlProduto < $vlmin)) break;
			}
            return $FatorPerfil[$l+1];
	    }else{
			return false;
		}
	}

}
?>