/** * @Route("/anuncio/{id}-{titulo}", requirements={"id" = "\d+"}, name="anuncio_show") */ public function anunciosAction(Request $request) { $id = $request->get('id'); /* Formulario de preguntas */ $form_question = $this->createFormBuilder()->add('comentario', 'textarea', array('attr' => array('cols' => '50', 'rows' => '4', 'maxlength' => '500', 'class' => 'form-control submitComment')))->add('tipo', 'hidden', array('attr' => array('value' => 'p')))->add('save', 'submit', array('label' => 'Enviar comentario', 'attr' => array('class' => 'btn btn-primary')))->getForm(); $form_question->handleRequest($request); /* Formulario de respuestas */ $form_reply = $this->createFormBuilder()->add('comentario', 'textarea', array('attr' => array('cols' => '50', 'rows' => '4', 'maxlength' => '500', 'class' => 'form-control submitComment')))->add('tipo', 'hidden', array('attr' => array('value' => 'r')))->add('comentario_parent_id', 'hidden', array('attr' => array('value' => '')))->add('save', 'submit', array('label' => 'Enviar respuesta', 'attr' => array('class' => 'btn btn-primary')))->getForm(); $form_reply->handleRequest($request); // user_id $current_user = $this->container->get('security.context')->getToken()->getUser(); // produccion_id $current_produccion = $this->getDoctrine()->getRepository('AppBundle:Produccion')->find($id); // Comprobamos si se realizó un comentario if ($request->isMethod('POST')) { $formData = $request->get('form'); $com = new Comentario(); $com->setComentario($formData['comentario']); if ($formData['tipo'] == "r") { $com->setComentarioParentId($formData['comentario_parent_id']); } $tz = new \DateTimeZone("Europe/Madrid"); $current_date = new \DateTime("now", $tz); $com->setFechaHora($current_date); $com->setTipo($formData['tipo']); $com->setUsuario($current_user); $com->setProduccion($current_produccion); if ($form_question->isValid() || $form_reply->isValid()) { $em = $this->getDoctrine()->getManager(); $em->persist($com); $em->flush(); return new Response('Comentario añadido correctamente!'); } } // Información general $em = $this->getDoctrine()->getManager(); $query = $em->createQuery("\n SELECT p, t, a\n FROM AppBundle:Produccion p\n JOIN p.anuncio a\n JOIN p.titulos t\n WHERE t.paisId = 1 and a.id = '{$id}'\n "); $data = array(); if (count($query->getResult()) > 0) { foreach ($query->getResult() as $produccion) { switch ($produccion->getTipo()) { case 'p': $tipo = "peliculas"; break; case 's': $tipo = "series"; break; case 'a': $tipo = "anuncios"; break; } $produccion->tipoProduccion = $tipo; $produccion->banner = str_replace(".jpg", "_banner.jpg", $produccion->getCartel()); // Protagonistas $protagonistas = explode(",", $produccion->getProtagonistas()); $num_actores = count($protagonistas); $i = 0; foreach ($protagonistas as $protagonista) { $produccion->protagonistasLinks .= "<a href='#'>" . $protagonista . "</a>"; if (++$i != $num_actores) { $produccion->protagonistasLinks .= ", "; } } $data[] = $produccion; } } $produccion = $data; if (!$produccion) { throw $this->createNotFoundException('Id ' . $id . ' no encontrada'); } // Lista de canciones $em = $this->getDoctrine()->getManager(); $query = $em->createQuery("SELECT c, ac, an, cs, s, a\n FROM AppBundle:anunciosCanciones ac\n JOIN ac.cancion c\n JOIN ac.anuncio an\n JOIN c.cancionesSitios cs\n JOIN cs.sitio s\n JOIN c.artista a\n WHERE an.id = '{$id}'"); $lista_canciones = $query->getResult(); /*if(!$lista_canciones) { throw $this->createNotFoundException( 'No hay resultados' ); }*/ // Sitios $em = $this->getDoctrine()->getManager(); $query = $em->createQuery("\n SELECT cs\n FROM AppBundle:CancionesSitios cs\n "); $sitios = $query->getResult(); // Canciones Populares $em = $this->getDoctrine()->getManager(); $query = $em->createQuery("\n SELECT c, a\n FROM AppBundle:Cancion c\n JOIN c.artista a\n ")->setMaxResults(8); $canciones_populares = $query->getResult(); if (!$canciones_populares) { throw $this->createNotFoundException('No hay resultados'); } // Preguntas y respuestas $em = $this->getDoctrine()->getManager(); $query = $em->createQuery("\n SELECT c, u\n FROM AppBundle:Comentario c\n JOIN c.usuario u\n WHERE c.produccion = '{$id}'\n "); $pr = $query->getResult(); $comentarios = NULL; if (count($pr) > 0) { $comentarios = $this->buildTree($pr); } // Siguiendo $usuario = $this->container->get('security.context')->getToken()->getUser(); // Compruebo si ya la está siguiendo $em = $this->getDoctrine()->getManager(); $siguiendo = $em->getRepository('AppBundle:UsuariosProducciones')->findOneBy(array('usuario' => $usuario, 'produccion' => $produccion)); return $this->render('anuncios.ficha.html.twig', array('siguiendo' => $siguiendo, 'produccion' => $produccion, 'lista_canciones' => $lista_canciones, 'sitios' => $sitios, 'comentarios' => $comentarios, 'canciones_populares' => $canciones_populares, 'form_question' => $form_question->createView(), 'form_reply' => $form_reply->createView())); }