/**
  * Host Order creation form
  * @param Request $request Submitted form request
  * @return \Symfony\Component\HttpFoundation\Response
  * @throws \Exception
  */
 public function createAction(Request $request)
 {
     $hostOrder = new Host_order();
     //Prefilling the form with some data
     //Assigning hostOrder to the user
     $userObject = $this->get("security.token_storage")->getToken()->getUser();
     $hostOrder->setUsersId($userObject);
     $hostOrder->setCloseDate(new \DateTime("now"));
     $form = $this->createForm(new Host_orderType(), $hostOrder);
     $form->handleRequest($request);
     if ($form->isValid()) {
         $em = $this->getDoctrine()->getManager();
         $em->persist($hostOrder);
         // Creating User_order for the host user
         $userOrder = new User_order();
         $userOrder->setHostOrderId($hostOrder);
         $userOrder->setUsersId($userObject);
         $em->persist($userOrder);
         $em->flush();
         $notificationMessage = $this->get('translator')->trans('order.summary.successCreate');
         $this->get('session')->getFlashBag()->add('success', $notificationMessage);
         return $this->redirectToRoute('host_order_summary', ['id' => $hostOrder->getId()]);
     }
     return $this->render("IlluminatiOrderBundle:Default:orderCreation.html.twig", ["form" => $form->createView(), 'pageTitle' => 'order.create']);
 }
 public function load(ObjectManager $manager)
 {
     for ($i = 1; $i <= 5; $i++) {
         $date = new \DateTime("12/1{$i}/2015");
         $hostOrder = new Host_order();
         $hostOrder->setUsersId($this->getReference("user{$i}"));
         $hostOrder->setTitle("Awesome order{$i}");
         $hostOrder->setCloseDate($date);
         $hostOrder->setDescription('Awesome order for awesome people');
         $hostOrder->setSupplierId($this->getReference('supplier'));
         $this->addReference("hostOrder{$i}", $hostOrder);
         $manager->persist($hostOrder);
         $manager->flush();
     }
 }
 /**
  * Generates PDF with hosted order's products and participants
  *
  * @param \Illuminati\OrderBundle\Entity\Host_Order $hostOrder
  */
 public function generate(Host_order $hostOrder)
 {
     $repo = $this->em->getRepository('IlluminatiOrderBundle:Host_order');
     $hostedOrderHost = $hostOrder->getUsersId();
     $products = $repo->findOrderedProducts($hostOrder->getId());
     $participants = $repo->findUserOrders($hostOrder->getId());
     $overallPriceSum = 0;
     $this->AliasNbPages();
     $this->newOrderPage($hostOrder->getTitle(), "Ordered Products:");
     // Generating Product Table;
     if (!empty($products)) {
         // Column widths
         $w = [120, 25, 45];
         $this->Cell($w[0], 6, "Product", 1, 0);
         $this->Cell($w[1], 6, "Quantity", 1, 0, "R");
         $this->Cell($w[2], 6, "Price", 1, 0, "R");
         $this->Ln();
         foreach ($products as $product) {
             $this->Cell($w[0], 6, $product['title'], 'LR');
             $this->Cell($w[1], 6, $product['quantity'], 'LR', 0, "R");
             $this->Cell($w[2], 6, $product['sum'] . " " . $product['currency'], 'LR', 0, "R");
             $this->Ln();
             $overallPriceSum += $product['sum'];
         }
         $this->Cell($w[0], 1, '', 'T');
         $this->Cell($w[1], 6, "Sum", 1, 0, "R");
         $this->Cell($w[2], 6, $overallPriceSum . " " . $products[0]['currency'], 1, 0, "R");
     }
     //Generating particiapnts table;
     $this->newOrderPage($hostOrder->getTitle(), "Order Participants: ");
     if (!empty($participants)) {
         $counter = 1;
         $w = [10, 155, 25];
         $this->Cell($w[0], 6, "Nr.", 1, 0);
         $this->Cell($w[1], 6, "Participant", 1, 0);
         $this->Cell($w[2], 6, "Prepaid", 1, 0, "R");
         $this->Ln();
         foreach ($participants as $participant) {
             // We skip the host of the order in the list
             if ($participant->getUsersId() == $hostedOrderHost) {
                 continue;
             }
             $this->Cell($w[0], 6, "{$counter}.", "LR", 0, "C");
             $this->Cell($w[1], 6, "{$participant->getUsersId()->getName()} " . "{$participant->getUsersId()->getSurname()} " . "( {$participant->getUsersId()->getEmail()} )", "LR");
             $prepaid = $participant->getPayed() == 0 ? "No" : "Yes";
             $this->Cell($w[2], 6, $prepaid, "LR", 0, "R");
             $this->Ln();
             $counter++;
         }
         $this->Cell(array_sum($w), 1, '', 'T');
     }
 }
 /**
  * Deletes participant from the hosted order
  *
  * @param Host_order $hostOrder Host order Object
  * @param integer $userId    User Id
  *
  * @return int
  * @throws \Doctrine\DBAL\ConnectionException
  */
 public function deleteParticipant(Host_order $hostOrder, $userId)
 {
     $conn = $this->getEntityManager()->getConnection();
     $conn->beginTransaction();
     try {
         $conn->executeQuery('UPDATE user_order
             SET deleted = 1
             WHERE host_order_id = ? AND users_id = ?  AND deleted = 0;', [$hostOrder->getId(), $userId]);
         // checking if the user is the host of the group order
         // if yes, we close the group order
         if ($hostOrder->getUsersId()->getId() == $userId) {
             $conn->executeQuery('UPDATE host_order
                 SET deleted = 1
                 WHERE id = ?', [$hostOrder->getId()]);
         }
         $conn->executeQuery('DELETE FROM user_order_details
             WHERE host_order_id = ? AND user_id = ?;', [$hostOrder->getId(), $userId]);
         $conn->commit();
     } catch (\Exception $e) {
         $conn->rollBack();
         $conn->close();
         return false;
     }
     $conn->close();
     return true;
 }