// Include class definitions before calling session_start()
require_once '../../server/classes/class.dbutil.php';
require_once '../../server/classes/class.users.php';
require_once '../../server/classes/class.buildings.php';
require_once '../../server/classes/class.operations.php';
require_once '../../server/classes/class.user.php';
require_once '../../server/config.php';
session_start();
if (count($_GET) != 0 && isset($_SESSION['userSession'])) {
    // Check that all parameters have valid values
    if (!is_numeric($_GET['x']) || !is_numeric($_GET['y']) || intval($_GET['x']) < 0 || intval($_GET['y']) < 0 || intval($_GET['x']) > GRID_X || intval($_GET['y']) > GRID_Y) {
        die('ERROR');
    }
    $DB = new DBUtil(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
    // DB name
    if ($DB) {
        $UserUtil = new UserUtil($DB);
        $OperUtil = new OperationsUtil($DB);
        $user = $UserUtil->getUserById($_SESSION['userSession']->getId());
        // Is there anything in that coordinate?
        $inst = $OperUtil->findBuildingInstanceByXY($user->getId(), $_GET['x'], $_GET['y']);
        if ($inst) {
            $OperUtil->removeInstance($inst);
            die('OK');
        } else {
            die('ERROR');
        }
    }
} else {
    die('ERROR');
}
require_once '../../server/classes/class.buildings.php';
require_once '../../server/classes/class.operations.php';
require_once '../../server/classes/class.user.php';
require_once '../../server/config.php';
session_start();
if (count($_GET) != 0 && isset($_SESSION['userSession'])) {
    // Check that all parameters have valid values
    if (!is_numeric($_GET['buildingId']) || !is_numeric($_GET['x']) || !is_numeric($_GET['y']) || intval($_GET['x']) < 0 || intval($_GET['y']) < 0 || intval($_GET['x']) > GRID_X || intval($_GET['y']) > GRID_Y) {
        die('ERROR');
    }
    $DB = new DBUtil(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
    // DB name
    if ($DB) {
        $UserUtil = new UserUtil($DB);
        $BuildingUtil = new BuildingUtil($DB);
        $OperUtil = new OperationsUtil($DB);
        // Check if it's a valid building
        $building = $BuildingUtil->getBuildingById((int) $_GET['buildingId']);
        if ($building) {
            $user = $UserUtil->getUserById($_SESSION['userSession']->getId());
            // Does the user have enough money to purchase it?
            if ($user && $user->getBalance() >= $building->getCost()) {
                // Grab this user's building instances
                $inst = $OperUtil->findBuildingInstanceByXY($user->getId(), $_GET['x'], $_GET['y']);
                // Purchase
                if (!$inst) {
                    // Create the building instance
                    $bi = new BuildingInstance(null, $user->getId(), $building->getId(), (int) $_GET['x'], (int) $_GET['y']);
                    $bi = $OperUtil->create($bi);
                    // Take the money away
                    $user->setBalance($user->getBalance() - $building->getCost());
require_once '../server/classes/class.users.php';
require_once '../server/classes/class.buildings.php';
require_once '../server/classes/class.operations.php';
require_once '../server/classes/class.user.php';
require_once '../server/config.php';
session_start();
if (!isset($_SESSION['userSession'])) {
    // If the user is not logged in, redirect him to the index.
    header("location: index.php");
}
$DB = new DBUtil(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
// DB name
if ($DB) {
    $UserUtil = new UserUtil($DB);
    $BuildingUtil = new BuildingUtil($DB);
    $OperUtil = new OperationsUtil($DB);
    $user = $UserUtil->getUserById($_SESSION['userSession']->getId());
    $buildings = $BuildingUtil->listBuildings();
}
if (!$DB || $user == null || $buildings == null) {
    die("An unrecoverable error ocurred while trying to load the user information. Try again later.");
} else {
    // Grab this user's building instances
    $arrBldInst = $OperUtil->getBuildingInstances($user->getId());
}
?>
<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8" />
require_once '../../server/classes/class.users.php';
require_once '../../server/classes/class.user.php';
require_once '../../server/classes/class.buildings.php';
require_once '../../server/classes/class.building.php';
require_once '../../server/classes/class.operations.php';
require_once '../../server/config.php';
session_start();
$error = false;
if (isset($_SESSION['userSession'])) {
    $DB = new DBUtil(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
    // DB name
    if ($DB) {
        $UserUtil = new UserUtil($DB);
        $user = $UserUtil->getUserById($_SESSION['userSession']->getId());
        if ($user) {
            $OperUtil = new OperationsUtil($DB);
            $BuildingUtil = new BuildingUtil($DB);
            $balance = $UserUtil->getBalanceByUserId($user->getId());
            $arrBuildings = $OperUtil->getProfitableBuildingsList($user->getId());
            $t = time() - $user->getLastUpdate();
            for ($i = 0; $i < count($arrBuildings); $i++) {
                $res = floor($t / (int) $arrBuildings[$i]['LAPSE']);
                $res = $res * (int) $arrBuildings[$i]['PROFIT'];
                $balance += $res * (int) $arrBuildings[$i]['QTY'];
            }
            $user->setBalance($balance);
            $UserUtil->update($user);
            die('OK:' . $balance);
        } else {
            die('ERROR');
        }
require_once '../server/classes/class.buildingInstance.php';
require_once '../server/classes/class.user.php';
require_once '../server/config.php';
session_start();
if (isset($_SESSION['userSession'])) {
    // If the user is already logged in, redirect him to the game.
    header("location: game.php");
}
$loginError = false;
$registerError = false;
if (count($_POST) != 0 && isset($_POST['type'])) {
    $DB = new DBUtil(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
    // DB name
    if ($DB) {
        $UserUtil = new UserUtil($DB);
        $OperUtil = new OperationsUtil($DB);
        if ($_POST['type'] == 'login') {
            $user = $UserUtil->authenticate($_POST['email'], $_POST['password']);
            if ($user) {
                $_SESSION['userSession'] = $user;
                header("location: game.php");
            } else {
                $loginError = true;
            }
        } else {
            if (strlen($_POST['name']) == 0 || strlen($_POST['password']) == 0) {
                $registerError = true;
            } else {
                $user = new User(null, $_POST['name'], $_POST['email']);
                $user->setPassword($_POST['password']);
                $user = $UserUtil->create($user);