from django.urls import path
from . import views
from . import views_seatmap
from . import views_payments

urlpatterns = [
    path('', views.dashboard, name='dashboard'),

    # Authentication / user management
    path('register/', views.register_view, name='register'),
    path('login/', views.login_view, name='login'),
    path('logout/', views.logout_view, name='logout'),
    path('verify-otp/', views.verify_otp, name='verify_otp'),
    path('resend-otp/', views.resend_otp, name='resend_otp'),
    path('auth/google/', views.google_login, name='google_login'),
    path('api/v1/auth/google/callback', views.google_callback, name='google_callback'),
    path('login-logs/', views.login_logs, name='login_logs'),
    path('login-logs/download/', views.download_login_logs, name='download_login_logs'),
    
       # Operator: buses
    path('operator/buses/', views.operator_buses, name='operator_buses'),
    path('operator/buses/add/', views.add_bus, name='add_bus'),
    path('operator/buses/<int:bus_id>/edit/', views.edit_bus, name='edit_bus'),

    # Admin: approvals + commission
    path('manage/operators/', views.manage_operators, name='manage_operators'),
    path('manage/buses/', views.manage_buses, name='manage_buses'),
    path('manage/commission/', views.commission_report, name='commission_report'),

    # Passenger: booking
    path('book/', views.book_ticket, name='book_ticket'),
    path('my-bookings/', views.my_bookings, name='my_bookings'),
    path('seat-map/<int:schedule_id>/', views_seatmap.seat_map_status, name='seat_map_status'),
    path('seat-map/<int:schedule_id>/lock/', views_seatmap.seat_map_lock, name='seat_map_lock'),
    path('seat-map/<int:schedule_id>/release/', views_seatmap.seat_map_release, name='seat_map_release'),
    path('checkout/<int:booking_id>/', views_payments.checkout, name='checkout'),
    path('payments/esewa/success/', views_payments.esewa_success, name='esewa_success'),
    path('payments/esewa/failure/', views_payments.esewa_failure, name='esewa_failure'),

    # Manual testing pages
    path('test/users/', views.test_users, name='test_users'),
    path('test/operators/', views.test_operators, name='test_operators'),
    path('test/buses/', views.test_buses, name='test_buses'),
    path('test/routes/', views.test_routes, name='test_routes'),
    path('test/schedules/', views.test_schedules, name='test_schedules'),
    path('test/bookings/', views.test_bookings, name='test_bookings'),
    
    path('operator/dashboard/', views.operator_dashboard, name='operator_dashboard'),
    path('manage/dashboard/', views.admin_dashboard, name='admin_dashboard'),
    
    path('operator/routes/', views.operator_routes, name='operator_routes'),
    path('operator/routes/add/', views.add_route, name='add_route'),
    path('operator/routes/<int:route_id>/edit/', views.edit_route, name='edit_route'),
    path('operator/routes/<int:route_id>/toggle/', views.toggle_route, name='toggle_route'),
    
    path('operator/schedules/', views.operator_schedules, name='operator_schedules'),
    path('operator/schedules/add/', views.add_schedule, name='add_schedule'),
    path('operator/schedules/<int:schedule_id>/edit/', views.edit_schedule, name='edit_schedule'),
    
    path('booking/<int:booking_id>/cancel/', views.cancel_booking, name='cancel_booking'),
    path('booking/<int:booking_id>/rate/', views.rate_booking, name='rate_booking'),
    path('booking/<int:booking_id>/ticket/', views.eticket_pdf, name='eticket_pdf'),
    path('operator/schedules/<int:schedule_id>/cancel/', views.cancel_schedule, name='cancel_schedule'),
    
    path('manage/users/', views.manage_users, name='manage_users'),
    path('manage/cities/', views.manage_cities, name='manage_cities'),
    path('manage/bookings-oversight/', views.booking_oversight, name='booking_oversight'),
]