From 61c1569ac74f440698b66f6aef12d2dfd1b3be82 Mon Sep 17 00:00:00 2001 From: robsoned Date: Mon, 28 Oct 2019 01:24:11 +0000 Subject: [PATCH 1/6] Getting address from viacep first --- Controller/Consult/Address.php | 52 ++++++++++++-------------- Model/Address/Correios/GetAddress.php | 51 +++++++++++++++++++++++++ Model/Address/GetAddressInterface.php | 9 +++++ Model/Address/ViaCep/GetAddress.php | 54 +++++++++++++++++++++++++++ composer.json | 4 +- 5 files changed, 141 insertions(+), 29 deletions(-) create mode 100644 Model/Address/Correios/GetAddress.php create mode 100644 Model/Address/GetAddressInterface.php create mode 100644 Model/Address/ViaCep/GetAddress.php diff --git a/Controller/Consult/Address.php b/Controller/Consult/Address.php index a9810ff..3d31db7 100755 --- a/Controller/Consult/Address.php +++ b/Controller/Consult/Address.php @@ -3,8 +3,8 @@ namespace SystemCode\BrazilCustomerAttributes\Controller\Consult; 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; /** * * Controller to consult address by zipcode @@ -24,50 +24,46 @@ class Address extends \Magento\Framework\App\Action\Action protected $_resultPageFactory; + protected $getAddressFromCorreios; + + protected $getAddressFromViaCep; + /** * Address constructor. * @param Helper $helper * @param Context $context * @param \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory */ - public function __construct( - Helper $helper, + public function __construct( Context $context, - \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory) - { - $this->helper = $helper; + \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory, + GetAddressFromCorreios $getAddressFromCorreios, + GetAddressFromViaCep $getAddressFromViaCep + ) + { $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->getAddressFromCorreios->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; + } + + + public function getAddress(string $postcode): array + { + try { + + $client = new Client( + [ + 'base_uri' => $this->baseUri + ] + ); + + $response = $client->get($postcode . '/json'); + + $address = json_decode($response->getBody()->getContents(), 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 diff --git a/composer.json b/composer.json index 937e073..f572387 100755 --- a/composer.json +++ b/composer.json @@ -16,7 +16,9 @@ "require": { "magento/module-backend": "100.0.*|100.1.*|100.2.*|101.0.*", "magento/framework": "100.0.*|100.1.*|101.0.*|102.0.*", - "systemcode/base": "*" + "systemcode/base": "*", + "jansenfelipe/cep-gratis": "^4.0", + "guzzlehttp/guzzle": "^6.4" }, "type": "magento2-module", "version": "1.0.1", From 2af5def652be049c366493c429a5fb4b9ba4c2ac Mon Sep 17 00:00:00 2001 From: robsoned Date: Mon, 28 Oct 2019 01:26:36 +0000 Subject: [PATCH 2/6] Updated composer.json --- composer.json | 1 - 1 file changed, 1 deletion(-) diff --git a/composer.json b/composer.json index f572387..a766df6 100755 --- a/composer.json +++ b/composer.json @@ -17,7 +17,6 @@ "magento/module-backend": "100.0.*|100.1.*|100.2.*|101.0.*", "magento/framework": "100.0.*|100.1.*|101.0.*|102.0.*", "systemcode/base": "*", - "jansenfelipe/cep-gratis": "^4.0", "guzzlehttp/guzzle": "^6.4" }, "type": "magento2-module", From 093100bccb793aa360e702edc83b5e087ebaf849 Mon Sep 17 00:00:00 2001 From: RobsonTrimes Date: Mon, 28 Oct 2019 14:09:35 -0300 Subject: [PATCH 3/6] Getting from viacep --- Controller/Consult/Address.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Controller/Consult/Address.php b/Controller/Consult/Address.php index 3d31db7..74d1750 100755 --- a/Controller/Consult/Address.php +++ b/Controller/Consult/Address.php @@ -51,8 +51,8 @@ public function execute() { if($zipcode = $this->getRequest()->getParam('zipcode')){ - - $data = $this->getAddressFromCorreios->getAddress($zipcode); + + $data = $this->getAddressFromViaCep->getAddress($zipcode); if ($data === false) { From d8c0af5fa70f918c1a78a19001cc54d3a07d84f4 Mon Sep 17 00:00:00 2001 From: RobsonTrimes Date: Thu, 31 Oct 2019 16:31:19 -0300 Subject: [PATCH 4/6] Usando curl do magento 2 --- Model/Address/ViaCep/GetAddress.php | 21 +++++++++++---------- composer.json | 3 +-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Model/Address/ViaCep/GetAddress.php b/Model/Address/ViaCep/GetAddress.php index 6ca04bd..4f9e58b 100644 --- a/Model/Address/ViaCep/GetAddress.php +++ b/Model/Address/ViaCep/GetAddress.php @@ -2,9 +2,9 @@ namespace SystemCode\BrazilCustomerAttributes\Model\Address\ViaCep; -use GuzzleHttp\Client; use SystemCode\BrazilCustomerAttributes\Helper\Data; use SystemCode\BrazilCustomerAttributes\Model\Address\GetAddressInterface; +use Magento\Framework\HTTP\Client\CurlFactory; class GetAddress implements GetAddressInterface{ @@ -12,27 +12,28 @@ class GetAddress implements GetAddressInterface{ private $helper; + private $curlFactory; + public function __construct( - Data $helper + Data $helper, + CurlFactory $curlFactory + ) { $this->helper = $helper; + $this->curlFactory = $curlFactory; } public function getAddress(string $postcode): array { try { + + $curlClient = $this->curlFactory->create(); - $client = new Client( - [ - 'base_uri' => $this->baseUri - ] - ); - - $response = $client->get($postcode . '/json'); + $curlClient->get($this->baseUri . $postcode . '/json'); - $address = json_decode($response->getBody()->getContents(), true); + $address = json_decode($curlClient->getBody(), true); $data = [ 'error' => false, diff --git a/composer.json b/composer.json index a766df6..937e073 100755 --- a/composer.json +++ b/composer.json @@ -16,8 +16,7 @@ "require": { "magento/module-backend": "100.0.*|100.1.*|100.2.*|101.0.*", "magento/framework": "100.0.*|100.1.*|101.0.*|102.0.*", - "systemcode/base": "*", - "guzzlehttp/guzzle": "^6.4" + "systemcode/base": "*" }, "type": "magento2-module", "version": "1.0.1", From d87071015f6cd222d10fd41cf346028f8f545ed9 Mon Sep 17 00:00:00 2001 From: RobsonTrimes Date: Thu, 31 Oct 2019 16:36:26 -0300 Subject: [PATCH 5/6] Atualizado construtor --- Controller/Consult/Address.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Controller/Consult/Address.php b/Controller/Consult/Address.php index 74d1750..818ac09 100755 --- a/Controller/Consult/Address.php +++ b/Controller/Consult/Address.php @@ -20,8 +20,6 @@ */ class Address extends \Magento\Framework\App\Action\Action { - protected $helper; - protected $_resultPageFactory; protected $getAddressFromCorreios; @@ -30,9 +28,10 @@ class Address extends \Magento\Framework\App\Action\Action /** * Address constructor. - * @param Helper $helper * @param Context $context * @param \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory + * @param GetAddressFromCorreios $getAddressFromCorreios + * @param GetAddressFromViaCep $getAddressFromViaCep */ public function __construct( Context $context, From fc0c903847eed4da8aaac785c81991c1e47583d8 Mon Sep 17 00:00:00 2001 From: Robson Date: Thu, 31 Oct 2019 16:42:11 -0300 Subject: [PATCH 6/6] Fix merge conflict --- Controller/Consult/Address.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Controller/Consult/Address.php b/Controller/Consult/Address.php index c3c5273..f2e312a 100755 --- a/Controller/Consult/Address.php +++ b/Controller/Consult/Address.php @@ -41,7 +41,7 @@ class Address extends Action implements HttpGetActionInterface public function __construct( Context $context, GetAddressFromCorreios $getAddressFromCorreios, - GetAddressFromViaCep $getAddressFromViaCep + GetAddressFromViaCep $getAddressFromViaCep, JsonFactory $resultJsonFactory ) { @@ -70,4 +70,4 @@ public function execute() return $return->setData(str_replace("\\","",$data)); } -} \ No newline at end of file +}