| Current Path : /home/rtorresani/www/vendor/magento/module-customer/Block/Account/Dashboard/ |
| Current File : //home/rtorresani/www/vendor/magento/module-customer/Block/Account/Dashboard/Address.php |
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Customer\Block\Account\Dashboard;
use Magento\Customer\Api\Data\AddressInterface;
use Magento\Customer\Model\Address\Mapper;
use Magento\Framework\Exception\NoSuchEntityException;
/**
* Class to manage customer dashboard addresses section
*
* @api
* @since 100.0.2
*/
class Address extends \Magento\Framework\View\Element\Template
{
/**
* @var \Magento\Customer\Model\Address\Config
*/
protected $_addressConfig;
/**
* @var \Magento\Customer\Helper\Session\CurrentCustomer
*/
protected $currentCustomer;
/**
* @var \Magento\Customer\Helper\Session\CurrentCustomerAddress
*/
protected $currentCustomerAddress;
/**
* @var Mapper
*/
protected $addressMapper;
/**
* @param \Magento\Framework\View\Element\Template\Context $context
* @param \Magento\Customer\Helper\Session\CurrentCustomer $currentCustomer
* @param \Magento\Customer\Helper\Session\CurrentCustomerAddress $currentCustomerAddress
* @param \Magento\Customer\Model\Address\Config $addressConfig
* @param Mapper $addressMapper
* @param array $data
*/
public function __construct(
\Magento\Framework\View\Element\Template\Context $context,
\Magento\Customer\Helper\Session\CurrentCustomer $currentCustomer,
\Magento\Customer\Helper\Session\CurrentCustomerAddress $currentCustomerAddress,
\Magento\Customer\Model\Address\Config $addressConfig,
Mapper $addressMapper,
array $data = []
) {
$this->currentCustomer = $currentCustomer;
$this->currentCustomerAddress = $currentCustomerAddress;
$this->_addressConfig = $addressConfig;
parent::__construct($context, $data);
$this->addressMapper = $addressMapper;
}
/**
* Get the logged in customer
*
* @return \Magento\Customer\Api\Data\CustomerInterface|null
*/
public function getCustomer()
{
try {
return $this->currentCustomer->getCustomer();
} catch (NoSuchEntityException $e) {
return null;
}
}
/**
* HTML for Shipping Address
*
* @return \Magento\Framework\Phrase|string
*/
public function getPrimaryShippingAddressHtml()
{
try {
$address = $this->currentCustomerAddress->getDefaultShippingAddress();
} catch (NoSuchEntityException $e) {
return __('You have not set a default shipping address.');
}
if ($address) {
return $this->_getAddressHtml($address);
} else {
return __('You have not set a default shipping address.');
}
}
/**
* HTML for Billing Address
*
* @return \Magento\Framework\Phrase|string
*/
public function getPrimaryBillingAddressHtml()
{
try {
$address = $this->currentCustomerAddress->getDefaultBillingAddress();
} catch (NoSuchEntityException $e) {
return $this->escapeHtml(__('You have not set a default billing address.'));
}
if ($address) {
return $this->_getAddressHtml($address);
} else {
return $this->escapeHtml(__('You have not set a default billing address.'));
}
}
/**
* Get Primary Shipping Address Edit Url
*
* @return string
*/
public function getPrimaryShippingAddressEditUrl()
{
if (!$this->getCustomer()) {
return '';
} else {
$address = $this->currentCustomerAddress->getDefaultShippingAddress();
$addressId = $address ? $address->getId() : null;
return $this->_urlBuilder->getUrl(
'customer/address/edit',
['id' => $addressId]
);
}
}
/**
* Get Primary Billing Address Edit Url
*
* @return string
*/
public function getPrimaryBillingAddressEditUrl()
{
if (!$this->getCustomer()) {
return '';
} else {
$address = $this->currentCustomerAddress->getDefaultBillingAddress();
$addressId = $address ? $address->getId() : null;
return $this->_urlBuilder->getUrl(
'customer/address/edit',
['id' => $addressId]
);
}
}
/**
* Get Address Book Url
*
* @return string
*/
public function getAddressBookUrl()
{
return $this->getUrl('customer/address/');
}
/**
* Render an address as HTML and return the result
*
* @param AddressInterface $address
* @return string
*/
protected function _getAddressHtml($address)
{
/** @var \Magento\Customer\Block\Address\Renderer\RendererInterface $renderer */
$renderer = $this->_addressConfig->getFormatByCode('html')->getRenderer();
return $renderer->renderArray($this->addressMapper->toFlatArray($address));
}
}