Eccube\Controller\Mypage\MypageController::order PHP Method

order() public method

再購入を行う.
public order ( Application $app, Request $request, $id ) : RedirectResponse
$app Eccube\Application
$request Symfony\Component\HttpFoundation\Request
$id
return Symfony\Component\HttpFoundation\RedirectResponse
    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'));
    }