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
<?php
/**
* @copyright Vertex. All rights reserved. https://www.vertexinc.com/
* @author Mediotype https://www.mediotype.com/
*/
namespace Vertex\Tax\Model\Api\Utility;
use Magento\Store\Model\ScopeInterface;
use Vertex\Mapper\MapperFactory;
use Vertex\Tax\Model\Api\ConfigBuilder;
use Vertex\Utility\VersionDeterminer;
/**
* Retrieve a mapper based on Magento configuration
*/
class MapperFactoryProxy
{
/** @var ConfigBuilder */
private $configBuilder;
/** @var MapperFactory */
private $factory;
/** @var VersionDeterminer */
private $versionDeterminer;
/**
* @param MapperFactory $factory
* @param VersionDeterminer $versionDeterminer
* @param ConfigBuilder $configBuilder
*/
public function __construct(
MapperFactory $factory,
VersionDeterminer $versionDeterminer,
ConfigBuilder $configBuilder
) {
$this->factory = $factory;
$this->versionDeterminer = $versionDeterminer;
$this->configBuilder = $configBuilder;
}
/**
* Retrieve a mapper instance given a MapperInterface
*
* @param string $mapperInterface Mapper Interface to create
* @param string|null $scopeCode Scope ID to use for configuration
* @param string $scopeType Scope Type
* @return mixed
* @throws \Vertex\Exception\ConfigurationException
*/
public function getForClass($mapperInterface, $scopeCode = null, $scopeType = ScopeInterface::SCOPE_STORE)
{
$config = $this->configBuilder
->setScopeCode($scopeCode)
->setScopeType($scopeType)
->build();
$version = $this->versionDeterminer->execute($config->getTaxAreaLookupWsdl());
return $this->factory->getForClass($mapperInterface, $version);
}
}