/*
    Предрейсовые осмотры - мобильное приложение
    Утилиты информации о приложении и режимах работы
*/

//---------
//Константы
//---------

//Версия приложения
const APP_VERSION = '1.0.0';

//Название приложения
const APP_NAME = 'Парус© Предрейсовые осмотры';

//Описание приложения
const APP_DESCRIPTION = 'Предназначено для проведения предрейсовых осмотров транспортных средств.';

//Режимы работы на русском
const MODE_LABELS = {
    ONLINE: 'Онлайн',
    OFFLINE: 'Офлайн',
    NOT_CONNECTED: 'Не подключено'
};

//Описания режимов работы
const MODE_DESCRIPTIONS = {
    ONLINE: 'Приложение подключено к серверу и синхронизирует данные.',
    OFFLINE: 'Приложение работает без подключения к серверу. Используются локальные данные.',
    NOT_CONNECTED: 'Приложение ещё не подключалось к серверу. Настройте сервер в настройках.'
};

//-----------
//Тело модуля
//-----------

//Получение названия режима на русском
const getModeLabel = mode => {
    return MODE_LABELS[mode] || 'Неизвестно';
};

//Получение описания режима
const getModeDescription = mode => {
    return MODE_DESCRIPTIONS[mode] || 'Неизвестный режим работы.';
};

//Формирование информации о приложении
const getAppInfo = (options = {}) => {
    const { mode, serverUrl, isDbReady } = options;

    const lines = [`Версия: ${APP_VERSION}`];

    if (mode) {
        lines.push(`Режим работы: ${getModeLabel(mode)}`);
    }

    if (serverUrl !== undefined) {
        lines.push(`Сервер: ${serverUrl || 'не настроен'}`);
    }

    if (isDbReady !== undefined) {
        lines.push(`База данных: ${isDbReady ? 'готова' : 'загружается...'}`);
    }

    return lines.join('\n');
};

//Формирование полного описания приложения
const getFullAppDescription = () => {
    return `Демонстрационное приложение\nВерсия ${APP_VERSION}\n\n${APP_DESCRIPTION}`;
};

//----------------
//Интерфейс модуля
//----------------

module.exports = {
    APP_VERSION,
    APP_NAME,
    APP_DESCRIPTION,
    MODE_LABELS,
    MODE_DESCRIPTIONS,
    getModeLabel,
    getModeDescription,
    getAppInfo,
    getFullAppDescription
};
