/**
 * JavaScript для главной страницы приложения
 */
document.addEventListener('DOMContentLoaded', function() {
    // Загрузка данных статуса системы
    loadSystemStatus();
    
    // Загрузка последних действий
    loadRecentActions();
    
    // Обработчики кнопок
    setupButtonHandlers();
});

/**
 * Загрузка данных о статусе системы
 */
function loadSystemStatus() {
    fetch('/api/system/status')
        .then(response => response.json())
        .then(data => {
            if (data.success) {
                updateSystemStatusUI(data);
            } else {
                console.error('Ошибка загрузки статуса системы:', data.message);
            }
        })
        .catch(error => {
            console.error('Ошибка при запросе статуса системы:', error);
        });
}

/**
 * Обновление UI данными о статусе системы
 */
function updateSystemStatusUI(data) {
    // Статус базы данных
    const dbStatusElement = document.querySelector('.card:first-of-type .badge');
    if (dbStatusElement) {
        if (data.database && data.database.connected) {
            dbStatusElement.className = 'badge bg-success';
            dbStatusElement.textContent = 'Подключено';
        } else {
            dbStatusElement.className = 'badge bg-danger';
            dbStatusElement.textContent = 'Отключено';
        }
    }
    
    // Тип базы данных
    const dbTypeElement = document.querySelector('.card:first-of-type .card-body div:nth-child(2) span');
    if (dbTypeElement && data.database && data.database.driver) {
        dbTypeElement.textContent = data.database.driver.toUpperCase();
    }
    
    // Версия приложения
    const appVersionElement = document.querySelector('.card:first-of-type .card-body div:nth-child(3) span');
    if (appVersionElement && data.app && data.app.version) {
        appVersionElement.textContent = data.app.version;
    }
    
    // Режим работы
    const appModeElement = document.querySelector('.card:first-of-type .card-body div:nth-child(4) span');
    if (appModeElement && data.app && data.app.mode) {
        appModeElement.textContent = data.app.mode === 'development' ? 'Разработка' : 'Продакшн';
    }
    
    // Активные плагины
    const pluginsElement = document.querySelector('.card:first-of-type .card-body div:nth-child(5) span');
    if (pluginsElement && data.plugins) {
        pluginsElement.textContent = `${data.plugins.active} из ${data.plugins.total}`;
    }
    
    // Обновляем информацию в footer
    const footerVersionElement = document.querySelector('footer .text-end p');
    if (footerVersionElement && data.app && data.app.version) {
        footerVersionElement.textContent = `Версия ${data.app.version}`;
    }
}

/**
 * Загрузка последних действий в системе
 */
function loadRecentActions() {
    fetch('/api/system/recent-actions')
        .then(response => response.json())
        .then(data => {
            if (data.success) {
                updateRecentActionsUI(data.actions);
            } else {
                console.error('Ошибка загрузки последних действий:', data.message);
            }
        })
        .catch(error => {
            console.error('Ошибка при запросе последних действий:', error);
        });
}

/**
 * Обновление UI данными о последних действиях
 */
function updateRecentActionsUI(actions) {
    if (!actions || !actions.length) return;
    
    const actionsListElement = document.querySelector('.list-group');
    if (!actionsListElement) return;
    
    // Очищаем список
    actionsListElement.innerHTML = '';
    
    // Заполняем список действиями
    actions.forEach(action => {
        const listItem = document.createElement('li');
        listItem.className = 'list-group-item d-flex justify-content-between align-items-center';
        
        // Определяем иконку в зависимости от типа действия
        let iconClass = 'bi-info-circle text-info';
        if (action.type === 'database') {
            iconClass = 'bi-database text-primary';
        } else if (action.type === 'plugin') {
            iconClass = 'bi-plugin text-warning';
        } else if (action.type === 'settings') {
            iconClass = 'bi-gear text-info';
        } else if (action.type === 'system') {
            iconClass = 'bi-check-circle text-success';
        }
        
        listItem.innerHTML = `
            <div>
                <i class="bi ${iconClass} me-2"></i>
                ${action.message}
            </div>
            <small class="text-muted">${formatTimeAgo(action.timestamp)}</small>
        `;
        
        actionsListElement.appendChild(listItem);
    });
}

/**
 * Форматирование времени в формате "сколько времени назад"
 */
function formatTimeAgo(timestamp) {
    const now = new Date();
    const actionTime = new Date(timestamp);
    const diffInSeconds = Math.floor((now - actionTime) / 1000);
    
    if (diffInSeconds < 60) {
        return 'только что';
    } else if (diffInSeconds < 3600) {
        const minutes = Math.floor(diffInSeconds / 60);
        return `${minutes} ${pluralize(minutes, 'минуту', 'минуты', 'минут')} назад`;
    } else if (diffInSeconds < 86400) {
        const hours = Math.floor(diffInSeconds / 3600);
        return `${hours} ${pluralize(hours, 'час', 'часа', 'часов')} назад`;
    } else {
        const days = Math.floor(diffInSeconds / 86400);
        return `${days} ${pluralize(days, 'день', 'дня', 'дней')} назад`;
    }
}

/**
 * Функция для правильного склонения слов в зависимости от числа
 */
function pluralize(number, one, few, many) {
    const lastDigit = number % 10;
    const lastTwoDigits = number % 100;
    
    if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {
        return many;
    }
    
    if (lastDigit === 1) {
        return one;
    }
    
    if (lastDigit >= 2 && lastDigit <= 4) {
        return few;
    }
    
    return many;
}

/**
 * Настройка обработчиков для кнопок
 */
function setupButtonHandlers() {
    // Кнопка настроек в шапке
    const settingsBtn = document.querySelector('header .btn-outline-light:first-of-type');
    if (settingsBtn) {
        settingsBtn.addEventListener('click', function() {
            window.location.href = '/settings';
        });
    }
    
    // Кнопка выхода в шапке (только для главной страницы)
    const exitBtn = document.querySelector('header .btn-outline-light:last-of-type');
    if (exitBtn && window.location.pathname === '/') {
        exitBtn.addEventListener('click', function() {
            if (confirm('Вы уверены, что хотите выйти из приложения?')) {
                fetch('/api/app/shutdown', {
                    method: 'POST'
                })
                .then(response => response.json())
                .then(data => {
                    if (data.success) {
                        alert('Приложение будет остановлено.');
                    } else {
                        alert('Ошибка при остановке приложения: ' + data.message);
                    }
                })
                .catch(error => {
                    console.error('Ошибка при отправке запроса на остановку:', error);
                    alert('Ошибка при остановке приложения.');
                });
            }
        });
    }
} 