216 lines
6.0 KiB
PHP
216 lines
6.0 KiB
PHP
<?php
|
|
namespace App\Controller;
|
|
|
|
use App\Definition\Controller;
|
|
use Incoviba\old\Venta\Propietario;
|
|
use Incoviba\old\Common\Direccion;
|
|
use Incoviba\old\Inmobiliaria\Inmobiliaria;
|
|
|
|
class Ajax
|
|
{
|
|
use Controller;
|
|
|
|
protected static function setDefault()
|
|
{
|
|
self::$default = '';
|
|
}
|
|
public static function buscar()
|
|
{
|
|
$t = get('t');
|
|
if ($t == null) {
|
|
$t = get('tipo');
|
|
if ($t == null) {
|
|
return '';
|
|
}
|
|
}
|
|
$method = 'buscar' . str_replace(' ', '', ucwords(str_replace('_', ' ', $t)));
|
|
if (is_callable('self', $method)) {
|
|
return self::$method();
|
|
}
|
|
}
|
|
protected static function buscarBancos()
|
|
{
|
|
$bancos = \Model::factory(\Incoviba\old\Common\Banco::class)->whereNotEqual('nombre', '')->order_by_asc('nombre')->findMany();
|
|
foreach ($bancos as &$banco) {
|
|
$banco = $banco->as_array('nombre')['nombre'];
|
|
}
|
|
return json_encode($bancos);
|
|
}
|
|
protected static function buscarBanco()
|
|
{
|
|
$q = get('q');
|
|
if ($q == null) {
|
|
$q = get('query');
|
|
if ($q == null) {
|
|
return '';
|
|
}
|
|
}
|
|
$bancos = \Model::factory(\Incoviba\old\Common\Banco::class)->whereLike('nombre', '%' . $q . '%')->order_by_asc('nombre')->findMany();
|
|
foreach ($bancos as &$banco) {
|
|
$banco = $banco->as_array('nombre')['nombre'];
|
|
}
|
|
return json_encode($bancos);
|
|
}
|
|
public static function comunas()
|
|
{
|
|
$id = post('region');
|
|
$comunas = \Model::factory(\Incoviba\old\Common\Comuna::class)
|
|
->select('comuna.*')
|
|
->join('provincia', ['provincia.id', '=', 'comuna.provincia'])
|
|
->where('provincia.region', $id)
|
|
->order_by_asc('comuna.descripcion')
|
|
->findMany();
|
|
|
|
foreach ($comunas as &$comuna) {
|
|
$comuna = $comuna->as_array('id', 'descripcion');
|
|
}
|
|
return json_encode($comunas);
|
|
}
|
|
public static function propietario()
|
|
{
|
|
$id = post('rut');
|
|
$propietario = \Model::factory(\Incoviba\old\Venta\Propietario::class)->where('rut', $id)->findOne();
|
|
if ($propietario) {
|
|
$propietario = $propietario->as_array();
|
|
return json_encode($propietario);
|
|
}
|
|
return null;
|
|
}
|
|
public static function direccion()
|
|
{
|
|
$id = post('direccion');
|
|
$direccion = \Model::factory(\Incoviba\old\Common\Direccion::class)->findOne($id);
|
|
$comuna = $direccion->comuna();
|
|
$provincia = $comuna->provincia();
|
|
$region = $provincia->region();
|
|
$direccion = $direccion->as_array();
|
|
$direccion['comuna'] = $comuna->as_array();
|
|
$direccion['comuna']['provincia'] = $provincia->as_array();
|
|
$direccion['comuna']['provincia']['region'] = $region->as_array();
|
|
return json_encode($direccion);
|
|
}
|
|
public static function tipo_unidades()
|
|
{
|
|
$id = post('proyecto');
|
|
$proyecto = \Model::factory(\Incoviba\old\Proyecto\Proyecto::class)->findOne($id);
|
|
$tipos = $proyecto->tipoUnidades();
|
|
foreach ($tipos as &$tipo) {
|
|
$tipo = $tipo->as_array();
|
|
}
|
|
return json_encode($tipos);
|
|
}
|
|
public static function unidades()
|
|
{
|
|
$id_proyecto = post('proyecto');
|
|
$id_tipo = post('tipo');
|
|
|
|
$proyecto = model(\Incoviba\old\Proyecto\Proyecto::class)->findOne($id_proyecto);
|
|
$unidades = $proyecto->unidadesDisponibles($id_tipo);
|
|
foreach ($unidades as &$unidad) {
|
|
$tipologia = $unidad->tipologia();
|
|
$unidad = $unidad->as_array();
|
|
$unidad['tipologia'] = $tipologia->as_array();
|
|
if ($tipologia->tipologia()) {
|
|
$unidad['tipologia']['tipologia'] = (array) $tipologia->tipologia();
|
|
continue;
|
|
}
|
|
$unidad['tipologia']['tipologia'] = ['descripcion' => $tipologia->abreviacion];
|
|
}
|
|
return json_encode($unidades);
|
|
}
|
|
public static function unidades_precios()
|
|
{
|
|
$proyecto = model(\Incoviba\old\Proyecto\Proyecto::class)->findOne(post('proyecto'));
|
|
$unidades = $proyecto->unidades();
|
|
usort($unidades, function($a, $b) {
|
|
$t = $a->tipo - $b->tipo;
|
|
if ($t == 0) {
|
|
return (int) $a->descripcion - (int) $b->descripcion;
|
|
}
|
|
return $t;
|
|
});
|
|
$output = [];
|
|
foreach ($unidades as $u) {
|
|
$info = [
|
|
'id' => $u->id,
|
|
'abreviacion' => $u->abreviacion,
|
|
'descripcion' => $u->descripcion,
|
|
'valor' => '--'
|
|
];
|
|
if ($u->precio()) {
|
|
$info['valor'] = format('ufs', $u->precio()->valor, null, true);
|
|
}
|
|
$output []= $info;
|
|
}
|
|
return json_encode($output);
|
|
}
|
|
public static function operadores()
|
|
{
|
|
$id_proyecto = post('proyecto');
|
|
$proyecto = \Model::factory(\Incoviba\old\Proyecto\Proyecto::class)->findOne($id_proyecto);
|
|
$operadores = $proyecto->operadores();
|
|
foreach ($operadores as &$operador) {
|
|
$operador = [
|
|
'id' => $operador->id,
|
|
'abreviacion' => $operador->abreviacion
|
|
];
|
|
}
|
|
return json_encode($operadores);
|
|
}
|
|
public static function promociones()
|
|
{
|
|
$id = post('proyecto');
|
|
$proyecto = \Model::factory(\Incoviba\old\Proyecto\Proyecto::class)->findOne($id);
|
|
$promociones = $proyecto->promociones();
|
|
foreach ($promociones as &$promocion) {
|
|
$promocion = $promocion->as_array();
|
|
}
|
|
return json_encode($promociones);
|
|
}
|
|
public static function nombres()
|
|
{
|
|
$nss = model(Propietario::class)->select('nombres')->orderByAsc('nombres')->findMany();
|
|
$nombres = [];
|
|
foreach ($nss as $n) {
|
|
$ns = explode(' ', $n->nombres);
|
|
foreach ($ns as $nombre) {
|
|
$nombres []= $nombre;
|
|
}
|
|
}
|
|
$nombres = array_values(array_unique($nombres));
|
|
return json_encode($nombres);
|
|
}
|
|
public static function apellidos()
|
|
{
|
|
$aps = model(Propietario::class)->select('apellido_paterno')->orderByAsc('apellido_paterno')->findMany();
|
|
$apellidos = [];
|
|
foreach ($aps as $ap) {
|
|
$apellidos []= $ap->apellido_paterno;
|
|
}
|
|
$aps = model(Propietario::class)->select('apellido_materno')->orderByAsc('apellido_materno')->findMany();
|
|
foreach ($aps as $ap) {
|
|
$apellidos []= $ap->apellido_paterno;
|
|
}
|
|
$apellidos = array_values(array_unique($apellidos));
|
|
sort($apellidos);
|
|
return json_encode($apellidos);
|
|
}
|
|
public static function calles()
|
|
{
|
|
$results = model(Direccion::class)->select('calle')->orderByAsc('calle')->findMany();
|
|
$calles = [];
|
|
foreach ($results as $result) {
|
|
$calles []= $result->calle;
|
|
}
|
|
$calles = array_values(array_unique($calles));
|
|
return json_encode($calles);
|
|
}
|
|
public static function inmobiliarias()
|
|
{
|
|
$q = post('rut');
|
|
$inmobiliaria = model(Inmobiliaria::class)->findOne($q);
|
|
return json_encode($inmobiliaria->as_array());
|
|
}
|
|
}
|
|
?>
|