public function indexAction(Request $request) { $session = $request->getSession(); $productIDs = $session->get('ids'); $productIDs = json_decode($productIDs, true); $useBonus = false; if ($productIDs) { $productIDs = array_count_values($productIDs); $products = array(); $basketSumm = 0; $basketCount = 0; foreach ($productIDs as $productId => $count) { $product = $this->getDoctrine()->getRepository('ShopBundle:Product')->find($productId); if (!$product) { continue; } if (!$useBonus && $product->getCategory()->getId() == 1) { $useBonus = true; } $product->setCount($count); $images = $product->getImages(); if ($images && strpos($images, ',')) { $product->setImages(strstr($images, ',', true)); } $products[] = $product; $basketCount += $count; $basketSumm = $basketSumm + $product->getPrice() * $count; } } else { $products = array(); $basketSumm = 0; $basketCount = 0; } $order = new Order(); $orderForm = $this->get('shop.form.order'); $form = $this->createForm($orderForm, $order); $form->handleRequest($request); if ($form->isValid()) { $em = $this->getDoctrine()->getManager(); $uuid = new UuidGenerator(); $order->setUuid($uuid->generate($em, $order)); /** @var User $user */ $user = $this->getUser(); if ($user) { $order->setUser($user); } // Уменьшение бонусов у пользователя $bonus = $order->getBonus(); if ($bonus) { $bonuses = json_decode($user->getBonus(), true); $maxBonus = $user->getMaxBonus(); $newBonus = (int) $maxBonus - (int) $bonus; if ($newBonus) { $bonuses[$newBonus] = $bonuses[$maxBonus]; } unset($bonuses[$maxBonus]); $user->setBonus($bonuses ? json_encode($bonuses) : null); } $em->persist($order); if ($user) { $em->persist($user); } $em->flush(); $this->getDoctrine()->getRepository('ShopBundle:Order')->setOrderProductsArray($order); $session = $request->getSession(); if ($session) { $session->clear(); } $this->addFlash('success', ''); $mailer = $this->get('mailer'); $messageClient = \Swift_Message::newInstance()->setSubject('Спасибо за заказ на нашем сайте sweet-smoke.org')->setFrom(array('*****@*****.**' => 'SweetSmoke'))->setTo(array('*****@*****.**', $order->getEmail()))->setContentType('text/html')->setBody($this->renderView("@Shop/Messages/new_order_client.html.twig", array('order' => $order))); $messageAdmin = \Swift_Message::newInstance()->setSubject('Заказ в интернет магазине на сайте sweet-smoke.org')->setFrom(array('*****@*****.**' => 'SweetSmoke'))->setTo(array('*****@*****.**', '*****@*****.**'))->setContentType('text/html')->setBody($this->renderView("@Shop/Messages/new_order_admin.html.twig", array('order' => $order))); $mailer->send($messageClient); $mailer->send($messageAdmin); $user = $this->getUser(); if ($user) { return new RedirectResponse($this->generateUrl('user_cabinet_orders')); } else { return new RedirectResponse($this->generateUrl('hookah_shop_order', array('uuid' => $order->getUuid()))); } } /** @var User $user */ $user = $this->getUser(); $bonus = 0; if ($useBonus && $user) { $bonus = $user->getMaxBonus(); } return $this->render('@Shop/basket.html.twig', array('products' => $products, 'basketCount' => $basketCount, 'basketSumm' => $basketSumm, 'deliveryTypes' => DeliveryType::map(), 'form' => $form->createView(), 'bonus' => $bonus)); }
public function getDelivery() { return DeliveryType::getAsText($this->getDeliveryType()); }