1 <?php
2 3 4 5 6 7 8 9 10
11
12 MainFactory::load_class('AbstractOrderServiceFactory');
13
14 15 16 17 18 19 20
21 class OrderServiceFactory extends AbstractOrderServiceFactory
22 {
23 24 25 26
27 protected $db;
28
29
30 31 32 33 34
35 public function __construct(CI_DB_query_builder $db)
36 {
37 $this->db = $db;
38 }
39
40
41 42 43 44 45
46 public function createOrderWriteService()
47 {
48 $orderRepository = $this->_createOrderRepository();
49 $orderItemRepository = $this->_createOrderItemRepository();
50 $orderItemAttributeRepositoryFactory = $this->_createOrderItemAttributeRepositoryFactory();
51 $orderTotalRepository = $this->_createOrderTotalRepository();
52 $orderStatusHistoryReader = $this->_createOrderStatusHistoryStorage();
53 $orderServiceSettings = $this->_createOrderServiceSettings();
54
55 return MainFactory::create('OrderWriteService', $orderRepository, $orderItemRepository,
56 $orderItemAttributeRepositoryFactory, $orderTotalRepository,
57 $orderStatusHistoryReader, $orderServiceSettings);
58 }
59
60
61 62 63 64 65
66 public function createOrderReadService()
67 {
68 $orderRepository = $this->_createOrderRepository();
69 $orderItemRepository = $this->_createOrderItemRepository();
70 $orderListGenerator = $this->_createOrderListGenerator();
71
72 return MainFactory::create('OrderReadService', $orderRepository, $orderItemRepository, $orderListGenerator);
73 }
74
75
76 77 78 79 80
81 public function createOrderObjectService()
82 {
83 $orderItemFactory = MainFactory::create('OrderItemFactory');
84 $orderItemAttributeFactory = MainFactory::create('OrderItemAttributeFactory');
85 $orderItemPropertyFactory = MainFactory::create('OrderItemPropertyFactory');
86 $orderTotalFactory = MainFactory::create('OrderTotalFactory');
87
88 return MainFactory::create('OrderObjectService', $orderItemFactory, $orderItemAttributeFactory,
89 $orderItemPropertyFactory, $orderTotalFactory);
90 }
91
92
93 94 95 96 97
98 protected function _createOrderRepository()
99 {
100 $orderFactory = MainFactory::create('OrderFactory');
101 $countryService = StaticGXCoreLoader::getService('Country');
102 $orderRepositoryReader = MainFactory::create('OrderRepositoryReader', $this->db, $orderFactory,
103 $countryService);
104 $orderRepositoryWriter = MainFactory::create('OrderRepositoryWriter', $this->db);
105 $orderRepositoryDeleter = MainFactory::create('OrderRepositoryDeleter', $this->db);
106 $orderItemRepository = $this->_createOrderItemRepository();
107 $orderTotalRepository = $this->_createOrderTotalRepository();
108 $orderStatusHistoryReader = $this->_createOrderStatusHistoryStorage();
109 $addonValueService = MainFactory::create('AddonValueService',
110 MainFactory::create('AddonValueStorageFactory', $this->db));
111
112 return MainFactory::create('OrderRepository', $orderFactory, $orderRepositoryWriter, $orderRepositoryReader,
113 $orderRepositoryDeleter, $orderItemRepository, $orderTotalRepository,
114 $orderStatusHistoryReader, $addonValueService);
115 }
116
117
118 119 120 121 122
123 protected function _createOrderItemRepository()
124 {
125 $orderItemFactory = MainFactory::create('OrderItemFactory');
126 $orderItemRepositoryReader = MainFactory::create('OrderItemRepositoryReader', $this->db,
127 $orderItemFactory);
128 $orderItemRepositoryWriter = MainFactory::create('OrderItemRepositoryWriter', $this->db);
129 $orderItemRepositoryDeleter = MainFactory::create('OrderItemRepositoryDeleter', $this->db);
130 $orderItemAttributeRepositoryFactory = $this->_createOrderItemAttributeRepositoryFactory();
131 $addonValueService = MainFactory::create('AddonValueService',
132 MainFactory::create('AddonValueStorageFactory',
133 $this->db));
134
135 return MainFactory::create('OrderItemRepository', $orderItemAttributeRepositoryFactory,
136 $orderItemRepositoryReader, $orderItemRepositoryWriter, $orderItemRepositoryDeleter,
137 $addonValueService);
138 }
139
140
141 142 143 144 145
146 protected function _createOrderItemAttributeRepositoryFactory()
147 {
148 return MainFactory::create('OrderItemAttributeRepositoryFactory', $this->db);
149 }
150
151
152 153 154 155 156
157 protected function _createOrderTotalRepository()
158 {
159 $orderTotalFactory = MainFactory::create('OrderTotalFactory');
160 $orderTotalRepositoryReader = MainFactory::create('OrderTotalRepositoryReader', $this->db, $orderTotalFactory);
161 $orderTotalRepositoryWriter = MainFactory::create('OrderTotalRepositoryWriter', $this->db);
162 $orderTotalRepositoryDeleter = MainFactory::create('OrderTotalRepositoryDeleter', $this->db);
163
164 return MainFactory::create('OrderTotalRepository', $orderTotalRepositoryReader, $orderTotalRepositoryWriter,
165 $orderTotalRepositoryDeleter);
166 }
167
168
169 170 171 172 173
174 protected function _createOrderStatusHistoryStorage()
175 {
176 return MainFactory::create('OrderStatusHistoryStorage', $this->db);
177 }
178
179
180 181 182 183 184
185 protected function _createOrderListGenerator()
186 {
187 return MainFactory::create('OrderListGenerator', $this->db);
188 }
189
190
191 192 193 194 195
196 protected function _createOrderServiceSettings()
197 {
198 return MainFactory::create('OrderServiceSettings', array(1));
199 }
200 }