from django.urls import path
from rest_framework.routers import DefaultRouter
from rest_framework_simplejwt.views import TokenRefreshView
from .views import (
    ProductViewSet,  # Make sure this is imported!
    CustomTokenObtainPairView,
    CreateSalesUserAPIView,
    CreateAdminUserAPIView,
    CustomerRegisterAPIView,
    DiscountRuleCreateAPIView,
    DiscountRuleDeleteAPIView,
    DiscountRuleListAPIView,
    DiscountRuleUpdateAPIView,
    MyOrdersAPIView,
    ProductCreateAPIView,
    ProductListAPIView,
    ProductToggleActiveAPIView,
    CartCreateAPIView,
    CartItemAddAPIView,
    CartDetailAPIView,
    CartItemRemoveAPIView,
    OrderCreateAPIView,
    OrderStatusUpdateAPIView,
    PendingOrdersAPIView,
    ApprovedOrdersAPIView,
    RejectedOrdersAPIView,
    DeliveredOrdersAPIView,
    DailyReportAPIView,
    WeeklyReportAPIView,
    MonthlyReportAPIView,
    NotificationListAPIView,
    ForgotPasswordAPIView,
    ResetPasswordAPIView,
    ChangePasswordView,
    CartItemUpdateAPIView,
    CurrentUserAPIView,
)

router = DefaultRouter()
router.register(r'products', ProductViewSet, basename='product')

urlpatterns = [
    # all your individual paths...
    path("auth/token/", CustomTokenObtainPairView.as_view(), name="token_obtain_pair"),
    path("auth/token/refresh/", TokenRefreshView.as_view(), name="token_refresh"),

    path("admin/create-sales/", CreateSalesUserAPIView.as_view(), name="create-sales"),
    path("admin/create-admin/", CreateAdminUserAPIView.as_view(), name="create-admin"),
    path("auth/register/", CustomerRegisterAPIView.as_view(), name="customer-register"),

    path("products/", ProductListAPIView.as_view(), name="product-list"),
    path("products/create/", ProductCreateAPIView.as_view(), name="product-create"),
    path("products/<int:pk>/toggle-active/", ProductToggleActiveAPIView.as_view(), name="product-toggle"),
    path("admin/products/", ProductListAPIView.as_view(), name="admin-product-list"),
    path("cart/create/", CartCreateAPIView.as_view(), name="cart-create"),
    path("cart/add/", CartItemAddAPIView.as_view(), name="cart-add"),
    path("cart/<int:cart_id>/", CartDetailAPIView.as_view(), name="cart-detail"),
    path("cart/item/remove/", CartItemRemoveAPIView.as_view(), name="cart-item-remove"),
    path("cart/my-cart/", CartDetailAPIView.as_view(), name="my-cart"),
    path("orders/create/", OrderCreateAPIView.as_view(), name="order-create"),
    path("orders/<int:order_id>/update-status/", OrderStatusUpdateAPIView.as_view(), name="order-status-update"),
    path("orders/my/", MyOrdersAPIView.as_view(), name="my-orders"),
    path("orders/pending/", PendingOrdersAPIView.as_view(), name="orders-pending"),
    path("orders/approved/", ApprovedOrdersAPIView.as_view(), name="orders-approved"),
    path("orders/rejected/", RejectedOrdersAPIView.as_view(), name="orders-rejected"),
    path("orders/delivered/", DeliveredOrdersAPIView.as_view(), name="orders-delivered"),
    path("reports/daily/", DailyReportAPIView.as_view(), name="report-daily"),
    path("reports/weekly/", WeeklyReportAPIView.as_view(), name="report-weekly"),
    path("reports/monthly/", MonthlyReportAPIView.as_view(), name="report-monthly"),
    path("notifications/", NotificationListAPIView.as_view(), name="notifications-list"),
    path("auth/forgot-password/", ForgotPasswordAPIView.as_view(), name="forgot-password"),
    path("auth/reset-password/", ResetPasswordAPIView.as_view(), name="reset-password"),
    path("auth/change-password/", ChangePasswordView.as_view(), name="change-password"),
    path("admin/discounts/<int:rule_id>/update/", DiscountRuleUpdateAPIView.as_view(), name="discount-update"),
    path("admin/discounts/create/", DiscountRuleCreateAPIView.as_view(), name="discount-create"),
    path("admin/discounts/<int:rule_id>/delete/", DiscountRuleDeleteAPIView.as_view(), name="discount-delete"),
    path("admin/discounts/", DiscountRuleListAPIView.as_view(), name="discount-list"),
    path("cart/item/update/", CartItemUpdateAPIView.as_view(), name="cart-item-update"), 
    path("auth/me/", CurrentUserAPIView.as_view(), name="current-user"),
]

urlpatterns += router.urls  # <- This line enables all DRF ViewSet/Router endpoints