public function order(Application $app, Request $request, $id)
{
$this->isTokenValid($app);
log_info('再注文開始', array($id));
$Customer = $app->user();
/* @var $Order \Eccube\Entity\Order */
$Order = $app['eccube.repository.order']->findOneBy(array('id' => $id, 'Customer' => $Customer));
$event = new EventArgs(array('Order' => $Order, 'Customer' => $Customer), $request);
$app['eccube.event.dispatcher']->dispatch(EccubeEvents::FRONT_MYPAGE_MYPAGE_ORDER_INITIALIZE, $event);
if (!$Order) {
log_info('対象の注文が見つかりません', array($id));
throw new NotFoundHttpException();
}
foreach ($Order->getOrderDetails() as $OrderDetail) {
try {
if ($OrderDetail->getProduct() && $OrderDetail->getProductClass()) {
$app['eccube.service.cart']->addProduct($OrderDetail->getProductClass()->getId(), $OrderDetail->getQuantity())->save();
} else {
log_info($app->trans('cart.product.delete'), array($id));
$app->addRequestError('cart.product.delete');
}
} catch (CartException $e) {
log_info($e->getMessage(), array($id));
$app->addRequestError($e->getMessage());
}
}
$event = new EventArgs(array('Order' => $Order, 'Customer' => $Customer), $request);
$app['eccube.event.dispatcher']->dispatch(EccubeEvents::FRONT_MYPAGE_MYPAGE_ORDER_COMPLETE, $event);
if ($event->getResponse() !== null) {
return $event->getResponse();
}
log_info('再注文完了', array($id));
return $app->redirect($app->url('cart'));
}