/** * 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()))); }
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(); }
/** * @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]); }