from fastapi import APIRouter, Depends from app.services.report_service import ReportService from app.models.reports import DailyReport, WeeklyReport from datetime import date from fastapi.responses import JSONResponse from fastapi import HTTPException, status router = APIRouter() @router.get("/daily/{date}", response_model=DailyReport) async def get_daily_report( date: date, service: ReportService = Depends(ReportService) ): try: return await service.generate_daily_report(date.isoformat()) except Exception as e: raise HTTPException( status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail=f"Failed to generate daily report: {str(e)}" ) @router.get("/weekly", response_model=WeeklyReport) async def get_weekly_report( end_date: date = None, service: ReportService = Depends(ReportService) ): try: return await service.generate_weekly_report( end_date.isoformat() if end_date else None ) except Exception as e: raise HTTPException( status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail=f"Failed to generate weekly report: {str(e)}" )