<?php

class Game extends AppModel {
	
	var $name = 'Game';
	
	//Tiempo máximo sin encontrar jugador B.
	var $tGameMaxWithoutPlayerB = 10;
	//Tiempo máximo de partida.
	var $tGameMax = 30;
	
	function beforeFind(){
		$this->_deleteOldGames();
		
		return true;
	}
	
	var $validate = array(
        'answer' => array(
            'notEmpty' => array(
                'rule' => 'notEmpty',
                'message' => 'This field cannot be left blank.',
            ),
        ),
    );
	
	/**
	 * Borra todas las partidas con un tiempo superior a $tGameMax y 
	 * las respuestas son NULL o diferentes, también elimina
	 * partidas con un solo jugador con un timpo superior a $tGameMaxWithoutPlayerB.
	 */
	function _deleteOldGAmes(){
		$conditions = array(
					"OR" => array(
						array(
							"Game.created <" => $this->_calcTimeAgo($this->tGameMax),
							"Game.answer_A =" => null
						),
						array(
							"Game.created <" => $this->_calcTimeAgo($this->tGameMax),
							"Game.answer_B =" => null
						),
						array(
							"Game.created <" => $this->_calcTimeAgo($this->tGameMax),
							"Game.answer_A <> Game.answer_B"
						),
						array(
							"Game.userAgent_B" => '',
							"Game.created <" => $this->_calcTimeAgo($this->tGameMaxWithoutPlayerB)
						)
					)
		);

		$this->deleteAll($conditions, false);
	}
	
	/**
	 * Calcula un tiempo pasado, en función de los segundos pasados por parámetro.
	 * @param $seconds
	 */
	function _calcTimeAgo($seconds){
		return date("Y-m-d H:i:s", time() - ($seconds));
	}
}

?>