diff --git a/Controller/Consult/Address.php b/Controller/Consult/Address.php index 94e7250..f2e312a 100755 --- a/Controller/Consult/Address.php +++ b/Controller/Consult/Address.php @@ -4,7 +4,8 @@ use Magento\Framework\App\Action\Action; use Magento\Framework\App\Action\Context; -use SystemCode\BrazilCustomerAttributes\Helper\Data as Helper; +use SystemCode\BrazilCustomerAttributes\Model\Address\ViaCep\GetAddress as GetAddressFromViaCep; +use SystemCode\BrazilCustomerAttributes\Model\Address\Correios\GetAddress as GetAddressFromCorreios; use Magento\Framework\App\Action\HttpGetActionInterface; use Magento\Framework\Controller\Result\JsonFactory; @@ -23,60 +24,50 @@ */ class Address extends Action implements HttpGetActionInterface { - /** - * @var Helper - */ - protected $helper; + + protected $_resultPageFactory; - /** - * @var JsonFactory - */ - protected $_resultJsonFactory; + protected $getAddressFromCorreios; + + protected $getAddressFromViaCep; /** * Address constructor. - * @param Helper $helper * @param Context $context * @param \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory + * @param GetAddressFromCorreios $getAddressFromCorreios + * @param GetAddressFromViaCep $getAddressFromViaCep */ - public function __construct( - Helper $helper, + public function __construct( Context $context, + GetAddressFromCorreios $getAddressFromCorreios, + GetAddressFromViaCep $getAddressFromViaCep, JsonFactory $resultJsonFactory - ) { - $this->helper = $helper; + ) + { $this->_resultJsonFactory = $resultJsonFactory; + $this->getAddressFromCorreios = $getAddressFromCorreios; + $this->getAddressFromViaCep = $getAddressFromViaCep; parent::__construct($context); } public function execute() - { - $data = ["error" => true]; - + { + if($zipcode = $this->getRequest()->getParam('zipcode')){ - try { - $client = new \SoapClient('https://apps.correios.com.br/SigepMasterJPA/AtendeClienteService/AtendeCliente?wsdl', - ['exceptions' => true]); - $result = $client->consultaCEP(['cep' => $zipcode]); - } catch (\SoapFault $e) { + + $data = $this->getAddressFromViaCep->getAddress($zipcode); - } + if ($data === false) { + + $data = $this->getAddressFromCorreios->getAddress($zipcode); + + } - if(isset($result)){ - $complement = trim(implode(' ', array($result->return->complemento??'', $result->return->complemento2??''))); - $data = [ - 'error' => false, - 'zipcode' => $zipcode, - 'street' => $result->return->end, - 'neighborhood' => $result->return->bairro, - 'complement' => $complement, - 'city' => $result->return->cidade, - 'uf' => $this->helper->getRegionId($result->return->uf) - ]; - } } $return = $this->_resultJsonFactory->create(); return $return->setData(str_replace("\\","",$data)); } -} \ No newline at end of file + +} diff --git a/Model/Address/Correios/GetAddress.php b/Model/Address/Correios/GetAddress.php new file mode 100644 index 0000000..0a687e2 --- /dev/null +++ b/Model/Address/Correios/GetAddress.php @@ -0,0 +1,51 @@ +helper = $helper; + } + + + public function getAddress(string $postcode): array + { + + try { + $client = new \SoapClient('https://apps.correios.com.br/SigepMasterJPA/AtendeClienteService/AtendeCliente?wsdl', + ['exceptions' => true]); + $result = $client->consultaCEP(['cep' => $postcode]); + + if(isset($result)){ + $complement = trim(implode(' ', array($result->return->complemento??'', $result->return->complemento2??''))); + $data = [ + 'error' => false, + 'zipcode' => $postcode, + 'street' => $result->return->end, + 'neighborhood' => $result->return->bairro, + 'complement' => $complement, + 'city' => $result->return->cidade, + 'uf' => $this->helper->getRegionId($result->return->uf) + ]; + } + + return $data; + + + } catch (\SoapFault $e) { + + } + + return ["error" => true]; + + } + +} \ No newline at end of file diff --git a/Model/Address/GetAddressInterface.php b/Model/Address/GetAddressInterface.php new file mode 100644 index 0000000..7ae6a9a --- /dev/null +++ b/Model/Address/GetAddressInterface.php @@ -0,0 +1,9 @@ +helper = $helper; + $this->curlFactory = $curlFactory; + } + + + public function getAddress(string $postcode): array + { + try { + + $curlClient = $this->curlFactory->create(); + + $curlClient->get($this->baseUri . $postcode . '/json'); + + $address = json_decode($curlClient->getBody(), true); + + $data = [ + 'error' => false, + 'zipcode' => $postcode, + 'street' => $address['logradouro'], + 'neighborhood' => $address['bairro'], + 'complement' => $address['complemento'], + 'city' => $address['localidade'], + 'uf' => $this->helper->getRegionId($address['uf']) + ]; + + return $data; + } catch (\Throwable $th) { + return false; + } + + } + +} \ No newline at end of file