Kaynağa Gözat

maintenance

main
Madiwka 1 yıl önce
ebeveyn
işleme
5fe1550c78
5 değiştirilmiş dosya ile 35 ekleme ve 23 silme
  1. +8
    -10
      app/apis/v1/route_maintenancejob.py
  2. +3
    -2
      app/db/models/maintenancejob.py
  3. +1
    -1
      app/db/models/user.py
  4. +21
    -8
      app/db/repository/maintenancejob.py
  5. +2
    -2
      app/schemas/maintenancejob.py

+ 8
- 10
app/apis/v1/route_maintenancejob.py Dosyayı Görüntüle

@@ -23,14 +23,18 @@ def create_maintenancejob(
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user),
):
if current_user.Role != "Maintenance" and current_user.Role != "Admin":
if current_user.Role != "Driver" and current_user.Role != "Admin":
raise HTTPException(
status_code=403, detail="You are not authorized to perform this action"
)

maintenancejob_res = create_new_maintenancejob(
maintenancejob=maintenancejob, maintenanceworker=current_user.Id, db=db
maintenancejob=maintenancejob, db=db
)
if maintenancejob_res == "nodriver":
raise HTTPException(
status_code=404, detail="This car has no driver"
)
return maintenancejob_res


@@ -74,13 +78,7 @@ def get_all_maintenancejobs(
def get_maintenancejob(
maintenance_job_id: int,
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user),
):
if current_user.Role != "Maintenance" and current_user.Role != "Admin":
raise HTTPException(
status_code=403, detail="You are not authorized to perform this action"
)

maintenancejob = get_maintenance_job(maintenance_job_id, db)
print(maintenancejob)
return maintenancejob
@@ -93,11 +91,11 @@ def change_status(
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user),
):
if current_user.Role != "Maintenance" and current_user.Role != "Admin":
if current_user.Role != "Maintenance":
raise HTTPException(
status_code=403, detail="You are not authorized to perform this action"
)
result = change_maintenance_status(maintenance_job_id, status, db)
result = change_maintenance_status(maintenance_job_id, status, current_user.Id, db)
if result is None:
raise HTTPException(status_code=404, detail="Maintenance job not found")
return result

+ 3
- 2
app/db/models/maintenancejob.py Dosyayı Görüntüle

@@ -7,10 +7,11 @@ class MaintenanceJob(Base):
Id = Column(Integer, primary_key=True, index=True)
# a list of weak entities of class CarPart
CarParts = relationship("CarPart", back_populates="parent")
CreatedBy = relationship("User", back_populates="maintenanceJobs", foreign_keys="MaintenanceJob.MaintenanceWorker")
FinishedBy = relationship("User", back_populates="maintenanceJobs", foreign_keys="MaintenanceJob.MaintenanceWorker")
VehicleID = Column(ForeignKey("vehicle.Id"), nullable=False)
Vehicle = relationship("Vehicle", back_populates="maintenanceJobs")
VehicleDriverId = Column(ForeignKey("user.Id"), nullable=False)
Description = Column(String, nullable=False)
Date = Column(DateTime, nullable=False)
MaintenanceWorker = Column(ForeignKey("user.Id"), nullable=False)
MaintenanceWorker = Column(ForeignKey("user.Id"), nullable=True)
Status = Column(String, nullable=False)

+ 1
- 1
app/db/models/user.py Dosyayı Görüntüle

@@ -25,7 +25,7 @@ class User(Base):
driveTasks = relationship("DriveTask", back_populates="CreatedBy")
vehicle = relationship("Vehicle", back_populates="driver")
#MaintenancePerson-specific relationships
maintenanceJobs = relationship("MaintenanceJob", back_populates="CreatedBy", foreign_keys="MaintenanceJob.MaintenanceWorker")
maintenanceJobs = relationship("MaintenanceJob", back_populates="FinishedBy", foreign_keys="MaintenanceJob.MaintenanceWorker")
#FuelingPerson-specific relationships
fuelingTasks = relationship("FuelingTask", back_populates="CreatedBy", foreign_keys="FuelingTask.CreatedById")


+ 21
- 8
app/db/repository/maintenancejob.py Dosyayı Görüntüle

@@ -8,14 +8,19 @@ from db.repository.user import get_car_driver


def create_new_maintenancejob(
maintenancejob: CreateMaintenanceJob, maintenanceworker, db: Session
maintenancejob: CreateMaintenanceJob, db: Session
):
vehicledriver = get_car_driver(maintenancejob.VehicleID, db)
if (vehicledriver != False):
vehicledriver = vehicledriver.Id
else:
return "nodriver"
maintenancejob_object = MaintenanceJob(
MaintenanceWorker=maintenanceworker,
Description=maintenancejob.Description,
VehicleID=maintenancejob.VehicleID,
Date=maintenancejob.Date,
VehicleDriverId=get_car_driver(maintenancejob.VehicleID, db).Id,
Status="Requested",
)
print("OBJECT CREATED")
db.add(maintenancejob_object)
@@ -78,19 +83,27 @@ def get_maintenance_job(maintenancejob_id: int, db: Session):
# print(type(result.CarPartsList))
res["TotalCost"] = calculate_total_cost(maintenancejob.CarParts)
# print(result.TotalCost)
res["AssignedTo"] = maintenancejob.CreatedBy.__dict__
if maintenancejob.Status == "Complete":
res["FinishedBy"] = maintenancejob.FinishedBy.__dict__
res["Vehicle"] = maintenancejob.Vehicle.__dict__
print("DB Access complete")
return maintenancejob


def change_maintenance_status(maintenancejob_id: int, status: str, db: Session):
def change_maintenance_status(maintenancejob_id: int, status: str, worker_id: int, db: Session):
maintenancejob = (
db.query(MaintenanceJob).filter(MaintenanceJob.Id == maintenancejob_id).first()
)
if maintenancejob is None:
return None
maintenancejob.Status = status
db.commit()
db.refresh(maintenancejob)
return maintenancejob
if (status == "Complete"):
maintenancejob.MaintenanceWorker = worker_id
maintenancejob.Status = status
db.commit()
db.refresh(maintenancejob)
return maintenancejob
else:
return None


+ 2
- 2
app/schemas/maintenancejob.py Dosyayı Görüntüle

@@ -9,7 +9,6 @@ from schemas.vehicle import OutputVehicle
class CreateMaintenanceJob(BaseModel):
Description: str = Field(...)
VehicleID: int = Field(...)
VehicleDriverId: int = Field(...)
Date: datetime = Field(...)


@@ -20,4 +19,5 @@ class OutputMaintenanceJob(BaseModel):
CarPartsList: Optional[List[ShowCarPart]]
TotalCost: int
Vehicle: OutputVehicle
AssignedTo: ShowUser
FinishedBy: Optional[ShowUser]
Status: str

Yükleniyor…
İptal
Kaydet