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
<?php
/* --------------------------------------------------------------
AddressBookService.inc.php 2016-06-29
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('AddressBookServiceInterface');
/**
* Class AddressBookService
*
* This class is used to manage addresses
*
* @category System
* @package Customer
* @subpackage Address
* @implements AddressBookServiceInterface
*/
class AddressBookService implements AddressBookServiceInterface
{
/**
* @var CustomerAddressRepositoryInterface
*/
protected $customerAddressRepository;
/**
* Constructor of the class AddressBookService
*
* @param CustomerAddressRepositoryInterface $addressRepository
*/
public function __construct(CustomerAddressRepositoryInterface $addressRepository)
{
$this->customerAddressRepository = $addressRepository;
}
/**
* Method to add a new address in the address book
*
* @param AddressBlockInterface $addressBlock
* @param CustomerInterface $customer
*
* @return CustomerAddressInterface
*/
public function createNewAddress(AddressBlockInterface $addressBlock, CustomerInterface $customer)
{
/* @var CustomerAddress $address */
$address = $this->customerAddressRepository->getNewAddress();
$address->importAddressBlock($addressBlock);
$address->setCustomerId(new IdType($customer->getId()));
$this->customerAddressRepository->store($address);
return $address;
}
/**
* Method to update an address in the address book
*
* @param AddressBlockInterface $addressBlock
* @param CustomerAddressInterface $address
*
* @return CustomerAddressInterface
*/
public function updateAddress(AddressBlockInterface $addressBlock, CustomerAddressInterface $address)
{
$address->importAddressBlock($addressBlock);
$this->customerAddressRepository->store($address);
return $address;
}
/**
* @param CustomerAddressInterface $address
*/
public function deleteAddress(CustomerAddressInterface $address)
{
$this->customerAddressRepository->deleteCustomerAddress($address);
}
/**
* @param IdType $addressId
*
* @return CustomerAddress|null
*/
public function findAddressById(IdType $addressId)
{
return $this->customerAddressRepository->findById($addressId);
}
/**
* @param CustomerAddressInterface $customerAddress
*/
public function updateCustomerAddress(CustomerAddressInterface $customerAddress)
{
$this->customerAddressRepository->store($customerAddress);
}
/**
* Get customer addresses.
*
* @param CustomerInterface $customer Contains the customer data.
*
* @return array Returns an array of CustomerAddress objects.
*/
public function getCustomerAddresses(CustomerInterface $customer)
{
return $this->customerAddressRepository->getCustomerAddresses($customer);
}
/**
* Get all registered addresses.
*
* @return array Returns an array of CustomerAddress objects.
*/
public function getAllAddresses()
{
return $this->customerAddressRepository->getAllAddresses();
}
/**
* Filter registered addresses by string.
*
* @param string $p_keyword Used to filter the address records.
*
* @return array Returns an array of CustomerAddress objects.
*/
public function filterAddresses($p_keyword)
{
return $this->customerAddressRepository->filterAddresses($p_keyword);
}
}