GenericButton.php 2.57 KB
Newer Older
Ketan's avatar
Ketan committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
<?php
declare(strict_types=1);
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
namespace Magento\Customer\Block\Adminhtml\Edit\Address;

use Magento\Customer\Model\AddressFactory;
use Magento\Framework\App\RequestInterface;
use Magento\Framework\UrlInterface;
use Magento\Customer\Model\ResourceModel\Address;
use Magento\Customer\Model\ResourceModel\AddressRepository;

/**
 * Class for common code for buttons on the create/edit address form
 */
class GenericButton
{
    /**
     * @var AddressFactory
     */
    private $addressFactory;

    /**
     * @var UrlInterface
     */
    private $urlBuilder;

    /**
     * @var Address
     */
    private $addressResourceModel;

    /**
     * @var RequestInterface
     */
    private $request;

    /**
     * @var AddressRepository
     */
    private $addressRepository;

    /**
     * @param AddressFactory $addressFactory
     * @param UrlInterface $urlBuilder
     * @param Address $addressResourceModel
     * @param RequestInterface $request
     * @param AddressRepository $addressRepository
     */
    public function __construct(
        AddressFactory $addressFactory,
        UrlInterface $urlBuilder,
        Address $addressResourceModel,
        RequestInterface $request,
        AddressRepository $addressRepository
    ) {
        $this->addressFactory = $addressFactory;
        $this->urlBuilder = $urlBuilder;
        $this->addressResourceModel = $addressResourceModel;
        $this->request = $request;
        $this->addressRepository = $addressRepository;
    }

    /**
     * Return address Id.
     *
     * @return int|null
     */
    public function getAddressId()
    {
        $address = $this->addressFactory->create();

        $entityId = $this->request->getParam('entity_id');
        $this->addressResourceModel->load(
            $address,
            $entityId
        );

        return $address->getEntityId() ?: null;
    }

    /**
     * Get customer id.
     *
     * @return int|null
     * @throws \Magento\Framework\Exception\LocalizedException
     */
    public function getCustomerId()
    {
        $addressId = $this->request->getParam('entity_id');

        $address = $this->addressRepository->getById($addressId);

        return $address->getCustomerId() ?: null;
    }

    /**
     * Generate url by route and parameters
     *
     * @param   string $route
     * @param   array $params
     * @return  string
     */
    public function getUrl($route = '', array $params = []): string
    {
        return $this->urlBuilder->getUrl($route, $params);
    }
}