<?php
requireLib('bootstrap5');
requireLib('mathjax');
requirePHPLib('form');

Auth::check() || redirectToLogin();
UOJUserBlog::userIsOwner(Auth::user()) || UOJUser::checkPermission(Auth::user(), 'blogs.view') || UOJResponse::page403();
?>

<?php echoUOJPageHeader(UOJLocale::get('contests::contest self reviews')) ?>

<h1>
	<?= UOJUserBlog::id() ?> 的所有赛后总结
</h1>

<?php
$col_names = ['contest_id'];
$from = 'contests_registrants inner join contests on contests_registrants.contest_id = contests.id';
$cond = ["username" =>  UOJUserBlog::id(), "has_participated" =>  1];
$tail = 'order by start_time desc, id desc';
$config = [
	'page_len' => 10,
	'div_classes' => ['card', 'card-default', 'table-responsive'],
	'table_classes' => ['table', 'table-bordered', 'text-center', 'align-middle', 'uoj-table', 'mb-0'],
];

$header_row = '';
$header_row .= '<tr>';
$header_row .= '<th style="width:28em">' . UOJLocale::get('contests::contest name') . '</th>';
$header_row .= '<th style="width:14em">' . UOJLocale::get('problems::problem') . '</th>';
$header_row .= '<th style="width:35em">' . UOJLocale::get('contests::problem self review') . '</th>';
$header_row .= '<th style="width:35em">' . UOJLocale::get('contests::contest self review') . '</th>';
$header_row .= '</tr>';

$parsedown = HTML::parsedown();
$purifier = HTML::purifier_inline();

$print_row = function ($row) use ($parsedown, $purifier) {
	$contest = UOJContest::query($row['contest_id']);
	$problems = $contest->getProblemIDs();
	$result = '';

	for ($i = 0; $i < count($problems); $i++) {
		$problem = UOJContestProblem::query($problems[$i], $contest);
		$review = DB::selectSingle([
			"select content",
			"from contests_reviews",
			"where", [
				"contest_id" => $contest->info['id'],
				"problem_id" => $problem->info['id'],
				"poster" => UOJUserBlog::id(),
			]
		]);

		$result .= '<tr>';

		if ($i == 0) {
			$result .= '<td rowspan="' . count($problems) . '"><a href="' . $contest->getUri() . '">' . $contest->info['name'] . '</a></td>';
		}

		$result .= '<td>' . $problem->getLink(['with' => 'letter', 'simplify' => true]) . '</td>';
		$result .= '<td>' . $purifier->purify($review ? $parsedown->line($review) : '') . '</td>';

		if ($i == 0) {
			$review = DB::selectSingle([
				"select content",
				"from contests_reviews",
				"where", [
					"contest_id" => $contest->info['id'],
					"problem_id" => -1,
					"poster" => UOJUserBlog::id(),
				]
			]);

			$result .= '<td rowspan="' . count($problems) . '">' . $purifier->purify($review ? $parsedown->line($review) : '') . '</td>';
		}

		$result .= '</tr>';
	}

	echo $result;
};

echoLongTable($col_names, $from, $cond, $tail, $header_row, $print_row, $config);
?>

<?php echoUOJPageFooter() ?>