<?php 

class Chofer extends AppObjeto{
	protected static $_aliasTabla = 'a';
	protected static $_nombreTabla = 'CHOFERES';
	protected static $_campoPK = 'COD_CHOF';
	protected static $_tipo_primary = self::APP_TIPO_PRIMARY_STRING;
	

	protected $codigo;
	protected $potencial;
	protected $direccion;
	protected $dni;
	protected $codigo_postal;
	protected $poblacion;
	protected $telefono;
	protected $movil;
	protected $fax;	
	protected $email;
	protected $web;
	
	
	protected static function initMetaDatos(){
		//Tablas relacionadas
		self::addTablaRelacion('p', 'POTENCIALES', 'CHOFER', 'a', 'COD_CHOF');
		self::addTablaRelacion('pr', 'PROVINCIA', 'SIGLAS', 'a', 'PROV_CHOF');
	
		self::addPropiedadBD('a', 'COD_CHOF', 'codigo', self::META_VARCHAR);
		self::addPropiedadBD('a', 'NOM_CHOF', 'nombre', self::META_VARCHAR);
		self::addPropiedadBD('a', 'DIR_CHOF', 'direccion_chofer', self::META_VARCHAR);
		self::addPropiedadBD('a', 'DNI_CHOF', 'dni', self::META_VARCHAR);
		self::addPropiedadBD('a', 'CP_CHOF', 'codigo_postal', self::META_VARCHAR);
		self::addPropiedadBD('a', 'POB_CHOF', 'poblacion', self::META_VARCHAR);
		self::addPropiedadBD('a', 'TEL1_CHOF', 'telefono', self::META_VARCHAR);
		self::addPropiedadBD('a', 'TEL2_CHOF', 'movil', self::META_VARCHAR);
		self::addPropiedadBD('a', 'FAX_CHOF', 'fax', self::META_VARCHAR);
		self::addPropiedadBD('a', 'EMAIL_CHOF', 'email', self::META_VARCHAR);
		self::addPropiedadBD('a', 'WEB_CHOF', 'web', self::META_VARCHAR);
		self::addPropiedadBD('a', 'FALTA_CHOF', 'fecha_alta', self::META_DATE);
		self::addPropiedadBD('a', 'PROV_CHOF', 'provincia', self::META_VARCHAR);
	
		//Campos externos
		self::addPropiedadBD('p', 'DIR_NUM', 'numero', self::META_VARCHAR);
		self::addPropiedadBD('p', 'DIRECCION', 'direccion', self::META_VARCHAR);
		self::addPropiedadBD('pr', 'PROV', 'nombre_provincia', self::META_VARCHAR);
	}
	
	
	public function getCodigo() {
	    return $this->codigo;
	}
	public function setCodigo($codigo) {
	    $this->codigo = $codigo;
	}
	
	public function getPotencial() {
	    return $this->potencial;
	}
	public function setPotencial($potencial) {
	    $this->potencial = $potencial;
	}
	
	public function getDireccion() {
	    return $this->direccion;
	}
	public function setDireccion($direccion) {
	    $this->direccion = $direccion;
	}

	public function getDni() {
	    return $this->dni;
	}
	public function setDni($dni) {
	    $this->dni = $dni;
	}
	
	public function getCodigoPostal() {
	    return $this->codigo_postal;
	}
	public function setCodigoPostal($codigo_postal) {
	    $this->codigo_postal = $codigo_postal;
	}
	
	public function getPoblacion() {
	    return $this->poblacion;
	}
	public function setPoblacion($poblacion) {
	    $this->poblacion = $poblacion;
	}
	
	public function getTelefono() {
	    return $this->telefono;
	}
	public function setTelefono($telefono) {
	    $this->telefono = $telefono;
	}
	
	public function getMovil() {
	    return $this->movil;
	}
	public function setMovil($movil) {
	    $this->movil = $movil;
	}
	
	public function getFax() {
	    return $this->fax;
	}
	public function setFax($fax) {
	    $this->fax = $fax;
	}
	
	public function getEmail() {
	    return $this->email;
	}
	public function setEmail($email) {
	    $this->email = $email;
	}
	
	public function getweb() {
	    return $this->web;
	}
	public function setweb($web) {
	    $this->web = $web;
	}
	
	protected $direccion_chofer;
	public function getDireccionChofer() {
	    return $this->direccion_chofer;
	}
	public function setDireccionChofer($direccion_chofer) {
	    $this->direccion_chofer = $direccion_chofer;
	}
	
	protected $nombre_provincia;
	public function getNombreProvincia() {
	    return $this->nombre_provincia;
	}
	public function setNombreProvincia($nombre_provincia) {
	    $this->nombre_provincia = $nombre_provincia;
	}
	
	protected $numero;
	public function getNumero() {
	    return $this->numero;
	}
	public function setNumero($numero) {
	    $this->numero = $numero;
	}
	
	protected $nombre;
	public function getNombre() {
	    return $this->nombre;
	}
	public function setNombre($nombre) {
	    $this->nombre = $nombre;
	}
	
	
	protected $fecha_alta;
	public function getFechaAlata() {
	    return $this->fecha_alta;
	}
	public function setFechaAlata($fecha_alta) {
	    $this->fecha_alta = $fecha_alta;
	}
	
	
	
	
	
	
	public function load($id){
		parent::load($id);
		$this->email = str_replace('#', '@', $this->email);
	}
	
	public function save(){
		$this->email = str_replace('@', '#', $this->email);
		if(!$this->codigo){
			$this->codigo = $this->siguienteIdMaximo();
		}
		$this->direccion_chofer = $this->direccion;
		if($this->numero){
			$this->direccion_chofer .', '.$this->numero;
		}
		
		parent::save();
		
		$potencial = Potencial::getByChofer($this->id);
		
		if($potencial === false){
			$potencial = Potencial::getByDNI($this->dni);
		}
		
		if($potencial === false){
			$potencial = new Potencial();
		}
		
		
		$potencial->setDatos($this->toArray());
		$potencial->setChofer($this->getCodigo());
		$potencial->setNif($this->dni);
		$usuario = Usuario::UsuarioLoqueado();
		$potencial->setEmpresa($usuario->id);
		$potencial->save();
		
		$this->email = str_replace('#', '@', $this->email);
	}
	
	
	public static function lst_chofersAgente($params){
		$select = self::selectObjeto();
		$usuario = Usuario::UsuarioLoqueado();
		if(isset($params['nombre']) && strlen($params['nombre'])>0)
			$select->where('NOM_CHOF like \'%'.$params['nombre'].'%\' ' );
		$select->where("EMPRESA_PT = '$usuario->id'" );
		return self::selectExecute($select, $params);
	}
	
	
	public function siguienteIdMaximo(){
		
		$usuario = Usuario::UsuarioLoqueado();
		$empresa = $usuario->EMPRESA;
		$db = self::getDb();
		$select = $db->select();
		$select->setIntegrityCheck(false);
		$select->from(array('r'=> self::getNombreTabla()),array('numero_max' => 'MAX(COD_CHOF)'));
		$select->where("COD_CHOF 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 getCash() {
		$db = self::getDb();
		$adapter = $db->getAdapter();
		$sql = "select * from saldoctachofer('".$this->getCodigo()."','00')";

		try {
			$stmt = $adapter->query($sql);
		} catch (Exception $e) {
			echo $e->getMessage();
		}
		$rows = $stmt->fetchAll();
		$res = [];
		foreach ($rows as $row) {
			$res[] = [ 
				'nombre' => $row['DESCRIPCION'],
				'saldo' => $row['SALDO'],
				'cuenta' => $row['CUENTA'],
			];
		}
		return $res;
	}
	
}