<?php

class Intelipost extends RestApi {

  private $header;
  private $enviroument;

  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->setEnviroument();
    $this->setHeader();
  }

  public function setHeader(){
    $this->header = array(
      "api-key:   ".$this->config->get('intelipost_api_key'),
      "platform: intelipost-docs",
      "platform-version: v1.0.0",
      "plugin: intelipost-plugin",
      "plugin-version: v2.0.0",
      "Content-Type: application/json",
      "cache-control: no-cache"
    );
  }

  public function getHeader(){
    return $this->header;
  }

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

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

  public function getQuoteVolume($dataSend) {
    $url = $this->getEnviroument() . 'api/v1/quote';
    $data = parent::callAPI($url, 'POST', $dataSend, $this->getHeader(), false, $retorno);

    if (is_object($data)){
      switch ($data->status){
        case 'OK':
          return $data->content;
          break;
        case 'WARNING':
          $error = 'WARNING ao carregar módulo Intelipost:';
          if (is_array($data->messages)){
            $dataerror = $data->messages[0];
          }else{
            $dataerror = $data->messages;
          }
          $error.= 'Código: '.$dataerror->key;
          $error.= 'Mensagem: '.$dataerror->text;
          throw new exception($error);
          break;
        case 'ERROR':
          $error = 'ERROR ao carregar módulo Intelipost:';
          if (is_array($data->messages)){
            $dataerror = $data->messages[0];
          }else{
            $dataerror = $data->messages;
          }
          $error.= 'Código: '.$dataerror->key;
          $error.= 'Mensagem: '.$dataerror->text;
          throw new exception($error);
          break;
        default :
          $error = 'Erro ao carregar módulo Intelipost:';
          $error.= 'Mensagem: Erro na conexão com o intelipost';
          throw new exception($error);
      }
    }else{
      $error = 'Error ao carregar módulo Intelipost:';
      $error.= 'Mensagem: Erro na conexão com o intelipost';
      throw new exception($error);
    }

    return $data;

  }

  public function getQuoteProduto($dataSend) {
    $url = $this->getEnviroument() . 'api/v1/quote_by_product';
    $data = parent::callAPI($url, 'POST', $dataSend, $this->getHeader(), false, $retorno);
    if (is_object($data)){
      switch ($data->status){
        case 'OK':
          return $data->content;
          break;
        case 'WARNING':
          $error = 'WARNING ao carregar módulo Intelipost:';
          if (is_array($data->messages)){
            $dataerror = $data->messages[0];
          }else{
            $dataerror = $data->messages;
          }
          $error.= 'Código: '.$dataerror->key;
          $error.= 'Mensagem: '.$dataerror->text;
          throw new exception($error);
          break;
        case 'ERROR':
          $error = 'ERROR ao carregar módulo Intelipost:';
          if (is_array($data->messages)){
            $dataerror = $data->messages[0];
          }else{
            $dataerror = $data->messages;
          }
          $error.= 'Código: '.$dataerror->key;
          $error.= 'Mensagem: '.$dataerror->text;
          throw new exception($error);
          break;
        default :
          $error = 'Erro ao carregar módulo Intelipost:';
          $error.= 'Mensagem: Erro na conexão com o intelipost';
          throw new exception($error);
      }
    }else{
      $error = 'Error ao carregar módulo Intelipost:';
      $error.= 'Mensagem: Erro na conexão com o intelipost';
      throw new exception($error);
    }


    return $data;

  }

}
