Merge branch 'develop'

This commit is contained in:
2020-03-10 15:10:28 -03:00
3 changed files with 231 additions and 156 deletions

View File

@ -11,6 +11,8 @@ use Incoviba\old\Venta\Promocion;
use Incoviba\old\Venta\TipoUnidad;
use Incoviba\old\Venta\Unidad;
use Incoviba\old\Venta\Venta;
use Incoviba\nuevo\Venta\TipoMedicion;
use Incoviba\nuevo\Venta\ProyectoTipoMedicion;
/**
*
@ -66,7 +68,7 @@ class Proyecto extends Model {
if (isset($this->unidades)) {
$unidades = (array) $this->unidades;
}
$unidades['total'] = $this->has_many(Unidad::class, 'proyecto')->findMany();
$unidades['total'] = $this->setRelationship(Unidad::class, 'id', 'proyecto')->many();
$this->unidades = (object) $unidades;
}
return $this->unidades->total;
@ -98,7 +100,7 @@ class Proyecto extends Model {
if (isset($this->unidades)) {
$unidades = (array) $this->unidades;
}
$unidades[$tipo] = $this->has_many(Unidad::class, 'proyecto')->where('tipo', $id_tipo)->findMany();
$unidades[$tipo] = $this->setRelationship(Unidad::class, 'id', 'proyecto')->build()->where([['tipo', $id_tipo]])->many();
$this->unidades = (object) $unidades;
}
return $this->unidades->{$tipo};
@ -187,6 +189,9 @@ class Proyecto extends Model {
break;
}
$disponibles = model(Unidad::class)->rawQuery($q, [$this->id])->findMany();
foreach ($disponibles as &$u) {
$u->setContainer($this->container);
}
$unidades['disponibles'][$tipo] = $disponibles;
$unidades['disponibles'] = (object) $unidades['disponibles'];
$this->unidades = (object) $unidades;
@ -196,91 +201,96 @@ class Proyecto extends Model {
protected $ptus;
public function proyectoTipoUnidades() {
if ($this->ptus === null) {
$this->ptus = $this->setRelationship(ProyectoTipoUnidad::class, 'proyecto', 'id')->sort(['tipo', 'asc'])->many();
$this->ptus = $this->setRelationship(ProyectoTipoUnidad::class, 'proyecto', 'id')->build()->sort(['tipo', 'asc'])->many();
}
return $this->ptus;
//return $this->hasMany(ProyectoTipoUnidad::class, 'proyecto')->orderByAsc('tipo')->findMany();
}
public function tipoUnidades() {
if (!isset($this->tipos_unidades)) {
$tipos = \Model::factory(TipoUnidad::class)
$tipos = $this->container->get('model')->find(TipoUnidad::class)
->select('tipo_unidad.*')
->join('unidad', ['unidad.tipo', '=', 'tipo_unidad.id'])
->join('proyecto', ['proyecto.id', '=', 'unidad.proyecto'])
->where('proyecto.id', $this->id)
->order_by_asc('tipo_unidad.id')
->group_by('tipo_unidad.id')
->findMany();
->join([
['unidad', 'unidad.tipo', 'tipo_unidad.id'],
['proyecto', 'proyecto.id', 'unidad.proyecto']
])
->where([
['proyecto.id', $this->id]
])
->order('tipo_unidad.id')
->group('tipo_unidad.id')
->many();
$this->tipos_unidades = $tipos;
}
return $this->tipos_unidades;
}
public function ventas($order = 'departamento') {
if (!isset($this->ventas)) {
$ventas = model(Venta::class)
$ventas = $this->container->get('model')->find(Venta::class)
->select('venta.*')
->join('propiedad', ['propiedad.id', '=', 'venta.propiedad'])
->join('unidad', ['unidad.id', '=', 'propiedad.unidad_principal'])
->rawJoin('JOIN (SELECT `e1`.* FROM (SELECT `venta`, MAX(`id`) AS `id` FROM `estado_venta` GROUP BY `venta`) AS `e0` JOIN `estado_venta` AS `e1` ON `e1`.`id` = `e0`.`id`)', ['estado_venta.venta', '=', 'venta.id'], 'estado_venta')
->join('tipo_estado_venta', ['tipo_estado_venta.id', '=', 'estado_venta.estado'])
->where('unidad.proyecto', $this->id)
->where('unidad.tipo', 1)
->where('tipo_estado_venta.activa', 1);
->join([
['propiedad', 'propiedad.id', 'venta.propiedad'],
['unidad', 'unidad.id', 'propiedad.unidad_principal'],
['JOIN (SELECT `e1`.* FROM (SELECT `venta`, MAX(`id`) AS `id` FROM `estado_venta` GROUP BY `venta`) AS `e0` JOIN `estado_venta` AS `e1` ON `e1`.`id` = `e0`.`id`)', 'estado_venta.venta', 'venta.id', 'alias' => 'estado_venta', 'type' => 'raw'],
['tipo_estado_venta', 'tipo_estado_venta.id', 'estado_venta.estado']
])
->where([
['unidad.proyecto', $this->id],
['unidad.tipo', 1],
['tipo_estado_venta.activa', 1]
]);
switch (strtolower($order)) {
case 'fecha':
$ventas = $ventas->orderByAsc('venta.fecha');
$ventas = $ventas->order('venta.fecha');
case 'departamento':
default:
$ventas = $ventas->orderByExpr('LPAD(`unidad`.`descripcion`, 4, "0")');
$ventas = $ventas->order(['LPAD(`unidad`.`descripcion`, 4, "0")' => 'expr']);
break;
}
$ventas = $ventas->find_many();
$ventas = $ventas->many();
$this->ventas = $ventas;
foreach ($this->ventas as &$venta) {
$venta->setContainer($this->container);
}
}
return $this->ventas;
}
protected $resciliaciones;
public function resciliaciones() {
if ($this->resciliaciones === null) {
$resciliaciones = model(Venta::class)
$resciliaciones = $this->container->get('model')->find(Venta::class)
->select('venta.*')
->join('propiedad', ['propiedad.id', '=', 'venta.propiedad'])
->join('unidad', ['unidad.id', '=', 'propiedad.unidad_principal'])
->rawJoin('JOIN (SELECT `e1`.* FROM (SELECT `venta`, MAX(`id`) AS `id` FROM `estado_venta` GROUP BY `venta`) AS `e0` JOIN `estado_venta` AS `e1` ON `e1`.`id` = `e0`.`id`)', ['estado_venta.venta', '=', 'venta.id'], 'estado_venta')
->join('tipo_estado_venta', ['tipo_estado_venta.id', '=', 'estado_venta.estado'])
->where('unidad.proyecto', $this->id)
->where('unidad.tipo', 1)
->where('tipo_estado_venta.activa', 0)
->orderByExpr('LPAD(`unidad`.`descripcion`, 4, "0")')
->find_many()
;
->join([
['propiedad', 'propiedad.id', 'venta.propiedad'],
['unidad', 'unidad.id', 'propiedad.unidad_principal'],
['JOIN (SELECT `e1`.* FROM (SELECT `venta`, MAX(`id`) AS `id` FROM `estado_venta` GROUP BY `venta`) AS `e0` JOIN `estado_venta` AS `e1` ON `e1`.`id` = `e0`.`id`)', 'estado_venta.venta', 'venta.id', 'alias' => 'estado_venta', 'type' => 'raw'],
['tipo_estado_venta', 'tipo_estado_venta.id', 'estado_venta.estado']
])
->where([
['unidad.proyecto', $this->id],
['unidad.tipo', 1],
['tipo_estado_venta.activa', 0]
])
->order(['LPAD(`unidad`.`descripcion`, 4, "0")' => 'expr'])
->many();
$this->resciliaciones = $resciliaciones;
foreach ($this->resciliaciones as &$venta) {
$venta->setContainer($this->container);
}
}
return $this->resciliaciones;
}
public function escrituras() {
if (!isset($escrituras)) {
$ventas = model(Venta::class)
$ventas = $this->container->get('model')->find(Venta::class)
->select('venta.*')
->join('propiedad', ['propiedad.id', '=', 'venta.propiedad'])
->join('unidad', ['unidad.id', '=', 'propiedad.unidad_principal'])
->where('unidad.proyecto', $this->id)
->where('venta.estado', 1)
->where('unidad.tipo', 1)
->whereNotEqual('venta.escriturado', '0')
->orderByExpr('LPAD(unidad.descripcion, 4, "0")')
->find_many()
;
->join([
['propiedad', 'propiedad.id', 'venta.propiedad'],
['unidad', 'unidad.id', 'propiedad.unidad_principal']
])
->where([
['unidad.proyecto', $this->id],
['venta.estado', 1],
['unidad.tipo', 1],
['venta.escriturado', '0', '!=']
])
->order(['LPAD(unidad.descripcion, 4, "0")' => 'expr'])
->many();
$this->escrituras = $ventas;
foreach ($this->escrituras as &$venta) {
$venta->setContainer($this->container);
}
}
return $this->escrituras;
}
@ -320,9 +330,10 @@ class Proyecto extends Model {
}
public function estado() {
if (!isset($this->estado)) {
$id = $this->has_many(EstadoProyecto::class, 'proyecto')->max('id');
$this->estado = $this->has_many(EstadoProyecto::class, 'proyecto')->findOne($id);
$this->estado->setContainer($this->container);
$this->estado = $this->setRelationship(EstadoProyecto::class, 'proyecto', 'id')->build()
->order(['id' => 'desc'])
->group('id')
->one();
}
return $this->estado;
}
@ -347,9 +358,10 @@ class Proyecto extends Model {
protected $inicio;
public function inicio() {
if (!isset($this->inicio) or $this->inicio == null) {
$id = $this->has_many(EstadoProyecto::class, 'proyecto')->min('id');
$this->inicio = $this->has_many(EstadoProyecto::class, 'proyecto')->findOne($id);
$this->inicio->setContainer($this->container);
$this->inicio = $this->setRelationship(EstadoProyecto::class, 'proyecto', 'id')->build()
->order('id')
->group('id')
->one();
}
return $this->inicio;
}
@ -387,7 +399,7 @@ class Proyecto extends Model {
* totales // vendidos + estimados
*/
$premios = model(Promocion::class)->findMany();
$premios = $this->container->get('model')->find(Promocion::class)->many();
$valores = (object) [
'vendidos' => new BaseValores(),
'estimados' => new BaseValores(),
@ -483,58 +495,79 @@ class Proyecto extends Model {
}
public function agentes() {
if (!isset($this->agentes)) {
$this->agentes = \Model::factory(Agente::class)
$this->agentes = $this->container->get('model')->find(Agente::class)
->select('agente.*')
->join('proyecto_agente', ['proyecto_agente.agente', '=', 'agente.id'])
->where('proyecto_agente.proyecto', $this->id)
->orderByAsc('agente.abreviacion')
->findMany();
->join([
['proyecto_agente', 'proyecto_agente.agente', 'agente.id']
])
->where([
['proyecto_agente.proyecto', $this->id]
])
->order('agente.abreviacion')
->many();
}
return $this->agentes;
}
public function operadores() {
if (!isset($this->operadores)) {
$this->operadores = \Model::factory(Agente::class)
->select('agente.*')
->select('agente_tipo.id', 'agente_tipo')
->join('agente_tipo', ['agente_tipo.agente', '=', 'agente.id'])
->join('proyecto_agente', ['proyecto_agente.agente', '=', 'agente_tipo.id'])
->where('agente_tipo.tipo', 19)
->where('proyecto_agente.proyecto', $this->id)
->orderByAsc('agente.abreviacion')
->groupBy('agente_tipo.id')
->findMany();
$this->operadores = $this->container->get('model')->find(Agente::class)
->select([
['agente.*'],
['agente_tipo.id', 'alias' => 'agente_tipo']
])
->join([
['agente_tipo', 'agente_tipo.agente', 'agente.id'],
['proyecto_agente', 'proyecto_agente.agente', 'agente_tipo.id']
])
->where([
['agente_tipo.tipo', 19],
['proyecto_agente.proyecto', $this->id]
])
->order('agente.abreviacion')
->group('agente_tipo.id')
->many();
}
return $this->operadores;
}
public function operadoresVigentes() {
return $this->hasMany(ProyectoAgente::class, 'proyecto')
return $this->setRelationship(ProyectoAgente::class, 'id', 'proyecto')->build()
->select('proyecto_agente.*')
->join('agente_tipo', ['agente_tipo.id', '=', 'proyecto_agente.agente'])
->rawJoin('JOIN (SELECT e1.* FROM estado_proyecto_agente e1 JOIN (SELECT agente, MAX(id) AS id FROM estado_proyecto_agente GROUP BY agente) e0 ON e0.id = e1.id)', ['ep.agente', '=', 'proyecto_agente.id'], 'ep')
->where('agente_tipo.tipo', 19)
->where('ep.tipo', 1)
->findMany();
->join([
['agente_tipo', 'agente_tipo.id', 'proyecto_agente.agente'],
['JOIN (SELECT e1.* FROM estado_proyecto_agente e1 JOIN (SELECT agente, MAX(id) AS id FROM estado_proyecto_agente GROUP BY agente) e0 ON e0.id = e1.id)', 'ep.agente', 'proyecto_agente.id', 'alias' => 'ep', 'type' => 'raw']
])
->where([
['agente_tipo,tipo', 19],
['eo.tipo', 1]
])
->many();
}
public function promociones() {
if (!isset($this->promociones)) {
$this->promociones = \Model::factory(Promocion::class)
$this->promociones = $this->container->get('model')->find(Promocion::class)
->select('promocion.*')
->join('promocion_venta', ['promocion_venta.promocion', '=', 'promocion.id'])
->join('venta', ['venta.id', '=', 'promocion_venta.venta'])
->join('propiedad', ['propiedad.id', '=', 'venta.propiedad'])
->join('unidad', ['unidad.id', '=', 'propiedad.unidad_principal'])
->where('unidad.proyecto', $this->id)
->groupBy('promocion.id')
->orderByAsc('promocion.titulo')
->findMany();
->join([
['promocion_venta', 'promocion_venta.promocion', 'promocion.id'],
['venta', 'venta.id', 'promocion_venta.venta'],
['propiedad', 'propiedad.id', 'venta.propiedad'],
['unidad', 'unidad.id', 'propiedad.unidad_principal']
])
->where([['unidad.proyecto', $this->id]])
->group('promocion.id')
->order('promocion.titulo')
->many();
}
return $this->promociones;
}
public function pisos() {
if ($this->pisos == 0) {
$pisos = $this->has_many(Unidad::class, 'proyecto')->where('tipo', 1)->max('piso');
$pisos = $this->setRelationship(Unidad::class, 'proyecto', 'id')->build()
->select('MAX(piso) AS pisos')
->where([['tipo', 1]])
->group('id')
->one()->pisos;
if (!$pisos) {
$this->pisos = 0;
return 0;
}
$this->pisos = $pisos;
@ -549,18 +582,23 @@ class Proyecto extends Model {
$cuotas = (array) $this->cuotas;
}
$f = Carbon::today($this->container->get('settings')->app->timezone);
$cuotas['hoy'] = model(Venta::class)
->join('propiedad', ['propiedad.id', '=', 'venta.propiedad'])
->join('unidad', ['unidad.id', '=', 'propiedad.unidad_principal'])
->join('cuota', ['cuota.pie', '=', 'venta.pie'])
->join('pago', ['pago.id', '=', 'cuota.pago'])
->raw_join('JOIN (SELECT e1.* FROM (SELECT pago, MAX(id) AS id FROM estado_pago GROUP BY pago) e0 JOIN estado_pago e1 ON e1.id = e0.id)', ['ep.pago', '=', 'pago.id'], 'ep')
->where('unidad.proyecto', $this->id)
->where('venta.estado', 1)
->where('pago.fecha', $f->format('Y-m-d'))
->whereLt('ep.estado', 1)
->whereGte('ep.estado', 0)
->count('cuota.id');
$cuotas['hoy'] = $this->container->get('model')->find(Venta::class)
->select('COUNT(cuota.id) AS cantidad')
->join([
['propiedad', 'propiedad.id', 'venta.propiedad'],
['unidad', 'unidad.id', 'propiedad.unidad_principal'],
['cuota', 'cuota.pie', 'venta.pie'],
['pago', 'pago.id', 'cuota.pago'],
['JOIN (SELECT e1.* FROM (SELECT pago, MAX(id) AS id FROM estado_pago GROUP BY pago) e0 JOIN estado_pago e1 ON e1.id = e0.id)', 'ep.pago', 'pago.id', 'alias' => 'ep', 'type' => 'raw']
])
->where([
['unidad.proyecto', $this->id],
['venta.estado', 1],
['pago.fecha', $f->format('Y-m-d')],
['ep.estado', 1, '<'],
['ep.estado', 0, '>=']
])
->one()->cantidad;
$this->cuotas = (object) $cuotas;
}
return $this->cuotas->hoy;
@ -572,18 +610,23 @@ class Proyecto extends Model {
$cuotas = (array) $this->cuotas;
}
$f = Carbon::today($this->container->get('settings')->app->timezone);
$cuotas['pendientes'] = model(Cuota::class)
->join('venta', ['cuota.pie', '=', 'venta.pie'])
->join('propiedad', ['propiedad.id', '=', 'venta.propiedad'])
->join('unidad', ['unidad.id', '=', 'propiedad.unidad_principal'])
->join('pago', ['pago.id', '=', 'cuota.pago'])
->raw_join('JOIN (SELECT e1.* FROM (SELECT pago, MAX(id) AS id FROM estado_pago GROUP BY pago) e0 JOIN estado_pago e1 ON e1.id = e0.id)', ['ep.pago', '=', 'pago.id'], 'ep')
->where('unidad.proyecto', $this->id)
->where('venta.estado', 1)
->whereLt('pago.fecha', $f->format('Y-m-d'))
->whereLt('ep.estado', 1)
->whereGte('ep.estado', 0)
->count('cuota.id');
$cuotas['pendientes'] = $this->container->get('model')->find(Cuota::class)
->select('COUNT(cuota.id) AS cantidad')
->join([
['venta', 'cuota.pie', 'venta.pie'],
['propiedad', 'propiedad.id', 'venta.propiedad'],
['unidad', 'unidad.id', 'propiedad.unidad_principal'],
['pago', 'pago.id', 'cuota.pago'],
['JOIN (SELECT e1.* FROM (SELECT pago, MAX(id) AS id FROM estado_pago GROUP BY pago) e0 JOIN estado_pago e1 ON e1.id = e0.id)', 'ep.pago', 'pago.id', 'alias' => 'ep', 'type' => 'raw']
])
->where([
['unidad.proyecto', $this->id],
['venta.estado', 1],
['pago.fecha', $f->format('Y-m-d'), '<'],
['ep.estado', 1, '<'],
['ep.estado', 0, '>=']
])
->one()->cantidad;
$this->cuotas = (object) $cuotas;
}
return $this->cuotas->pendientes;
@ -595,26 +638,35 @@ class Proyecto extends Model {
$cuotas = (array) $this->cuotas;
}
$f = Carbon::today($this->container->get('settings')->app->timezone);
$cuotas['mes'] = model(Cuota::class)
->join('venta', ['cuota.pie', '=', 'venta.pie'])
->join('propiedad', ['propiedad.id', '=', 'venta.propiedad'])
->join('unidad', ['unidad.id', '=', 'propiedad.unidad_principal'])
->join('pago', ['pago.id', '=', 'cuota.pago'])
->raw_join('JOIN (SELECT e1.* FROM (SELECT pago, MAX(id) AS id FROM estado_pago GROUP BY pago) e0 JOIN estado_pago e1 ON e1.id = e0.id)', ['ep.pago', '=', 'pago.id'], 'ep')
->where('unidad.proyecto', $this->id)
->where('venta.estado', 1)
->whereGt('pago.fecha', $f->format('Y-m-d'))
->whereLte('pago.fecha', $f->copy()->addMonth(1)->format('Y-m-d'))
->where('ep.estado', 0)
->findMany();
$cuotas['mes'] = $this->container->get('model')->find(Cuota::class)
->join([
['venta', 'cuota.pie', 'venta.pie'],
['propiedad', 'propiedad.id', 'venta.propiedad']
['unidad', 'unidad.id', 'cuota.pago'],
['pago', 'pago.id', 'cuota.pago'],
['JOIN (SELECT e1.* FROM (SELECT pago, MAX(id) AS id FROM estado_pago GROUP BY pago) e0 JOIN estado_pago e1 ON e1.id = e0.id)', 'ep.pago', 'pago.id', 'alias' => 'ep', 'type' => 'raw']
])
->where([
['unidad.proyecto', $this->id],
['venta.estado', 1],
['pago.fecha', $f->format('Y-m-d'), '>'],
['pago.fecha', $f->copy()->addMonth(1)->format('Y-m-d'), '<='],
['ep.estado', 0]
])
->many();
$this->cuotas = (object) $cuotas;
}
return $this->cuotas->mes;
}
public function tiposMediciones() {
$tipos = $this->has_many_through(\Incoviba\nuevo\Venta\TipoMedicion::class, \Incoviba\nuevo\Venta\ProyectoTipoMedicion::class, 'proyecto_id', 'tipo_medicion_id');
$tipos = (new Relationship)
->setFactory($this->container->get('model'))
->setStart(TipoMedicion::class)
->with(TipoMedicion::class, 'id', ProyectoTipoMedicion::class, 'tipo_medicion_id')
->with(ProyectoTipoMedicion::class, 'proyecto_id', get_called_class(), 'id')
->setCondition(get_called_class(), 'id', $this->id)->build();
if ($tipos) {
return $tipos->orderByAsc('descripcion')->findMany();
return $tipos->order('descripcion')->many();
}
return null;
}
@ -642,22 +694,33 @@ class Proyecto extends Model {
case 'vendible':
$superficies['vendible'] = 0;
if ($this->unidades()) {
$metros = $this->hasMany(Unidad::class, 'proyecto')->selectExpr('SUM(m2 + logia + terraza /2)', 'metros')->where('tipo', 1)->groupBy('proyecto')->findOne();
$metros = $this->setRelationship(Unidad:class, 'proyecto', 'id')
->build()
->select([['SUM(m2 + logia + terraza /2)', 'metros']])
->where([
['tipo', 1]
])
group('proyecto')
->one();
$superficies['vendible'] = $metros->metros;
}
break;
case 'vendida':
$superficies['vendida'] = 0;
if ($this->ventas()) {
$metros = model(Venta::class)
->selectExpr('SUM(unidad.m2 + unidad.logia + unidad.terraza / 2)', 'metros')
->join('propiedad', ['propiedad.id', '=', 'venta.propiedad'])
->join('unidad', ['unidad.id', '=', 'propiedad.unidad_principal'])
->where('unidad.proyecto', $this->id)
->where('venta.estado', 1)
->where('unidad.tipo', 1)
->groupBy('unidad.proyecto')
->findOne();
$metros = $this->container->get('model')->find(Venta::class)
->select([['SUM(unidad.m2 + unidad.logia + unidad.terraza / 2)', 'metros']])
->join([
['propiedad', 'propiedad.id', 'venta.propiedad'],
['unidad', 'unidad.id', 'propiedad.unidad_principal']
])
->where([
['unidad.proyecto', $this->id],
['venta.estado', 1],
['unidad.tipo', 1]
])
->group('unidad.proyecto')
->one();
if ($metros) {
$superficies['vendida'] = $metros->metros;
}
@ -675,21 +738,24 @@ class Proyecto extends Model {
}
public function setDireccion(array $data) {
if (!is_numeric($data['comuna'])) {
$comuna = model(Comuna::class)->where('descripcion', $data['comuna'])->findOne();
$comuna = $this->container->get('model')->find(Comuna::class)
->where([['descripcion', $data['comuna']]])
->one();
$data['comuna'] = $comuna->id;
}
$direccion = model(Direccion::class)
->where('calle', $data['calle'])
->where('numero', $data['numero'])
->where('extra', $data['extra'])
->where('comuna', $data['comuna'])
->findOne();
$direccion = $this->container->get('model')->find(Direccion::class)
->where([
['calle', $data['calle']],
['numero', $data['numero']],
['extra', $data['extra']],
['comuna', $data['comuna']]
])
->one();
$this->direccion = $direccion->id;
}
public function addAgente(array $data) {
$data = ['agente' => $data['agente'], 'tipo' => $data['tipo']];
$agente = (new Factory(AgenteTipo::class))->create($data);
$agente->save();
$agente = $this->container->get('model')->create(AgenteTipo::class, $data);
$this->agentes []= $agente;
}
protected $tipologias;
@ -700,7 +766,10 @@ class Proyecto extends Model {
foreach ($pts as $pt) {
if ($pt->tipologia()) {
if (!isset($tipologias[$pt->tipologia()->tipologia->descripcion])) {
$tipologias[$pt->tipologia()->tipologia->descripcion] = (object) ['tipologia' => $pt->tipologia()->tipologia, 'tipos' => []];
$tipologias[$pt->tipologia()->tipologia->descripcion] = (object) [
'tipologia' => $pt->tipologia()->tipologia,
'tipos' => []
];
}
$tipologias[$pt->tipologia()->tipologia->descripcion]->tipos []= $pt;
continue;

View File

@ -19,16 +19,18 @@ class Propiedad extends Model
private $estacionamientos_arr = null;
private $bodegas_arr = null;
protected $unidad;
public function unidad()
{
$unidad = $this->belongs_to(Unidad::class, 'unidad_principal')->findOne();
$unidad->setContainer($this->container);
return $unidad;
if ($this->unidad === null) {
$this->unidad = $this->setRelationship(Unidad::class, 'id', 'unidad_principal')->one();
}
return $this->unidad;
}
protected $unidades;
public function unidades() {
if ($this->unidades == null) {
$this->unidades = $this->hasMany(PropiedadUnidad::class, 'propiedad')->findMany();
$this->unidades = $this->setRelationship(PropiedadUnidad::class, 'propiedad', 'id')->many();
}
return $this->unidades;
}
@ -57,7 +59,7 @@ class Propiedad extends Model
$ests = explode(';', $this->estacionamientos);
$estacionamientos = [];
foreach ($ests as $e) {
$estacionamiento = \Model::factory(Unidad::class)->findOne($e);
$estacionamiento = $this->container->get('model')->find(Unidad::class)->one($e);
if ($estacionamiento) {
$estacionamientos []= $estacionamiento;
}
@ -91,7 +93,7 @@ class Propiedad extends Model
$bods = explode(';', $this->bodegas);
$bodegas = [];
foreach ($bods as $b) {
$bodega = \Model::factory(Unidad::class)->findOne($b);
$bodega = $this->container->get('model')->find(Unidad::class)->one($b);
if ($bodega) {
$bodegas []= $bodega;
}
@ -111,9 +113,13 @@ class Propiedad extends Model
}
return $this->bodegas_arr;
}
protected $venta;
public function venta()
{
return $this->has_one(Venta::class, 'propiedad')->findOne();
if ($this->venta === null) {
$this->venta = $this->setRelationship(Venta::class, 'propiedad', 'id')->one();
}
return $this->venta;
}
}
?>

View File

@ -7,14 +7,14 @@ class PropiedadUnidad extends Model {
protected $propiedad_model;
public function propiedad() {
if ($this->propiedad_model == null) {
$this->propiedad_model = $this->belongsTo(Propiedad::class, 'propiedad')->findOne();
$this->propiedad_model = $this->setRelationship(Propiedad::class, 'id', 'propiedad')->one();
}
return $this->propiedad_model;
}
protected $unidad_model;
public function unidad() {
if ($this->unidad_model == null) {
$this->unidad_model = $this->belongsTo(Unidad::class, 'unidad')->findOne();
$this->unidad_model = $this->setRelationship(Unidad::class, 'id', 'unidad')->one();
}
return $this->unidad_model;
}