/** * @Route("/order", name="order") */ public function orderAction(Request $request) { $user = $this->getUser(); $categories = $this->getDoctrine()->getRepository('AppBundle:Category')->findAll(); $order = new Orders(); $order->setIsSent(false); $session = $request->getSession(); $cartItems = $session->get('cartItems'); $products = []; $sum = 0; for ($i = 0; $i < sizeof($cartItems); $i++) { $products[$i] = $this->getDoctrine()->getRepository('AppBundle:Product')->find($cartItems[$i]); $sum += $products[$i]->getPrice(); } $order->setProducts($products); $order->setTotalCost($sum); $order->setUser($user); $form = $this->createFormBuilder($user)->add('street', 'text', array('label' => 'ulica', 'attr' => array('class' => 'form-control')))->add('number', 'number', array('label' => 'numer domu', 'attr' => array('class' => 'form-control')))->add('city', 'text', array('label' => 'miasto', 'attr' => array('class' => 'form-control')))->add('zipCode', 'text', array('label' => 'kod pocztowy', 'attr' => array('class' => 'form-control')))->add('save', 'submit', array('label' => 'zamów', 'attr' => array('class' => 'form-control')))->getForm(); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $prevOrders = $user->getOrders(); $prevOrders->add($order); $user->setOrders($prevOrders); for ($i = 0; $i < sizeof($products); $i++) { $products[$i]->setQuantity($products[$i]->getQuantity() - 1); } $session->set('cartItems', array()); $em = $this->getDoctrine()->getManager(); $em->persist($order); $em->flush(); return $this->render('cart/ordered.html.twig', array('user' => $user, 'categories' => $categories)); } return $this->render('cart/order.html.twig', array('user' => $user, 'categories' => $categories, 'form' => $form->createView())); }
/** * @Route( * "/orders/create", * name="orders_create" * ) */ public function createAction() { $request = Request::createFromGlobals(); if ($request->isMethod('POST')) { $errors = false; $date_time_now = new DateTime(); $order = new Orders(); $user = $this->getUser(); $order_name = strval($request->request->get('order_name')); $supplier_name = strval($request->request->get('supplier_name')); $supplier_link = strval($request->request->get('supplier_link')); $description = strval($request->request->get('description')); $event_address = strval($request->request->get('event_address')); if ($order_name == '' || $supplier_name == '' || $description == '' || $event_address == '') { $this->addFlash('error', 'Please do not leave empty fields!'); $errors = true; } $order_date_time = strval($request->request->get('order_date_time')); // Check if string is some sort of time if (strtotime($order_date_time)) { $order_date_time = new DateTime($order_date_time); if ($order_date_time->format("Y-m-d H:i") <= $date_time_now->format("Y-m-d H:i")) { $this->addFlash('error', 'Wrong order date and time! It must be set to a future.'); $errors = true; } } else { $this->addFlash('error', 'Wrong order date and time!'); $errors = true; } $joining_date_time = strval($request->request->get('joining_date_time')); // Check if string is some sort of time if (strtotime($joining_date_time)) { $joining_date_time = new DateTime($joining_date_time); if ($joining_date_time->format("Y-m-d H:i") <= $date_time_now->format("Y-m-d H:i")) { $this->addFlash('error', 'Wrong joining date and time! It must be set to a future.'); $errors = true; } } else { $this->addFlash('error', 'Wrong joining date and time!'); $errors = true; } if (!$errors) { $order->setUser($user); $order->setName($order_name); $order->setSupplierName($supplier_name); $order->setSupplierMenuLink($supplier_link); $order->setDescription($description); $order->setAddress($event_address); $order->setEventDate($order_date_time); $order->setJoiningDeadline($joining_date_time); $em = $this->getDoctrine()->getManager(); $em->persist($order); $em->flush(); $this->addFlash('notice', 'Order successfully created!'); return new RedirectResponse($this->generateUrl('orders_details', array('order_id' => $order->getId()))); } return $this->render('default/create_order.html.twig', array('order_name' => $order_name, 'supplier_name' => $supplier_name, 'supplier_link' => $supplier_link, 'description' => $description, 'event_address' => $event_address, 'order_date_time' => strval($request->request->get('order_date_time')), 'joining_date_time' => strval($request->request->get('joining_date_time')))); } else { return $this->render('default/create_order.html.twig'); } }