from django.urls import path
from .views import *

urlpatterns = [
    path("health-check/", HealthCheckAPIView.as_view(), name="health-check"),
    path("auth/register/", RegisterAPIView.as_view(), name="register"),
    path("auth/login/", LoginAPIView.as_view(), name="login"),
    path("auth/profile/", ProfileAPIView.as_view(), name="profile"),
    path("auth/forgot-password/", ForgotPasswordAPIView.as_view(), name="forgot-password"
    ),
    path("auth/reset-password/", ResetPasswordAPIView.as_view(), name="reset-password"),
    path("auth/token-refresh/", CustomTokenRefreshAPIView.as_view(), name="token-refresh"),
    path("home/", HomeAPIView.as_view(), name="home"),
    path("categories/", CategoryListAPIView.as_view(), name="categories"),
    path("products/", ProductListAPIView.as_view(), name="product-list"),
    path(
        "products/detail/<str:identifier>/",
        ProductDetailAPIView.as_view(),
        name="product-detail",
    ),
    path("wishlist/", WishlistListAPIView.as_view(), name="wishlist-list"),
    path("wishlist/toggle/", WishlistToggleAPIView.as_view(), name="wishlist-toggle"),
    path("cart/", CartDetailAPIView.as_view(), name="cart-detail"),
    path("cart/add/", CartAddAPIView.as_view(), name="cart-add"),
    path("cart/item/<int:item_id>/",CartItemUpdateAPIView.as_view(),name="cart-item-update",),
    path(
"cart/item/<int:item_id>/delete/",
        CartItemDeleteAPIView.as_view(),
        name="cart-item-delete",
    ),
    path("cart/clear/", CartClearAPIView.as_view(), name="cart-clear"),
    path("addresses/", AddressListCreateAPIView.as_view(), name="address-list-create"),
    path(
    "addresses/<int:address_id>/",
        AddressDetailAPIView.as_view(),
        name="address-detail",
    ),
    path(
        "addresses/<int:address_id>/set-default/",
        AddressSetDefaultAPIView.as_view(),
        name="address-set-default",
    ),
    path("coupons/validate/", CouponValidateAPIView.as_view(), name="coupon-validate"),
    path("checkout/review/", CheckoutReviewAPIView.as_view(), name="checkout-review"),
    path("checkout/place-order/", PlaceOrderAPIView.as_view(), name="place-order"),
    path("orders/", OrderListAPIView.as_view(), name="order-list"),
    path("orders/<int:order_id>/", OrderDetailAPIView.as_view(), name="order-detail"),
    # path(
    #     "payments/update-status/",
    #     PaymentStatusUpdateAPIView.as_view(),
    #     name="payment-status-update",
    # ),
#     path(
#     "payments/create-razorpay-order/",
#     CreateRazorpayOrderAPIView.as_view(),
#     name="create-razorpay-order",
# ),


path(
    "payments/create-razorpay-order/",
    CreateRazorpayOrderAPIView.as_view(),
    name="create-razorpay-order",
),

path(
    "payments/verify-payment/",
    VerifyPaymentAPIView.as_view(),
    name="verify-payment",
),
    path(
        "products/<int:product_id>/reviews/",
        ProductReviewListAPIView.as_view(),
        name="product-review-list",
    ),
    path("reviews/create/", ReviewCreateAPIView.as_view(), name="review-create"),
    path("reviews/my/", MyReviewListAPIView.as_view(), name="my-review-list"),
    path("returns/create/", ReturnRequestCreateAPIView.as_view(), name="return-create"),
    path("returns/", ReturnRequestListAPIView.as_view(), name="return-list"),
    path(
        "returns/<int:request_id>/",
        ReturnRequestDetailAPIView.as_view(),
        name="return-detail",
    ),
    path(
        "support/tickets/create/",
        SupportTicketCreateAPIView.as_view(),
        name="support-ticket-create",
    ),
    path(
        "support/tickets/",
        SupportTicketListAPIView.as_view(),
        name="support-ticket-list",
    ),
    path(
        "support/tickets/<int:ticket_id>/",
        SupportTicketDetailAPIView.as_view(),
        name="support-ticket-detail",
    ),
    path(
        "service-requests/create/",
        ServiceRequestCreateAPIView.as_view(),
        name="service-request-create",
    ),
    path(
        "service-requests/",
        ServiceRequestListAPIView.as_view(),
        name="service-request-list",
    ),
    path(
        "service-requests/<int:request_id>/",
        ServiceRequestDetailAPIView.as_view(),
        name="service-request-detail",
    ),
    path(
    "service-requests/",
    ServiceRequestListCreateAPIView.as_view(),
),
    path("cms/pages/", CMSPageListAPIView.as_view(), name="cms-page-list"),
    path(
        "cms/pages/slug/<str:slug>/",
        CMSPageDetailAPIView.as_view(),
        name="cms-page-detail",
    ),
    path(
        "cms/pages/type/<str:page_type>/",
        CMSPageByTypeAPIView.as_view(),
        name="cms-page-by-type",
    ),
    path("notifications/", NotificationListAPIView.as_view(), name="notification-list"),
    path(
        "notifications/<int:notification_id>/mark-read/",
        NotificationMarkReadAPIView.as_view(),
        name="notification-mark-read",
    ),
    path(
        "notifications/mark-all-read/",
        NotificationMarkAllReadAPIView.as_view(),
        name="notification-mark-all-read",
    ),
    path(
        "recent-searches/",
        RecentSearchListCreateAPIView.as_view(),
        name="recent-search-list-create",
    ),
    path(
        "recent-searches/<int:search_id>/",
        RecentSearchDeleteAPIView.as_view(),
        name="recent-search-delete",
    ),
    path(
        "recent-searches/clear/",
        RecentSearchClearAPIView.as_view(),
        name="recent-search-clear",
    ),
    path(
        "recently-viewed/track/",
        RecentlyViewedTrackAPIView.as_view(),
        name="recently-viewed-track",
    ),
    path(
        "recently-viewed/",
        RecentlyViewedListAPIView.as_view(),
        name="recently-viewed-list",
    ),
    path("reviews/upload-images/", ReviewImageUploadAPIView.as_view()),
    path("support/tickets/<int:ticket_id>/reply/", SupportTicketReplyAPIView.as_view()),
    path("returns/<int:request_id>/upload-images/", ReturnImageUploadAPIView.as_view()),
    path(
        "service-requests/<int:request_id>/upload-images/",
        ServiceImageUploadAPIView.as_view(),
    ),
    path("orders/<int:order_id>/cancel/", CancelOrderAPIView.as_view()),
    path("profile/update/", ProfileUpdateAPIView.as_view()),
    path("dashboard/", DashboardAPIView.as_view()),
    path('orders/update-status/', OrderStatusUpdateAPIView.as_view(), name='order-status-update'),

    path('rewards/rules/', CashbackRulesAPIView.as_view(), name='cashback-rules'),
    path('rewards/preview/', CashbackPreviewAPIView.as_view(), name='cashback-preview'),
    path('rewards/wallet/', CashbackWalletAPIView.as_view(), name='cashback-wallet'),
    path('rewards/transactions/', CashbackTransactionListAPIView.as_view(), name='cashback-transactions'),
    path('rewards/trigger-order-reward/', CashbackOrderRewardTriggerAPIView.as_view(), name='cashback-trigger-order-reward'),

    path('auth/token/refresh/', CustomTokenRefreshAPIView.as_view(), name='token-refresh-alias'),
    path('orders/<int:order_id>/invoice/', OrderInvoiceDetailAPIView.as_view(), name='order-invoice-detail'),
    path('orders/<int:order_id>/invoice/email/', OrderInvoiceEmailAPIView.as_view(), name='order-invoice-email'),
    # path('orders/<int:order_id>/tally-sync/retry/', OrderTallySyncRetryAPIView.as_view(), name='order-tally-sync-retry'),
    # path('tally/bridge-health/', TallyBridgeHealthAPIView.as_view(), name='tally-bridge-health'),
    # path('tally/import-products/', TallyImportProductsAPIView.as_view(), name='tally-import-products'),
    path("reviews/<int:review_id>/", ReviewDeleteAPIView.as_view()),
path(
    "saved-payments/",
    SavedPaymentMethodApiView.as_view(),
),

path(
    "saved-payments/<int:payment_id>/update/",
    SavedPaymentMethodApiView.as_view(),
),

path(
    "saved-payments/<int:payment_id>/delete/",
    SavedPaymentMethodApiView.as_view(),
),

path(
    "saved-payments/set-default/<int:payment_id>/",
    SavedPaymentMethodApiView.as_view(),
),

path(
    "shipments/<int:shipment_id>/update/",
    ShipmentUpdateAPIView.as_view(),
    name="shipment-update",
),

path(
    "shipments/",
    ShipmentListAPIView.as_view(),
    name="shipment-list",
),

path(
    "shipments/<int:shipment_id>/",
    ShipmentDetailAPIView.as_view(),
    name="shipment-detail",
),

  ]
