/**
  * @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());
 }