From a9097b82d2e5f8d4c3a126d0d13f6972e143a13a Mon Sep 17 00:00:00 2001 From: Hanzo_dev <2002samudiojohan@gmail.com> Date: Wed, 25 Feb 2026 10:34:38 -0500 Subject: [PATCH] Refactor shuttle and route management: price separation, premium preview design, and simplified route creation form --- backend/app/api/shuttles/__init__.py | 25 +- frontend/src/components/AppHeader.vue | 6 +- frontend/src/views/AdminRoutes.vue | 134 +++++++- frontend/src/views/AdminShuttles.vue | 372 +++++++++++++++-------- frontend/src/views/PromoterDashboard.vue | 156 +++++++++- 5 files changed, 534 insertions(+), 159 deletions(-) diff --git a/backend/app/api/shuttles/__init__.py b/backend/app/api/shuttles/__init__.py index 8ed458b..a70b26e 100644 --- a/backend/app/api/shuttles/__init__.py +++ b/backend/app/api/shuttles/__init__.py @@ -18,11 +18,14 @@ async def get_shuttles( destination: Optional[str] = Query(None), company_name: Optional[str] = Query(None), trip_type: Optional[str] = Query(None), - is_active: bool = Query(True), + is_active: Optional[bool] = Query(None), session: Session = Depends(get_session) ): """Get all shuttles with optional filters.""" - statement = select(Shuttle).where(Shuttle.is_active == is_active) + statement = select(Shuttle) + + if is_active is not None: + statement = statement.where(Shuttle.is_active == is_active) if origin: statement = statement.where(Shuttle.origin.contains(origin)) @@ -159,3 +162,21 @@ async def delete_shuttle( session.delete(db_shuttle) session.commit() return {"ok": True} + +@router.patch("/{shuttle_id}/status") +async def update_shuttle_status( + shuttle_id: UUID, + is_active: bool = Query(...), + session: Session = Depends(get_session), + _: bool = Depends(get_current_admin) +): + """Update shuttle active status (Admin only).""" + db_shuttle = session.get(Shuttle, shuttle_id) + if not db_shuttle: + raise HTTPException(status_code=404, detail="Shuttle not found") + + db_shuttle.is_active = is_active + session.add(db_shuttle) + session.commit() + session.refresh(db_shuttle) + return db_shuttle diff --git a/frontend/src/components/AppHeader.vue b/frontend/src/components/AppHeader.vue index 7bf1202..aeb45fa 100644 --- a/frontend/src/components/AppHeader.vue +++ b/frontend/src/components/AppHeader.vue @@ -42,13 +42,13 @@ shield_person Panel Control - -