/** * @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())); }
public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('status', 'choice', ['choices' => Orders::getStatuses(), 'required' => false])->add('user', 'entity', ['class' => 'AppBundle\\Entity\\User', 'required' => false])->add('car', 'entity', ['class' => 'AppBundle\\Entity\\Car', 'required' => false]); $listener = function (FormEvent $event) { // Is data empty? foreach ($event->getData() as $data) { if (is_array($data)) { foreach ($data as $subData) { if (!empty($subData)) { return; } } } else { if (!empty($data)) { return; } } } $event->getForm()->addError(new FormError('Filter empty')); }; $builder->addEventListener(FormEvents::POST_BIND, $listener); }
/** * @Route("/cars/{id}", name="car_desc") * function is responsible for the car hire and send an email to the user with information about the loan. */ public function carDescriptionAction(Request $request, $id) { if ($this->isGranted('ROLE_MOD')) { switch ($request->query->get('action', 'none')) { case 'accept': if ($request->query->has('id')) { $order = $this->getDoctrine()->getRepository("AppBundle:Orders")->find($request->query->get('id')); if ($order !== null && $order->getRate() !== null && $order->getOpinion() !== null) { $order->setRateAccepted(true); $this->getDoctrine()->getManager()->flush(); } } break; case 'remove': if ($request->query->has('id')) { $order = $this->getDoctrine()->getRepository("AppBundle:Orders")->find($request->query->get('id')); if ($order !== null && $order->getRate() !== null && $order->getOpinion() !== null) { $order->setRateAccepted(false); $order->setOpinion(null); $order->setRate(null); $this->getDoctrine()->getManager()->flush(); } } break; } } $categories = $this->getDoctrine()->getRepository("AppBundle:Categories")->findAll(); $car = $this->getDoctrine()->getRepository("AppBundle:Cars")->find($id); $parameters = explode(';', $car->getParameters()); $category = $this->getDoctrine()->getRepository("AppBundle:Categories")->find($car->getCategoryId()); $lastOrder = $this->getDoctrine()->getRepository("AppBundle:Orders")->findBy(['carId' => $car->getId()], ['expDate' => 'DESC'], 1); $orders = $this->getDoctrine()->getRepository("AppBundle:Orders")->findBy(['carId' => $car]); $users = []; for ($i = 0; $i < count($orders); $i++) { if ($orders[$i]->getRate() !== null) { $users[$i] = $this->getDoctrine()->getRepository("AppBundle:Users")->find($orders[$i]->getUserId()); } } if (empty($lastOrder) || $lastOrder[0]->getExpDate() < new \DateTime('now')) { $available = true; } else { $available = false; } $order = new Orders(); $order->setCarId($car->getId()); $order->setDate(new \DateTime('now')); $nowDate = new \DateTime(); $format = 'Y-m-d'; if ($this->isGranted('IS_AUTHENTICATED_FULLY')) { $order->setUserId($this->getUser()->getId()); } $form = $this->createFormBuilder($order)->add('expDate', ChoiceType::class, ['label' => 'Do kiedy', 'attr' => ['class' => 'form-control'], 'choices' => ['Dni' => ['1 dzień' => \DateTime::createFromFormat($format, $nowDate->add(new \DateInterval('P1D'))->format($format)), '2 dni' => \DateTime::createFromFormat($format, $nowDate->add(new \DateInterval('P1D'))->format($format)), '3 dni' => \DateTime::createFromFormat($format, $nowDate->add(new \DateInterval('P1D'))->format($format)), '4 dni' => \DateTime::createFromFormat($format, $nowDate->add(new \DateInterval('P1D'))->format($format)), '5 dni' => \DateTime::createFromFormat($format, $nowDate->add(new \DateInterval('P1D'))->format($format)), '6 dni' => \DateTime::createFromFormat($format, $nowDate->add(new \DateInterval('P1D'))->format($format))], 'Tygodnie' => ['1 tydzień' => \DateTime::createFromFormat($format, $nowDate->add(new \DateInterval('P1D'))->format($format)), '2 tygodnie' => \DateTime::createFromFormat($format, $nowDate->add(new \DateInterval('P1W'))->format($format)), '3 tygodnie' => \DateTime::createFromFormat($format, $nowDate->add(new \DateInterval('P1W'))->format($format))], 'Miesiące' => ['1 miesiąc' => \DateTime::createFromFormat($format, $nowDate->add(new \DateInterval('P1W'))->format($format)), '2 miesiące' => \DateTime::createFromFormat($format, $nowDate->add(new \DateInterval('P1M'))->format($format)), '3 miesiące' => \DateTime::createFromFormat($format, $nowDate->add(new \DateInterval('P1M'))->format($format))]]])->add('add', SubmitType::class, ['label' => 'Potwierdź', 'attr' => ['class' => 'btn btn-primary']])->getForm(); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $em = $this->getDoctrine()->getManager(); $em->persist($order); $em->flush(); if ($this->getUser()->getMail() !== null) { $mail = \Swift_Message::newInstance()->setSubject('Wiadomość od Symfony 3')->setFrom('*****@*****.**')->setTo($this->getUser()->getMail())->setBody($this->renderView('order_mail.html.twig', ['user' => $this->getUser()->getUsername(), 'car' => $car->getName(), 'date' => $order->getDate()->format('d.m.Y'), 'expDate' => $order->getExpDate()->format('d.m.Y'), 'price' => $car->getPrice()]), 'text/html'); $this->get('mailer')->send($mail); } return $this->redirectToRoute('orderSuccess'); } return $this->render("car_desc.html.twig", ['title' => $car->getName() . " - szczegóły", 'rate_title' => "Opinie", 'car' => $car, 'category' => $category, 'categories' => $categories, 'available' => $available, 'parameters' => $parameters, 'form' => $form->createView(), 'rates' => $orders, 'users' => $users]); }
/** * @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'); } }
/** * Displays a form to create a new Car entity. * * @Route("/hire/{car}", name="car_hire") * @Method("GET") * @param Request $request * @param Car $car * @return RedirectResponse */ public function hireAction(Request $request, Car $car) { if ($car->getAmount() < 1) { $this->addFlash('error', 'Brak wolnych pojazdów'); return $this->redirectToRoute('car_show', ['id' => $car->getId()]); } $entity = new Orders(); $entity->setCar($car)->setUser($this->getUser())->setDays($request->get('days', 1))->setStatus('Do zapłaty'); $car->setAmount($car->getAmount() - 1); $em = $this->getDoctrine()->getManager(); $em->persist($entity); $em->flush(); $this->addFlash('success', 'Zamówienie zostało zapisane, czekamy na kontakt w salonie'); return $this->redirectToRoute('orders'); }
public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('status', 'choice', ['choices' => Orders::getStatuses()])->add('car', null, ['required' => true])->add('user', null, ['required' => true]); }