from fastapi import APIRouter, Depends, Query
from sqlalchemy.orm import Session

from app.database import get_db
from app.dependencies import require_admin_token
from app.models import User
from app.schemas import AdminDashboardResponse
from app.services.dashboard_service import get_admin_dashboard

router = APIRouter(tags=["admin-dashboard"])


@router.get(
    "/get-dashboard",
    response_model=AdminDashboardResponse,
    summary="Admin dashboard: stats, charts, and recent community activity",
)
@router.get(
    "/dashboard",
    response_model=AdminDashboardResponse,
    summary="Alias for get-dashboard",
)
def admin_dashboard(
    db: Session = Depends(get_db),
    _: User = Depends(require_admin_token),
    period: str = Query(default="monthly", description="Chart period filter: monthly or weekly"),
):
    return get_admin_dashboard(db, period=period)
