<?php
namespace App\Controller;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
use Symfony\Component\HttpFoundation\JsonResponse;
use App\Entity\Propiedades;
use App\Entity\Imagenes;
use App\Entity\Regiones;
use App\Entity\Modalidad;
use App\Entity\TipoPropiedad;
use App\Entity\Comunas;
class DefaultController extends AbstractController
{
private $entityManager;
public function __construct(EntityManagerInterface $entityManager)
{
$this->entityManager = $entityManager;
}
/**
* @Route("/", name="inicio")
*/
public function index(Request $request)
{
$bus_propiedad_tipoPropiedad = $request->query->get('bus_propiedad_tipoPropiedad');
$bus_propiedad_modalidad = $request->query->get('bus_propiedad_modalidad');
$bus_propiedad_region = $request->query->get('bus_propiedad_region');
$bus_propiedad_comuna = $request->query->get('bus_propiedad_comuna');
$bus_propiedad_valor_hasta = $request->query->get('bus_propiedad_valor_hasta');
$totalPropiedades = count($this->entityManager->getRepository(Propiedades::class)->getTotalPropiedadesDestacadas());
$numPaginas =0;
if ($totalPropiedades > 0) {
$numPaginas = ceil($totalPropiedades / 6);
}
$propiedades = $this->entityManager->getRepository(Propiedades::class)->getPropiedadesDestacadas();
$arrPropiedades = array();
foreach ($propiedades as $key => $propiedad) {
$arrPropiedades[$key]["id"] = $propiedad['id'];
$arrPropiedades[$key]["titulo"] = $propiedad['titulo'];
$arrPropiedades[$key]["valor"] = $propiedad['valor'];
$arrPropiedades[$key]["uf"] = $propiedad['uf'];
$arrPropiedades[$key]["banios"] = $propiedad['numeroBanios'];
$arrPropiedades[$key]["dormitorios"] = $propiedad['numeroDormitorios'];
$arrPropiedades[$key]["tipoPropiedad"] = $propiedad['tipo'];
$arrPropiedades[$key]["imagenes"] = array();
$oImagenes = $this->entityManager->getRepository(Imagenes::class)->findBy(array("idPropiedad"=> $propiedad['id']));
foreach ($oImagenes as $keyimg => $img) {
$arrPropiedades[$key]["imagenes"][$keyimg]["nombre"] = $img->getNombre();
}
}
$oRegiones = $this->entityManager->getRepository(Regiones::class)->findAll();
$oModalidad = $this->entityManager->getRepository(Modalidad::class)->findAll();
$oTipoPropiedad = $this->entityManager->getRepository(TipoPropiedad::class)->findAll();
return $this->render('default/index.html.twig', array(
"arrPropiedades" => $arrPropiedades, //propiedades destacadas
"oRegiones" => $oRegiones,
"oModalidad" => $oModalidad,
"oTipoPropiedad" => $oTipoPropiedad,
"numPaginas" => $numPaginas,
"totalPropiedades" => $totalPropiedades
)
);
}
/**
* @Route("/propiedades/aplicar_filtro_propiedades", options={"expose"=true}, name="propiedades_aplicar_filtro")
*/
public function aplicarFiltroPropiedadesDestacadasAction(Request $request){
$pagina = $request->request->get('filtro_propiedad_pagina');
$numItemPaginas = 6;
$offset = ($pagina - 1) * $numItemPaginas;
$propiedades = $this->entityManager->getRepository(Propiedades::class)->aplicarFiltroPropiedadDestacada($numItemPaginas, $offset);
$arrPropiedades = array();
foreach ($propiedades as $key => $propiedad) {
$arrPropiedades[$key]["id"] = $propiedad['id'];
$arrPropiedades[$key]["titulo"] = $propiedad['titulo'];
$arrPropiedades[$key]["valor"] = $propiedad['valor'];
$arrPropiedades[$key]["uf"] = $propiedad['uf'];
$arrPropiedades[$key]["banios"] = $propiedad['numeroBanios'];
$arrPropiedades[$key]["dormitorios"] = $propiedad['numeroDormitorios'];
$arrPropiedades[$key]["tipoPropiedad"] = $propiedad['tipo'];
$arrPropiedades[$key]["imagenes"] = array();
$oImagenes = $this->entityManager->getRepository(Imagenes::class)->findBy(array("idPropiedad"=> $propiedad['id']));
foreach ($oImagenes as $keyimg => $img) {
$arrPropiedades[$key]["imagenes"][$keyimg]["nombre"] = $img->getNombre();
}
}
$totalPropiedades = count($this->entityManager->getRepository(Propiedades::class)->getTotalPropiedadesDestacadas());
$numPaginas =0;
if ($totalPropiedades > 0) {
$numPaginas = ceil($totalPropiedades / 6);
}
return $this->render('default/mostrarFiltroPropiedadesDestacadas.html.twig',
array(
"arrPropiedades" => $arrPropiedades,
"numPaginas" => $numPaginas,
"pagina" => $pagina
)
);
}
/**
* @Route("/propiedades/detalle/{id}", options={"expose"=true}, name="propiedad_detalle")
*/
public function detallePropiedadAction(Request $request, $id){
$oPropiedad = $this->entityManager->getRepository(Propiedades::class)->find($id);
$oImagenes = $this->entityManager->getRepository(Imagenes::class)->findBy(array("idPropiedad"=> $oPropiedad->getId()));
return $this->render('default/detallePropiedad.html.twig', array(
'oPropiedad' => $oPropiedad,
'oImagenes' => $oImagenes
)
);
}
/**
* @Route("/propiedades/buscador", options={"expose"=true}, name="buscar_propiedad")
*/
public function buscarPropiedades(Request $request){
$bus_propiedad_tipoPropiedad = $request->request->get('bus_propiedad_tipoPropiedad');
$bus_propiedad_modalidad = $request->request->get('bus_propiedad_modalidad');
$bus_propiedad_region = $request->request->get('bus_propiedad_region');
$bus_propiedad_comuna = $request->request->get('bus_propiedad_comuna');
$bus_propiedad_valor_hasta = $request->request->get('bus_propiedad_valor_hasta');
$mensaje = "";
if(!empty($bus_propiedad_modalidad)){
$resultadoPropiedades = $this->entityManager->getRepository(Propiedades::class)->resultadoBuscarPropiedades($bus_propiedad_tipoPropiedad, $bus_propiedad_modalidad, $bus_propiedad_region, $bus_propiedad_comuna, $bus_propiedad_valor_hasta);
// echo '<pre>';var_dump($bus_propiedad_tipoPropiedad, $bus_propiedad_modalidad, $bus_propiedad_region, $bus_propiedad_comuna, $bus_propiedad_valor_hasta);exit;
$arrPropiedades = array();
foreach ($resultadoPropiedades as $key => $propiedad) {
$arrPropiedades[$key]["id"] = $propiedad['id'];
$arrPropiedades[$key]["titulo"] = $propiedad['titulo'];
$arrPropiedades[$key]["valor"] = $propiedad['valor'];
$arrPropiedades[$key]["banios"] = $propiedad['numeroBanios'];
$arrPropiedades[$key]["dormitorios"] = $propiedad['numeroDormitorios'];
$arrPropiedades[$key]["tipoPropiedad"] = $propiedad['tipo'];
$arrPropiedades[$key]["imagenes"] = array();
$oImagenes = $this->entityManager->getRepository(Imagenes::class)->findBy(array("idPropiedad"=> $propiedad['id']));
foreach ($oImagenes as $keyimg => $img) {
$arrPropiedades[$key]["imagenes"][$keyimg]["nombre"] = $img->getNombre();
}
}
return $this->render('default/buscarPropiedadesResultados.html.twig',
array(
"mensaje" => $mensaje,
"arrPropiedades" => $arrPropiedades
)
);
}else{
return $this->render('default/buscarPropiedadesResultados.html.twig',
array(
"mensaje" => $mensaje
)
);
}
}
/**
* @Route("/propiedades/cargar_comunas_buscador", options={"expose"=true}, name="cargar_comunas_buscador")
*/
public function cargarComunasBuscador(Request $request){
$idRegion = $request->request->get('idRegion');
$oComunas = $this->entityManager->getRepository(Comunas::class)->findBy(array("idRegion" => $idRegion));
$arrComunas = array();
foreach ($oComunas as $value) {
$arrComunas[$value->getId()] = $value->getNombre();
}
return new JsonResponse($arrComunas);
}
}