from django.urls import path
from .whatsapp_webhook import WhatsAppWebhookView
from .whatsapp_views import (
    WhatsAppOrderListView,
    WhatsAppOrderStatusUpdateView,
    WhatsAppDashboardStatsView,
)
from .loyalty_views import (
    # Phase 1
    LoyaltyProgramSetupView, CustomerLoyaltyProgramView, LoyaltyRuleListCreateView, LoyaltyRuleDetailView,
    LoyaltyAnalyticsView, MyWalletView, MyAllWalletsView, CoinTransactionHistoryView,
    RedeemCoinsView, ReferralCodeView, ApplyReferralView, SummitProgressView,
    # Phase 2
    SubscribeView, MySubscriptionView, WalletTopupView,
    ActiveSubscriptionsView, TopupHistoryView,
    # Phase 3
    KhataStatusView, UseKhataLifelineView, ClearKhataTabView, KhataManagementView,
    GroupManagementView, JoinGroupView, MyGroupView, VaultRedeemView, SummitVIPListView,
    # Phase 4
    DeadHourDropCreateView, DeadHourDropHistoryView, LoyaltyFullAnalyticsView,
)
from .views import (
    LandingPageDataView,
    RestaurantListCreateAPIView, RestaurantDetailView, NearbyRestaurantsView,
    MenuItemListCreateView, MenuItemDetailView, MenuItemImageView, GlobalMenuItemListView,
    MenuCategoryListCreateView, MenuCategoryDetailView,
    ItemVariantListCreateView, ItemVariantDetailView,
    ItemFeatureListCreateView, ItemFeatureDetailView,
    BookingListCreateView, BookingDetailView, BookingStatusUpdateView, 
    BookingCancelView, RestaurantBookingsView,
    DeliveryCheckView, TableListCreateView, TableDetailView, AvailableTablesView,
    AaharLinkView, AaharConfigDetailView, AaharFetchOrdersView,
    AaharUpdatePaymentView, AaharOrdersListView, AaharOrderWebhookView,
    AaharSyncHotelsView, AaharSyncMenuView, AaharFetchDetailsView, AaharMapCustomItemView,
    AaharServiceMappingWebhookView,
    RestaurantFinderLinkView, RestaurantFinderConfigDetailView,
    RestaurantFinderSyncMenuView, RestaurantFinderOrderWebhookView,
    DeliveryContractRequestView, DeliveryContractManageView,
    DeliveryPartnerContractsView, DeliveryAvailableOrdersView,
    DeliveryActiveOrdersView, DeliveryAcceptOrderView,
    DeliveryCompleteOrderView, DeliveryCommissionLedgerView,
    DeliveryCommissionSettleView,
    DirectAaharRestaurantListView, DirectAaharMenuView, DirectAaharServicesView, DirectAaharOrderView,
    DirectAaharOrderStatusWebhookView, DeliveryLocationUpdateView, DeliveryTrackingView,
    SyankoCommerceDataView, SyankoConfigurationUpdateView, ComboListCreateView, ComboDetailView, SyankoOrderView,
    LandingPageDataView
)

urlpatterns = [
    # Landing page data endpoint
    path('landing-page-data/', LandingPageDataView.as_view(), name='landing-page-data'),
    path('syanko-commerce-data/', SyankoCommerceDataView.as_view(), name='syanko-commerce-data'),
    path('syanko-config/update/', SyankoConfigurationUpdateView.as_view(), name='syanko-config-update'),
    path('syanko-order/', SyankoOrderView.as_view(), name='syanko-order'),

    # Restaurant endpoints
    path('', RestaurantListCreateAPIView.as_view(), name='restaurant-list-create'),
    path('<int:pk>/', RestaurantDetailView.as_view(), name='restaurant-detail'),
    path('nearby/', NearbyRestaurantsView.as_view(), name='nearby-restaurants'),
    
    # Menu endpoints
    path('<int:restaurant_id>/categories/', MenuCategoryListCreateView.as_view(), name='category-list-create'),
    path('<int:restaurant_id>/categories/<int:pk>/', MenuCategoryDetailView.as_view(), name='category-detail'),
    path('<int:restaurant_id>/menu/', MenuItemListCreateView.as_view(), name='menu-list-create'),
    path('<int:restaurant_id>/menu/<int:pk>/', MenuItemDetailView.as_view(), name='menu-detail'),
    path('<int:restaurant_id>/menu/<int:pk>/image/', MenuItemImageView.as_view(), name='menu-item-image'),
    path('menu/all/', GlobalMenuItemListView.as_view(), name='global-menu-list'),
    path('<int:restaurant_id>/menu/<int:item_id>/variants/', ItemVariantListCreateView.as_view(), name='variant-list-create'),
    path('<int:restaurant_id>/menu/<int:item_id>/variants/<int:pk>/', ItemVariantDetailView.as_view(), name='variant-detail'),
    path('<int:restaurant_id>/menu/<int:item_id>/features/', ItemFeatureListCreateView.as_view(), name='feature-list-create'),
    path('<int:restaurant_id>/menu/<int:item_id>/features/<int:pk>/', ItemFeatureDetailView.as_view(), name='feature-detail'),

    # Combo endpoints
    path('<int:restaurant_id>/combos/', ComboListCreateView.as_view(), name='combo-list-create'),
    path('<int:restaurant_id>/combos/<int:pk>/', ComboDetailView.as_view(), name='combo-detail'),
    
    # Booking endpoints
    path('bookings/', BookingListCreateView.as_view(), name='booking-list-create'),
    path('bookings/<int:pk>/', BookingDetailView.as_view(), name='booking-detail'),
    path('bookings/<int:pk>/status/', BookingStatusUpdateView.as_view(), name='booking-status-update'),
    path('bookings/<int:pk>/cancel/', BookingCancelView.as_view(), name='booking-cancel'),
    path('<int:restaurant_id>/bookings/', RestaurantBookingsView.as_view(), name='restaurant-bookings'),
    
    # Table endpoints
    path('tables/', TableListCreateView.as_view(), name='table-list-create'),
    path('<int:restaurant_id>/tables/available/', AvailableTablesView.as_view(), name='available-tables'),
    path('tables/<int:pk>/', TableDetailView.as_view(), name='table-detail'),
    
    # Delivery check endpoint
    path('check-delivery/', DeliveryCheckView.as_view(), name='check-delivery'),

    # Aahar Integration endpoints
    path('aahar/link/', AaharLinkView.as_view(), name='aahar-link'),
    path('aahar/fetch-details/', AaharFetchDetailsView.as_view(), name='aahar-fetch-details'),
    path('aahar/config/<int:pk>/', AaharConfigDetailView.as_view(), name='aahar-config-detail'),
    path('aahar/fetch-orders/', AaharFetchOrdersView.as_view(), name='aahar-fetch-orders'),
    path('aahar/update-payment/', AaharUpdatePaymentView.as_view(), name='aahar-update-payment'),
    path('aahar/orders/', AaharOrdersListView.as_view(), name='aahar-orders-list'),
    path('aahar/webhook/order/', AaharOrderWebhookView.as_view(), name='aahar-order-webhook'),
    path('receive_order', AaharOrderWebhookView.as_view(), name='aahar-receive-order-webhook'),
    path('restaurant_service_mapping', AaharServiceMappingWebhookView.as_view(), name='aahar-service-mapping-webhook'),
    path('aahar/sync-hotels/', AaharSyncHotelsView.as_view(), name='aahar-sync-hotels'),
    path('aahar/sync-menu/', AaharSyncMenuView.as_view(), name='aahar-sync-menu'),
    path('aahar/map-custom-item/', AaharMapCustomItemView.as_view(), name='aahar-map-custom-item'),
    
    # Restaurant Finder (Zomato) Integration endpoints
    path('restaurant-finder/link/', RestaurantFinderLinkView.as_view(), name='rf-link'),
    path('restaurant-finder/config/<int:pk>/', RestaurantFinderConfigDetailView.as_view(), name='rf-config-detail'),
    path('restaurant-finder/sync-menu/', RestaurantFinderSyncMenuView.as_view(), name='rf-sync-menu'),
    path('restaurant-finder/webhook/order/', RestaurantFinderOrderWebhookView.as_view(), name='rf-order-webhook'),
    
    # Delivery Partner endpoints
    path('delivery/contracts/request/', DeliveryContractRequestView.as_view(), name='delivery-contract-request'),
    path('delivery/contracts/<int:pk>/manage/', DeliveryContractManageView.as_view(), name='delivery-contract-manage'),
    path('delivery/contracts/', DeliveryPartnerContractsView.as_view(), name='delivery-contracts-list'),
    path('delivery/orders/available/', DeliveryAvailableOrdersView.as_view(), name='delivery-available-orders'),
    path('delivery/orders/active/', DeliveryActiveOrdersView.as_view(), name='delivery-active-orders'),
    path('delivery/orders/<int:pk>/accept/', DeliveryAcceptOrderView.as_view(), name='delivery-accept-order'),
    path('delivery/orders/<int:pk>/deliver/', DeliveryCompleteOrderView.as_view(), name='delivery-complete-order'),
    path('delivery/commissions/', DeliveryCommissionLedgerView.as_view(), name='delivery-commissions-view'),
    path('delivery/commissions/settle/', DeliveryCommissionSettleView.as_view(), name='delivery-commissions-settle'),

    # Direct Peer-to-Peer Aahar Integration endpoints
    path('direct/restaurants/', DirectAaharRestaurantListView.as_view(), name='direct-aahar-restaurants'),
    path('direct/restaurants/<int:restaurant_id>/menu/', DirectAaharMenuView.as_view(), name='direct-aahar-menu'),
    path('direct/restaurants/<int:restaurant_id>/services/', DirectAaharServicesView.as_view(), name='direct-aahar-services'),
    path('direct/restaurants/<int:restaurant_id>/order/', DirectAaharOrderView.as_view(), name='direct-aahar-order'),
    path('direct/webhook/order-status/', DirectAaharOrderStatusWebhookView.as_view(), name='direct-aahar-order-status-webhook'),

    # Delivery Live Tracking
    path('delivery/orders/<int:pk>/location/', DeliveryLocationUpdateView.as_view(), name='delivery-update-location'),
    path('delivery/orders/<int:pk>/tracking/', DeliveryTrackingView.as_view(), name='delivery-tracking'),
    # ── WhatsApp Webhook ───────────────────────────────────────────────────
    path('whatsapp/webhook/', WhatsAppWebhookView.as_view(), name='whatsapp-webhook'),
    path('whatsapp/webhook', WhatsAppWebhookView.as_view(), name='whatsapp-webhook-no-slash'),

    # ── WhatsApp Admin API ─────────────────────────────────────────────────
    path('whatsapp/orders/', WhatsAppOrderListView.as_view(), name='whatsapp-orders'),
    path('whatsapp/orders/<int:pk>/status/', WhatsAppOrderStatusUpdateView.as_view(), name='whatsapp-order-status'),
    path('whatsapp/dashboard/', WhatsAppDashboardStatsView.as_view(), name='whatsapp-dashboard'),

    # ── Loyalty Program — Owner endpoints ──────────────────────────────────
    path('<int:restaurant_id>/loyalty/', LoyaltyProgramSetupView.as_view(), name='loyalty-setup'),
    path('<int:restaurant_id>/loyalty/rules/', LoyaltyRuleListCreateView.as_view(), name='loyalty-rules'),
    path('<int:restaurant_id>/loyalty/rules/<int:rule_id>/', LoyaltyRuleDetailView.as_view(), name='loyalty-rule-detail'),
    path('<int:restaurant_id>/loyalty/analytics/', LoyaltyAnalyticsView.as_view(), name='loyalty-analytics'),
    path('<int:restaurant_id>/loyalty/analytics/full/', LoyaltyFullAnalyticsView.as_view(), name='loyalty-full-analytics'),
    # Phase 2 owner
    path('<int:restaurant_id>/loyalty/subscriptions/', ActiveSubscriptionsView.as_view(), name='loyalty-active-subs'),
    path('<int:restaurant_id>/loyalty/topups/', TopupHistoryView.as_view(), name='loyalty-topup-history'),
    # Phase 3 owner
    path('<int:restaurant_id>/loyalty/khata/', KhataManagementView.as_view(), name='loyalty-khata-mgmt'),
    path('<int:restaurant_id>/loyalty/groups/', GroupManagementView.as_view(), name='loyalty-groups'),
    path('<int:restaurant_id>/loyalty/groups/<int:group_id>/redeem/', VaultRedeemView.as_view(), name='loyalty-vault-redeem'),
    path('<int:restaurant_id>/loyalty/summit/vips/', SummitVIPListView.as_view(), name='loyalty-summit-vips'),
    # Phase 4 owner
    path('<int:restaurant_id>/loyalty/drop/', DeadHourDropCreateView.as_view(), name='loyalty-drop-create'),
    path('<int:restaurant_id>/loyalty/drops/', DeadHourDropHistoryView.as_view(), name='loyalty-drop-history'),

    # ── Loyalty Program — Customer endpoints ───────────────────────────────
    path('loyalty/<int:restaurant_id>/info/', CustomerLoyaltyProgramView.as_view(), name='loyalty-info'),
    path('loyalty/my-wallets/', MyAllWalletsView.as_view(), name='loyalty-all-wallets'),
    path('loyalty/<int:restaurant_id>/wallet/', MyWalletView.as_view(), name='loyalty-wallet'),
    path('loyalty/<int:restaurant_id>/transactions/', CoinTransactionHistoryView.as_view(), name='loyalty-transactions'),
    path('loyalty/<int:restaurant_id>/redeem/', RedeemCoinsView.as_view(), name='loyalty-redeem'),
    path('loyalty/<int:restaurant_id>/summit/', SummitProgressView.as_view(), name='loyalty-summit'),
    path('loyalty/referral-code/', ReferralCodeView.as_view(), name='loyalty-referral-code'),
    path('loyalty/referral/apply/', ApplyReferralView.as_view(), name='loyalty-referral-apply'),
    # Phase 2 customer
    path('loyalty/<int:restaurant_id>/subscribe/', SubscribeView.as_view(), name='loyalty-subscribe'),
    path('loyalty/<int:restaurant_id>/subscription/', MySubscriptionView.as_view(), name='loyalty-my-sub'),
    path('loyalty/<int:restaurant_id>/topup/', WalletTopupView.as_view(), name='loyalty-topup'),
    # Phase 3 customer
    path('loyalty/<int:restaurant_id>/khata/', KhataStatusView.as_view(), name='loyalty-khata-status'),
    path('loyalty/<int:restaurant_id>/khata/use/', UseKhataLifelineView.as_view(), name='loyalty-khata-use'),
    path('loyalty/<int:restaurant_id>/khata/clear/', ClearKhataTabView.as_view(), name='loyalty-khata-clear'),
    path('loyalty/<int:restaurant_id>/group/', MyGroupView.as_view(), name='loyalty-my-group'),
    path('loyalty/group/join/', JoinGroupView.as_view(), name='loyalty-group-join'),
]