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
/* --------------------------------------------------------------
OrderItemPropertyRepository.php 2015-11-10
Gambio GmbH
http://www.gambio.de
Copyright (c) 2015 Gambio GmbH
Released under the GNU General Public License (Version 2)
[http://www.gnu.org/licenses/gpl-2.0.html]
--------------------------------------------------------------
*/
MainFactory::load_class('OrderItemAttributeRepositoryInterface');
/**
* Class OrderItemPropertyRepository
*
* @category System
* @package Order
* @subpackage Repositories
*/
class OrderItemPropertyRepository implements OrderItemAttributeRepositoryInterface
{
/**
* Order item property repository reader.
* @var OrderItemPropertyRepositoryReaderInterface
*/
protected $reader;
/**
* Order item property repository writer.
* @var OrderItemPropertyRepositoryWriterInterface
*/
protected $writer;
/**
* Order item property repository deleter.
* @var OrderItemPropertyRepositoryDeleterInterface
*/
protected $deleter;
/**
* OrderItemPropertyRepository constructor.
*
* @param OrderItemPropertyRepositoryReaderInterface $reader Order item property repository reader.
* @param OrderItemPropertyRepositoryWriterInterface $writer Order item property repository writer.
* @param OrderItemPropertyRepositoryDeleterInterface $deleter Order item property repository deleter.
*/
public function __construct(OrderItemPropertyRepositoryReaderInterface $reader,
OrderItemPropertyRepositoryWriterInterface $writer,
OrderItemPropertyRepositoryDeleterInterface $deleter)
{
$this->reader = $reader;
$this->writer = $writer;
$this->deleter = $deleter;
}
/**
* Adds an attribute to an order item.
*
* @param IdType $orderItemId ID of the order item.
* @param OrderItemAttributeInterface $orderItemProperty Order item attribute to add.
*
* @return int ID of stored order item attribute.
*/
public function addToOrderItem(IdType $orderItemId, OrderItemAttributeInterface $orderItemProperty)
{
return $this->writer->insertIntoOrderItem($orderItemId, $orderItemProperty);
}
/**
* Saves the attribute to the repository.
*
* @param StoredOrderItemAttributeInterface $orderItemProperty Property to save.
*
* @return OrderItemPropertyRepository Same instance for method chaining.
*/
public function store(StoredOrderItemAttributeInterface $orderItemProperty)
{
$this->writer->update($orderItemProperty);
return $this;
}
/**
* Returns a stored property by the given ID.
*
* @param IdType $orderItemPropertyId ID of item property.
*
* @return StoredOrderItemAttributeInterface Stored property.
*/
public function getItemAttributeById(IdType $orderItemPropertyId)
{
return $this->reader->getPropertyById($orderItemPropertyId);
}
/**
* Returns a stored property collection by the given order item ID.
*
* @param IdType $orderItemId ID of order item.
*
* @return StoredOrderItemAttributeCollection Stored item property collection.
*/
public function getItemAttributesByOrderItemId(IdType $orderItemId)
{
return $this->reader->getPropertiesByOrderItemId($orderItemId);
}
/**
* Deletes an item property by the given item property ID.
*
* @param IdType $orderItemAttributeId ID of order item property.
*
* @return OrderItemPropertyRepository Same instance for method chaining.
*/
public function deleteItemAttributeById(IdType $orderItemAttributeId)
{
$this->deleter->deletePropertyById($orderItemAttributeId);
return $this;
}
/**
* Deletes an item property by the given order item ID.
*
* @param IdType $orderItemId ID of order item.
*
* @return OrderItemPropertyRepository Same instance for method chaining.
*/
public function deleteItemAttributesByOrderItemId(IdType $orderItemId)
{
$this->deleter->deletePropertiesByOrderItemId($orderItemId);
return $this;
}
}