<?php

class PageUserList extends Page
{
  function __construct(System $System)
  {
    parent::__construct($System);
    $this->Title = 'Seznam uživatelů';
    $this->Description = 'Seznam registrovaných uživatelů';
    $this->ParentClass = 'PagePortal';
  }

  function Show(): string
  {
    if (!ModuleUser::Cast($this->System->GetModule('User'))->User->CheckPermission('User', 'ShowList'))
      return 'Nemáte oprávnění';

    $DbResult = $this->Database->query('SELECT COUNT(*) FROM `User`');
    $DbRow = $DbResult->fetch_row();
    $PageList = GetPageList('Users', $DbRow[0]);

    $Output = $PageList['Output'];
    $Output .= '<table class="WideTable" style="font-size: small;">';

    $TableColumns = array(
      array('Name' => 'Name', 'Title' => 'Jméno'),
      array('Name' => 'Email', 'Title' => 'E-mail'),
      array('Name' => '', 'Title' => 'Počítače'),
    );
    $Order = GetOrderTableHeader('Users', $TableColumns, 'Name', 0);
    $Output .= $Order['Output'];

    $Query = 'SELECT * FROM `User` '.$Order['SQL'].$PageList['SQLLimit'];

    $DbResult = $this->Database->query($Query);
    while ($User = $DbResult->fetch_assoc())
    {
      $Devices = array();
      $DbResult2 = $this->Database->query('SELECT `Id` FROM `Member` WHERE `Member`.`ResponsibleUser` = '.$User['Id']);
      while ($Member = $DbResult2->fetch_assoc())
      {
        $DbResult3 = $this->Database->query('SELECT `Name`, `Id` FROM `NetworkDevice` '.
          'WHERE `Member` = '.$Member['Id'].' AND `Used`=1 ORDER BY `Name`');
        while ($Device = $DbResult3->fetch_assoc())
        {
          $Devices[] = $Device['Name'];
        }
      }
      $User['Devices'] = implode(', ', $Devices);

      $Output .= '<tr><td>'.$User['Name'].'</td>'.
      '<td>'.$User['Email'].'</td>'.
      '<td>'.$User['Devices'].'</td></tr>';
    }
    $Output .= '</table>';
    $Output .= $PageList['Output'];

    return $Output;
  }
}
