/**
  * @Route("/pelicula/{id}-{titulo}", requirements={"id" = "\d+"}, name="pelicula_show")
  * @Route("/pelicula/{id}-{titulo}/ordenar-por-{campo}-{orden}", requirements={"id" = "\d+"}, defaults={"campo" = null, "orden" = null}, name="pelicula_show_order")
  */
 public function peliculasAction(Request $request)
 {
     $id = $request->get('id');
     $campo = $request->get('campo');
     $orden = $request->get('orden');
     /* 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, pe, fec, pa\n                        FROM AppBundle:Produccion p\n                        JOIN p.titulos t\n                        JOIN p.pelicula pe\n                        LEFT JOIN pe.fechasEstrenoCines fec\n                        LEFT JOIN fec.pais pa\n                        WHERE t.paisId = 1 and pe.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_canciones = "SELECT c, pc, pe, cs, s, a\n                        FROM AppBundle:PeliculasCanciones pc\n                        JOIN pc.cancion c\n                        JOIN pc.pelicula pe\n                        JOIN c.cancionesSitios cs\n                        JOIN cs.sitio s\n                        JOIN c.artista a\n                        WHERE pe.id = '{$id}'";
     if ($campo != null && $orden != null) {
         switch ($campo) {
             case 'titulo':
                 $query_canciones .= "ORDER BY c.titulo";
                 break;
             case 'artista':
                 $query_canciones .= "ORDER BY a.nombre";
                 break;
             case 'minuto':
                 $query_canciones .= "ORDER BY pc.minuto";
                 break;
             default:
                 $query_canciones .= "ORDER BY c.id";
                 break;
         }
         $query_canciones .= " {$orden}";
     }
     $query = $em->createQuery($query_canciones);
     $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('peliculas.ficha.html.twig', array('siguiendo' => $siguiendo, 'campo_orden' => $campo, 'orden' => $orden, 'produccion' => $produccion, 'lista_canciones' => $lista_canciones, 'sitios' => $sitios, 'comentarios' => $comentarios, 'canciones_populares' => $canciones_populares, 'form_question' => $form_question->createView(), 'form_reply' => $form_reply->createView()));
 }
 /**
  * @Route("/serie/{id}-{titulo}/temporada-{nt}", requirements={"id" = "\d+", "nt" = "\d+"}, name="temporada_show")
  */
 public function temporadasAction(Request $request)
 {
     $id = $request->get('id');
     // Id de serie
     $nt = $request->get('nt');
     // Nº de temporada
     // 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, s\n                        FROM AppBundle:Produccion p\n                        JOIN p.serie s\n                        JOIN p.titulos t\n                        WHERE t.paisId = 1 and s.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());
             $data[] = $produccion;
         }
     }
     $produccion = $data;
     if (!$produccion) {
         throw $this->createNotFoundException('Id ' . $id . ' no encontrada');
     }
     // Información de la temporada
     $em = $this->getDoctrine()->getManager();
     $query = $em->createQuery("\n                        SELECT te, se, ca\n                        FROM AppBundle:temporada te\n                        JOIN te.serie se\n                        JOIN te.capitulos ca\n                        LEFT JOIN ca.capitulosCanciones cc\n                        WHERE se.id = '{$id}' and te.numeroTemporada = '{$nt}'\n                        ");
     $info_temporada = $query->getResult();
     if (!$info_temporada) {
         throw $this->createNotFoundException('No se encontró la temporada');
     }
     // 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');
     }
     // 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('temporadas.ficha.html.twig', array('siguiendo' => $siguiendo, 'produccion' => $produccion, 'nt' => $nt, 'info_temporada' => $info_temporada, 'canciones_populares' => $canciones_populares));
 }