"""
Classroom API Module

A modular classroom management API for lesson sessions, templates,
homework, materials, analytics, and real-time features.

Usage:
    from classroom import router as classroom_router
    app.include_router(classroom_router, prefix="/api/classroom")
"""

from fastapi import APIRouter

from .routes.sessions import router as sessions_router
from .routes.templates import router as templates_router
from .routes.homework import router as homework_router
from .routes.materials import router as materials_router
from .routes.analytics import router as analytics_router
from .routes.export import router as export_router
from .routes.feedback import router as feedback_router
from .routes.settings import router as settings_router
from .routes.context import router as context_router
from .routes.websocket_routes import router as websocket_router

# Create the main router that combines all sub-routers
router = APIRouter()

# Include all sub-routers
router.include_router(sessions_router)
router.include_router(templates_router)
router.include_router(homework_router)
router.include_router(materials_router)
router.include_router(analytics_router)
router.include_router(export_router)
router.include_router(feedback_router)
router.include_router(settings_router)
router.include_router(context_router)
router.include_router(websocket_router)

# Re-export commonly used items
from .models import (
    # Session Models
    CreateSessionRequest,
    SessionResponse,
    TimerStatus,
    # Template Models
    TemplateCreate,
    TemplateResponse,
    # Homework Models
    CreateHomeworkRequest,
    HomeworkResponse,
    # Material Models
    CreateMaterialRequest,
    MaterialResponse,
    # Analytics Models
    SessionSummaryResponse,
    TeacherAnalyticsResponse,
    ReflectionCreate,
    ReflectionResponse,
    # Feedback Models
    FeedbackCreate,
    FeedbackResponse,
    # Settings Models
    TeacherSettingsResponse,
    # Context Models
    TeacherContextResponse,
)

from .services.persistence import (
    sessions,
    init_db_if_needed,
    DB_ENABLED,
)

from .websocket_manager import (
    ws_manager,
    notify_phase_change,
    notify_session_ended,
)

__all__ = [
    # Main router
    "router",
    # Session storage
    "sessions",
    "init_db_if_needed",
    "DB_ENABLED",
    # WebSocket
    "ws_manager",
    "notify_phase_change",
    "notify_session_ended",
    # Models
    "CreateSessionRequest",
    "SessionResponse",
    "TimerStatus",
    "TemplateCreate",
    "TemplateResponse",
    "CreateHomeworkRequest",
    "HomeworkResponse",
    "CreateMaterialRequest",
    "MaterialResponse",
    "SessionSummaryResponse",
    "TeacherAnalyticsResponse",
    "ReflectionCreate",
    "ReflectionResponse",
    "FeedbackCreate",
    "FeedbackResponse",
    "TeacherSettingsResponse",
    "TeacherContextResponse",
]
