<?php
namespace Incoviba;

use \Model;

class Proyecto extends Model {
  public static $_table = 'proyecto';

  protected $inmobiliaria_obj;
  public function inmobiliaria() {
    if ($this->inmobiliaria_obj === null) {
      $this->inmobiliaria_obj = $this->belongs_to(Inmobiliaria::class, 'inmobiliaria', 'rut')->find_one();
    }
    return $this->inmobiliaria_obj;
  }

  protected $ventas;
  public function ventas() {
    if ($this->ventas === null) {
      $ventas = [];
      foreach ($this->proyecto_tipo_unidades() as $pu) {
        foreach ($pu->unidades() as $u) {
          if (!$u->propiedad_unidad() or $u->propiedad_unidad()->principal != 1 or !$u->propiedad_unidad()->propiedad() or !$u->propiedad_unidad()->propiedad()->venta()) {
            continue;
          }
          $ventas = array_merge($ventas, [$u->propiedad_unidad()->propiedad()->venta()]);
        }
      }
      $ventas = array_filter($ventas, function($item) {
        return ($item->activa());
      });
      $this->ventas = $ventas;
    }
    return $this->ventas;
  }
  protected $proyecto_tipo_unidades;
  public function proyecto_tipo_unidades() {
    if ($this->proyecto_tipo_unidades === null) {
      $this->proyecto_tipo_unidades = $this->has_many(ProyectoTipoUnidad::class, 'proyecto')->find_many();
    }
    return $this->proyecto_tipo_unidades;
  }

  protected $operadores;
  public function operadores() {
    if ($this->operadores === null) {
      $pas = $this->has_many(ProyectoAgente::class, 'proyecto')->find_many();
      $operadores = [];
      foreach ($pas as $pa) {
        $id = $pa->agente_tipo()->agente()->id;
        $operadores []= Model::factory(Operador::class)->find_one($id);
      }
      $this->operadores = $operadores;
    }
    return $this->operadores;
  }

  public function as_array() {
    $arr = parent::as_array();
    $arr['inmobiliaria'] = $this->inmobiliaria()->as_array();
    return $arr;
  }
}
