<?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\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 ArriendosController extends AbstractController
{
private $entityManager;
public function __construct(EntityManagerInterface $entityManager)
{
$this->entityManager = $entityManager;
}
/**
* @Route("/arriendos", name="arriendos")
*/
public function indexAction(){
$totalPropiedades = count($this->entityManager->getRepository(Propiedades::class)->getPropiedadesPorModalidadTotal());
$numPaginas =0;
if ($totalPropiedades > 0) {
$numPaginas = ceil($totalPropiedades / 6);
}
$propiedades = $this->entityManager->getRepository(Propiedades::class)->getPropiedadesPorModalidad();
$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();
return $this->render('arriendos/index.html.twig',
array(
"arrPropiedades" => $arrPropiedades,
"oRegiones" => $oRegiones,
"numPaginas" => $numPaginas,
"totalPropiedades" => $totalPropiedades
)
);
}
/**
* @Route("/arriendos/aplicar_filtro_propiedades", options={"expose"=true}, name="arriendos_aplicar_filtro")
*/
public function aplicarFiltroPropiedadesAction(Request $request){
$arrModalidad = $request->request->get('filtro_propiedad_modalidad');
$ordenar = $request->request->get('filtro_propiedad_ordenar');
$region = $request->request->get('filtro_propiedad_region');
$comuna = $request->request->get('filtro_propiedad_comuna');
$arrTipoPropiedad = $request->request->get('filtro_propiedad_tipo');
$dormitorios = $request->request->get('filtro_propiedad_dormitorios');
$banios = $request->request->get('filtro_propiedad_banios');
$valor = $request->request->get('filtro_propiedad_valor');
$pagina = $request->request->get('filtro_propiedad_pagina');
$flagFiltros = $request->request->get('filtro_propiedad_flag');
$numItemPaginas = 6;
$offset = ($pagina - 1) * $numItemPaginas;
$propiedades = $this->entityManager->getRepository(Propiedades::class)->aplicarFiltroPropiedad($arrModalidad, $ordenar, $region, $comuna, $arrTipoPropiedad, $dormitorios, $banios, $valor, $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();
}
}
if( (!empty($arrModalidad)) || (!empty($ordenar)) || (!empty($region)) || (!empty($comuna)) || (!empty($arrTipoPropiedad)) || (!empty($dormitorios)) || (!empty($banios)) || (!empty($valor)) ){
if ($flagFiltros) {
$offset = (1 - 1) * $numItemPaginas;
}
$totalPropiedades = count($this->entityManager->getRepository(Propiedades::class)->aplicarFiltroPropiedad($arrModalidad, $ordenar, $region, $comuna, $arrTipoPropiedad, $dormitorios, $banios, $valor, 9999999, $offset));
}else{
$totalPropiedades = count($this->entityManager->getRepository(Propiedades::class)->getPropiedadesPorModalidadTotal());
}
$numPaginas =0;
if ($totalPropiedades > 0) {
$numPaginas = ceil($totalPropiedades / 6);
}
return $this->render('arriendos/mostrarFiltroPropiedades.html.twig',
array(
"arrPropiedades" => $arrPropiedades,
"numPaginas" => $numPaginas,
"totalPropiedades" => $totalPropiedades,
"flagFiltros" => $flagFiltros,
"pagina" => $pagina
)
);
}
/**
* @Route("/arriendos/cargar_comunas_filtro", options={"expose"=true}, name="cargar_comunas_filtro")
*/
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);
}
/**
* @Route("/arriendos/amoblados", name="amoblados")
*/
public function amobladosAction(){
$totalPropiedades = count($this->entityManager->getRepository(Propiedades::class)->getPropiedadesPorModalidadTotal(2));
$numPaginas =1;
if ($totalPropiedades > 0) {
$numPaginas = ceil($totalPropiedades / 6);
}
$propiedades = $this->entityManager->getRepository(Propiedades::class)->getPropiedadesPorModalidad(2);
$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();
return $this->render('arriendos/amoblados.html.twig',
array(
"arrPropiedades" => $arrPropiedades,
"oRegiones" => $oRegiones,
"numPaginas" => $numPaginas,
"totalPropiedades" => $totalPropiedades
)
);
}
/**
* @Route("/arriendos/sin-amoblar", name="sin_amoblar")
*/
public function sinAmoblarAction(){
$totalPropiedades = count($this->entityManager->getRepository(Propiedades::class)->getPropiedadesPorModalidadTotal(1));
$numPaginas =1;
if ($totalPropiedades > 0) {
$numPaginas = ceil($totalPropiedades / 6);
}
$propiedades = $this->entityManager->getRepository(Propiedades::class)->getPropiedadesPorModalidad(1);
$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();
return $this->render('arriendos/sinAmoblar.html.twig',
array(
"arrPropiedades" => $arrPropiedades,
"oRegiones" => $oRegiones,
"numPaginas" => $numPaginas,
"totalPropiedades" => $totalPropiedades
)
);
}
}