<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class LibLioren {
    protected $ServerToken;
 
    public function __construct()
  {

    $CI = & get_instance();
    $CI->load->model('ConfigModels');
    $this->rut0 = $CI->ConfigModels->Value("LiorenRut");
    $this->ServerToken = $CI->ConfigModels->Value("LiorenToken");
  }
 
  public function setServerToken($ServerToken){
    $this->ServerToken = $ServerToken;
  }
  public function getServerToken(){
    return $this->ServerToken;
  }
private $Token2 ="Hola";
private $Chupalo = "Chupalo"; 
// Rutas para miscelaneos 
private $UrlPRUEBA = "https://www.lioren.cl/api/whoami";
private $UrlMiEmpresa = "https://www.lioren.cl/api/miempresa";
private $UrlLocalidades ="https://www.lioren.cl/api/regiones";
private $UrlMedioPago = "https://www.lioren.cl/api/mediopagos";
private $UrlRazonesDeReferencia = "https://www.lioren.cl/api/razonesref";
private $Urltipodespachos = "https://www.lioren.cl/api/tipodespachos"; //Tipos de Despacho habilitados según lo dispuesto por el SII
private $Urlsucursales = "https://www.lioren.cl/api/sucursales"; //sucursales disponibles para la empresa.
//  Rutas para documentos 

private $UrlTipoDocumentos = "https://www.lioren.cl/api/tipodocs";
//private $UrlBoletas = "https://www.lioren.cl/api/boletas";
private $UrlBoletas = "http://localhost:4000/PruebaRod";
private $UrlFactura = "http://localhost:4000/PruebaRod";
//private $UrlFactura = "https://www.lioren.cl/api/dtes";
//private $rut0 = "837414008"; //Rut de la empresa 
private function contextoGet(){
   
    $token =   isset($this->ServerToken) ?$this->ServerToken : "";
    $this->$token = isset($this->$token) ? $this->$token : "";

    $opts = array(
        'http'=>array(
          'method'=>"GET",
          'header'=>"Accept: application/json\r\n" .
                    "Authorization: ". 'Bearer '. $this->$token ."\r\n"
        ),
         "ssl"=>array(
        "verify_peer"=>false,
        "verify_peer_name"=>false,
    ),
      );
 return stream_context_create($opts);
}
private function contextoPost($data){
    $token =   isset($this->ServerToken) ?$this->ServerToken : "";
    $this->$token = isset($this->$token) ? $this->$token : "";
    $opts = array(
        'http'=>array(
          'method'=>"POST",
          'header'=>"Accept: application/json\r\n" .
                    "Authorization: ". 'Bearer '. $this->$token ."\r\n".
                    "Content-Type: application/json",
          'content' => json_encode($data)
        ),
         "ssl"=>array(
        "verify_peer"=>false,
        "verify_peer_name"=>false,
    ),
      );
 return stream_context_create($opts);
}
private function http($url,$contexto){
  return file_get_contents($url,false,$contexto);
}

public function VerificarConexion(){ 
    $resultado = $this->http($this->UrlPRUEBA, $this->contextoGet());
    if($resultado === false){
    return  "Error haciendo petición verificando Ruta Lioren";
    
    }else{
    return $resultado;
    }
}
public function MiEmpresa(){
    $resultado =  $this->http($this->UrlMiEmpresa, $this->contextoGet());
    if($resultado === false){
    return  "Error haciendo petición Datos De mi Empresa";
    
    }else{
    return $resultado;
    }

}
public function Localidades(){
    $resultado =  $this->http($this->UrlLocalidades, $this->contextoGet());
    if($resultado === false){
    return  "Error haciendo petición";
    
    }else{
    return $resultado;
    }

}
public function MedioPago(){
    $resultado =  $this->http($this->UrlMedioPago, $this->contextoGet());
    if($resultado === false){
    return  "Error haciendo petición";
    
    }else{
    return $resultado;
    }

}
public function RazonesDeReferencia(){
    $resultado =  $this->http($this->UrlRazonesDeReferencia, $this->contextoGet());
    if($resultado === false){
    return  "Error haciendo petición";
    
    }else{
    return $resultado;
    }

}
public function TipoDespachos(){
    $resultado =  $this->http($this->Urltipodespachos, $this->contextoGet());
    if($resultado === false){
    return  "Error haciendo petición";
    
    }else{
    return $resultado;
    }

}
public function Sucursales(){
    $resultado =  $this->http($this->Urlsucursales, $this->contextoGet());
    if($resultado === false){
    return  "Error haciendo petición";
    
    }else{
    return $resultado;
    }

}
public function Get_TipoDoc(){
    $resultado =  $this->http($this->UrlTipoDocumentos, $this->contextoGet());
    if($resultado === false){
    return  "Error haciendo petición";
    
    }else{
    return $resultado;
    }

}
public function EmitirBoleta($data){
    /*
    $data = [
        'emisor' => 
        [
            'tipodoc' => '39',
            'servicio' => 3,
        ],
        'detalles' => 
        [
            [
                'codigo' => '10001',
                'nombre' => 'Pan',
                'cantidad' => 1,
                'precio' => 500,
                'exento' => false,
            ],
        ],
        'expects' => 'all',
    ];
    */
    $resultado =  $this->http($this->UrlBoletas, $this->contextoPost($data));
    if($resultado === false){
    return  "Error haciendo petición";
    
    }else{
    return $resultado;
    }

}
public function EmitirFactura($data){
    $resultado =  $this->http($this->UrlFactura, $this->contextoPost($data));
    if($resultado === false){
    return  "Error haciendo petición";
    
    }else{
    return $resultado;
    }

}
public function GetRut(){
    $token =   $this->ServerToken;
  //  return   $this->$token;
    return $this->rut0;
    

}

}
?>