Se agregan los campos por segmento

This commit is contained in:
2020-06-03 21:59:11 -04:00
parent 2d2eccb600
commit 080ed4553e
14 changed files with 486 additions and 174 deletions

61
src/Productos/Bodega.php Normal file
View File

@ -0,0 +1,61 @@
<?php
namespace ProVM\KI\Productos;
use ProVM\KI\Producto;
class Bodega extends Producto {
protected $properties = [
'modulo',
'tamaño',
'oficina',
'superficie',
'arriendo'
];
public function uf_m2() {
return $this->arriendo / $this->superficie;
}
public function getFicha(): array {
$properties = [
[
'label' => 'Superficie',
'name' => 'superficie',
'suffix' => ' m²'
],
[
'label' => 'Valor Arriendo',
'name' => 'arriendo',
'suffix' => ' UF'
],
[
'label' => 'UF/m²',
'name' => 'uf_m2'
]
];
array_walk($properties, function(&$item) {
$item['suffix'] = $item['suffix'] ?? '';
$item = (object) $item;
});
return $properties;
}
public function getShow(): array {
$data = $this->getFicha();
$data []= (object) [
'label' => 'Modulo',
'name' => 'modulo'
];
$data []= (object) [
'label' => 'Oficina',
'name' => 'oficina'
];
$data []= (object) [
'label' => 'Tamaño',
'name' => 'tamaño',
'suffix' => ' m²'
];
array_walk($data, function(&$item) {
$item->suffix = $item->suffix ?? '';
});
return $data;
}
}

67
src/Productos/Oficina.php Normal file
View File

@ -0,0 +1,67 @@
<?php
namespace ProVM\KI\Productos;
use ProVM\KI\Producto;
class Oficina extends Producto {
protected $properties = [
'arriendo',
'm2',
'baños',
'privados',
'gastos'
];
public function uf_m2() {
return $this->arriendo / $this->m2;
}
public function privados() {
if ($this->privados == 0) {
return 'planta libre';
}
return 'privados ' . $this->privados;
}
public function getFicha(): array {
$properties = [
[
'label' => 'Valor Arriendo',
'name' => 'arriendo',
'suffix' => ' UF'
],
[
'label' => 'Superficie',
'name' => 'm2',
'suffix' => ' m²'
],
[
'label' => 'Baños',
'name' => 'baños'
],
[
'label' => 'Privados',
'name' => 'privados'
]
];
array_walk($properties, function(&$item) {
$item['suffix'] = $item['suffix'] ?? '';
$item = (object) $item;
});
return $properties;
}
public function getShow() {
$data = $this->getFicha();
$data []= (object) [
'label' => 'Gastos Comunes',
'name' => 'gastos',
'suffix' => ' UF'
];
$data []= (object) [
'label' => 'UF/m²',
'name' => 'uf_m2'
];
array_walk($data, function(&$item) {
$item->suffix = $item->suffix ?? '';
});
return $data;
}
}

148
src/Productos/Retail.php Normal file
View File

@ -0,0 +1,148 @@
<?php
namespace ProVM\KI\Productos;
use Carbon\Carbon;
use ProVM\KI\Producto;
class Retail extends Producto {
protected $properties = [
'bono',
'rentabilidad',
'cuota',
'entrega',
'estado',
'unidades',
'modelos',
'tamaños'
];
public function setTamaños(int $min, int $max = -1) {
if ($max == -1) {
$max = $min;
}
$this->tamaños = $min . ' - ' . $max . ' m²';
}
public function getTamaños() {
return $this->tamaños;
}
public function setEntrega(\DataTime $fecha) {
$this->entrega = $fecha->format('%m/%Y');
}
public function getEntrega() {
return Carbon::parse(implode('-', array_reverse(explode('/', $this->entrega))) . '-01');
}
public function getDireccion() {
return implode(', ', [
$this->direccion->calle,
$this->direccion->comuna ?? '',
$this->direccion->ciudad ?? ''
]);
}
public function getProperties(): array {
$properties = [];
$properties []= (object) [
'label' => 'Bono Pie en UF',
'name' => 'bono'
];
$properties []= (object) [
'label' => 'Rentabilidad %',
'name' => 'rentabilidad'
];
$properties []= (object) [
'label' => 'Valor Cuota en UF',
'name' => 'cuota'
];
$properties []= (object) [
'label' => 'Entrega Estimada',
'name' => 'entrega'
];
$properties []= (object) [
'label' => 'Estado',
'name' => 'estado'
];
$properties []= (object) [
'label' => 'Unidades',
'name' => 'unidades'
];
$properties []= (object) [
'label' => 'Modelos',
'name' => 'modelos'
];
$properties []= (object) [
'label' => 'Tamaños',
'name' => 'tamaños'
];
return $properties;
}
public function getFicha(): array {
$properties = [
[
'label' => 'Valor Depto',
'name' => 'valor',
'suffix' => ' UF'
],
[
'label' => 'Bono Pie',
'name' => 'bono',
'suffix' => ' UF'
],
[
'label' => 'Rentabilidad',
'name' => 'rentabilidad',
'suffix' => '%'
],
[
'label' => 'Valor Cuota',
'name' => 'cuota',
'suffix' => ' UF'
],
[
'label' => 'Entrega Estimada',
'name' => 'entrega'
]
];
array_walk($properties, function(&$item) {
$item['suffix'] = $item['suffix'] ?? '';
$item = (object) $item;
});
return $properties;
}
public function getShow() {
$properties = [
[
'label' => 'Precio',
'name' => 'valor',
'suffix' => ' UF'
],
[
'label' => 'Estado',
'name' => 'estado'
],
[
'label' => 'Tipo',
'name' => 'segmento'
],
[
'label' => 'Ubicación',
'name' => 'getDireccion'
],
[
'label' => 'Unidades',
'name' => 'unidades'
],
[
'label' => 'Modelos',
'name' => 'modelos'
],
[
'label' => 'Tamaño',
'name' => 'tamaños'
]
];
array_walk($properties, function(&$item) {
$item['suffix'] = $item['suffix'] ?? '';
$item = (object) $item;
});
return $properties;
}
}

39
src/Productos/Terreno.php Normal file
View File

@ -0,0 +1,39 @@
<?php
namespace ProVM\KI\Productos;
use ProVM\KI\Producto;
class Terreno extends Producto {
protected $properties = [
'sector',
'delimitacion',
'superficie'
];
public function getFicha(): array {
$properties = [
[
'label' => 'Sector',
'name' => 'sector'
],
[
'label' => 'Valor Total',
'name' => 'valor',
'suffix' => ' UF'
],
[
'label' => 'Superficie',
'name' => 'superficie',
'suffix' => ' m²'
]
];
array_walk($properties, function(&$item) {
$item['suffix'] = $item['suffix'] ?? '';
$item = (object) $item;
});
return $properties;
}
public function getShow() {
return $this->getFicha();
}
}