<?php
namespace Incoviba;

use \Model;

class ProyectoAgente extends Model {
  public static $_table = 'proyecto_agente';

  protected $ventas;
  public function ventas() {
    if ($this->ventas === null) {
      $this->ventas = $this->has_many(Venta::class, 'agente')->find_many();
    }
    return $this->ventas;
  }
  protected $agente_tipo;
  public function agente_tipo() {
    if ($this->agente_tipo === null) {
      $this->agente_tipo = $this->belongs_to(AgenteTipo::class, 'agente')->find_one();
    }
    return $this->agente_tipo;
  }
  protected $proyecto_obj;
  public function proyecto() {
    if ($this->proyecto_obj === null) {
      $this->proyecto_obj = $this->belongs_to(Proyecto::class, 'proyecto')->find_one();
    }
    return $this->proyecto_obj;
  }

  public static function add($data) {
    $fields = ['agente', 'proyecto', 'fecha', 'comision'];
    $input = array_intersect_key($data, array_combine($fields, $fields));
    $pa = Model::factory(ProyectoAgente::class)
      ->where('proyecto', $input['proyecto'])
      ->where('agente', $input['agente'])
      ->where('fecha', $input['fecha'])
      ->find_one();
    $created = false;
    if (!$pa) {
      $pa = ProyectoAgente::create($input);
      $created = $pa->save();
    }
    $output = [
      'input' => $input,
      'proyecto_agente' => $pa->as_array(),
      'created' => $created
    ];
    return $output;
  }
}
