"""Revisão de demonstração com dados reais da pasta arquivos/."""

from __future__ import annotations

from accounts.models import User
from reviews.models import Review

DEMO_USER_EMAIL = "demo@example.com"
DEMO_USER_PASSWORD = "demo123"
DEMO_USER_EMAIL_LEGACY = "demo@parsifal.local"
DEMO_REVIEW_SLUG = "revisao-demonstracao"


def ensure_demo_user() -> User:
    user = User.objects.filter(email=DEMO_USER_EMAIL).first()
    if user:
        return user
    legacy = User.objects.filter(email=DEMO_USER_EMAIL_LEGACY).first()
    if legacy:
        legacy.email = DEMO_USER_EMAIL
        legacy.set_password(DEMO_USER_PASSWORD)
        
        return legacy
    user = User(
        name="Ailson Gomes",
        username="demo",
        email=DEMO_USER_EMAIL,
        institution="Parsifal — demonstração",
    )
    user.set_password(DEMO_USER_PASSWORD)
    user.save()
    
    return user


def ensure_demo_data(force: bool = False) -> Review | None:
    from rsl.services.real_review_import import (
        ARCHIVOS_DIR,
        attach_coauthor,
        import_real_review,
    )
    from rsl.services.seed import seed_defaults

    seed_defaults()
    owner = ensure_demo_user()

    if not ARCHIVOS_DIR.is_dir():
        return None

    review = import_real_review(owner, DEMO_REVIEW_SLUG, force=force)
    review.is_demo = True
    review.is_public = True
    
    attach_coauthor(review)
    return review


def demo_credentials() -> dict[str, str]:
    return {
        "email": DEMO_USER_EMAIL,
        "password": DEMO_USER_PASSWORD,
        "slug": DEMO_REVIEW_SLUG,
    }
