You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

80 lines
2.5 KiB

  1. from sqlalchemy.orm import Session
  2. from schemas.vehicle import CreateVehicle, UpdateVehicle
  3. from db.models.vehicle import Vehicle
  4. from db.repository.user import verify_driver_exists
  5. def create_new_vehicle(vehicle: CreateVehicle, db: Session):
  6. vehicle_object = Vehicle(
  7. **vehicle.model_dump(),
  8. Fuel=0,
  9. AssignedDriverIds=[],
  10. CurrentLocation=[],
  11. MaintenanceNotes=[]
  12. )
  13. db.add(vehicle_object)
  14. db.commit()
  15. db.refresh(vehicle_object)
  16. return vehicle
  17. def assign_vehicle_driver(vehicle_id: int, driver_id: int, db: Session):
  18. vehicledb = db.query(Vehicle).filter(Vehicle.Id == vehicle_id)
  19. vehicle = vehicledb.first()
  20. if not vehicle:
  21. return "novehicle"
  22. if driver_id in vehicle.AssignedDriverIds:
  23. return "alreadyassigned"
  24. if verify_driver_exists(driver_id=driver_id, db=db):
  25. print(vehicle.AssignedDriverIds)
  26. vehicledb.update(
  27. {"AssignedDriverIds": vehicle.AssignedDriverIds + [driver_id]}
  28. )
  29. print(vehicle.AssignedDriverIds)
  30. db.add(vehicle)
  31. db.commit()
  32. db.refresh(vehicle)
  33. return vehicle
  34. # return a 404 error if the driver does not exist
  35. return "nodriver"
  36. def list_vehicles(db: Session):
  37. vehicles = db.query(Vehicle).all()
  38. return vehicles
  39. def get_vehicle_by_id(vehicle_id: int, db: Session):
  40. vehicle = db.query(Vehicle).filter(Vehicle.Id == vehicle_id).first()
  41. return vehicle
  42. def replace_vehicle_data(id: int, vehicle: UpdateVehicle, db: Session):
  43. vehicle_db = db.query(Vehicle).filter(Vehicle.Id == id)
  44. vehicle_object = vehicle_db.first()
  45. if not vehicle_object:
  46. return "vehiclenotfound"
  47. vehicle_object.AssignedDriverIds = vehicle.AssignedDriverIds
  48. vehicle_object.CurrentLocation = vehicle.CurrentLocation
  49. vehicle_object.Fuel = vehicle.Fuel
  50. vehicle_object.LicensePlate = vehicle.LicensePlate
  51. vehicle_object.MaintenanceNotes = vehicle.MaintenanceNotes
  52. vehicle_object.Mileage = vehicle.Mileage
  53. vehicle_object.Model = vehicle.Model
  54. vehicle_object.Type = vehicle.Type
  55. vehicle_object.Year = vehicle.Year
  56. print(vehicle_object)
  57. db.add(vehicle_object)
  58. db.commit()
  59. return vehicle_object
  60. def delete_vehicle_data(id: int, db: Session):
  61. vehicle_db = db.query(Vehicle).filter(Vehicle.Id == id)
  62. vehicle_object = vehicle_db.first()
  63. if not vehicle_object:
  64. return "vehiclenotfound"
  65. db.delete(vehicle_object)
  66. db.commit()
  67. return vehicle_object