Dependencies
This commit is contained in:
25
incoviba/modelos/src/nuevo/Proyecto/EstadoProyecto.php
Normal file
25
incoviba/modelos/src/nuevo/Proyecto/EstadoProyecto.php
Normal file
@ -0,0 +1,25 @@
|
||||
<?php
|
||||
namespace Incoviba\nuevo\Proyecto;
|
||||
|
||||
use Incoviba\Common\Alias\NewEstado;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Aldarien
|
||||
* @property Proyecto proyecto_id
|
||||
* @property TipoEstadoProyecto estado_id
|
||||
*
|
||||
*/
|
||||
class EstadoProyecto extends NewEstado
|
||||
{
|
||||
protected static $_table = 'estado_proyectos';
|
||||
|
||||
public function proyecto()
|
||||
{
|
||||
return $this->belongsTo(Proyecto::class, 'proyecto_id')->findOne();
|
||||
}
|
||||
public function estado()
|
||||
{
|
||||
return $this->belongsTo(TipoEstadoProyecto::class, 'estado_id')->findOne();
|
||||
}
|
||||
}
|
22
incoviba/modelos/src/nuevo/Proyecto/Etapa.php
Normal file
22
incoviba/modelos/src/nuevo/Proyecto/Etapa.php
Normal file
@ -0,0 +1,22 @@
|
||||
<?php
|
||||
namespace Incoviba\nuevo\Proyecto;
|
||||
|
||||
use Incoviba\Common\Alias\NewModel;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Aldarien
|
||||
* @property int id
|
||||
* @property string descripcion
|
||||
* @property int orden
|
||||
*
|
||||
*/
|
||||
class Etapa extends NewModel
|
||||
{
|
||||
protected static $_table = 'etapas';
|
||||
|
||||
public function tipos()
|
||||
{
|
||||
return $this->hasMany(TipoEstadoProyecto::class, 'etapa_id')->findMany();
|
||||
}
|
||||
}
|
27
incoviba/modelos/src/nuevo/Proyecto/Participe.php
Normal file
27
incoviba/modelos/src/nuevo/Proyecto/Participe.php
Normal file
@ -0,0 +1,27 @@
|
||||
<?php
|
||||
namespace Incoviba\nuevo\Proyecto;
|
||||
|
||||
use Incoviba\Common\Definition\hasRUT;
|
||||
use Incoviba\Common\Alias\NewModel;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Aldarien
|
||||
* @property string nombre
|
||||
*
|
||||
*/
|
||||
class Participe extends NewModel
|
||||
{
|
||||
use hasRUT;
|
||||
|
||||
protected static $_table = 'participes';
|
||||
|
||||
public function proyectos()
|
||||
{
|
||||
return $this->hasManyThrough(Proyecto::class, ProyectoParticipe::class, 'proyecto_id', 'participe_rut', 'rut')->findMany();
|
||||
}
|
||||
public function participaciones()
|
||||
{
|
||||
return $this->hasMany(ProyectoParticipe::class, 'participe_rut', 'rut')->findMany();
|
||||
}
|
||||
}
|
132
incoviba/modelos/src/nuevo/Proyecto/Proyecto.php
Normal file
132
incoviba/modelos/src/nuevo/Proyecto/Proyecto.php
Normal file
@ -0,0 +1,132 @@
|
||||
<?php
|
||||
namespace Incoviba\nuevo\Proyecto;
|
||||
|
||||
use Incoviba\Common\Alias\NewModel;
|
||||
use Incoviba\nuevo\Inmobiliaria\Inmobiliaria;
|
||||
use Incoviba\nuevo\Common\Direccion;
|
||||
use Incoviba\Common\Definition\hasEstado;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Aldarien
|
||||
* @property int id
|
||||
* @property string nombre
|
||||
* @property string nombre_completo
|
||||
* @property Inmobiliaria inmobiliaria_rut
|
||||
* @property Direccion direccion_id
|
||||
* @property boolean portal
|
||||
* @property string descripcion
|
||||
*
|
||||
*/
|
||||
class Proyecto extends NewModel
|
||||
{
|
||||
use hasEstado;
|
||||
|
||||
protected static $_table = 'proyectos';
|
||||
|
||||
public function inmobiliaria()
|
||||
{
|
||||
return $this->belongsTo(Inmobiliaria::class, 'inmobiliaria_rut', 'rut')->findOne();
|
||||
}
|
||||
public function direccion()
|
||||
{
|
||||
return $this->belongsTo(Direccion::class, 'direccion_id')->findOne();
|
||||
}
|
||||
|
||||
public function participaciones()
|
||||
{
|
||||
return $this->hasMany(ProyectoParticipe::class, 'proyecto_id')->findMany();
|
||||
}
|
||||
public function participes()
|
||||
{
|
||||
return $this->hasManyThrough(Participe::class, ProyectoParticipe::class, 'proyecto_id', 'participe_rut', 'rut')->findMany();
|
||||
}
|
||||
public function unidades()
|
||||
{
|
||||
return $this->hasMany(UnidadProyecto::class, 'proyecto_id')->findMany();
|
||||
}
|
||||
public function cantidad($tipo = 'departamento')
|
||||
{
|
||||
$total = 0;
|
||||
$unidades = $this->unidades;
|
||||
foreach ($unidades as $unidad) {
|
||||
if ($unidad->tipo->descripcion == $tipo) {
|
||||
$total += $unidad->unidades->count();
|
||||
}
|
||||
}
|
||||
return $total;
|
||||
}
|
||||
public function unidadesPrincipales()
|
||||
{
|
||||
if ($this->tipoUnidades()) {
|
||||
return $this->cantidad('departamento');
|
||||
} else {
|
||||
return $this->cantidad('casa');
|
||||
}
|
||||
}
|
||||
public function pisos()
|
||||
{
|
||||
$max_piso = 0;
|
||||
$unidades = $this->unidades;
|
||||
foreach ($unidades as $unidad) {
|
||||
$piso = $unidad->unidades->max('piso');
|
||||
if ($max_piso < $piso) {
|
||||
$max_piso = $piso;
|
||||
}
|
||||
}
|
||||
return $max_piso;
|
||||
}
|
||||
public function m2Construidos()
|
||||
{
|
||||
$total = 0;
|
||||
$unidades = $this->unidades;
|
||||
foreach ($unidades as $unidad) {
|
||||
$total += $unidad->m2->total() * $unidad->unidades->count();
|
||||
}
|
||||
return $total;
|
||||
}
|
||||
public function tipoUnidades()
|
||||
{
|
||||
return (!$this->unidades->isEmpty() and $this->unidades[0]->tipo->descripcion == 'departamento');
|
||||
}
|
||||
public function ventas()
|
||||
{
|
||||
$ventas = [];
|
||||
foreach ($this->unidades as $up) {
|
||||
foreach ($up->unidades as $u) {
|
||||
if (isset($u->propiedad)) {
|
||||
$ventas->add($u->propiedad->venta);
|
||||
}
|
||||
}
|
||||
}
|
||||
$ventas = sort($ventas, function($a, $b) {
|
||||
return $a->propiedad->unidadPrincipal->numeracion - $b->propiedad->unidadPrincipal->numeracion;
|
||||
});
|
||||
return $ventas;
|
||||
}
|
||||
public function ventasActivas()
|
||||
{
|
||||
$ventas = $this->ventas();
|
||||
$output = [];
|
||||
foreach ($ventas as $venta) {
|
||||
$estado = $venta->ultimoEstado()->estado->descripcion;
|
||||
if ($estado == 'promesado' or $estado == 'escriturado' or $estado == 'entregado') {
|
||||
$output []= $venta;
|
||||
}
|
||||
}
|
||||
return $output;
|
||||
}
|
||||
public function pVendido()
|
||||
{
|
||||
return $this->ventasActivas()->count() / $this->unidadesPrincipales();
|
||||
}
|
||||
public function m2Vendidos()
|
||||
{
|
||||
$ventas = $this->ventasActivas();
|
||||
$sum = 0;
|
||||
foreach ($ventas as $venta) {
|
||||
$sum += $venta->propiedad->unidadPrincipal->unidadProyecto->m2->vendibles();
|
||||
}
|
||||
return $sum;
|
||||
}
|
||||
}
|
27
incoviba/modelos/src/nuevo/Proyecto/ProyectoParticipe.php
Normal file
27
incoviba/modelos/src/nuevo/Proyecto/ProyectoParticipe.php
Normal file
@ -0,0 +1,27 @@
|
||||
<?php
|
||||
namespace Incoviba\nuevo\Proyecto;
|
||||
|
||||
use Incoviba\Common\Alias\NewModel;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Aldarien
|
||||
* @property int id
|
||||
* @property Proyecto proyecto_id
|
||||
* @property Participe participe_rut
|
||||
* @property double participacion
|
||||
*
|
||||
*/
|
||||
class ProyectoParticipe extends NewModel
|
||||
{
|
||||
protected static $_table = 'proyecto_participes';
|
||||
|
||||
public function proyecto()
|
||||
{
|
||||
$this->belongsTo(Proyecto::class, 'proyecto_id')->findOne();
|
||||
}
|
||||
public function participe()
|
||||
{
|
||||
$this->belongsTo(Participe::class, 'participe_rut', 'rut')->findOne();
|
||||
}
|
||||
}
|
75
incoviba/modelos/src/nuevo/Proyecto/Tema.php
Normal file
75
incoviba/modelos/src/nuevo/Proyecto/Tema.php
Normal file
@ -0,0 +1,75 @@
|
||||
<?php
|
||||
namespace Incoviba\nuevo\Proyecto;
|
||||
|
||||
use Incoviba\Common\Alias\NewModel;
|
||||
use Incoviba\old\Proyecto\Proyecto as P;
|
||||
use Carbon\Carbon;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Aldarien
|
||||
* @property int $id
|
||||
* @property Proyecto $proyecto_id
|
||||
* @property string texto
|
||||
* @property DateTime inicio
|
||||
* @property DateTime cierre
|
||||
*
|
||||
*/
|
||||
class Tema extends NewModel
|
||||
{
|
||||
protected static $_table = 'temas';
|
||||
|
||||
public function proyecto()
|
||||
{
|
||||
$proyecto = $this->belongsTo(Proyecto::class)->findOne();
|
||||
if ($proyecto) {
|
||||
return $proyecto;
|
||||
}
|
||||
return $this->belongsTo(P::class)->findOne();
|
||||
}
|
||||
public function inicio()
|
||||
{
|
||||
return Carbon::parse($this->inicio, config('app.timezone'));
|
||||
}
|
||||
public function cierre()
|
||||
{
|
||||
return Carbon::parse($this->cierre, config('app.timezone'));
|
||||
}
|
||||
public function texto()
|
||||
{
|
||||
$text = $this->texto;
|
||||
$text = explode("\n", $text);
|
||||
foreach ($text as &$line) {
|
||||
$line = trim(rtrim($line, '.')) . '.';
|
||||
if ($line != ltrim($line, '-')) {
|
||||
$line = ' ' . $line;
|
||||
}
|
||||
}
|
||||
$text = implode('<br />', $text);
|
||||
|
||||
preg_match_all('/\[\[.*\]\]/', $text, $matches);
|
||||
$search = [];
|
||||
$replace = [];
|
||||
if (count($matches[0]) > 0) {
|
||||
foreach ($matches[0] as $match) {
|
||||
$search []= $match;
|
||||
list($model, $where, $value) = explode(':', str_replace(['[',']'], ['', ''], $match));
|
||||
$class = '\\Incoviba\\old\\' . $model;
|
||||
$obj = model($class)->where($where, $value)->findOne();
|
||||
|
||||
$str = $value;
|
||||
if ($obj->venta()) {
|
||||
$str = '<a href="';
|
||||
$str .= url('', ['p' => 'ventas', 'a' => 'show', 'venta' => $obj->venta()->id]);
|
||||
$str .= '">' . $value . '</a>';
|
||||
}
|
||||
$replace []= $str;
|
||||
}
|
||||
}
|
||||
|
||||
$text = str_replace($search, $replace, $text);
|
||||
|
||||
return $text;
|
||||
}
|
||||
}
|
||||
?>
|
28
incoviba/modelos/src/nuevo/Proyecto/TipoEstadoProyecto.php
Normal file
28
incoviba/modelos/src/nuevo/Proyecto/TipoEstadoProyecto.php
Normal file
@ -0,0 +1,28 @@
|
||||
<?php
|
||||
namespace Incoviba\nuevo\Proyecto;
|
||||
|
||||
use Incoviba\Common\Alias\NewModel;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Aldarien
|
||||
* @property int id
|
||||
* @property string descripcion
|
||||
* @property int orden
|
||||
* @property Etapa etapa_id
|
||||
*
|
||||
*/
|
||||
class TipoEstadoProyecto extends NewModel
|
||||
{
|
||||
protected static $_table = 'tipo_estado_proyectos';
|
||||
|
||||
public function etapa()
|
||||
{
|
||||
return $this->belongsTo(Etapa::class, 'etapa_id')->findOne();
|
||||
}
|
||||
|
||||
public function estados()
|
||||
{
|
||||
return $this->hasMany(EstadoProyecto::class, 'estado_id')->findMany();
|
||||
}
|
||||
}
|
21
incoviba/modelos/src/nuevo/Proyecto/TipoUnidad.php
Normal file
21
incoviba/modelos/src/nuevo/Proyecto/TipoUnidad.php
Normal file
@ -0,0 +1,21 @@
|
||||
<?php
|
||||
namespace Incoviba\nuevo\Proyecto;
|
||||
|
||||
use Incoviba\Common\Alias\NewModel;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Aldarien
|
||||
* @property int id
|
||||
* @property string descripcion
|
||||
*
|
||||
*/
|
||||
class TipoUnidad extends NewModel
|
||||
{
|
||||
protected static $_table = 'tipo_unidades';
|
||||
|
||||
public function unidades()
|
||||
{
|
||||
return $this->hasMany(UnidadProyecto::class, 'tipo_id')->findMany();
|
||||
}
|
||||
}
|
50
incoviba/modelos/src/nuevo/Proyecto/UnidadProyecto.php
Normal file
50
incoviba/modelos/src/nuevo/Proyecto/UnidadProyecto.php
Normal file
@ -0,0 +1,50 @@
|
||||
<?php
|
||||
namespace Incoviba\nuevo\Proyecto;
|
||||
|
||||
use Incoviba\Common\Alias\NewModel;
|
||||
use Incoviba\nuevo\Common\M2;
|
||||
use Incoviba\nuevo\Venta\Unidad;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Aldarien
|
||||
* @property int id
|
||||
* @property Proyecto proyecto_id
|
||||
* @property TipoUnidad tipo_id
|
||||
* @property string nombre
|
||||
* @property string tipologia
|
||||
* @property M2 m2_id
|
||||
* @property string descripcion
|
||||
*
|
||||
*/
|
||||
class UnidadProyecto extends NewModel
|
||||
{
|
||||
protected static $_table = 'unidad_proyectos';
|
||||
|
||||
public function proyecto()
|
||||
{
|
||||
return $this->belongsTo(Proyecto::class, 'proyecto_id')->findOne();
|
||||
}
|
||||
public function m2()
|
||||
{
|
||||
return $this->belongsTo(M2::class, 'm2_id')->findOne();
|
||||
}
|
||||
public function tipo()
|
||||
{
|
||||
return $this->belongsTo(TipoUnidad::class, 'tipo_id')->findOne();
|
||||
}
|
||||
public function unidades()
|
||||
{
|
||||
return $this->hasMany(Unidad::class, 'unidad_proyecto_id')->findMany();
|
||||
}
|
||||
public function orientaciones()
|
||||
{
|
||||
$orientaciones = [];
|
||||
foreach ($this->unidades as $unidad) {
|
||||
if (array_search($unidad->orientacion, $orientaciones) === false) {
|
||||
$orientaciones []= $unidad->orientacion;
|
||||
}
|
||||
}
|
||||
return $orientaciones;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user