"""CSV export routes. Planner-scoped: these are the management reports."""

from __future__ import annotations

from datetime import UTC, datetime

from fastapi import APIRouter, Depends
from fastapi.responses import Response
from sqlalchemy.orm import Session

from app.db import get_db
from app.services import exports
from app.services.identity import CurrentActor, require_planner

router = APIRouter(prefix="/api/exports", tags=["exports"])


def _csv_response(body: str, stem: str) -> Response:
    stamp = datetime.now(UTC).strftime("%Y%m%d")
    return Response(
        content=body,
        media_type="text/csv; charset=utf-8",
        headers={"Content-Disposition": f'attachment; filename="{stem}-{stamp}.csv"'},
    )


@router.get("/tickets.csv")
def export_tickets(
    db: Session = Depends(get_db),
    actor: CurrentActor = Depends(require_planner),
) -> Response:
    return _csv_response(exports.ticket_status_csv(db), "coachpapa-ticket-status")


@router.get("/item-movement.csv")
def export_item_movement(
    db: Session = Depends(get_db),
    actor: CurrentActor = Depends(require_planner),
) -> Response:
    return _csv_response(exports.item_movement_csv(db), "coachpapa-item-movement")
