# -*- coding: utf-8 -*-
# hub/ticket/state/paths.py

"""Пути хранения Ticket внутри общей системы."""

from __future__ import annotations

import os
from pathlib import Path

from PySide6.QtCore import QStandardPaths


def _default_root_dir() -> Path:
    """Вернуть корневую директорию хранения Ticket."""
    base = QStandardPaths.writableLocation(QStandardPaths.AppDataLocation)
    root_base = Path(base) if base else Path.cwd() / ".usms_data"
    return root_base / "ticket"


ROOT_DIR = Path(os.environ.get("USMS_TICKET_ROOT_DIR", _default_root_dir()))
ACTS_DIR = Path(os.environ.get("USMS_TICKET_ACTS_DIR", ROOT_DIR / "acts"))
REPORTS_DIR = Path(os.environ.get("USMS_TICKET_REPORTS_DIR", ROOT_DIR / "reports"))
_PROJECT_ROOT = Path(__file__).resolve().parents[3]
ARCHIVE_DIR = Path(os.environ.get("USMS_TICKET_ARCHIVE_DIR", _PROJECT_ROOT / "DB data"))
DATA_DIR = Path(os.environ.get("USMS_TICKET_DATA_DIR", ROOT_DIR / "data"))
TASKS_FILE = DATA_DIR / "tasks.json"


def ensure_storage_directories() -> None:
    """Создать каталоги хранения Ticket при фактической работе с данными."""
    ROOT_DIR.mkdir(parents=True, exist_ok=True)
    ACTS_DIR.mkdir(parents=True, exist_ok=True)
    REPORTS_DIR.mkdir(parents=True, exist_ok=True)
    ARCHIVE_DIR.mkdir(parents=True, exist_ok=True)
    DATA_DIR.mkdir(parents=True, exist_ok=True)
