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]);
 }
Exemple #2
0
 /**
  * @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');
 }