<?php
namespace Misuzu;

if(!$msz->isLoggedIn() || !perms_check_user(MSZ_PERMS_USER, $msz->getActiveUser()->getId(), MSZ_PERM_USER_MANAGE_USERS)) {
    echo render_error(403);
    return;
}

$users = $msz->getUsers();
$roles = $msz->getRoles();
$pagination = new Pagination($users->countUsers(), 30);

if(!$pagination->hasValidOffset()) {
    echo render_error(404);
    return;
}

$userList = [];
$userInfos = $users->getUsers(pagination: $pagination, orderBy: 'id');
$roleInfos = [];

foreach($userInfos as $userInfo) {
    $displayRoleId = $userInfo->getDisplayRoleId() ?? '1';
    if(array_key_exists($displayRoleId, $roleInfos))
        $roleInfo = $roleInfos[$displayRoleId];
    else
        $roleInfos[$displayRoleId] = $roleInfo = $roles->getRole($displayRoleId);

    $colour = $userInfo->hasColour() ? $userInfo->getColour() : $roleInfo->getColour();

    $userList[] = [
        'info' => $userInfo,
        'role' => $roleInfo,
        'colour' => $colour,
    ];
}

Template::render('manage.users.users', [
    'manage_users' => $userList,
    'manage_users_pagination' => $pagination,
]);
