/**
  * @param string $orderId
  */
 public function customerPlacedOrder(string $orderId)
 {
     $transaction = $this->transactionFactory->open();
     try {
         $this->eventLog->log(new CustomerPlacedOrder($orderId));
         $transaction->commit();
     } catch (\Exception $e) {
         $transaction->rollback();
         throw $e;
     }
 }
示例#2
0
 /**
  * @param PlaceOrder $command
  * @throws OrderAlreadyExistsException
  * @throws \Dumplie\Customer\Domain\Exception\EmptyCartException
  */
 public function handle(PlaceOrder $command)
 {
     $cartId = new CartId($command->cartId());
     $orderId = new OrderId($command->orderId());
     if ($this->orders->exists($orderId)) {
         throw OrderAlreadyExistsException::withId($orderId);
     }
     $checkout = $this->checkouts->getForCart($cartId);
     $order = $checkout->placeOrder($orderId, $this->products, $this->carts);
     $this->orders->add($order);
     $this->checkouts->removeForCart($cartId);
     $this->carts->remove($cartId);
     $this->eventLog->log(new CustomerPlacedOrder((string) $orderId));
 }