"""
Reports Router - Transaction reports
"""

from typing import Optional, Dict, Any
from fastapi import APIRouter, Depends, Query
from sqlalchemy.orm import Session

from src.core.database import get_session
from src.apps.reports import services

router = APIRouter()


@router.get(
    "/transactions",
    response_model=Dict[str, Any],
    tags=["REPORTS"],
    summary="Get Transaction Reports",
    description="Retrieve paginated transaction reports with optional field filtering",
)
async def get_transactions_report(
    page: int = Query(1, ge=1, description="Page number"),
    per_page: int = Query(10, ge=1, le=100, description="Items per page (max 100)"),
    fields: Optional[str] = Query(
        None,
        description="Comma-separated list of fields to include (merchant, customer, invoices, payment_request, billing_address, payment_method)"
    ),
    search: Optional[str] = Query(None, description="Search term"),
    merchant_id: Optional[int] = Query(None, description="Filter by merchant ID"),
    db: Session = Depends(get_session),
) -> Dict[str, Any]:
    """Get transaction reports with pagination and field selection."""
    requested_fields = None
    if fields:
        requested_fields = [f.strip() for f in fields.split(',') if f.strip()]
    
    report_data = services.get_transaction_reports(
        db=db,
        page=page,
        per_page=per_page,
        fields=requested_fields,
        search=search,
        merchant_id=merchant_id
    )
    
    return {
        "data": report_data,
        "status_code": 200,
        "success": True,
        "message": "Transaction reports retrieved successfully"
    }
