/** * @EXT\Route( * "/payment/workspace/submit/order/{order}/product/{product}", * name="workspace_product_payment_submit" * ) * @EXT\ParamConverter("authenticatedUser", options={"authenticatedUser" = true}) * @return Response */ public function addOrderToChartAction(Order $order, Product $product) { $chart = $order->getChart(); //check it wasn't already submitted if (false) { $content = $this->renderView('FormaLibreInvoiceBundle:errors:orderAlreadySubmitedException.html.twig'); return new Response($content); } if ($this->session->has('form_price_data')) { $priceSolution = $this->session->get('form_price_data'); $this->session->remove('form_price_data'); $priceSolution = $this->em->getRepository('FormaLibreInvoiceBundle:PriceSolution')->find($priceSolution->getId()); } $form = $this->createForm(new SharedWorkspaceForm($product)); $form->handleRequest($this->request); if ($form->isValid()) { //do that stuff here if (!$this->authorization->isGranted('ROLE_USER')) { $this->session->set('form_price_data', $form->get('price')->getData()); $redirectRoute = $this->router->generate('workspace_product_payment_submit', array('order' => $order->getId(), 'product' => $product->getId(), 'chart' => $chart->getId())); $this->session->set('redirect_route', $redirectRoute); $route = $this->router->generate('claro_security_login', array()); return new RedirectResponse($route); } $priceSolution = $form->get('price')->getData(); } $order->setChart($chart); $order->setProduct($product); $chart->setOwner($this->tokenStorage->getToken()->getUser()); $chart->setIpAdress($_SERVER['REMOTE_ADDR']); $order->setPriceSolution($priceSolution); $order->setChart($chart); if ($this->swsManager->hasFreeTestMonth($chart->getOwner())) { $order->setHasDiscount(true); $this->swsManager->useFreeTestMonth($chart->getOwner()); } $this->em->persist($chart); $this->em->persist($order); $this->em->flush(); return new RedirectResponse($this->router->generate('chart_payment_confirm', array('chart' => $order->getChart()->getId()), true)); throw new \Exception('Errors were found: ' . $form->getErrorsAsString()); }
/** * @EXT\Route( * "/free_test/{product}", * name="formalibre_free_test_workspace" * ) * @return Response */ public function createFreeTestWorkspace(Product $product) { if (!$this->authorization->isGranted('ROLE_USER')) { $redirectRoute = $this->router->generate('formalibre_free_test_workspace', array('product' => $product->getId())); $this->session->set('redirect_route', $redirectRoute); $route = $this->router->generate('claro_security_login', array()); return new RedirectResponse($route); } $user = $this->tokenStorage->getToken()->getUser(); if (!$this->sharedWorkspaceManager->hasFreeTestMonth($user)) { $content = $this->renderView('FormaLibreInvoiceBundle:errors:freeTestMonthUsedException.html.twig'); return new Response($content); } $chart = new Chart(); $ps = $this->productManager->getPriceSolution($product, 1); $order = new Order(); $chart->setOwner($user); $chart->setIpAdress($_SERVER['REMOTE_ADDR']); $order->setPriceSolution($ps); $order->setProduct($product); $chart->addOrder($order); $order->setChart($chart); $this->em->persist($order); $this->em->persist($chart); $this->sharedWorkspaceManager->useFreeTestMonth($user); $invoice = $this->invoiceManager->create($chart, 'free'); $this->invoiceManager->validate($invoice); $invoice->setPaymentSystemName('none'); $this->em->persist($invoice); $this->em->flush(); return new RedirectResponse($this->router->generate('claro_desktop_open', array())); }