1 <?php
2
3 /* --------------------------------------------------------------
4 OrderTotalRepository.inc.php 2015-11-03 gm
5 Gambio GmbH
6 http://www.gambio.de
7 Copyright (c) 2015 Gambio GmbH
8 Released under the GNU General Public License (Version 2)
9 [http://www.gnu.org/licenses/gpl-2.0.html]
10 --------------------------------------------------------------
11 */
12
13 MainFactory::load_class('OrderTotalRepositoryInterface');
14
15 /**
16 * Class OrderTotalRepository
17 *
18 * @category System
19 * @package Order
20 * @subpackage Repositories
21 */
22 class OrderTotalRepository implements OrderTotalRepositoryInterface
23 {
24 /**
25 * Order total repository reader.
26 * @var OrderTotalRepositoryReaderInterface
27 */
28 protected $orderTotalRepositoryReader;
29
30 /**
31 * Order total repository writer.
32 * @var OrderTotalRepositoryWriterInterface
33 */
34 protected $orderTotalRepositoryWriter;
35
36 /**
37 * #Order total repository deleter.
38 * @var OrderTotalRepositoryDeleterInterface
39 */
40 protected $orderTotalRepositoryDeleter;
41
42
43 /**
44 * OrderTotalRepository constructor.
45 *
46 * @param OrderTotalRepositoryReader $orderTotalRepositoryReader Order total repository reader.
47 * @param OrderTotalRepositoryWriter $orderTotalRepositoryWriter Order total repository writer.
48 * @param OrderTotalRepositoryDeleter $orderTotalRepositoryDeleter Order total repository deleter.
49 */
50 public function __construct(OrderTotalRepositoryReader $orderTotalRepositoryReader,
51 OrderTotalRepositoryWriter $orderTotalRepositoryWriter,
52 OrderTotalRepositoryDeleter $orderTotalRepositoryDeleter)
53 {
54 $this->orderTotalRepositoryReader = $orderTotalRepositoryReader;
55 $this->orderTotalRepositoryWriter = $orderTotalRepositoryWriter;
56 $this->orderTotalRepositoryDeleter = $orderTotalRepositoryDeleter;
57 }
58
59
60 /**
61 * Adds an order total object to the order.
62 *
63 * @param IdType $orderId ID of order.
64 * @param OrderTotalInterface $orderTotal Order total object.
65 *
66 * @return int ID of stored order total.
67 */
68 public function addToOrder(IdType $orderId, OrderTotalInterface $orderTotal)
69 {
70 return $this->orderTotalRepositoryWriter->insertIntoOrder($orderId, $orderTotal);
71 }
72
73
74 /**
75 * Updates a stored order total object.
76 *
77 * @param StoredOrderTotalInterface $orderTotal Order total.
78 *
79 * @return OrderTotalRepository Same instance for method chaining.
80 */
81 public function store(StoredOrderTotalInterface $orderTotal)
82 {
83 $this->orderTotalRepositoryWriter->update($orderTotal);
84
85 return $this;
86 }
87
88
89 /**
90 * Returns an order total object by the given ID.
91 *
92 * @param IdType $orderTotalId ID of order total in database table.
93 *
94 * @return StoredOrderTotal Fetched order total.
95 */
96 public function getTotalById(IdType $orderTotalId)
97 {
98 return $this->orderTotalRepositoryReader->getTotalById($orderTotalId);
99 }
100
101
102 /**
103 * Returns an collection of order total objects by the given order ID.
104 *
105 * @param IdType $orderId ID of the order in the database table.
106 *
107 * @return StoredOrderTotalCollection Fetched order total collection.
108 */
109 public function getTotalsByOrderId(IdType $orderId)
110 {
111 return $this->orderTotalRepositoryReader->getTotalsByOrderId($orderId);
112 }
113
114
115 /**
116 * Removes an order total by the given order total ID.
117 *
118 * @param IdType $orderTotalId ID of order total in the database table.
119 *
120 * @return OrderTotalRepository Same instance for method chaining.
121 */
122 public function deleteTotalById(IdType $orderTotalId)
123 {
124 $this->orderTotalRepositoryDeleter->deleteTotalById($orderTotalId);
125
126 return $this;
127 }
128
129
130 /**
131 * Removes multiple order totals by the given order ID.
132 *
133 * @param IdType $orderId Order ID.
134 *
135 * @return OrderTotalRepository Same instance for method chaining.
136 */
137 public function deleteTotalsByOrderId(IdType $orderId)
138 {
139 $this->orderTotalRepositoryDeleter->deleteTotalsByOrderId($orderId);
140
141 return $this;
142 }
143 }