diff --git a/src/old/Proyecto/Proyecto.php b/src/old/Proyecto/Proyecto.php index acd70d7..a3d9b9e 100644 --- a/src/old/Proyecto/Proyecto.php +++ b/src/old/Proyecto/Proyecto.php @@ -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; diff --git a/src/old/Venta/Propiedad.php b/src/old/Venta/Propiedad.php index 9cae077..48dc6d2 100644 --- a/src/old/Venta/Propiedad.php +++ b/src/old/Venta/Propiedad.php @@ -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; } } ?> diff --git a/src/old/Venta/PropiedadUnidad.php b/src/old/Venta/PropiedadUnidad.php index b3f9b81..c7a2e68 100644 --- a/src/old/Venta/PropiedadUnidad.php +++ b/src/old/Venta/PropiedadUnidad.php @@ -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; }