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

include "./../lib/send_reply_json.php";
include "./../setup/connect_db.php";
include "./../lib/maestro_account_info.php";
include "./../lib/db_maestro.php";
include "./../lib/maestro_log.php";
include "./../mail/mail_setting.php";
include "./../mail/send_mail.php";

$maestroID = $_POST["maestro_id"];

$result = register_maestro($maestroID);
if($result <= 0) {
	set_error_message("마에스트로 계정 활성화 실패");
	send_result_fail();
	exit;
}

add_maestro_test_player($maestroID);

$playerID = get_maestro_test_player($maestroID);
if($playerID === null) {
	set_error_message("마에스트로 테스트 플레이어 생성 실패");
	send_result_fail();
	exit;
}

$result = set_maestro_test_player($maestroID, $playerID);
if($result === null || $result === 0) {
	set_error_message("마에스트로 테스트 플레이어 등록 실패");
	send_result_fail();
	exit;
}

add_default_activated_apps($maestroID);

add_maestro_sample_player_data($maestroID);
$count = count_registered_player($maestroID);
update_count_registered_player($maestroID, $count);

$maestro_data = get_maestro_data($maestroID);
sendMailRegisterDone($maestro_data["name"], $maestro_data["email"]);
insertMaestroLog("register_maestro", $maestroID, $maestro_data["name"]." / ".$maestro_data["email"]);

send_result_success();
exit;


function register_maestro($maestroID) {
	global $db_conn;

	$query = "
		UPDATE maestro
		SET ActivateStatus = 1, AvailableActivateDateTime = DATE_ADD(NOW(), INTERVAL 1 YEAR)
		WHERE MaestroID = ?
	";
	$stmt = $db_conn->prepare($query);
	$stmt->bind_param("i", $maestroID);
	$stmt->execute();

	return $stmt->affected_rows;
}

function add_maestro_test_player($maestroID) {
	global $db_conn;

	$query = "
		INSERT INTO player (MaestroID, Name, EnterCode, AccountType)
		VALUES (?, '마에스트로', '', 1)
	";
	$stmt = $db_conn->prepare($query);
	$stmt->bind_param("i", $maestroID);
	$stmt->execute();
}

function get_maestro_test_player($maestroID) {
	global $db_conn;

	$query = "
		SELECT PlayerID
		FROM player
		WHERE MaestroID = ? AND AccountType = 1
	";
	$stmt = $db_conn->prepare($query);
	$stmt->bind_param("i", $maestroID);
	$stmt->execute();
	$stmt->bind_result($playerID);
	$stmt->fetch();
	$stmt->close();

	return $playerID;
}

function set_maestro_test_player($maestroID, $playerID) {
	global $db_conn;

	$query = "
		UPDATE maestro
		SET MaestroTestID = ?
		WHERE MaestroID = ?
	";
	$stmt = $db_conn->prepare($query);
	$stmt->bind_param("ii", $playerID, $maestroID);
	$stmt->execute();

	return $stmt->affected_rows;
}

function add_default_activated_apps($maestroID) {
	global $db_conn;

	$query = "
		SELECT AppID
		FROM app
		WHERE Status = 1;
	";
	$stmt = $db_conn->prepare($query);
	$stmt->bind_param("i", $maestroID);
	$stmt->execute();
	$stmt->bind_result($appID);

	$activeAppList = array();
	while($stmt->fetch()) {
		array_push($activeAppList, $appID);
	}
	$stmt->close();

	$count = count($activeAppList);
	for($i = 0; $i < $count; $i++) {
		$activeAppID = $activeAppList[$i];

		$query = "
			INSERT INTO active_app (MaestroID, AppID)
			VALUES (?, ?);
		";
		$stmt = $db_conn->prepare($query);
		$stmt->bind_param("ii", $maestroID, $activeAppID);
		$stmt->execute();
		$stmt->close();
	}
}

function add_maestro_sample_player_data($maestro_id) {
	$samplePlayerList = make_sample_player_list($maestro_id);
	for($i = 0; $i < count($samplePlayerList); $i++) {
		insert_maestro_sample_player_data($maestro_id, $samplePlayerList[$i]);
	}
}


function insert_maestro_sample_player_data($maestro_id, $player) {
	global $db_conn;

	$query = "
		INSERT INTO player (MaestroID, Name, EnterCode, AccountType)
		VALUES (?, ?, ?, ?)
	";
	$stmt = $db_conn->prepare($query);
	$stmt->bind_param("issi",
		$maestro_id,
		$player["Name"],
		$player["EnterCode"],
		$player["AccountType"]
	);
	$stmt->execute();
	$stmt->close();
}

function make_sample_player_list() {
	$samplePlayerList = array();

	$player["Name"] = "050215";
	$player["EnterCode"] = "050215";
	$player["AccountType"] = 0;
	array_push($samplePlayerList, $player);

	$player["Name"] = "6-3_이철수";
	$player["EnterCode"] = "1111";
	$player["AccountType"] = 0;
	array_push($samplePlayerList, $player);

	$player["Name"] = "3-1김영희";
	$player["EnterCode"] = "0301";
	$player["AccountType"] = 0;
	array_push($samplePlayerList, $player);

	$player["Name"] = "홍길동";
	$player["EnterCode"] = "181231";
	$player["AccountType"] = 0;
	array_push($samplePlayerList, $player);

	return $samplePlayerList;
}

function count_registered_player($maestroID) {
	global $db_conn;

	$query = "
		SELECT COUNT(PlayerID)
		FROM player
		WHERE MaestroID = ? AND AccountType = 0
	";
	$stmt = $db_conn->prepare($query);
	$stmt->bind_param("i", $maestroID);
	$stmt->execute();
	$stmt->bind_result($countPlayer);
	// while($stmt->fetch())
	$stmt->fetch();
	$stmt->close();

	return $countPlayer;
}

function update_count_registered_player($maestroID, $countPlayer) {
	global $db_conn;

	$query = "
		UPDATE maestro
		SET PlayerCount = ?
		WHERE MaestroID = ?
	";
	$stmt = $db_conn->prepare($query);
	$stmt->bind_param("ii", $countPlayer, $maestroID);
	$stmt->execute();
}

?>