<?php
header('Content-Type: application/json');

$maestro_id = $_POST["maestro_id"];
$player_id = $_POST["player_id"];

include "./../lib/send_reply_json.php";
include "./../setup/connect_db.php";


$koreanAppList = get_typing_practice_app_list(11);
if($koreanAppList === null) {
	set_error_code("no_app_list");
	set_error_message("앱 목록을 가져오지 못했습니다.");
	send_result_fail();
	exit;
}
$englishAppList = get_typing_practice_app_list(12);
if($englishAppList === null) {
	set_error_code("no_app_list");
	set_error_message("앱 목록을 가져오지 못했습니다.");
	send_result_fail();
	exit;
}

$koreanActiveAppList = get_active_typing_practice_app_list($maestro_id, 11);
$englishActiveAppList = get_active_typing_practice_app_list($maestro_id, 12);

$koreanHighScoreList = get_high_score_list($maestro_id, $player_id, $koreanAppList);
$englishHighScoreList = get_high_score_list($maestro_id, $player_id, $englishAppList);

set_data("KoreanAppList", $koreanAppList);
set_data("EnglishAppList", $englishAppList);
set_data("KoreanActiveAppList", $koreanActiveAppList);
set_data("EnglishActiveAppList", $englishActiveAppList);
set_data("KoreanHighScoreList", $koreanHighScoreList);
set_data("EnglishHighScoreList", $englishHighScoreList);
send_result_success();
exit;



function get_typing_practice_app_list($appType) {
	global $db_conn;

	$query = "
		SELECT AppID, AppName, KoreanName
		FROM app
		WHERE AppType = ? AND Status = 1
		ORDER BY AppID ASC";
	$stmt = $db_conn->prepare($query);
	$stmt->bind_param('i', $appType);
	$stmt->execute();
	$stmt->bind_result($app_id, $app_name, $korean_name);

	$return_array = array();
	while($stmt->fetch()) {
	    $row_array['AppID'] = $app_id;
	    $row_array['AppName'] = $app_name;
	    $row_array['KoreanName'] = $korean_name;
		array_push($return_array, $row_array);
	}
	$stmt->close();

	return $return_array;
}

function get_active_typing_practice_app_list($maestro_id, $appType) {
	global $db_conn;

	$query = "
		SELECT A.AppID, A.AppName, A.KoreanName
		FROM app AS A
		INNER JOIN active_app AS AA
		ON A.AppID = AA.AppID AND AA.MaestroID = ? AND A.AppType = ?
		ORDER BY A.AppID ASC";
	$stmt = $db_conn->prepare($query);
	$stmt->bind_param('ii', $maestro_id, $appType);
	$stmt->execute();
	$stmt->bind_result($app_id, $app_name, $korean_name);

	$return_array = array();
	while($stmt->fetch()) {
	    $row_array['AppID'] = $app_id;
	    $row_array['AppName'] = $app_name;
	    $row_array['KoreanName'] = $korean_name;
		array_push($return_array, $row_array);
	}
	$stmt->close();

	return $return_array;
}

function get_high_score_list($maestro_id, $player_id, $appList) {
	global $db_conn;

	$return_array = array();
	$count = count($appList);

	for($i = 0; $i < $count; $i++) {
		$app_id_list = $appList[$i]['AppID'];

		$query = "
			SELECT MAX(AHR.HighestRecord)
			FROM app AS A
			INNER JOIN app_highest_record AS AHR
			ON A.AppID = ? AND A.AppID = AHR.AppID AND AHR.MaestroID = ? AND AHR.PlayerID = ?
			ORDER BY A.AppID ASC";
		$stmt = $db_conn->prepare($query);
		$stmt->bind_param('iii', $app_id_list, $maestro_id, $player_id);
		$stmt->execute();
		$stmt->bind_result($app_highest_record);

		$returnValue = $stmt->fetch();
		$stmt->close();

		if($returnValue === NULL || $returnValue === FALSE)
			continue;

		// $row_array['maestro_id'] = $maestro_id;
		// $row_array['player_id'] = $player_id;
		$row_array['AppID'] = $app_id_list;
		if($app_highest_record === NULL)
			$row_array['AppHighestRecord'] = 0;
		else
			$row_array['AppHighestRecord'] = $app_highest_record;

		array_push($return_array, $row_array);
	}

	return $return_array;
}

?>