"""
paths.py — sdílené cesty a souborové utility pro IWRS pipeline.
Verze: 1.0 | Datum: 2026-06-10

Tok souborů:
  IWRS/Incoming/            — sem padají všechny stažené reporty (pacienti i léky)
  IWRS/Incoming/Processed/  — sem se přesouvají po úspěšném importu do MongoDB
Při chybě importu soubor zůstává v Incoming/ a zpracuje se při příštím běhu.
"""

import os
import shutil
import datetime

IWRS_DIR      = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
INCOMING_DIR  = os.path.join(IWRS_DIR, "Incoming")
PROCESSED_DIR = os.path.join(INCOMING_DIR, "Processed")

STUDIES = ["77242113UCO3001", "42847922MDD3003"]


def ensure_dirs():
    os.makedirs(INCOMING_DIR, exist_ok=True)
    os.makedirs(PROCESSED_DIR, exist_ok=True)


def unique_path(directory, stem, ext=".xlsx"):
    """Cesta bez kolize — při kolizi přidá ' HHMM' před příponu."""
    path = os.path.join(directory, f"{stem}{ext}")
    if not os.path.exists(path):
        return path
    time_tag = datetime.datetime.now().strftime("%H%M")
    return os.path.join(directory, f"{stem} {time_tag}{ext}")


def move_done(path, done_dir=None):
    """Přesune zpracovaný soubor do Processed/.

    Kolize → přepíše (Mongo už má aktuální data, soubor je jen archiv).
    """
    dst_dir = done_dir or PROCESSED_DIR
    os.makedirs(dst_dir, exist_ok=True)
    dst = os.path.join(dst_dir, os.path.basename(path))
    if os.path.exists(dst):
        os.remove(dst)
    shutil.move(path, dst)


def sorted_by_mtime(paths):
    """Nejstarší první, bez Excel lock souborů (~$...)."""
    return sorted(
        (p for p in paths if not os.path.basename(p).startswith("~$")),
        key=os.path.getmtime,
    )
