<?php
requirePHPLib('form');
requirePHPLib('judger');
requirePHPLib('data');

Auth::check() || redirectToLogin();

if (UOJGroup::userCanCreateGroup(Auth::user())) {
	$new_group_form = new UOJForm('new_group');
	$new_group_form->handle = function () {
		DB::insert([
			"insert into `groups`",
			DB::bracketed_fields(['title', 'is_hidden']),
			"values", DB::tuple(['新小组', 1]),
		]);
	};
	$new_group_form->config['submit_container']['class'] = 'text-end';
	$new_group_form->config['submit_button']['class'] = 'btn btn-primary';
	$new_group_form->config['submit_button']['text'] = UOJLocale::get('add new group');
	$new_group_form->config['confirm']['smart'] = true;
	$new_group_form->runAtServer();
}
?>

<?php echoUOJPageHeader(UOJLocale::get('groups')) ?>

<div class="row">
	<!-- left col -->
	<div class="col-md-9">
		<!-- title container -->
		<div class="d-flex justify-content-between">
			<h1>
				<?= UOJLocale::get('groups') ?>
			</h1>

			<?php if (isset($new_group_form)) : ?>
				<?php $new_group_form->printHTML() ?>
			<?php endif ?>
		</div>
		<!-- end title container -->

		<?php
		$groups_caption = UOJLocale::get('groups');
		$users_caption = UOJLocale::get('users count');
		$header = <<<EOD
			<tr>
				<th class="text-center" style="width:5em;">ID</th>
				<th>{$groups_caption}</th>
				<th class="text-center" style="width:8em;">{$users_caption}</th>
			</tr>
		EOD;

		echoLongTable(
			['*'],
			"`groups`",
			'1',
			'order by id asc',
			$header,
			function ($group) {
				$users_count = DB::selectCount([
					"select count(*)",
					"from", "groups_users",
					"where", [
						"group_id" => $group['id'],
					],
				]);

				echo '<tr class="text-center">';
				echo '<td>';
				echo '#', $group['id'], '</td>';

				echo '<td class="text-start">';
				echo '<a class="text-decoration-none" href="/group/', $group['id'], '">', $group['title'], '</a>';
				if ($group['is_hidden']) {
					echo ' <span class="badge text-bg-danger"><i class="bi bi-eye-slash-fill"></i> ', UOJLocale::get('hidden'), '</span> ';
				}
				echo '</td>';

				echo "<td>{$users_count}</td>";

				echo '</tr>';
			},
			[
				'page_len' => 40,
				'div_classes' => ['card', 'my-3'],
				'table_classes' => ['table', 'uoj-table', 'mb-0'],
				'head_pagination' => true,
				'post_filter' => function ($info) {
					return (new UOJGroup($info))->userCanView(Auth::user());
				}
			]
		);
		?>
	</div>
	<!-- end left col -->

	<!-- right col -->
	<aside class="col-md-3 mt-3 mt-md-0">
		<?php uojIncludeView('sidebar') ?>
	</aside>
	<!-- end right col -->
</div>

<?php echoUOJPageFooter() ?>