/**
  * Displays a form to create a new Rfq entity.
  *
  */
 public function newAction()
 {
     $entity = new Rfq();
     $entity->setCreatedAt(new \DateTime());
     $form = $this->createCreateForm($entity);
     return $this->render('keltanasTrackingBundle:Rfq:new.html.twig', array('entity' => $entity, 'form' => $form->createView()));
 }
 /**
  * Create and serve adaptive form
  */
 public function serveAction(Request $request, $name)
 {
     /** @var EntityManager $em */
     $em = $this->getDoctrine()->getManager();
     /** @var FormEntity $entity */
     $entity = $em->getRepository('keltanasTrackingBundle:Form')->findOneBy(['name' => $name]);
     if (!$entity) {
         return new Response(sprintf('Form "%s" not found!', $name));
     }
     $form = $this->createForm(new AdaptiveFormType($entity), null, ['action' => $this->generateUrl('keltanas_tracking_form_serve', ['name' => $name])]);
     $form->handleRequest($request);
     if ($form->isSubmitted()) {
         if ($form->isValid()) {
             $this->get('keltanas.postman')->sendMessage('Form: ' . $name, 'keltanasTrackingBundle:Form:mail.html.twig', array_merge($form->getData(), ['entity' => $entity]), $request);
             $history = $em->find('keltanasTrackingBundle:History', $request->cookies->get('tracker_id'));
             $rfq = new Rfq();
             $rfq->setName($form->get('name')->getData());
             $rfq->setPhone($form->get('phone')->getData());
             $rfq->setForm($entity);
             $rfq->setHistory($history);
             $rfq->setCreatedAt(new \DateTime());
             $rfq->setIp($this->getRequest()->getClientIp());
             $em->persist($rfq);
             $em->flush();
             return new JsonResponse(['status' => 'ok', 'message' => $this->get('translator')->trans('promo.form.message.success')]);
         } else {
             $errors = [];
             /** @var Form $child */
             foreach ($form as $child) {
                 foreach ($child->getErrors() as $err) {
                     /** @var FormError $err */
                     $errors[$child->getName()] = isset($errors[$child->getName()]) ? $errors[$child->getName()] . $err->getMessage() : $err->getMessage();
                 }
             }
             return new JsonResponse(['status' => 'error', 'errors' => $errors, 'message' => $form->getErrorsAsString()]);
         }
     }
     return $this->render($entity->getTemplate(), ['form' => $form->createView(), 'entity' => $entity]);
 }