<?php
include 'common.php';

const GOLD_ITEM_UID = 50008;
const CRYSTAL_ITEM_UID = 50009;

function LevelUpEventReward($event_id, $account_id, $character_uid, $login_key, $index, $lang){
	//Connect DB
	$dbhandle = DB_Connect();
	
	
	$db_selected = mysqli_select_db($dbhandle, DB_NAME)
	or die("Could not select db");

	mysqli_query($dbhandle,"set session character_set_connection=utf8;");
	mysqli_query($dbhandle,"set session character_set_results=utf8;");
	mysqli_query($dbhandle,"set session character_set_client=utf8;");
	

	if(!CheckLoginKey($dbhandle, $account_id, $login_key))
	{
		PrintLoginKeyError();
		mysqli_close($dbhandle);
		return;
	}

	$stmt = $dbhandle->prepare("SELECT last_rewarded, check_time from event_levelup_data where event_id=? and character_uid=?");	
	$stmt->bind_param("ii", $event_id, $character_uid);
	$stmt->execute();
	$result = $stmt->get_result();	
	if($result)
	{		
		if($row = $result->fetch_assoc())
		{
			$rewards = $row["last_rewarded"];
			$checkTime = $row["check_time"];
			mysqli_stmt_free_result($stmt);

			UpdateDailyCheckReward($dbhandle, $event_id, $account_id, $character_uid, $index, $rewards, $checkTime, $lang);
		}
	}
	else
	{
		//실패
		$return = "LEVELUP_EVENT_REWARD_FAILED";
		$error = mysqli_error($dbhandle);
		$list = "";

		$response = array('result'=>$return,'error'=>$error,'list'=>$list);
		EchoLevelUpReward($response);
	}

	mysqli_close($dbhandle);
}

function UpdateDailyCheckReward($dbhandle, $event_id, $account_id, $character_uid, $index, $rewards, $checkTime, $lang)
{
	$split = "/";

	$arrReward = explode($split,$rewards);
	$arrCheckTime = explode($split, $checkTime);
	if (sizeof($arrReward) <= $index || $index < 0 || sizeof($arrReward) != sizeof($arrCheckTime))
	{
		//실패
		$return = "LEVELUP_EVENT_REWARD_FAILED";
		$error = "Index is out of range";
		$list = "";

		$response = array('result'=>$return,'error'=>$error,'list'=>$list);
		EchoLevelUpReward($response);
		return;
	}

	if ($arrReward[$index] === "0")
	{
		$last_rewarded = "";
		$check_time = "";
		for ($i=0;$i<sizeof($arrReward);$i++)
		{
			if ($index == $i)
			{
				$last_rewarded = $last_rewarded."1";
				$now = new DateTime();
				//$now = new DateTime('now', new DateTimeZone('UTC'));
				$strTime =  date_format($now, "Y-m-d H:i:s");
				$check_time = $check_time.$strTime;
			}
			else
			{
				$last_rewarded = $last_rewarded.$arrReward[$i];
				$check_time = $check_time.$arrCheckTime[$i];
			}
			
			if ($i != sizeof($arrReward) - 1)
			{
				$last_rewarded = $last_rewarded."/";
				$check_time = $check_time."/";
			}
		}

		$stmt = $dbhandle->prepare("UPDATE event_levelup_data set last_rewarded=?, check_time=? where event_id=? and character_uid=?");
		$stmt->bind_param("ssii", $last_rewarded, $check_time, $event_id, $character_uid);
		$result = $stmt->execute();
		$stmt->close();

		if($result)
		{
			GetRewardInfo($dbhandle, $event_id, $account_id, $character_uid, $index, $last_rewarded, $lang);
		}
		else
		{
			//실패
			$return = "LEVELUP_EVENT_REWARD_FAILED";
			$error = mysqli_error($dbhandle);
			$list = "";

			$response = array('result'=>$return,'error'=>$error,'list'=>$list);
			EchoLevelUpReward($response);
		}
	}
	else
	{
		//실패
		//이미 보상 받음
		$return = "LEVELUP_EVENT_REWARD_FAILED";
		$error = "Already get a reward";
		$list = "";

		$response = array('result'=>$return,'error'=>$error,'list'=>$list);
		EchoLevelUpReward($response);
	}
}
function GetRewardInfo($dbhandle, $event_id, $account_id, $character_uid, $index, $last_rewarded, $lang)
{
	$stmt = $dbhandle->prepare("SELECT rewards, rewards_count from event_levelup_info where event_id=?");	
	$stmt->bind_param("i", $event_id);
	$stmt->execute();
	$result = $stmt->get_result();	
	if($result)
	{		
		if($row = $result->fetch_assoc())
		{
			$rewards = $row["rewards"];
			$rewards_count = $row["rewards_count"];
			mysqli_stmt_free_result($stmt);

			$split = "/";
			$arrRewards = explode($split,$rewards);
			$arrRewardsCount = explode($split,$rewards_count);

			$rewardID = $arrRewards[$index];
			$rewardCount = $arrRewardsCount[$index];

			SendRewardItemByCharacterMail($dbhandle, $event_id, $account_id, $character_uid, $rewardID, $rewardCount, $last_rewarded, $lang);
		}
	}
	else
	{
		//실패
		$return = "LEVELUP_EVENT_REWARD_FAILED";
		$error = mysqli_error($dbhandle);
		$list = "";

		$response = array('result'=>$return,'error'=>$error,'list'=>$list);
		EchoLevelUpReward($response);
	}
}
function SendRewardItemByCharacterMail($dbhandle, $event_id, $account_id, $character_uid, $rewardID, $rewardCount, $last_rewarded, $lang)
{
	$split = "|";
	$arrReward = explode($split, $rewardID);
	$arrRewardCount = explode($split, $rewardCount);

	if (sizeof($arrReward) != sizeof($arrRewardCount))
	{
		//실패
		$return = "LEVELUP_EVENT_REWARD_FAILED";
		$error = "Index is out of range";
		$list = "";

		$response = array('result'=>$return,'error'=>$error,'list'=>$list);
		EchoLevelUpReward($response);
		return;
	}

	$now = new DateTime();
	//$now->setTimezone(new DateTimeZone('UTC'));
	$strTime =  date_format($now, "Y-m-d H:i:s");

	$title = "";
	$content = "";
	if ($lang === 'kr')
	{
		$title = "[이벤트 보상]";
		$content = "레벨업 이벤트 보상";
	}
	else if ($lang === 'th')
	{
		$title = "[รางวัลกิจกรรม]";
		$content = "รางวัลกิจกรรมเลเวลอัพ";
	}
	else
	{
		$title = "[Event reward]";
		$content = "Level Up Event Reward";
	}

	$sendMail_result = true;
	for ($i=0;$i<sizeof($arrReward);$i++)
	{
		if (empty($arrReward[$i]) || empty($arrRewardCount[$i]))
		{
			continue;
		}

		if ($arrReward[$i] == GOLD_ITEM_UID)
		{
			$strQuery = "UPDATE character_list SET gold=gold+".$arrRewardCount[$i]." WHERE user_id='".$account_id."' AND character_uid=".$character_uid;
		}
		else if ($arrReward[$i] == CRYSTAL_ITEM_UID)
		{
			$strQuery = "UPDATE account SET cash=cash+".$arrRewardCount[$i]." WHERE user_id='".$account_id."'";
		}
		else
		{
			$strQuery = "INSERT INTO mail_box_character (character_id, title, content, item_id, item_count, time_limit, time_send) VALUES ('".$character_uid."', '".$title."', '".$content."', ".$arrReward[$i].", ".$arrRewardCount[$i].", 720, '".$strTime."')";
		}

		//Query Result
		if($result = @mysqli_query($dbhandle, $strQuery))
		{
			if ($arrReward[$i] == CRYSTAL_ITEM_UID)
			{
				$addType = "LEVELUP_EVENT";
				LogAddCrystal($dbhandle, $account_id, $character_uid, $addType, $arrRewardCount[$i]);
			}
		}
		else
		{
			$sendMail_result = false;
		}
	}

	if ($sendMail_result == true)
	{
		//성공
		$return = "LEVELUP_EVENT_REWARD_OK";
		$error = "";
		$list = $event_id.",".$rewardID.",".$last_rewarded;

		$response = array('result'=>$return,'error'=>$error,'list'=>$list);
		EchoLevelUpReward($response);
	}
	else
	{
		//실패
		$return = "LEVELUP_EVENT_REWARD_FAILED";
		$error = "Mail DB Insert Error";
		$list = "";

		$response = array('result'=>$return,'error'=>$error,'list'=>$list);
		EchoLevelUpReward($response);
	}
	
}


function EchoLevelUpReward($response)
{
	$isXmlHttpRequest = (isset($_SERVER['HTTP_X_REQUESTED_WITH'])) ?
	(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') ? true : false: false;
	($isXmlHttpRequest) ? header('Content-type: application/json') : header('Content-type: text/plain');
 
	echo json_encode($response);
}

$lang = $_GET['lang'];

$json = json_decode(file_get_contents('php://input'));
$event_id = $json->event_id;
$account_id = $json->account_id;
$character_uid = $json->character_uid;
$login_key = $json->login_key;
$index = $json->index;

if(CheckValidatedServerIP())
{
	LevelUpEventReward($event_id, $account_id, $character_uid, $login_key, $index, $lang);
}
else
{
	$response = "INVALIDATED_SERVER";
	$error = "CheckValidatedServerIP ERROR";
	$isXmlHttpRequest = (isset($_SERVER['HTTP_X_REQUESTED_WITH'])) ?
	(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') ? true : false: false;
	($isXmlHttpRequest) ? header('Content-type: application/json') : header('Content-type: text/plain'); 
 
	echo json_encode(array(	'result'=>$response,'error'=>$error	));
}


?>