from fastapi import Depends, APIRouter, HTTPException, status from sqlalchemy.orm import Session from db.session import get_db from db.repository.fuelingtask import ( create_fueling_task, delete_fueling_task, get_fueling_task_by_id ) from schemas.fuelingtask import CreateFuelingTask, OutputFuelingTask from db.models.user import User from apis.v1.route_auth import get_current_user router = APIRouter() @router.post("/", status_code=status.HTTP_201_CREATED) def create_fuelingtask( fuelingtask: CreateFuelingTask, db: Session = Depends(get_db), current_user: User = Depends(get_current_user), ): if current_user.Role != "FuelingPerson" and current_user.Role != "Admin": raise HTTPException( status_code=403, detail="You are not authorized to perform this action" ) fuelingtask_res = create_fueling_task( fueling_task=fuelingtask, current_user=current_user.Id, db=db ) if fuelingtask_res == "nodriver": raise HTTPException( status_code=404, detail="Driver ID not found" ) if fuelingtask_res == "novehicle": raise HTTPException( status_code=404, detail="Vehicle ID not found" ) return fuelingtask_res @router.get("/{fueling_task_id}", response_model=OutputFuelingTask, status_code=status.HTTP_200_OK) def get_fuelingtask( fueling_task_id: int, db: Session = Depends(get_db), current_user: User = Depends(get_current_user), ): if current_user.Role != "FuelingPerson" and current_user.Role != "Admin": raise HTTPException( status_code=403, detail="You are not authorized to perform this action" ) fuelingtask = get_fueling_task_by_id(fueling_task_id, db) if fuelingtask == "notfound": raise HTTPException( status_code=404, detail="fuck off" ) return fuelingtask @router.delete("/{fueling_task_id}", status_code=status.HTTP_204_NO_CONTENT) def delete_fuelingtask( fueling_task_id: int, db: Session = Depends(get_db), current_user: User = Depends(get_current_user), ): if current_user.Role != "FuelingPerson" and current_user.Role != "Admin": raise HTTPException( status_code=403, detail="You are not authorized to perform this action" ) if not delete_fueling_task(fueling_task_id, db): raise HTTPException( status_code=404, detail="Fueling task not found" )