<?php 
class Vehiculo extends AppObjeto {
	
	//Propiedades
	protected $codigo;
	protected $matricula;
	protected $marca;
	protected $codigo_marca;
	protected $modelo;
	protected $codigo_modelo;
	protected $variante;
	protected $categoria;
	protected $actividad;
	protected $actividadNombre;
	protected $color;
	protected $colorNombre;
	protected $propietario;
	protected $proveedor;
	protected $anyo;
	protected $numeroPlazas;
	protected $logFecha;
	protected $logUsuario;
	protected $logUsuarioWeb;
	protected $noPublicarWeb;
	protected $ordenweb;
	
	protected $activo;
	protected $primerDiaEnFlota;
	protected $ultimoDiaEnFlota;
	protected $oficinaActual;
	protected $oficinaAsignada;

				
	// para conectar con bd 
	protected static $_aliasTabla = 'a';
	protected static $_nombreTabla = 'VEHICULO1';
	protected static $_campoPK = 'CODIINT';
	protected static $_tipo_primary = self::APP_TIPO_PRIMARY_STRING;

	const PROPIETARIO_PRESUPUESTO = '0000020'; // POTENCIAL PRESUPUESTO 007098
	
	// InitMetaDatos
	protected static function initMetaDatos(){
		
		self::addTablaRelacion('act', 'activehi', 'NUM_ACTIVEHI', 'a', 'ACTIVIDAD');
			
		self::addPropiedadBD('a', 'CODIINT', 'codigo', self::META_VARCHAR);
		self::addPropiedadBD('a', 'MATRICULA', 'matricula', self::META_VARCHAR);
		self::addPropiedadBD('a', 'MARCA', 'marca', self::META_VARCHAR);
		self::addPropiedadBD('a', 'MAR', 'codigo_marca', self::META_VARCHAR);
		self::addPropiedadBD('a', 'MODELO', 'modelo', self::META_VARCHAR);
		self::addPropiedadBD('a', 'MO1', 'codigo_modelo', self::META_VARCHAR);
		self::addPropiedadBD('a', 'MO2', 'variante', self::META_VARCHAR);
		self::addPropiedadBD('a', 'GRUPO', 'categoria', self::META_VARCHAR);
		self::addPropiedadBD('a', 'ACTIVIDAD', 'actividad', self::META_VARCHAR);
		self::addPropiedadBD('a', 'COLOR', 'color', self::META_VARCHAR);
		self::addPropiedadBD('a', 'PROPIE', 'propietario', self::META_VARCHAR);
		self::addPropiedadBD('act', 'NOMBRE', 'actividadNombre', self::META_VARCHAR);
		self::addPropiedadBD('a', 'ANOMODELO', 'anyo', self::META_VARCHAR);
		self::addPropiedadBD('a', 'NUMPLAZAS', 'numeroPlazas', self::META_INT);
		self::addPropiedadBD('a', 'USUARIO', 'logUsuario', self::META_VARCHAR);
		self::addPropiedadBD('a', 'ULTMODI', 'logFecha', self::META_VARCHAR);
		self::addPropiedadBD('a', 'USUARIO_WEB_V1', 'logUsuarioWeb', self::META_VARCHAR);
		self::addPropiedadBD('a', 'NOPUBLICARWEB', 'noPublicarWeb', self::META_INT);
		self::addPropiedadBD('a', 'ORDENWEB', 'ordenweb', self::META_INT);
		
		self::addTablaRelacion('v2', 'VEHICULO2', 'CODIINT', 'a', 'CODIINT', true);
		self::addPropiedadBD('v2', 'FECHACO', 'primerDiaEnFlota', self::META_DATE);
		self::addPropiedadBD('v2', 'FEBAJA', 'ultimoDiaEnFlota', self::META_DATE);
		self::addPropiedadBD('v2', 'OFICINA', 'oficinaActual', self::META_VARCHAR);
		self::addPropiedadBD('v2', 'BASEASIG', 'oficinaAsignada', self::META_VARCHAR);
		
		self::addTablaRelacion('col', 'COLORFL', 'CODIGO', 'a', 'COLOR');
		self::addPropiedadBD('col', 'NOMBRE', 'colorNombre', self::META_VARCHAR);
		
		self::addPropiedad('activo', 'activo');

		
	}
	
	public static function getCochesPorOrigen($origen) {
		$db = self::getDb();
		$select = $db->select();
		$select->setIntegrityCheck(false);
		$select->from(array('v'=>'vehiculo1'),array('codiint','grupo','marca','modelo','numplazas'));
		$select->joinInner(array('v2'=>'vehiculo2'), 'v.codiint=v2.codiint',array());
		$select->joinInner(array('ov'=>'ori_vehi'), "ov.codiint_ovh=v.codiint",array());
		$select->where('origen_ovh=?',$origen);
		$select->where('v2.febaja is null');
		$select->where('v.nopublicarweb=0');
		$select->order('ordenweb');
		$resultado = self::selectExecute($select);
		return $resultado;
		
	}
	
	public static function getGruposYCoches($origen, $empresa){
		$db = self::getDb();
		$select = $db->select();
		$select->setIntegrityCheck(false);
		$select->from(array('gv'=>'grupos'),array('codigoGrupo'=>'codigo', 'nombreGrupo'=>'nombre', 'observacionesGrupo'=>'obs1'));
		$select->joinLeft(array('vh'=>'vehiculo1'),'gv.codigo=vh.grupo', array('codiint','grupo','marca','modelo','numplazas'));
		$select->joinInner(array('ov'=>'ori_vehi'), "ov.codiint_ovh=vh.codiint",array());
		$select->where('origen_ovh=?',$origen);
		$select->where('vh.sublicen=?',$empresa);
		$select->where("gv.codigo in ('A','B','D1','E','E1','F','F1','G','G1','H','H1','M')");
		$select->order('ordenweb');
		$resultado = self::selectExecute($select);
		if ($resultado->estaVacio()){
			$db = self::getDb();
			$select = $db->select();
			$select->setIntegrityCheck(false);
			$select->from(array('gv'=>'grupos'),array('codigoGrupo'=>'codigo', 'nombreGrupo'=>'nombre', 'observacionesGrupo'=>'obs1'));
			$select->joinLeft(array('vh'=>'vehiculo1'),'gv.codigo=vh.grupo', array('codiint','grupo','marca','modelo','numplazas'));
			$select->where('vh.propie=?',self::PROPIETARIO_PRESUPUESTO);	
			$select->where('vh.sublicen=?',$empresa);
			$select->where("gv.codigo in ('A','B','D1','E','E1','F','F1','G','G1','H','H1','M')");
			$select->order('ordenweb');
			$resultado = self::selectExecute($select);	
		} 		
		return $resultado;
	}
	
	public function load($id){
		parent::load($id);
		$this->activo = true;
		if ($this->ultimoDiaEnFlota)
			$this->activo = false;
	}
	
	public function save(){
		if (!($this->codigo>0)){
			$this->codigo = $this->siguienteIdMaximo();
			$this->noPublicarWeb = true;
		}
		
		$this->logFecha = date('Ymdh:m');
		$usuario = Usuario::UsuarioLoqueado();
		$this->logUsuario = $usuario->USUARIO;
		$this->logUsuarioWeb = $usuario->USUARIO_WEB;
		$potencial = new Potencial($usuario->id);
		$codigoPropietario = $potencial->getCodigoPropietario();
		$this->propietario = $codigoPropietario;
		
		if ($this->id) {
			if (!$this->activo){
				$this->ultimoDiaEnFlota = date('d/m/Y');
			} else {
				$this->ultimoDiaEnFlota = '';
			}
		} else {
			$this->primerDiaEnFlota = date('d/m/Y');
		}
		parent::save();
		
	}
	public function siguienteIdMaximo(){
		$db = self::getDb();
		$select = $db->select();
		$usuario = Usuario::UsuarioLoqueado();
		$select->setIntegrityCheck(false);
		$select->from(array('r'=>$this->getNombreTabla()),array('numero_max' => 'MAX(CODIINT)'));
		if (isset($usuario->EMPRESA))  {
			$empresa = $usuario->EMPRESA;
		}else {
			$empresa = '00';
		}
		$select->where("CODIINT like '".$empresa."%'");
		$resultado = self::selectExecute($select, null, true);
		$datos = $resultado->getDatos();
		$num_max = $datos[0]['numero_max'] + 1;
		$num_max = str_repeat('0',7-strlen($num_max)).$num_max;
		return $num_max;
	}
	
	
	public function lst_listado($params){
		$select = self::selectObjeto();
		$usuario = Usuario::UsuarioLoqueado();
		//filtro del formulario
		if(isset($params['nombre']) && $params['nombre']){
			$select->where('MATRICULA like \'%'.$params['nombre'].'%\' OR MODELO like \'%'.$params['nombre'].'%\'');
		}
		
		// FILTRAR ACTIVO
		if (isset($params['activo'])){
			switch ($params['activo']){
				case '-1':
					break;
				case '2':
					$select->where('FEBAJA is not null');
					break;
				default:
					$select->where('FEBAJA is null');
					break;
			}
			
		}	
		if (isset($params['actividad']) && ($params['actividad']>0)){
			$select->where('ACTIVIDAD=?',$params['actividad']);
		} else {
			$select->where('ACTIVIDAD in (2,3,4,5,6)');
		}
		
		$potencial = new Potencial($usuario->id);
		$codigoPropietario = $potencial->getCodigoPropietario();
		
		$select->where('PROPIE = ?', $codigoPropietario);

		$res = self::selectExecute($select, $params);
		$datos = $res->getDatos();
		foreach ($datos as &$reg) {
			if ($reg['ultimoDiaEnFlota'])
				$reg['activo'] = 0;
			else 
				$reg['activo'] = 1;
		}
		$res->setDatos($datos);
		
		return $res; 
	}
		
	// Métodos
	
	// Get y Set

	public function getPropietario() {
		return $this->propietario;
	}
	public function setPropietario($propietario) {
		$this->propietario = $propietario;
	}
	
	public function getProveedor() {
	    return $this->proveedor;
	}
	public function setProveedor($proveedor) {
	    $this->proveedor = $proveedor;
	}
	
	public function getActivo() {
	    return $this->activo;
	}
	public function setActivo($activo) {
	    $this->activo = $activo;
	}
	
	public function getNumeroPlazas() {
	    return $this->numeroPlazas;
	}
	public function setNumeroPlazas($numeroPlazas) {
	    $this->numeroPlazas = $numeroPlazas;
	}
	
	public function getOficinaActual() {
	    return $this->oficinaActual;
	}
	public function setOficinaActual($oficinaActual) {
	    $this->oficinaActual = $oficinaActual;
	}
	
	public function getCategoria() {
	    return $this->categoria;
	}
	public function setCategoria($categoria) {
	    $this->categoria = $categoria;
	}
	
	
	
	
	
	

	
}