<?php 

class AccesoCore extends AppObjeto{
	
	public $token ;
	public $id_usuario;
	public $fecha;
	
	protected $id_acceso;
	
	
	protected static $_aliasTabla = 'a';
	protected static $_nombreTabla = 'acceso';
	protected static $_campoPK = 'id_acceso';
	
	
	public function save() {
		$this->token = AppHerramienta::generar_clave(20);
		$this->fecha = date('d/m/Y H:i:s');
		parent::save();
		$this->borrarOtrosDeMismoUsuario();
	}
	
	public static function loadByUsuario($idUsuario) {
		$select = self::selectObjeto();
		$select->where('id_usuario=?', (int)$idUsuario);
		$resultado = self::selectExecute($select);
		if($resultado instanceof AppResultado){
			return $resultado->getDatos();
			
		}
		return self::fetchAll ( $select )->toArray ();
	}
	
	public function borrarOtrosDeMismoUsuario(){
		
		if (isset ( $this->id ) && $this->id > 0) {
			self::borrarOtrosDeMismoUsuarioStatic($this->id, $this->id_usuario);
		}
	}
	public function borrarOtrosDeMismoUsuarioStatic($id, $usuario){
		$lista = self::loadByUsuario($usuario);
		$propiedadPK = self::getPropiedadFromCampo(self::getAliasTabla(), self::getCampoPk());
		foreach ($lista as $elemento){
			if($elemento[$propiedadPK] != $id){
				$acceso = new Acceso($elemento[$propiedadPK]);
				$acceso->remove();
			}
				
		}
	}
	
	public static function loadByToken($token){
		$select = self::selectObjeto();
		$select->where('date_add( fecha, INTERVAL 2 MINUTE) > NOW()');
		$select->where('a.token=?',$token);
		$ar = self::selectExecute($select);
		$datos = $ar->getDatos();
		$propiedadPK = self::getPropiedadFromCampo(self::getAliasTabla(), self::getCampoPk());
		if(isset($datos[0])){
			$resultado = $datos[0];
			$acceso = new Acceso($resultado[$propiedadPK]);
			return $acceso;
		}
		
	}
	
	
	
} 