from fastapi import Depends, APIRouter, HTTPException, status from fastapi.responses import StreamingResponse from requests import Session from apis.v1.route_auth import get_current_user from db.models.user import User from db.repository.report import get_repot_jobsdone_by_driver, get_pdf from db.session import get_db router = APIRouter() @router.get("/jobsdone/{driver_id}", status_code=status.HTTP_200_OK) def get_report_jobsdone(driver_id: int, db: Session = Depends(get_db), current_user: User = Depends(get_current_user)): if current_user.Role != "Admin": raise HTTPException( status_code=403, detail="You are not authorized to perform this action" ) report = get_repot_jobsdone_by_driver(driver_id, db) if report == "notdriver": raise HTTPException( status_code=404, detail=f"Driver with id {driver_id} not found" ) return report @router.get("/pdf/{driver_id}", status_code=status.HTTP_200_OK) def get_report_pdf(driver_id: int, db: Session = Depends(get_db), current_user: User = Depends(get_current_user)): if current_user.Role != "Admin": raise HTTPException( status_code=403, detail="You are not authorized to perform this action" ) report = get_pdf(driver_id, db) if report == "notdriver": raise HTTPException( status_code=404, detail=f"Driver with id {driver_id} not found" ) return StreamingResponse(open(report, "rb"), media_type="application/pdf")