<?php
/*
 *
 * @copyright (c) 2011 animegame.eu
 * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public Licence
 *
 */
include_once(ROOT_PATH.'/include/user.inc.php');
include_once(ROOT_PATH.'/include/parse.inc.php');
include_once(ROOT_PATH.'/include/clan.inc.php');
include_once(ROOT_PATH.'/include/clan_fights.inc.php');

function doTheClanfightTest($acceptTestCase, $amount) {

mysql_query('UPDATE user SET clan = null'); // clean all clans


$ids = getClanFightCapableClanIds();
$row = mysql_fetch_row(mysql_query('SELECT COUNT(*) FROM user WHERE 0 < (SELECT COUNT(*) FROM chars WHERE besitzer = user.id)'));

if(count($ids) < $row[0] / MIN_MEMBERS) {
	//echo 'We may optimize the user('.$row[0].')/clan('.count($ids).') ratio<br>';

	mysql_query('UPDATE user SET clan = null'); // clean all clans
	mysql_query('UPDATE clan SET leader = null, co_leader = null');
	$sql = 'SELECT id FROM clan ORDER BY ID ASC';
	$qry = mysql_query($sql);
	while( $row = mysql_fetch_assoc($qry)) {
		$sql = 'UPDATE user SET clan = ' .$row['id'] . ' WHERE clan is null AND 0 < (SELECT COUNT(*) FROM chars WHERE besitzer = user.id) LIMIT 5';
		//echo $sql . '<br>';
		mysql_query($sql);

		if(mysql_affected_rows() == 0) {
			break;
		}

	}

	$qry = mysql_query('SELECT clan, min(id) as id FROM user WHERE clan is not null GROUP BY clan');
	while($row = mysql_fetch_assoc($qry)) {
		$sql = 'UPDATE clan SET leader = '.$row['id'].' WHERE id = '.$row['clan'];
		//echo $sql . '<br>';
		mysql_query($sql);
	}

}


mysql_query('DELETE FROM clan_challenge_requests');
mysql_query('DELETE FROM clan_challenges');
mysql_query('DELETE FROM events');
mysql_query('DELETE FROM clan_locked');




$ids = getClanFightCapableClanIds();
if(count($ids) < 2) {
	echo "zu wenig Clans die Clanfights machen können " . count($ids);
	die();
}

for($i=0;$i<count($ids) - 1;$i+=2) {
	calculateClanFight(getClan($ids[$i]), getClan($ids[$i+1]), $acceptTestCase);
}

#$clan1 = getClan($ids[0]);
#$clan2 = getClan($ids[1]);

function calculateClanFight($clan1, $clan2, $acceptTestCase) {
#	echo $clan1['id'] . ' ' . $clan2['id'] . ' ' . ($acceptTestCase?'TRUE':'FALSE') . '<br>';
$leaderClan1 = getUser($clan1['leader']);
$leaderClan2 = getUser($clan2['leader']);

$result = challengeClan($leaderClan1, $clan2['id'], $amount);
if($result !== NULL) {
	echo $result.'<br>';
}

if(getOpenChallengeRequestCount($clan1['id']) != 1) {
	echo 'Fehler: Es sollte mindestens ein Fight offen sein!!<br>';
}

if(getOpenChallengeRequestCount($clan2['id']) != 1) {
	echo 'Fehler: Es sollte mindestens ein Fight offen sein!!<br>';
}

if(count(getOpenChallengeRequests($clan1['id'])) != 1) {
	echo 'Fehler: Es sollte mindestens ein Fight offen sein!!<br>';
}

if(count(getOpenChallengeRequests($clan2['id'])) != 1) {
	echo 'Fehler: Es sollte mindestens ein Fight offen sein!!<br>';
}

$challengeArray = getOpenChallengeRequests($clan2['id']);

if($acceptTestCase) {

	$result = acceptChallengeRequest($challengeArray[0]['clan_requester'], $leaderClan2);

	if($result !== NULL) {
		echo $result.'<br>';
	}

	if(getOpenChallengeRequestCount($clan1['id']) > 0) {
		echo 'Fehler in getOpenChallengeRequestCount: Es sollte kein Fight-Request offen sein!!<br>';
	}

	if(getOpenChallengeRequestCount($clan2['id'])  > 0) {
		echo 'Fehler in getOpenChallengeRequestCount: Es sollte kein Fight-Request offen sein!!<br>';
	}

	if(count(getOpenChallengeRequests($clan1['id']))  > 0) {
		echo 'Fehler in getOpenChallengeRequests ('.$clan1['id'].'): Es sollte kein Fight-Request offen sein!!<br>';
	}

	if(count(getOpenChallengeRequests($clan2['id']))  > 0) {
		echo 'Fehler in getOpenChallengeRequests ('.$clan2['id'].'): Es sollte kein Fight-Request offen sein!!<br>';
	}


	if(count(getOpenChallengeIDs($clan1['id'])) != 1) {
		echo 'Fehler: Es sollte mindestens ein Fight offen sein!!<br>';
	}

	if(count(getOpenChallengeIDs($clan2['id'])) != 1) {
		echo 'Fehler: Es sollte mindestens ein Fight offen sein!!<br>';
	}

	$challengeIDsArray = getOpenChallengeIDs($clan1['id']);
	$clan_challenge_id = $challengeIDsArray[0];
	if(count(getParticipatingClanIDs($clan_challenge_id)) != 2) {
		echo 'Fehler in getParticipatingClanIDs: Es sollten 2 Clans teilnehmen!<br>';
	}

	// Okay now let the chars participate

	$chars1 = getCharsOfUser($leaderClan1['id']);
	$chars2 = getCharsOfUser($leaderClan2['id']);

	$found = -1;

        for($i=0;$i<count($chars1);$i++) {
                if($chars1[$i]['status'] == 'Frei') {
                        $found = $i;
                        break;
                }
        }
        if($found == -1) {
                echo 'Konnte keinen freien Char fuer User ' .$leaderClan1 . ' finden<br>';
        }


	$result = joinChallenge($clan_challenge_id, $leaderClan1, $chars1[$found]['id'], 1);
	if($result !== NULL) {
		echo $result .'<br>';
	}

	$found = -1;

	for($i=0;$i<count($chars2);$i++) {
		if($chars2[$i]['status'] == 'Frei') {
			$found = $i;
			break;
		}
	}
	if($found == -1) {
		echo 'Konnte keinen freien Char fuer User ' .$leaderClan2 . ' finden<br>';
	}

	$result  = joinChallenge($clan_challenge_id, $leaderClan2, $chars2[$found]['id'], 1);
	if($result !== NULL) {
		echo $result .'<br>';
	}



} else {
	$result = denyChallengeRequest($challengeArray[0]['clan_requester'], $leaderClan2);

	if($result !== NULL) {
		echo $result .'<br>';
	}

	if(getOpenChallengeRequestCount($clan1['id']) > 0) {
		echo 'Fehler in getOpenChallengeRequestCount: Es sollte kein Fight-Request offen sein!!<br>';
	}

	if(getOpenChallengeRequestCount($clan2['id'])  > 0) {
		echo 'Fehler in getOpenChallengeRequestCount: Es sollte kein Fight-Request offen sein!!<br>';
	}

	if(count(getOpenChallengeRequests($clan1['id']))  > 0) {
		echo 'Fehler in getOpenChallengeRequests ('.$clan1['id'].'): Es sollte kein Fight-Request offen sein!!<br>';
	}

	if(count(getOpenChallengeRequests($clan2['id']))  > 0) {
		echo 'Fehler in getOpenChallengeRequests ('.$clan2['id'].'): Es sollte kein Fight-Request offen sein!!<br>';
	}

}
}

}


?>