public function create(OrderCreationRequest $request, Address $address, Seller $seller, AddressManager $addressManager, StockValidator $stockValidator) { $cartItems = $this->cartManager->getItemsForOrderCreation($this->user(), $seller); if ($cartItems->isEmpty()) { return $this->error(trans('cart::messages.no_items_by_seller')); } // check stock foreach ($cartItems as $cartItem) { $stockValidator->validate($cartItem->getProduct(), $cartItem->getVariant(), $cartItem->quantity); if (!$cartItem->getProduct()->isActive()) { throw new InvalidDataException(bracketed($cartItem->getProduct()->name) . '已下架'); } } // optional route paramter 'address' will be injected regardless // need to check if it's route model binding or dependency injection $address = $address->exists ? $address : null; if ($address) { $address->setFeeType($seller); } $addresses = $addressManager->getAddressRepository()->whereOwner($this->user())->findAll(); $paymentMethods = $this->paymentManager->getPaymentMethodRepository()->whereSeller($seller)->findAll(); return view('order::__front.orders.create', compact('seller', 'cartItems', 'addresses', 'paymentMethods'), ['selectedAddress' => $address]); }
/** * @param PaymentManager $paymentManager */ private function stubPayment(PaymentManager $paymentManager) { foreach ($this->paymentMethodStubs as $paymentMethodStub) { $paymentManager->createPaymentMethod($this->shop, $paymentMethodStub); } }
public function destroy(PaymentMethod $paymentMethod) { $this->paymentManager->getPaymentMethodRepository()->delete($paymentMethod); return $this->success('delete'); }