Conditions | 24 |
Paths | 637 |
Total Lines | 240 |
Code Lines | 145 |
Lines | 22 |
Ratio | 9.17 % |
Changes | 3 | ||
Bugs | 0 | Features | 1 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
1 | <?php |
||
39 | public function index(Application $app, Request $request, $id = null) |
||
40 | { |
||
41 | $TargetOrder = null; |
||
42 | $OriginOrder = null; |
||
43 | |||
44 | if (is_null($id)) { |
||
45 | // 空のエンティティを作成. |
||
46 | $TargetOrder = $this->newOrder(); |
||
47 | } else { |
||
48 | $TargetOrder = $app['eccube.repository.order']->find($id); |
||
49 | if (is_null($TargetOrder)) { |
||
50 | throw new NotFoundHttpException(); |
||
51 | } |
||
52 | } |
||
53 | |||
54 | // 編集前の受注情報を保持 |
||
55 | $OriginOrder = clone $TargetOrder; |
||
56 | $OriginalOrderDetails = new ArrayCollection(); |
||
57 | |||
58 | foreach ($TargetOrder->getOrderDetails() as $OrderDetail) { |
||
59 | $OriginalOrderDetails->add($OrderDetail); |
||
60 | } |
||
61 | |||
62 | $builder = $app['form.factory'] |
||
63 | ->createBuilder('order', $TargetOrder); |
||
64 | |||
65 | $event = new EventArgs( |
||
66 | array( |
||
67 | 'builder' => $builder, |
||
68 | 'OriginOrder' => $OriginOrder, |
||
69 | 'TargetOrder' => $TargetOrder, |
||
70 | 'OriginOrderDetails' => $OriginalOrderDetails, |
||
71 | ), |
||
72 | $request |
||
73 | ); |
||
74 | $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_ORDER_EDIT_INDEX_INITIALIZE, $event); |
||
75 | |||
76 | $form = $builder->getForm(); |
||
77 | |||
78 | if ('POST' === $request->getMethod()) { |
||
79 | $form->handleRequest($request); |
||
80 | |||
81 | // 入力情報にもとづいて再計算. |
||
82 | $this->calculate($app, $TargetOrder); |
||
83 | |||
84 | // 登録ボタン押下 |
||
85 | switch ($request->get('mode')) { |
||
86 | case 'register': |
||
87 | if ($TargetOrder->getTotal() > $app['config']['max_total_fee']) { |
||
88 | $form['charge']->addError(new FormError('合計金額の上限を超えております。')); |
||
89 | } elseif ($form->isValid()) { |
||
90 | |||
91 | $BaseInfo = $app['eccube.repository.base_info']->get(); |
||
92 | |||
93 | // お支払い方法の更新 |
||
94 | $TargetOrder->setPaymentMethod($TargetOrder->getPayment()->getMethod()); |
||
95 | |||
96 | // 配送業者・お届け時間の更新 |
||
97 | $Shippings = $TargetOrder->getShippings(); |
||
98 | foreach ($Shippings as $Shipping) { |
||
99 | $Shipping->setShippingDeliveryName($Shipping->getDelivery()->getName()); |
||
100 | if (!is_null($Shipping->getDeliveryTime())) { |
||
101 | $Shipping->setShippingDeliveryTime($Shipping->getDeliveryTime()->getDeliveryTime()); |
||
102 | } else { |
||
103 | $Shipping->setShippingDeliveryTime(null); |
||
104 | } |
||
105 | } |
||
106 | |||
107 | |||
108 | // 受注日/発送日/入金日の更新. |
||
109 | $this->updateDate($app, $TargetOrder, $OriginOrder); |
||
110 | |||
111 | // 受注明細で削除されているものをremove |
||
112 | foreach ($OriginalOrderDetails as $OrderDetail) { |
||
113 | if (false === $TargetOrder->getOrderDetails()->contains($OrderDetail)) { |
||
114 | $app['orm.em']->remove($OrderDetail); |
||
115 | } |
||
116 | } |
||
117 | |||
118 | |||
119 | if ($BaseInfo->getOptionMultipleShipping() == Constant::ENABLED) { |
||
120 | foreach ($TargetOrder->getOrderDetails() as $OrderDetail) { |
||
121 | /** @var $OrderDetail \Eccube\Entity\OrderDetail */ |
||
122 | $OrderDetail->setOrder($TargetOrder); |
||
123 | } |
||
124 | |||
125 | /** @var \Eccube\Entity\Shipping $Shipping */ |
||
126 | View Code Duplication | foreach ($Shippings as $Shipping) { |
|
127 | $shipmentItems = $Shipping->getShipmentItems(); |
||
128 | /** @var \Eccube\Entity\ShipmentItem $ShipmentItem */ |
||
129 | foreach ($shipmentItems as $ShipmentItem) { |
||
130 | $ShipmentItem->setOrder($TargetOrder); |
||
131 | $ShipmentItem->setShipping($Shipping); |
||
132 | $app['orm.em']->persist($ShipmentItem); |
||
133 | } |
||
134 | $Shipping->setOrder($TargetOrder); |
||
135 | $app['orm.em']->persist($Shipping); |
||
136 | } |
||
137 | } else { |
||
138 | |||
139 | $NewShipmentItems = new ArrayCollection(); |
||
140 | |||
141 | foreach ($TargetOrder->getOrderDetails() as $OrderDetail) { |
||
142 | /** @var $OrderDetail \Eccube\Entity\OrderDetail */ |
||
143 | $OrderDetail->setOrder($TargetOrder); |
||
144 | |||
145 | $NewShipmentItem = new ShipmentItem(); |
||
146 | $NewShipmentItem |
||
147 | ->setProduct($OrderDetail->getProduct()) |
||
148 | ->setProductClass($OrderDetail->getProductClass()) |
||
149 | ->setProductName($OrderDetail->getProduct()->getName()) |
||
150 | ->setProductCode($OrderDetail->getProductClass()->getCode()) |
||
151 | ->setClassCategoryName1($OrderDetail->getClassCategoryName1()) |
||
152 | ->setClassCategoryName2($OrderDetail->getClassCategoryName2()) |
||
153 | ->setClassName1($OrderDetail->getClassName1()) |
||
154 | ->setClassName2($OrderDetail->getClassName2()) |
||
155 | ->setPrice($OrderDetail->getPrice()) |
||
156 | ->setQuantity($OrderDetail->getQuantity()) |
||
157 | ->setOrder($TargetOrder); |
||
158 | $NewShipmentItems[] = $NewShipmentItem; |
||
159 | |||
160 | } |
||
161 | // 配送商品の更新. delete/insert. |
||
162 | $Shippings = $TargetOrder->getShippings(); |
||
163 | View Code Duplication | foreach ($Shippings as $Shipping) { |
|
164 | $ShipmentItems = $Shipping->getShipmentItems(); |
||
165 | foreach ($ShipmentItems as $ShipmentItem) { |
||
166 | $app['orm.em']->remove($ShipmentItem); |
||
167 | } |
||
168 | $ShipmentItems->clear(); |
||
169 | foreach ($NewShipmentItems as $NewShipmentItem) { |
||
170 | $NewShipmentItem->setShipping($Shipping); |
||
171 | $ShipmentItems->add($NewShipmentItem); |
||
172 | } |
||
173 | } |
||
174 | } |
||
175 | |||
176 | $app['orm.em']->persist($TargetOrder); |
||
177 | $app['orm.em']->flush(); |
||
178 | |||
179 | $Customer = $TargetOrder->getCustomer(); |
||
180 | if ($Customer) { |
||
181 | // 会員の場合、購入回数、購入金額などを更新 |
||
182 | $app['eccube.repository.customer']->updateBuyData($app, $Customer, $TargetOrder->getOrderStatus()->getId()); |
||
183 | } |
||
184 | |||
185 | |||
186 | $event = new EventArgs( |
||
187 | array( |
||
188 | 'form' => $form, |
||
189 | 'OriginOrder' => $OriginOrder, |
||
190 | 'TargetOrder' => $TargetOrder, |
||
191 | 'OriginOrderDetails' => $OriginalOrderDetails, |
||
192 | 'Customer' => $Customer, |
||
193 | ), |
||
194 | $request |
||
195 | ); |
||
196 | $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_ORDER_EDIT_INDEX_COMPLETE, $event); |
||
197 | |||
198 | $app->addSuccess('admin.order.save.complete', 'admin'); |
||
199 | |||
200 | return $app->redirect($app->url('admin_order_edit', array('id' => $TargetOrder->getId()))); |
||
201 | } |
||
202 | |||
203 | break; |
||
204 | |||
205 | case 'add_delivery': |
||
206 | // お届け先情報の新規追加 |
||
207 | |||
208 | $form = $builder->getForm(); |
||
209 | |||
210 | $Shipping = new \Eccube\Entity\Shipping(); |
||
211 | $Shipping->setDelFlg(Constant::DISABLED); |
||
212 | |||
213 | $TargetOrder->addShipping($Shipping); |
||
214 | |||
215 | $Shipping->setOrder($TargetOrder); |
||
216 | |||
217 | $form->setData($TargetOrder); |
||
218 | |||
219 | break; |
||
220 | |||
221 | default: |
||
222 | break; |
||
223 | } |
||
224 | } |
||
225 | |||
226 | // 会員検索フォーム |
||
227 | $builder = $app['form.factory'] |
||
228 | ->createBuilder('admin_search_customer'); |
||
229 | |||
230 | $event = new EventArgs( |
||
231 | array( |
||
232 | 'builder' => $builder, |
||
233 | 'OriginOrder' => $OriginOrder, |
||
234 | 'TargetOrder' => $TargetOrder, |
||
235 | 'OriginOrderDetails' => $OriginalOrderDetails, |
||
236 | ), |
||
237 | $request |
||
238 | ); |
||
239 | $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_ORDER_EDIT_SEARCH_CUSTOMER_INITIALIZE, $event); |
||
240 | |||
241 | $searchCustomerModalForm = $builder->getForm(); |
||
242 | |||
243 | // 商品検索フォーム |
||
244 | $builder = $app['form.factory'] |
||
245 | ->createBuilder('admin_search_product'); |
||
246 | |||
247 | $event = new EventArgs( |
||
248 | array( |
||
249 | 'builder' => $builder, |
||
250 | 'OriginOrder' => $OriginOrder, |
||
251 | 'TargetOrder' => $TargetOrder, |
||
252 | 'OriginOrderDetails' => $OriginalOrderDetails, |
||
253 | ), |
||
254 | $request |
||
255 | ); |
||
256 | $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_ORDER_EDIT_SEARCH_PRODUCT_INITIALIZE, $event); |
||
257 | |||
258 | $searchProductModalForm = $builder->getForm(); |
||
259 | |||
260 | // 配送業者のお届け時間 |
||
261 | $times = array(); |
||
262 | $deliveries = $app['eccube.repository.delivery']->findAll(); |
||
263 | foreach ($deliveries as $Delivery) { |
||
264 | $deliveryTiems = $Delivery->getDeliveryTimes(); |
||
265 | foreach ($deliveryTiems as $DeliveryTime) { |
||
266 | $times[$Delivery->getId()][$DeliveryTime->getId()] = $DeliveryTime->getDeliveryTime(); |
||
267 | } |
||
268 | } |
||
269 | |||
270 | return $app->render('Order/edit.twig', array( |
||
271 | 'form' => $form->createView(), |
||
272 | 'searchCustomerModalForm' => $searchCustomerModalForm->createView(), |
||
273 | 'searchProductModalForm' => $searchProductModalForm->createView(), |
||
274 | 'Order' => $TargetOrder, |
||
275 | 'id' => $id, |
||
276 | 'shippingDeliveryTimes' => $app['serializer']->serialize($times, 'json'), |
||
277 | )); |
||
278 | } |
||
279 | |||
619 |