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 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
<?php
/* --------------------------------------------------------------
CustomerCountryRepository.inc.php 2016-11-11
Gambio GmbH
http://www.gambio.de
Copyright (c) 2016 Gambio GmbH
Released under the GNU General Public License (Version 2)
[http://www.gnu.org/licenses/gpl-2.0.html]
--------------------------------------------------------------
*/
MainFactory::load_class('CustomerCountryRepositoryInterface');
/**
* Class CustomerCountryRepository
*
* This class provides basic methods for finding customer country data
*
* @category System
* @package Customer
* @subpackage Country
* @implements CustomerCountryRepositoryInterface
*/
class CustomerCountryRepository implements CustomerCountryRepositoryInterface
{
/**
* @var CustomerCountryReaderInterface
*/
protected $customerCountryReader;
/**
* Constructor of the class CustomerCountryRepository
*
* @param CustomerCountryReader $customerCountryReader
*/
public function __construct(CustomerCountryReader $customerCountryReader)
{
$this->customerCountryReader = $customerCountryReader;
}
/**
* @param IdType $countryId
*
* @return CustomerCountry
* @throws Exception if country not found
*/
public function getById(IdType $countryId)
{
$country = $this->customerCountryReader->findById($countryId);
if($country === null)
{
throw new Exception('Country with the following ID could not be found: ' . (string)$countryId);
}
return $country;
}
/**
* Get country by iso2 code.
*
* @param \CustomerCountryIso2Interface $countryIso2
*
* @return CustomerCountry
*
* @throws Exception If the country could not be found.
*/
public function getByIso2(CustomerCountryIso2Interface $countryIso2)
{
$country = $this->customerCountryReader->findByIso2($countryIso2);
if(empty($country))
{
throw new Exception('Country with the following iso2 code could not be found: ' . (string)$countryIso2);
}
return $country;
}
/**
* This method will get a country if it exists else it will return null.
*
* @param IdType $countryId
*
* @return CustomerCountryInterface
*/
public function findById(IdType $countryId)
{
$country = $this->customerCountryReader->findById($countryId);
return $country;
}
/**
* Find country by iso2 code.
*
* @param \CustomerCountryIso2Interface $countryIso2
*
* @return CustomerCountryInterface|null
*/
public function findByIso2(CustomerCountryIso2Interface $countryIso2)
{
$country = $this->customerCountryReader->findByIso2($countryIso2);
return $country;
}
/**
* Get country by name.
*
* @param \CustomerCountryNameInterface $countryName
*
* @return CustomerCountry
*
* @throws Exception If the country could not be found.
*/
public function getByName(CustomerCountryNameInterface $countryName)
{
$country = $this->customerCountryReader->findByName($countryName);
if(empty($country))
{
throw new Exception('Country with the following name could not be found: ' . (string)$countryName);
}
return $country;
}
/**
* Find country by name.
*
* @param CustomerCountryNameInterface $countryName
*
* @return CustomerCountryInterface
*/
public function findByName(CustomerCountryNameInterface $countryName)
{
$country = $this->customerCountryReader->findByName($countryName);
if($country === null)
{
$country = MainFactory::create('UnknownCustomerCountry', $countryName);
}
return $country;
}
}