import os
import sys
from pathlib import Path
from dotenv import load_dotenv

load_dotenv()

BOT_TOKEN: str = os.environ["MAX_BOT_TOKEN"]

# ── Dry-run режим ─────────────────────────────────────────────────────────────
# Включается флагом --dry-run при запуске или переменной DRY_RUN=true в .env.
# В этом режиме все записывающие вызовы к Intradesk НЕ выполняются —
# вместо этого их payload печатается в консоль.
DRY_RUN: bool = (
    "--dry-run" in sys.argv
    or os.environ.get("DRY_RUN", "").lower() in ("1", "true", "yes")
)

_project_root = Path(__file__).parent
_db_path_raw = os.environ.get("DB_PATH", "data/support.db")
DB_PATH: str = str(
    Path(_db_path_raw) if Path(_db_path_raw).is_absolute() else _project_root / _db_path_raw
)
ADMIN_USERNAME: str = os.environ.get("ADMIN_USERNAME", "admin")
ADMIN_PASSWORD: str = os.environ.get("ADMIN_PASSWORD", "changeme")
ADMIN_HOST: str = os.environ.get("ADMIN_HOST", "0.0.0.0")
ADMIN_PORT: int = int(os.environ.get("ADMIN_PORT", "8080"))

# ── Intradesk API ──────────────────────────────────────────────────────────────
INTRADESK_BASE_URL: str = os.environ.get("INTRADESK_BASE_URL", "https://apigw.intradesk.ru")
# Ключ для /settings/odata (клиенты, пользователи)
INTRADESK_API_KEY: str = os.environ.get("INTRADESK_API_KEY", "")
# Ключ для /tasklist/odata (чтение заявок) и /taskhistory (история/комментарии)
INTRADESK_TASKS_API_KEY: str = os.environ.get("INTRADESK_TASKS_API_KEY", "")
# Ключ для /changes/v3/tasks (создание и изменение заявок)
INTRADESK_CHANGES_API_KEY: str = os.environ.get("INTRADESK_CHANGES_API_KEY", "")
# Путь сервиса для новых заявок (Настройки → Сервисы → «Путь сервиса», напр. "84681/84683/")
INTRADESK_DEFAULT_SERVICE: str = os.environ.get("INTRADESK_DEFAULT_SERVICE", "")
# ID типа заявки по умолчанию (Настройки → Заявки → Типы заявок → ID)
INTRADESK_DEFAULT_TASK_TYPE: str = os.environ.get("INTRADESK_DEFAULT_TASK_TYPE", "")
# ID статуса «Выполнена» для кнопки «Закрыть заявку» (Настройки → Справочники → Статусы → ID)
INTRADESK_CLOSE_STATUS_ID: str = os.environ.get("INTRADESK_CLOSE_STATUS_ID", "")
# Интервал опроса Intradesk для push-уведомлений, секунды (0 — отключить)
NOTIFICATION_POLL_INTERVAL: int = int(os.environ.get("NOTIFICATION_POLL_INTERVAL", "120"))
# ID группы исполнителей для фильтрации заявок
INTRADESK_EXECUTOR_GROUP: str = os.environ.get("INTRADESK_EXECUTOR_GROUP", "")
# Список ID исполнителей через запятую (доп. фильтр)
INTRADESK_EXECUTORS: list[str] = [
    e.strip()
    for e in os.environ.get("INTRADESK_EXECUTORS", "").split(",")
    if e.strip()
]
