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, get_all_fueling_tasks, ) from schemas.fuelingtask import ( CreateFuelingTask, OutputFuelingTask, OutputFuelingTaskMin, OutputFuelingTaskList, ) from db.models.user import User from apis.v1.route_auth import get_current_user router = APIRouter() @router.post("/", response_model=OutputFuelingTask, status_code=status.HTTP_201_CREATED) def create_fuelingtask( fuelingtask: CreateFuelingTask = Depends(), 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 != "Fueling" 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") @router.get("/", response_model=OutputFuelingTaskList, status_code=status.HTTP_200_OK) def get_all( db: Session = Depends(get_db), current_user: User = Depends(get_current_user) ): if current_user.Role != "Admin" and current_user.Role != "Fueling": raise HTTPException( status_code=403, detail="You are not authorized to perform this action" ) tasks = get_all_fueling_tasks(db) return tasks