src/Controller/HomeController.php line 30

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Home;
  4. use App\Form\HomeType;
  5. use App\Entity\HomeGaleria;
  6. use App\Repository\CategoriaSitioRepository;
  7. use App\Repository\CiudadesRepository;
  8. use App\Repository\SitiosGaleriaRepository;
  9. use App\Repository\SitiosComodidadesRepository;
  10. use App\Repository\SitiosRedesSocialesRepository;
  11. use App\Repository\SitiosRepository;
  12. use App\Service\Functions;
  13. use App\Repository\HomeRepository;
  14. use App\Repository\HomeGaleriaRepository;
  15. use App\Repository\TestimoniosRepository;
  16. use App\Repository\HomeServiciosRepository;
  17. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  18. use Symfony\Component\HttpFoundation\Request;
  19. use Symfony\Component\HttpFoundation\Response;
  20. use Symfony\Component\Routing\Annotation\Route;
  21. use Symfony\Component\HttpFoundation\JsonResponse;
  22. #[Route('/home')]
  23. class HomeController extends AbstractController
  24. {
  25.     #[Route('/bienvenido'name'app_home_index'methods: ['GET'])]
  26.     public function index(
  27.         HomeRepository $homeRepositoryHomeServiciosRepository $homeServicios,
  28.         TestimoniosRepository $testimoniosHomeGaleriaRepository $homeGaleria,
  29.         CiudadesRepository $ciudadesRepositorySitiosRepository $sitiosRepository,
  30.         CategoriaSitioRepository $categoriaSitioRepository
  31.     ): Response
  32.     {
  33.         $count_relacionados 0;
  34.         if ( isset( $_GET['id_categoria'] ) )
  35.         {
  36.             $data['id_categoria'] = $_GET['id_categoria'];
  37.             $relacionados   $sitiosRepository->findBy(
  38.                 [
  39.                     'id_categoria' => $_GET['id_categoria'],
  40.                     'estado' => 'Activo'
  41.                 ]
  42.             );
  43.             $count_relacionados  count$relacionados );
  44.         }
  45.         return $this->render('home/index.html.twig', [
  46.             'sitios'        => $sitiosRepository->findBy( ['estado' => 'Activo'],['visitas' => 'asc'],4),
  47.             'homes'         => $homeRepository->find1),
  48.             'ciudades'      => $ciudadesRepository->findBy( ['id_departamento' => 26],['nombre' => 'asc']),
  49.             'galeria'       => $homeGaleria->findAll(),
  50.             'servicios'     => $homeServicios->findBy(['estado' => 'Activo' ],['id'  => 'desc'],4),
  51.             //'categorias'    => $categoriaSitioRepository->findBy(['estado' => 'Activo' ],['id'  => 'desc'],10),
  52.             'categorias'    => $categoriaSitioRepository->getByImagesUploaded(),
  53.             'count_relacionados'    => ($count_relacionados $count_relacionados 1),
  54.         ]);
  55.     }
  56.     #[Route('/busqueda_sitios'name'busqueda_sitios'methods: ['POST','GET'])]
  57.     public function busquedaSitios(Request $requestSitiosRepository $sitiosRepositoryCiudadesRepository $ciudadesRepository): Response
  58.     {
  59.         $data $request->request->all();
  60.         $count_relacionados 0;
  61.         if ( isset( $_GET['id_categoria'] ) )
  62.         {
  63.                 $data['id_categoria'] = $_GET['id_categoria'];
  64.                 $relacionados   $sitiosRepository->findBy(['id_categoria' => $_GET['id_categoria'], 'estado' => 'Activo']);
  65.                 $count_relacionados  count$relacionados );
  66.         }
  67.         $resultado $sitiosRepository->findBySearch($data);
  68.         return $this->render('home/explore.html.twig', [
  69.             'sitios'                => $resultado,
  70.             'ciudades'              => $ciudadesRepository->findBy( ['id_departamento' => 26],['nombre' => 'asc']),
  71.             'data'                  => $data,
  72.             'count_relacionados'    => $count_relacionados
  73.         ]);
  74.     }
  75.     #[Route('/index_rutas'name'index_rutas'methods: ['GET'])]
  76.     public function menuRutas(): Response
  77.     {
  78.         return $this->render('components/home_rutas/rutas.html.twig', []);
  79.     }
  80.     #[Route('/sitio_individual/{id}'name'sitio_individual'methods: ['GET'])]
  81.     public function sitioIndividual(Request $request$idSitiosRepository $sitiosRepositorySitiosGaleriaRepository $sitiosGaleriaRepositorySitiosComodidadesRepository $sitiosComodidadesRepositorySitiosRedesSocialesRepository  $sitiosRedesSocialesRepository): Response
  82.     {
  83.         if( !empty( $id ) ){
  84.             $sitio      $sitiosRepository->find($id);
  85.             $sitio->setVisitas$sitio->getVisitas() + );
  86.             $sitiosRepository->save($sitiotrue);
  87.         }
  88.         $resultado      $sitiosRepository->find($id);
  89.         $galeria        $sitiosGaleriaRepository->findBy(['id_sitio' => $id]);
  90.         $comodidades    $sitiosComodidadesRepository->findBy(['id_sitio' => $id]);
  91.         $redes          $sitiosRedesSocialesRepository->findBy(['id_sitio' => $id'estado' => 'Activo']);
  92.         $relacionados   $sitiosRepository->findBy(['id_categoria' => $resultado->getIdCategoria()->getId(), 'estado' => 'Activo']);
  93.         $count_galeria  count$galeria );
  94.         $count_relacionados  count$relacionados );
  95.         return $this->render('home/explore_individual.html.twig', [
  96.             'redes'         => $redes,
  97.             'galeria'       => $galeria,
  98.             'sitio'         => $resultado,
  99.             'comodidades'   => $comodidades,
  100.             'relacionados'  => $relacionados,
  101.             'count_galeria' => $count_galeria,
  102.             'count_relacionados' => $count_relacionados
  103.         ]);
  104.     }
  105.     #[Route('/obtener_sitios_mapas'name'obtener_sitios_mapas'methods: ['GET','POST'])]
  106.     public function busquedaSitiosMapsJson(Request $requestSitiosRepository $sitiosRepository): JsonResponse
  107.     {
  108.         $resultado  = [];
  109.         $data       $request->request->all();
  110.         if ( isset( $_GET['id_categoria'] ) )
  111.         {
  112.             $data['id_categoria'] = $_GET['id_categoria'];
  113.         }
  114.         if ( !empty( $data['id_sitio'] ) ){
  115.             $sitios $sitiosRepository->findBy(['id' => $data['id_sitio']]);
  116.         }else{
  117.             $sitios $sitiosRepository->findBySearch($data);
  118.         }
  119.         foreach ( $sitios as $sitio)
  120.         {
  121.             $resultado [] = array(
  122.                 'title' => $sitio->getNombre(),
  123.                 'image' => $sitio->getImagenPrincipal(),
  124.                 'type' => $sitio->getEstado(),
  125.                 'price' => $sitio->getValor(),
  126.                 'address' => $sitio->getDireccion(),
  127.                 'bedrooms' => 0,
  128.                 'bathrooms' => 0,
  129.                 'area' => 0,
  130.                 'position' => [
  131.                     'lat' => $sitio->getLatitud(),
  132.                     'lng' => $sitio->getLongitud()
  133.                 ],
  134.                 'markerIcon' => "marker-green.png"
  135.             );
  136.         }
  137.         return new JsonResponse$resultado );
  138.     }
  139.     /*
  140.      title : 'Modern Residence in New York',
  141.         image : '1-1-thmb.png',
  142.         type : 'For Sale',
  143.         price : '$1,550,000',
  144.         address : '39 Remsen St, Brooklyn, NY 11201, USA',
  145.         bedrooms : '3',
  146.         bathrooms : '2',
  147.         area : '3430 Sq Ft',
  148.         position : {
  149.             lat : 40.696047,
  150.             lng : -73.997159
  151.         },
  152.         markerIcon : "marker-green.png"
  153.      * */
  154.     #[Route('/all'name'all_sites'methods: ['GET'])]
  155.     public function indexAll(HomeRepository $homeRepository): Response
  156.     {
  157.         return $this->render('home/index_original.html.twig', [
  158.             'homes'         => $homeRepository->findBy(['id' => 1]),
  159.         ]);
  160.     }
  161.     #[Route('/subir_imagen_cabecera'name'add_home_new_galery_image'methods: ['POST'])]
  162.     public function subirImagenCabecera(Request $requestFunctions $filesHomeGaleriaRepository $homeGaleriaHomeRepository $homeRepository)
  163.     {
  164.         //$home                   = $homeRepository->find(1);
  165.         $adjunto                 $request->files->get('files');
  166.         $size_file                = (filesize($adjunto) / 1024);
  167.         $arrayExtension         = ['jpg','png','jpeg','pdf'];
  168.         $error_doc              true;
  169.         $fecha_hora             date("Y-m-d H:i:s");
  170.         if(!empty($adjunto)){
  171.             $extension   $adjunto->guessExtension();
  172.             if(in_array($extension,$arrayExtension)){
  173.                 if(($size_file && $size_file <= 3072)){
  174.                     $file $files->uploadFile($adjunto'imagen_cabecera');
  175.                     $galeria    = new HomeGaleria();
  176.                     $galeria->setImagen($file);
  177.                     $galeria->setFechaHora(\DateTime::createFromFormat('Y-m-d H:i:s'$fecha_hora));
  178.                     $galeria->setIdHome($homeRepository->find(1));
  179.                     $error_doc true;
  180.                 }else{
  181.                     $error_doc false;
  182.                 }
  183.             }else{
  184.                 $error_doc false;
  185.             }
  186.         }
  187.         if($error_doc){
  188.             $homeGaleria->save($galeriatrue);
  189.         } else {
  190.             $error_doc false;
  191.         }
  192.         return new JsonResponse(array('status' => $error_doc));
  193.     }
  194.     #[Route('/new'name'app_home_new'methods: ['GET''POST'])]
  195.     public function new(Request $requestHomeRepository $homeRepositoryFunctions $functions): Response
  196.     {
  197.         $home = new Home();
  198.         $form $this->createForm(HomeType::class, $home);
  199.         $form->handleRequest($request);
  200.         if ( $form->isSubmitted() )
  201.         {
  202.             $data $request->request->all('home');
  203.             try {
  204.                     $imagen     $request->files->get('home')['imagen_cabecera'];
  205.                     $upload     $functions->uploadFile($imagen'imagen_cabecera' );
  206.                     $home_obj = new Home();
  207.                     $home_obj->setImagenCabecera$upload );
  208.                     $home_obj->setTituloCabecera($data['titulo_cabecera']);
  209.                     $home_obj->setSubtituloCabecera($data['subtitulo_cabecera']);
  210.                     $home_obj->setEnlaceCabecera($data['enlace_cabecera']);
  211.                     $home_obj->setTextoEnlaceCabecera('texto_enlace_cabecera');
  212.                     $homeRepository->save($home_objtrue);
  213.                     $functions->addFlash('success''Almacenamiento Exitoso.');
  214.             }catch ( \Exception $e){
  215.                 $functions->addFlash('warning'$e->getMessage() );
  216.             }catch ( \TypeError $e){
  217.                 $this->addFlash(
  218.                     'warning',
  219.                     'No se ha creado el registro con éxito. '.$e->getmessage()
  220.                 );
  221.                 return $this->redirectToRoute('app_home_index');
  222.             }
  223.             return $this->redirectToRoute('app_home_index', [], Response::HTTP_SEE_OTHER);
  224.         }
  225.         return $this->renderForm('home/new.html.twig', [
  226.             'home' => $home,
  227.             'form' => $form,
  228.         ]);
  229.     }
  230.     #[Route('/{id}/show'name'app_home_show'methods: ['GET'])]
  231.     public function show(HomeRepository $homeRepository$id): Response
  232.     {
  233.         $home       $homeRepository->find($id);
  234.         return $this->render('home/show.html.twig', [
  235.             'home' => $home,
  236.         ]);
  237.     }
  238.     #[Route('/{id}/edit'name'app_home_edit'methods: ['GET''POST'])]
  239.     public function edit(Request $request$idHomeRepository $homeRepositoryHomeGaleriaRepository $homegaleriaFunctions $functions): Response
  240.     {
  241.         $home $homeRepository->find($id);
  242.         $form $this->createForm(HomeType::class, $home);
  243.         $form->handleRequest($request);
  244.         if ($form->isSubmitted())
  245.         {
  246.             $data $request->request->all('home');
  247.             $imagen     $request->files->get('home')['imagen_cabecera'];
  248.             $home_obj $homeRepository->find($id);
  249.             if( !empty( $imagen ) ){
  250.                 $upload     $functions->uploadFile($imagen'imagen_cabecera' );
  251.                 $home_obj->setImagenCabecera$upload );
  252.             }
  253.             $home_obj->setTituloCabecera($data['titulo_cabecera']);
  254.             $home_obj->setSubtituloCabecera($data['subtitulo_cabecera']);
  255.             $home_obj->setEnlaceCabecera($data['enlace_cabecera']);
  256.             $home_obj->setTextoEnlaceCabecera('texto_enlace_cabecera');
  257.             $homeRepository->save($home_objtrue);
  258.             return $this->redirectToRoute('app_home_index', [], Response::HTTP_SEE_OTHER);
  259.         }
  260.         return $this->renderForm('home/edit.html.twig', [
  261.             'home' => $home,
  262.             'form' => $form,
  263.             'galeria' => $homegaleria->findAll(),
  264.             'edit' => false
  265.         ]);
  266.     }
  267.     #[Route('/{id}'name'app_home_delete'methods: ['POST'])]
  268.     public function delete(Request $requestHome $homeHomeRepository $homeRepository): Response
  269.     {
  270.         if ($this->isCsrfTokenValid('delete'.$home->getId(), $request->request->get('_token'))) {
  271.             $homeRepository->remove($hometrue);
  272.         }
  273.         return $this->redirectToRoute('app_home_index', [], Response::HTTP_SEE_OTHER);
  274.     }
  275.     #[Route('/accesDenied'name'accesDenied'methods: ['GET'])]
  276.     public function accesoDenegado(): Response
  277.     {
  278.         return $this->render('components/denegado/denied.html.twig', []);
  279.     }
  280. }