/** * @param AddToBasketRequest $request * * @throws \ChingShop\Modules\Sales\Domain\Payment\StockAllocationException * * @return \Illuminate\Http\RedirectResponse */ public function addProductOptionAction(AddToBasketRequest $request) { $productOption = $this->optionRepository->loadById($request->optionId()); try { $this->clerk->addProductOptionToBasket($productOption); } catch (StockAllocationException $e) { $this->webUi->warningMessage($e->getMessage()); return $this->webUi->redirectAway($productOption->product->url()); } $this->webUi->successMessage(sprintf('1 × <strong>%s (%s)</strong> was added to your basket.', $productOption->product->name, $productOption->label)); Analytics::trackEvent('basket', 'add', $productOption->product->sku, $productOption->label); return $this->webUi->redirect('sales.customer.basket'); }
/** * @param int $optionId * * @return ProductOption */ public function loadOptionById(int $optionId) : ProductOption { return $this->optionRepository->loadById($optionId); }