TaxAreaLookupProxy.php 1.41 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
<?php
/**
 * @copyright  Vertex. All rights reserved.  https://www.vertexinc.com/
 * @author     Mediotype                     https://www.mediotype.com/
 */

namespace Vertex\Tax\Service;

use Magento\Store\Model\ScopeInterface;
use Vertex\Services\TaxAreaLookup\RequestInterface;
use Vertex\Tax\Api\TaxAreaLookupInterface;
use Vertex\Tax\Model\Api\Logger;
use Vertex\Tax\Model\Api\Service\TaxAreaLookupBuilder;

/**
 * Default implementation of {@see TaxAreaLookupInterface}
 */
class TaxAreaLookupProxy implements TaxAreaLookupInterface
{
    /** @var Logger */
    private $logger;

    /** @var TaxAreaLookupBuilder */
    private $lookupBuilder;

    /**
     * @param Logger $logger
     * @param TaxAreaLookupBuilder $lookupBuilder
     */
    public function __construct(Logger $logger, TaxAreaLookupBuilder $lookupBuilder)
    {
        $this->logger = $logger;
        $this->lookupBuilder = $lookupBuilder;
    }

    /**
     * @inheritdoc
     */
    public function lookup(RequestInterface $request, $scopeCode = null, $scopeType = ScopeInterface::SCOPE_STORE)
    {
        $taxAreaLookup = $this->lookupBuilder
            ->setScopeCode($scopeCode)
            ->setScopeType($scopeType)
            ->build();

        return $this->logger->wrapCall(
            function () use ($taxAreaLookup, $request) {
                return $taxAreaLookup->lookup($request);
            },
            'tax_area_lookup'
        );
    }
}