Browse Source

Fuel Task Added

main
Saruar 1 year ago
parent
commit
617167200b
8 changed files with 155 additions and 1 deletions
  1. +2
    -0
      app/apis/base.py
  2. +71
    -0
      app/apis/v1/route_fuelingtask.py
  3. +1
    -0
      app/db/base.py
  4. +17
    -0
      app/db/models/fuelingtask.py
  5. +1
    -1
      app/db/models/user.py
  6. +49
    -0
      app/db/repository/fuelingtask.py
  7. +1
    -0
      app/python
  8. +13
    -0
      app/schemas/fuelingtask.py

+ 2
- 0
app/apis/base.py View File

@@ -7,6 +7,7 @@ from apis.v1 import (
route_auth, route_auth,
route_task, route_task,
route_maintenancejob, route_maintenancejob,
route_fuelingtask
) )


api_router = APIRouter() api_router = APIRouter()
@@ -17,3 +18,4 @@ api_router.include_router(route_task.router, prefix="/task", tags=["task"])
api_router.include_router( api_router.include_router(
route_maintenancejob.router, prefix="/maintenancejob", tags=["maintenancejob"] route_maintenancejob.router, prefix="/maintenancejob", tags=["maintenancejob"]
) )
api_router.include_router(route_fuelingtask.router, prefix="/fuel", tags=["fueltasks"])

+ 71
- 0
app/apis/v1/route_fuelingtask.py View File

@@ -0,0 +1,71 @@
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
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}", 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)
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"
)

+ 1
- 0
app/db/base.py View File

@@ -6,3 +6,4 @@ from db.models.carpart import CarPart
from db.models.maintenancejob import MaintenanceJob from db.models.maintenancejob import MaintenanceJob
from db.models.drivetask import DriveTask from db.models.drivetask import DriveTask
from db.models.auction import Auction from db.models.auction import Auction
from db.models.fuelingtask import FuelingTask

+ 17
- 0
app/db/models/fuelingtask.py View File

@@ -0,0 +1,17 @@
from sqlalchemy import Column, Integer, String, ForeignKey, DateTime
from sqlalchemy.orm import relationship
from db.base import Base

class FuelingTask(Base):
Id = Column(Integer, primary_key=True, index=True)
VehicleId = Column(ForeignKey("vehicle.Id"), nullable=False)
DriverId = Column(ForeignKey("user.Id"), nullable=False)
CreatedById = Column(ForeignKey("user.Id"), nullable=False)
Date = Column(DateTime, nullable=False)
Description = Column(String, nullable=True)
Cost = Column(Integer, nullable=False)
FuelRefilled = Column(Integer, nullable=False)
GasStationName = Column(String, nullable=False)
ImageBefore = Column(String, nullable=False)
ImageAfter = Column(String, nullable=False)
CreatedBy = relationship("User", back_populates="fuelingTasks", foreign_keys="FuelingTask.CreatedById")

+ 1
- 1
app/db/models/user.py View File

@@ -27,5 +27,5 @@ class User(Base):
#MaintenancePerson-specific relationships #MaintenancePerson-specific relationships
maintenanceJobs = relationship("MaintenanceJob", back_populates="CreatedBy") maintenanceJobs = relationship("MaintenanceJob", back_populates="CreatedBy")
#FuelingPerson-specific relationships #FuelingPerson-specific relationships
#fuelingJobs = relationship("FuelingJob", back_populates="CreatedBy")
fuelingTasks = relationship("FuelingTask", back_populates="CreatedBy", foreign_keys="FuelingTask.CreatedById")



+ 49
- 0
app/db/repository/fuelingtask.py View File

@@ -0,0 +1,49 @@
from sqlalchemy.orm import Session


from schemas.fuelingtask import CreateFuelingTask
from db.models.fuelingtask import FuelingTask
from db.repository.user import get_car_driver, get_user_by_id
from db.repository.vehicle import get_vehicle_by_id

def create_fueling_task(fueling_task: CreateFuelingTask, current_user: int, db: Session):
if not get_vehicle_by_id(fueling_task.VehicleId, db=db):
return "novehicle"
driver = get_car_driver(fueling_task.VehicleId, db=db)
if not driver:
return "nodriver"

fueling_task_object = FuelingTask(
DriverId=driver.Id,
VehicleId=fueling_task.VehicleId,
CreatedById=current_user,
Description=fueling_task.Description,
Date=fueling_task.Date,
Cost=fueling_task.Cost,
FuelRefilled=fueling_task.FuelRefilled,
GasStationName=fueling_task.GasStationName,
ImageBefore=fueling_task.ImageBefore,
ImageAfter=fueling_task.ImageAfter,
)
db.add(fueling_task_object)
db.commit()
db.refresh(fueling_task_object)
return fueling_task_object


def delete_fueling_task(fueling_task_id: int, db: Session):
fueling_task = db.query(FuelingTask).filter(FuelingTask.Id == fueling_task_id).first()
if fueling_task:
db.delete(fueling_task)
db.commit()
return True
return False

def get_fueling_task_by_id(fuel_task_id: int, db: Session):
fuel_task = db.query(FuelingTask).filter(FuelingTask.Id == fuel_task_id).first()
res = fuel_task.__dict__
res["Driver"] = get_user_by_id(fuel_task.DriverId, db=db)
return fuel_task

+ 1
- 0
app/python View File

@@ -0,0 +1 @@
/usr/local/bin/python3.10/usr/local/bin/python

+ 13
- 0
app/schemas/fuelingtask.py View File

@@ -0,0 +1,13 @@
from pydantic import BaseModel, Field
from datetime import datetime


class CreateFuelingTask(BaseModel):
VehicleId: str = Field(...)
Description: str = Field(...)
Date: datetime = Field(...)
Cost: int = Field(...)
FuelRefilled: int = Field(...)
GasStationName: str = Field(...)
ImageBefore: str = Field(...)
ImageAfter: str = Field(...)

Loading…
Cancel
Save