<?php
namespace Incoviba;

use \Model;

class Propiedad extends Model {
  public static $_table = 'propiedad';

  protected $venta;
  public function venta() {
    if ($this->venta === null) {
      $this->venta = $this->has_one(Venta::class, 'propiedad')->find_one();
    }
    return $this->venta;
  }
  protected $unidades;
  public function unidades() {
    if ($this->unidades === null) {
      $pus = $this->has_many(PropiedadUnidad::class, 'propiedad')->find_many();
      usort($pus, function($a, $b) {
        $p = $a->principal - $b->principal;
        if ($p == 0) {
          $t = $a->unidad()->tipo - $b->unidad()->tipo;
          if ($t == 0) {
            return $a->unidad()->descripcion - $b->unidad()->descripcion;
          }
          return $t;
        }
        return -$p;
      });
      $this->unidades = array_map(function($item) {
        return $item->unidad();
      }, $pus);
    }
    return $this->unidades;
  }

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