@@ -11,7 +11,7 @@ from db.repository.vehicle import ( | |||||
get_vehicle_by_id, | get_vehicle_by_id, | ||||
replace_vehicle_data, | replace_vehicle_data, | ||||
delete_vehicle_data, | delete_vehicle_data, | ||||
update_vehicle_location, | |||||
update_vehicle_geoloc, | |||||
) | ) | ||||
from db.models.user import User | from db.models.user import User | ||||
from apis.v1.route_auth import get_current_user | from apis.v1.route_auth import get_current_user | ||||
@@ -143,20 +143,24 @@ def delete_vehicle( | |||||
@router.post("/{vehicle_id}/location", status_code=status.HTTP_200_OK) | @router.post("/{vehicle_id}/location", status_code=status.HTTP_200_OK) | ||||
async def update_vehicle_location( | |||||
vehicle_id: int, | |||||
def update_vehicle_location( | |||||
vehicle_id: int, | |||||
location: VehicleLocation, | location: VehicleLocation, | ||||
current_user: User = Depends(get_current_user), | current_user: User = Depends(get_current_user), | ||||
db: Session = Depends(get_db), | |||||
db: Session = Depends(get_db), | |||||
): | ): | ||||
print(current_user) | print(current_user) | ||||
print(current_user.Name) | print(current_user.Name) | ||||
if current_user.Role != "Driver": | |||||
raise HTTPException(status_code=403, detail="You are not authorized to perform this action") | |||||
if current_user.Role != "Driver": | |||||
raise HTTPException( | |||||
status_code=403, detail="You are not authorized to perform this action" | |||||
) | |||||
if current_user.AssignedVehicle != vehicle_id: | if current_user.AssignedVehicle != vehicle_id: | ||||
raise HTTPException(status_code=403, detail="You are not the correct car driver") | |||||
raise HTTPException( | |||||
status_code=403, detail="You are not the correct car driver" | |||||
) | |||||
print("FUNNY") | print("FUNNY") | ||||
vehicle = update_vehicle_location(vehicle_id = vehicle_id, location=location, db=db) | |||||
vehicle = update_vehicle_geoloc(vehicle_id=vehicle_id, location=location, db=db) | |||||
if vehicle == "vehiclenotfound": | if vehicle == "vehiclenotfound": | ||||
raise HTTPException(status_code=404, detail="Vehicle not found") | raise HTTPException(status_code=404, detail="Vehicle not found") | ||||
return vehicle | |||||
return vehicle |
@@ -1,5 +1,5 @@ | |||||
from sqlalchemy.orm import Session | from sqlalchemy.orm import Session | ||||
from schemas.vehicle import CreateVehicle, UpdateVehicle | |||||
from schemas.vehicle import CreateVehicle, UpdateVehicle, VehicleLocation | |||||
from db.models.vehicle import Vehicle | from db.models.vehicle import Vehicle | ||||
from db.base import User | from db.base import User | ||||
from db.repository.user import get_car_driver | from db.repository.user import get_car_driver | ||||
@@ -19,12 +19,13 @@ def create_new_vehicle(vehicle: CreateVehicle, db: Session): | |||||
return vehicle_object | return vehicle_object | ||||
def update_vehicle_location(vehicle_id: int, location: list[str], db: Session): | |||||
def update_vehicle_geoloc(vehicle_id: int, location: VehicleLocation, db: Session): | |||||
vehicle_db = db.query(Vehicle).filter(Vehicle.Id == vehicle_id) | vehicle_db = db.query(Vehicle).filter(Vehicle.Id == vehicle_id) | ||||
vehicle_object = vehicle_db.first() | vehicle_object = vehicle_db.first() | ||||
if not vehicle_object: | if not vehicle_object: | ||||
return "vehiclenotfound" | return "vehiclenotfound" | ||||
vehicle_object.CurrentLocation = location | |||||
print("Location: " + str(location.CurrentLocation)) | |||||
vehicle_object.CurrentLocation = location.CurrentLocation | |||||
db.add(vehicle_object) | db.add(vehicle_object) | ||||
db.commit() | db.commit() | ||||
db.refresh(vehicle_object) | db.refresh(vehicle_object) | ||||
@@ -101,5 +102,3 @@ def delete_vehicle_data(id: int, db: Session): | |||||
db.delete(vehicle_object) | db.delete(vehicle_object) | ||||
db.commit() | db.commit() | ||||
return vehicle_object | return vehicle_object | ||||
@@ -2,14 +2,13 @@ | |||||
from datetime import datetime | from datetime import datetime | ||||
from pydantic import BaseModel, EmailStr, Field | from pydantic import BaseModel, EmailStr, Field | ||||
from typing import Optional | |||||
class UserCreate(BaseModel): | class UserCreate(BaseModel): | ||||
Email: EmailStr | Email: EmailStr | ||||
Password: str = Field(..., min_length=7, max_length=20) | Password: str = Field(..., min_length=7, max_length=20) | ||||
Name: str = Field(..., min_length=3, max_length=50) | Name: str = Field(..., min_length=3, max_length=50) | ||||
MiddleName: str = Field(None, min_length=3, max_length=50) | |||||
MiddleName: str = Field(None) | |||||
LastName: str = Field(..., min_length=3, max_length=50) | LastName: str = Field(..., min_length=3, max_length=50) | ||||
ContactNumber: str = Field(..., min_length=12, max_length=12) | ContactNumber: str = Field(..., min_length=12, max_length=12) | ||||
BirthDate: datetime = Field(...) | BirthDate: datetime = Field(...) | ||||
@@ -26,6 +25,7 @@ class ShowUser(BaseModel): | |||||
BirthDate: datetime | BirthDate: datetime | ||||
Email: EmailStr | Email: EmailStr | ||||
Role: str | Role: str | ||||
AssignedVehicle: int | None | |||||
class Config: | class Config: | ||||
orm_mode = True | orm_mode = True | ||||
@@ -36,5 +36,6 @@ class UpdateVehicle(BaseModel): | |||||
MaintenanceNotes: Optional[list[str]] = None | MaintenanceNotes: Optional[list[str]] = None | ||||
AssignedDriver: Optional[int] = None | AssignedDriver: Optional[int] = None | ||||
class VehicleLocation(BaseModel): | class VehicleLocation(BaseModel): | ||||
CurrentLocation: list[str] | |||||
CurrentLocation: list[str] |