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 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201
<?php
/* --------------------------------------------------------------
OrderReadService.php 2016-07-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('OrderReadServiceInterface');
/**
* Class OrderReadService
*
* @category System
* @package Order
*/
class OrderReadService implements OrderReadServiceInterface
{
/**
* @var OrderRepositoryInterface
*/
protected $orderRepository;
/**
* @var OrderItemRepositoryInterface
*/
protected $orderItemRepository;
/**
* @var OrderListGenerator
*/
protected $orderListGenerator;
/**
* OrderReadService Constructor
*
* @param OrderRepositoryInterface $orderRepository
* @param OrderItemRepositoryInterface $orderItemRepository
* @param OrderListGeneratorInterface $orderListGenerator
*/
public function __construct(OrderRepositoryInterface $orderRepository,
OrderItemRepositoryInterface $orderItemRepository,
OrderListGeneratorInterface $orderListGenerator)
{
$this->orderRepository = $orderRepository;
$this->orderItemRepository = $orderItemRepository;
$this->orderListGenerator = $orderListGenerator;
}
/**
* Get Order by ID
*
* Returns an order, depending on the provided order ID.
*
* @param IdType $orderId Order ID of the wanted order
*
* @return OrderInterface
*/
public function getOrderById(IdType $orderId)
{
return $this->orderRepository->getById($orderId);
}
/**
* Get a stored order item by ID.
*
* Returns a stored order item, depending on the provided order item ID.
*
* @param IdType $orderItemId
*
* @return StoredOrderItemInterface
*/
public function getOrderItemById(IdType $orderItemId)
{
return $this->orderItemRepository->getItemById($orderItemId);
}
/**
* Get Order List
*
* Returns an OrderListItemCollection depending on the provided arguments.
*
* @param IntType $startIndex Start index of order list item collections which should be returned.
* @param IntType $maxCount Maximum amount of collections.
* @param StringType $orderBy Argument to specify the order.
*
* @return OrderListItemCollection
*/
public function getOrderList(IntType $startIndex = null, IntType $maxCount = null, StringType $orderBy = null)
{
return $this->orderListGenerator->getOrderListByConditions(array(), $startIndex, $maxCount, $orderBy);
}
/**
* Filter the order records with specific conditions.
*
* Provide the filtering values in the conditions array in order to fetch a filtered result set.
*
* @param array $filterParameters Contains an array of the GET parameters to be used for filtering the order
* records.
* @param IntType $startIndex Start index of order list item collections which should be returned.
* @param IntType $maxCount Maximum amount of collections.
* @param StringType $orderBy Argument to specify the order.
*
* @return OrderListItemCollection
*/
public function filterOrderList(array $filterParameters,
IntType $startIndex = null,
IntType $maxCount = null,
StringType $orderBy = null)
{
return $this->orderListGenerator->filterOrderList($filterParameters, $startIndex, $maxCount, $orderBy);
}
/**
* Get the filtered orders count.
*
* @param array $filterParameters
*
* @return int
*
* @throws BadMethodCallException
*/
public function filterOrderListCount(array $filterParameters)
{
return $this->orderListGenerator->filterOrderListCount($filterParameters);
}
/**
* Get Order List by Customer ID
*
* Returns an OrderListItemCollection depending on the provided customer ID.
*
* @param IdType $customerId Customer ID
* @param IntType $startIndex Start index of order list item collections which should be returned.
* @param IntType $maxCount Maximum amount of collections.
* @param StringType $orderBy Argument to specify the order.
*
* @return OrderListItemCollection
*/
public function getOrderListByCustomerId(IdType $customerId,
IntType $startIndex = null,
IntType $maxCount = null,
StringType $orderBy = null)
{
return $this->orderListGenerator->getOrderListByConditions(array('orders.customers_id' => $customerId->asInt()),
$startIndex, $maxCount, $orderBy);
}
/**
* Get Order List by Order Status ID
*
* Returns an OrderListItemCollection depending on the provided order status ID.
*
* @param IntType $orderStatusId Order status ID
* @param IntType $startIndex Start index of order list item collections which should be returned.
* @param IntType $maxCount Maximum amount of collections.
* @param StringType $orderBy Argument to specify the order.
*
* @return OrderListItemCollection
*/
public function getOrderListByOrderStatusId(IntType $orderStatusId,
IntType $startIndex = null,
IntType $maxCount = null,
StringType $orderBy = null)
{
return $this->orderListGenerator->getOrderListByConditions(array('orders.orders_status' => $orderStatusId->asInt()),
$startIndex, $maxCount, $orderBy);
}
/**
* Filter the order list by a string keyword.
*
* @param StringType $keyword Keyword to be used for searching the order list items.
* @param IntType $startIndex Start index of order list item collections which should be returned.
* @param IntType $maxCount Maximum amount of collections.
* @param StringType $orderBy Argument to specify the order.
*
* @return OrderListItemCollection
*/
public function getOrderListByKeyword(StringType $keyword,
IntType $startIndex = null,
IntType $maxCount = null,
StringType $orderBy = null)
{
return $this->orderListGenerator->getOrderListByKeyword($keyword, $startIndex, $maxCount, $orderBy);
}
}