Files
intranet/app/Controller/Ajax.php
2020-12-01 17:23:13 -03:00

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());
}
}
?>