예제 #1
0
 /**
  * Creates a new Order entity.
  *
  */
 public function createAction(Request $request)
 {
     $entityManager = $this->getDoctrine()->getManager();
     $postOrder = $request->get('appbundle_order');
     $quantities = $request->get('quantity');
     $order = new Order();
     $order->setCustomer($entityManager->getRepository(Customer::REPOSITORY)->find($postOrder['customer']));
     foreach ($postOrder['productLines'] as $productSaleId => $value) {
         $productLine = new OrderProductLine();
         $productLine->setProductSale($entityManager->getRepository(ProductSale::REPOSITORY)->find($productSaleId));
         $productLine->setQuantity($quantities[$productSaleId]);
         $entityManager->persist($productLine);
         $order->addProductLine($productLine);
     }
     $entityManager->persist($order);
     $entityManager->flush();
     return $this->redirect($this->generateUrl('order_show', array('id' => $order->getId())));
 }
예제 #2
0
 public function createOrder($customerId, $products)
 {
     $this->eventDispatcher->dispatch(OrderEvent::BEFORE_CREATE, new OrderBeforeCreate($customerId, $products));
     $order = new Order();
     /* @var $customer Customer */
     $customer = $this->doctrine->getRepository(Customer::REPOSITORY)->find($customerId);
     $order->setCustomer($customer);
     $addresses = $customer->getAddress();
     $order->setBillingAddress($addresses[0]);
     $order->setShippingAddress($addresses[1]);
     foreach ($products as $product) {
         $this->createProductLine($order, $product['id'], $product['quantity']);
     }
     $this->entityManager->persist($order);
     $this->entityManager->flush();
     $this->eventDispatcher->dispatch(OrderEvent::AFTER_CREATE, new OrderEvent($order));
     $this->entityManager->flush();
     return $order->getId();
 }
예제 #3
0
 /**
  * @Route("/order/checkout")
  */
 public function checkoutAction(Request $request)
 {
     $session = $request->getSession();
     $cart = $session->get('cart', []);
     $order = new Order();
     $order->setDate(new \DateTime());
     $order->setStatus(Order::STATUS_PENDING);
     $order->setCustomer($this->get('security.token_storage')->getToken()->getUser());
     $service = $this->get('ProductService');
     $items = new ArrayCollection();
     foreach ($cart as $product) {
         $item = new Item();
         $item->setProduct($service->getProduct($product['id']));
         $item->setQuantity($product['quantity']);
         $items->add($item);
     }
     $order->setItems($items);
     $em = $this->getDoctrine()->getEntityManager();
     $em->persist($order);
     $em->flush();
     $session->remove('cart');
     return $this->render('order/checkout.html.twig', ['order' => $order]);
 }