<?php

class DLog extends RestApi {

  private $header;
  private $enviroument;
  private $dataAutentication;

  public function __construct($registry) {
    $this->registry = $registry;
    $this->load     = $registry->get('load');
		$this->config   = $registry->get('config');
    $this->db       = $registry->get('db');
    $this->log      = $registry->get('log');
    $this->session  = $registry->get('session');

    $this->curlOpts = array(
      CURLOPT_RETURNTRANSFER => 1
    );

    $this->setEnviroument();
    $this->setAutentication();

  }


  public function setEnviroument(){
    $this->enviroument = 'https://www.dlog.com.br/webservice/';
  }

  public function getEnviroument(){
    return $this->enviroument;
  }

  public function setAutentication(){
    $this->dataAutentication = array(
      "ClieCod" => $this->config->get('dlog_codigo'),
      "login" => str_replace(array('.','-','/'),'',$this->config->get('dlog_login')),
      "token" => $this->config->get('dlog_token')
    );
  }

  public function getAutentication(){
    return $this->dataAutentication;
  }

  public function getQuote($dataSend) {
    $dataSend = array_merge($dataSend,$this->getAutentication());
    $url = $this->getEnviroument() . 'frete/';
    $data = parent::callAPI($url, 'GET', $dataSend, [], false, $retorno);
    if (is_object($data)){
      if (isset($data->Frete) && is_array($data->Frete)){
        return $data->Frete;
        //Não retorna o campo status quando sucesso
      } else if (isset($data->status) && $data->status == 'ERROR'){
        $error = 'Error ao carregar módulo Dlog:';
        $error.= 'Código: '.$data->messages->key;
        $error.= 'Mensagem: '.$data->messages->text;
        throw new exception($error);
      }
    }else{
      $error = 'Error ao carregar módulo Dlog:';
      $error.= 'Mensagem: Erro na conexão com o Dlog';
      throw new exception($error);
    }

    return $data;

  }

}
