<?php
include 'common.php';


function GetRestoreGold($dbhandle, $level)
{
	$stmt = $dbhandle->prepare("select gold from reset_skill_restore where level=?");	
	$stmt->bind_param("i", $level);
	$stmt->execute();
	$result = $stmt->get_result();

	mysqli_stmt_free_result($stmt);
			
	$error = "";
	
	if($row = $result->fetch_assoc())
	{
		if($row["gold"] > 0)
		{
			return $row["gold"];
		}
	}
	
	return 0;
}

function GetRestoreSkillBook($dbhandle, $level)
{
	$stmt = $dbhandle->prepare("select skill_book from reset_skill_restore where level=?");	
	$stmt->bind_param("i", $level);
	$stmt->execute();
	$result = $stmt->get_result();

	mysqli_stmt_free_result($stmt);
			
	$error = "";
	
	if($row = $result->fetch_assoc())
	{
		if($row["skill_book"] > 0)
		{
			return $row["skill_book"];
		}
	}
	
	return 0;
}

function PrintDebug($response, $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));
	exit; 
}


function DeleteOwnedSkill($dbhandle, $character_uid)
{

	$stmt = $dbhandle->prepare("delete from owned_skill where character_uid=? and is_passive=0");
	$stmt->bind_param("i",  $character_uid);
	$result = $stmt->execute();
	$stmt->close();	
	
	if($result)
	{
		
		$stmt = $dbhandle->prepare("update character_list set skill_slot_0=-1, skill_slot_1=-1, skill_slot_2=-1, skill_slot_3=-1 where character_uid=?");
		$stmt->bind_param("i",  $character_uid);
		$result = $stmt->execute();
		$stmt->close();	
		
		
		return true;
	}
	
	return false;
}

function RestoreGold($dbhandle,$account_id, $character_uid, $gold)
{
			//add gold
			//add skill_book
			
	$stmt = $dbhandle->prepare("update character_list set gold=gold+? where user_id=? and character_uid=?");
	$stmt->bind_param("isi",  $gold , $account_id,$character_uid);
	$result = $stmt->execute();
	$stmt->close();	
	
	if($result)
	{
		return true;
	}
	
	return false;
	
}

function RestoreSkillBook($dbhandle,$account_id, $character_uid, $skill_book)
{
	
	
	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;");
	
	$now = new DateTime();
	//$now->setTimezone(new DateTimeZone('Asia/Seoul'));
	$strTime =  date_format($now, "Y-m-d H:i:s");
	  
	  
	$mail_title = "스킬 초기화로 스킬북을 돌려받았습니다";
	$mail_content = "스킬 초기화로 스킬북을 돌려받았습니다";
	$item_uid = 30110;
	$item_count = $skill_book;
	
	$strQuery = "INSERT INTO mail_box_character (character_id, title, content, item_id, item_count, time_limit, time_send) VALUES (".$character_uid.", '".$mail_title."', '".$mail_content."', ".$item_uid.", ".$item_count.", 720, '".$strTime."')";
	if($result = @mysqli_query($dbhandle, $strQuery))
	{
		return true;
	}
	
	return false;
		
}



function ResetSkillLog($dbhandle, $account_id, $character_uid, $gold, $skill_book)
{
	
	$now = new DateTime();
	//$now->setTimezone(new DateTimeZone('Asia/Seoul'));
	$login_log_time =  date_format($now, "Y-m-d H:i:s");

	$stmt = $dbhandle->prepare("insert into reset_skill_log (user_id, character_uid, restore_gold, restore_book, log_time) values(?,?,?,?,?)");
	$stmt->bind_param("siiis", $account_id, $character_uid, $gold, $skill_book, $login_log_time);
	$result = $stmt->execute();
	$stmt->close();	
	
	if($result)
	{
		return true;
	}
	
	return false;
}


function AlreadyResetFree($dbhandle, $character_uid)
{

	$stmt = $dbhandle->prepare("select count(*) as cnt from reset_skill_log where character_uid=? and price=0");	
	$stmt->bind_param("i", $character_uid);
	$stmt->execute();
	$result = $stmt->get_result();

	mysqli_stmt_free_result($stmt);
			
	$error = "";
	
	if($row = $result->fetch_assoc())
	{
		if($row["cnt"] > 0)
		{
			return true;
		}
	}
	

    return false;
}



function ResetSkill($account_id, $login_key, $character_uid, $lang)
{
	$dbhandle = DB_Connect();
	
	//Select DB
	$db_selected = mysqli_select_db($dbhandle, DB_NAME)
	or die("Could not select db");
	
	if(AlreadyResetFree($dbhandle, $character_uid))
	{
		$response = "RESET_SKILL_FAILED";
		$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));
		exit;
	}


    $stmt = $dbhandle->prepare("select *  from owned_skill where character_uid=? and is_passive=0");	
	$stmt->bind_param("i", $character_uid );
	$stmt->execute();
	$result = $stmt->get_result();
	
	
	//mysqli_stmt_free_result($stmt);
			

	$response = "RESET_SKILL_FAILED";
	$error = "";
	
	
	
	
	if($result)
	{
		$gold =0;
		$skill_book=0;
		while($row = $result->fetch_assoc())
		{			
			$skill_level = $row["level"];
			
			$gold += GetRestoreGold($dbhandle,$skill_level);
			$skill_book += GetRestoreSkillBook($dbhandle,$skill_level);
		}
		
		if($gold !=0 && $skill_book !=0)
		{
			if(ResetSkillLog($dbhandle, $account_id, $character_uid, $gold, $skill_book))
			{

				if(DeleteOwnedSkill($dbhandle, $character_uid))
				{					
					
					if(RestoreGold($dbhandle,$account_id, $character_uid, $gold))
					{
						RestoreSkillBook($dbhandle,$account_id, $character_uid, $skill_book);
						
						$response = "RESET_SKILL_OK";
						$error = "gold:".$gold .", skill_book:".$skill_book;
						
						//echo $response;
						//exit;
					}
				}
			
			}
		}
		else	
		{
			$response = "RESET_SKILL_FAILED";
			$error = "보유한 스킬이 없습니다";
			PrintDebug($response, $error);
			
		}	
		
		
	}
		
	
	
	/* if($row = $result->fetch_assoc())
	{
		if($row["cnt"] > 0)
		{
			$skill_level = $row["level_sum"];
				
			$gold = 0;
			$skill_book =0;
			
			
			$gold = GetRestoreGold($dbhandle,$skill_level);
			$skill_book = GetRestoreSkillBook($dbhandle,$skill_level);
			
			if(ResetSkillLog($dbhandle, $account_id, $character_uid, $gold, $skill_book))
			{

				if(DeleteOwnedSkill($dbhandle, $character_uid))
				{					
					
					if(RestoreSkillBookAndGold($dbhandle,$account_id, $character_uid, $gold, $skill_book))
					{
						$response = "RESET_SKILL_OK";
						$error = "gold:".$gold .", skill_book:".$skill_book;
					}	
				}
			
			}
	
			
		}
		else	
		{
			$response = "RESET_SKILL_FAILED";
			$error = "보유한 스킬이 없습니다";
			PrintDebug($response, $error);
			
		}		
	}
	 */
	
	
	
	
	

    mysqli_close($dbhandle);
	
	
 
    $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));

}
$json = json_decode(file_get_contents('php://input'));
$account_id = $json->account_id;
$login_key = $json->login_key;
$character_uid = $json->character_uid;
$price = $json->price;
$lang = $json->lang;
$check_sum = $json->check_sum;


if(!CheckSum($account_id,$login_key,$check_sum))
{	
	$response = "RESET_SKILL_FAILED";
	
	$error = "RESET_SKILL_FAILED(109)";
	$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));
	exit;
}


	ResetSkill($account_id, $login_key, $character_uid, $lang);




?>