src/Controller/ContactoController.php line 39

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Doctrine\ORM\EntityManagerInterface;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\String\Slugger\SluggerInterface;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  11. use App\Entity\Contacto;
  12. use App\Entity\PreguntasFrecuentes;
  13. use App\Entity\User;
  14. use DateTime;
  15. class ContactoController extends AbstractController
  16. {
  17.     private $entityManager;
  18.     //Repositorios
  19.     private $preguntasFrecuentesRepository;
  20.     private $contactoRepository;
  21.     private $userRepository;
  22.     public function __construct(EntityManagerInterface $entityManagerParameterBagInterface $parameterBag)
  23.     {
  24.         //Doctrine
  25.         $this->entityManager $entityManager;
  26.         $this->preguntasFrecuentesRepository $this->entityManager->getRepository(PreguntasFrecuentes::class);
  27.         $this->contactoRepository $this->entityManager->getRepository(Contacto::class);
  28.         $this->userRepository $this->entityManager->getRepository(User::class);
  29.     }
  30.     /**
  31.      * @Route("/contacto", name="app_contacto")
  32.      */
  33.     public function index(): Response
  34.     {
  35.         //Obtengo las preguntas frecuentes
  36.         $preguntasFrecuentes $this->preguntasFrecuentesRepository->findByPreguntasFrecuentesActivas();
  37.         //Retorno a la vista
  38.         return $this->render(
  39.             'Contacto/index.html.twig',
  40.             [
  41.                 'preguntasFrecuentes' => $preguntasFrecuentes,
  42.             ]
  43.         );
  44.     }
  45.     /**
  46.      * Require ROLE_ADMIN for only this controller method.
  47.      * 
  48.      * @Route("/app/contacto/listar/", name="app_contacto_listar")
  49.      * 
  50.      * @IsGranted("ROLE_ADMIN")
  51.      */
  52.     public function listarContactos(): Response
  53.     {
  54.         //Obtengo las preguntas frecuentes
  55.         $contactos $this->contactoRepository->findAll();
  56.         //Retorno a la vista
  57.         return $this->render(
  58.             'Contacto/listadoContactos.html.twig',
  59.             [
  60.                 'contactos' => $contactos,
  61.             ]
  62.         );
  63.     }
  64.     /**
  65.      * Require ROLE_ADMIN for only this controller method.
  66.      * 
  67.      * @Route("/contacto/ver/{idContacto}", name="app_contacto_ver")
  68.      * 
  69.      * @IsGranted("ROLE_ADMIN")
  70.      */
  71.     public function verContacto($idContacto): Response
  72.     {
  73.         //Obtengo las preguntas frecuentes
  74.         $contacto $this->contactoRepository->find($idContacto);
  75.         //Retorno a la vista
  76.         return $this->render(
  77.             'Contacto/verContacto.html.twig',
  78.             [
  79.                 'contacto' => $contacto,
  80.             ]
  81.         );
  82.     }
  83.     /**
  84.      * Require ROLE_ADMIN for only this controller method.
  85.      * 
  86.      * @Route("/contacto/marcarLeido/{idContacto}", name="app_contacto_marcarLeido")
  87.      * 
  88.      * @IsGranted("ROLE_ADMIN")
  89.      */
  90.     public function marcarComoLeido($idContacto): Response
  91.     {
  92.         //Obtengo las preguntas frecuentes
  93.         $contacto $this->contactoRepository->find($idContacto);
  94.         //Si esta como leido lo marco, sino al reves
  95.         if ($contacto->isLeido()) {
  96.             $contacto->setLeido(false);
  97.         } else {
  98.             $contacto->setLeido(true);
  99.         }
  100.         //Le doy persistencia 
  101.         $this->entityManager->persist($contacto);
  102.         //Asiento los cambios en la base de datos
  103.         $this->entityManager->flush();
  104.         //Redirecciono        
  105.         return $this->redirectToRoute('app_contacto_listar');
  106.     }
  107.     /**
  108.      * Require ROLE_ADMIN for only this controller method.
  109.      * 
  110.      * @Route("/contacto/marcarDestacado/{idContacto}", name="app_contacto_marcarDestacado")
  111.      * 
  112.      * @IsGranted("ROLE_ADMIN")
  113.      */
  114.     public function marcarComoDestacado($idContacto): Response
  115.     {
  116.         //Obtengo las preguntas frecuentes
  117.         $contacto $this->contactoRepository->find($idContacto);
  118.         //Si esta como leido lo marco, sino al reves
  119.         if ($contacto->isFlagDestacado()) {
  120.             $contacto->setFlagDestacado(false);
  121.         } else {
  122.             $contacto->setFlagDestacado(true);
  123.         }
  124.         //Le doy persistencia 
  125.         $this->entityManager->persist($contacto);
  126.         //Asiento los cambios en la base de datos
  127.         $this->entityManager->flush();
  128.         //Redirecciono        
  129.         return $this->redirectToRoute('app_contacto_listar');
  130.     }
  131.     /**
  132.      * @Route("/api/contacto", name="app_contacto_nuevo")
  133.      */
  134.     public function contactoNuevo(Request $requestSluggerInterface $slugger)
  135.     {
  136.         //Capturo los parametros
  137.         $nombre $request->get("nombre");
  138.         $email $request->get("email");
  139.         $mensaje $request->get("mensaje");
  140.         $usuarioId $request->get("usuario");
  141.         //Chequeo que existan los parametros y no sean vacios
  142.         if ($nombre != "" and $email != "" and $mensaje != "") {
  143.             //Creo  
  144.             $contacto = new Contacto();
  145.             $contacto->setFlagDestacado(false);
  146.             $contacto->setNombre($nombre);
  147.             $contacto->setEmail($email);
  148.             $contacto->setMensaje($mensaje);
  149.             $contacto->setLeido(false);
  150.             $contacto->setTipo("Mensaje Directo");
  151.             $contacto->setFecha(new DateTime());
  152.             //Si no es un ID por defecto , fue comentario de usuario logueado..
  153.             if ($usuarioId != "0") {
  154.                 //Recupero el Usuario
  155.                 $usuario $this->userRepository->find($usuarioId);
  156.                 //Seteo
  157.                 $contacto->setUsuarioLogueado($usuario);
  158.             } else {
  159.                 //Seteo
  160.                 $contacto->setUsuarioLogueado(null);
  161.             }
  162.             //Le doy persistencia a
  163.             $this->entityManager->persist($contacto);
  164.             //Asiento los cambios en la base de datos
  165.             $this->entityManager->flush();
  166.             //Retorno el response
  167.             return $this->json(['status' => 'OK']);
  168.         }
  169.         //Retorno el response
  170.         return $this->json(['status' => 'Error no estan completo los parametros']);
  171.     }
  172. }