<?php

include_once '.autoload.php';

use Axioma\Utils as utils;

$errors = array();
$warnings = array();
$info = array();
$error = '';

$app = new Axioma\Server\App();
$server_status = $app->apiRequest('available_licenses');
if ($server_status['status'] == 'OK') {
    list($available_license, $total_license) = explode('/', $server_status['data']);
    $active_users = $total_license - $available_license;
}

$log_error = '';
$log_tail = $app->getLogTail(20, DateInterval::createFromDateString('30 minutes'), $log_error);

$showUsers = isset($_POST['show_users']) && ($_POST['show_users'] == 'true');
if ($showUsers) {
    $user_list = $app->getActiveUsers($error);
    if (!empty($error)) {
        $errors[] = $error;
    }
} else {
    $user_list = array();
}
?>

<div class="statusDiv normalBorder">
    <table class="statusTbl">
        <tr>
            <th><?php echo _('Состояние сервера:'); ?></th>
            <td>
                <?php if ($server_status['status'] == 'OK') {
                    echo '<b class="ok">&#x2714; ' . _('ОК') . '</b>';
                } else {
                    echo '<b class="error">&#x26d4; ' . _('Ошибка') . '</b>';
                }
                ?>
            </td>
        </tr>
        <tr>
        <?php if ($server_status['status'] == 'OK') { ?>
            <th><?php echo _('Свободные лицензии:'); ?></th>
            <td><?php echo $available_license . _(' из ') . $total_license; ?></td>
        <?php } else { ?>
            <th><?php echo _('Причина ошибки:'); ?></th>
            <td><?php echo $server_status['reason']; ?></td>
        <?php } ?>
        </tr>
        <tr>
            <th><?php echo _('Время проверки:'); ?></th>
            <td><?php $now = new \DateTime();
            echo $now->format('d.m.y H:i T'); ?></td>
        </tr>
    </table>

    <div id="userTbl_div" <?php if (!$showUsers) {
        echo 'hidden';
                          } ?>>
    <table id="userTbl" class="display compact">
    <thead>
        <tr>
        <th><?php echo _('Имя'); ?></th>
        <th><?php echo _('IP адрес'); ?></th>
        <th><?php echo _('id сессии'); ?></th>
        <th><?php echo _('Версия ПО'); ?></th>
        <th><?php echo _('Начало сеанса'); ?></th>
        <th><?php echo _('Действует до'); ?></th>
        </tr>
    </thead>
    <tbody>
        <?php foreach ($user_list as $user) { ?>
        <tr>
        <td><?php echo $user['username']; ?></td>
        <td><?php echo $user['ip']; ?></td>
        <td><?php echo $user['sid']; ?></td>
        <td><?php echo $user['version']; ?></td>
        <td><?php echo $user['acquired']->format('d.m.y H:i'); ?></td>
        <td><?php echo $user['expire']->format('d.m.y H:i'); ?></td>
        </tr>
        <?php } ?>
    </tbody>
    </table>
    </div>
</div>

<div class="statusDiv normalBorder">
<table class="buttonTbl">
    <tr>
        <td><input type="button" value="<?php echo _('Параметры сервера'); ?>"
               onclick="$('#content').load('install.php');"/>
        </td>
        <td><input type="button" id="log_button" value="<?php echo _('Показать журнал сервера'); ?>"
                            <?php if (empty($log_tail)) {
                                echo 'disabled';
                            } ?>
                            onclick="show_log();"/>
        </td>
    </tr>
    <tr>
        <td><input type="button" id="user_button"
                value="<?php echo $showUsers ? _('Скрыть список пользователей') : _('Показать активные лицензии'); ?>"
                onclick="toggle_users();"/>
        </td>
        <td><input type="button" value="<?php echo _('Обновить данные'); ?>" onclick="reload_page();"/></td>
    </tr>
    <tr>
        <td><input type="button" value="<?php echo _('История использования лицензий'); ?>"
               onclick="$('#content').load('history.php');"/>
        </td>
        <td>&nbsp;</td>
    </tr>
</table>
</div>

<div id="server_log" class="statusDiv normalBorder" hidden>
    <p><i><?php echo _('Журнал последнего запуска:'); ?></i></p>
    <p>
    <?php if (isset($log_tail)) {
        foreach (array_reverse($log_tail) as $line) {
            echo $line . '<br>';
        }
    } else {
        echo '<em class="error">' . $log_error . '</em>';
    }
    ?>
    </p>
</div>
<?php utils::showMessageBlocks($errors, $warnings, $info, 'statusDiv'); ?>

<script>
    window.onload = function(event) {
        if (!document.getElementById('content')) {
            window.location = 'index.php?page=status';
        }
    };
    var showUsers = <?php echo $showUsers ? 'true' : 'false'; ?>;
    function show_log() {
        $('#server_log').toggle();
        $('#log_button').val($('#server_log').is(":hidden") ?
            "<?php echo _('Показать журнал сервера'); ?>" :
            "<?php echo _('Скрыть журнал сервера'); ?>");
    }
    function reload_page() {
        $.post("status.php", {'show_users': showUsers}, function(data) {
            $('#content').html(data);
        });
    }
    function toggle_users() {
        showUsers = !showUsers;
        if (showUsers) {
            reload_page();
        } else {
            $('#user_button').val("<?php echo _('Показать активные лицензии'); ?>");
            $('#userTbl_div').hide();
        }
    }
    if (jQuery) {
        $(document).ready(function() {
            $('#userTbl').DataTable( {
                dom: 'Bl<"right"f>tip',
                paging: true,
                lengthMenu: [ [10, 20, 50, -1], [10, 20, 50, "<?php echo _('Все'); ?>"] ],
                pagingType: 'numbers',
                columnDefs: [
                    {'visible': false, 'targets': [1,2,3]},
                    {'searchable': false, 'targets': [2,3,4,5]}
                ],
                order: [ 5, 'desc' ],
                buttons: [
                    { extend: 'colvis', text: "<?php echo _('Колонки'); ?>"},
                    'spacer'
                ],
                language: {
                    lengthMenu: "<?php echo _('Показать _MENU_ записей'); ?>",
                    info: "<?php echo _('Страница _PAGE_ из _PAGES_ (записи _START_-_END_)'); ?>",
                    infoFiltered: "<?php echo _('(найдено _TOTAL_ записей из _MAX_)'); ?>",
                    zeroRecords: "<?php echo _('Не найдены записи'); ?>",
                    emptyTable: "<?php echo _('Нет активных пользователей'); ?>",
                    search: "<?php echo _('Поиск:'); ?>"
                },
                stateSave: true
            });
        });
    }
</script>
