from django.urls import path

from core import approval_views, brand_views, gateway_views, views, views_investment
from core.view_admin import admin_crypto_approval, approve_crypto_deposit, approve_withdrawal, reject_crypto_deposit, reject_withdrawal
from core.views_investment import crypto_subscription_webhook

app_name = "core"
urlpatterns = [
    path("", views.home, name="home"),

    path("discover/", views.discovery, name="discover"),
    path("marketplace/", views.marketplace, name="marketplace"),
    path("discover/<str:username>/", views.discovery_detail, name="discover_detail"),
    path("discover/<str:username>/follow/", views.follow_profile, name="follow_profile"),
    path("discover/<str:username>/book/", views.book_profile, name="book_profile"),
    path("discover/<str:username>/media/upload/", views.upload_profile_media, name="upload_profile_media"),
    path("discover/<str:username>/media/<int:media_id>/like/", views.like_media, name="like_media"),
    path("messages/", views.message_list, name="message_list"),
    path("messages/new/", views.message_new, name="message_new"),
    path("messages/new/<str:username>/", views.message_new, name="message_new_with_recipient"),
    path("messages/thread/<int:thread_id>/", views.message_thread, name="message_thread"),
       
    path("investments/investors/", views_investment.investor_list, name="investor_list"),
    path("investments/", views_investment.investment_dashboard, name="investment_dashboard"),
    path("investments/plans/", views_investment.investment_plans, name="investment_plans"),
    path("investments/checkout/<int:plan_id>/", views_investment.checkout_investment, name="checkout_investment"),
    
    path("investments/deposit/", views_investment.wallet_deposit, name="wallet_deposit"),
    path("investments/withdraw/", views_investment.withdrawal_request, name="withdrawal_request"),    
    path("investments/claim/<int:investment_id>/", views_investment.claim_investment_payout, name="claim_investment_payout"),


    path("staff/admin/approvals/", approval_views.admin_approvals, name="admin_approvals"),
    path("staff/admin/approvals/subscription/<int:transaction_id>/approve/", 
        approval_views.approve_subscription_payment, name="approve_subscription_payment"),
    path("staff/admin/approvals/subscription/<int:transaction_id>/reject/", 
        approval_views.reject_subscription_payment, name="reject_subscription_payment"),
    path("staff/admin/approvals/investment/<int:investment_id>/approve/", 
        approval_views.approve_investment, name="approve_investment"),
    path("staff/admin/approvals/subscription/<int:transaction_id>/delete/",
            approval_views.delete_subscription_payment, name="delete_subscription_payment"),
    path("staff/admin/approvals/investment/<int:investment_id>/delete/",
        approval_views.delete_investment, name="delete_investment" ),

    #Payement Gateways
    path("staff/payments/gateways/", gateway_views.payment_gateways_list, name="payment_gateways_list"),
    path("staff/gateways/admin/", gateway_views.admin_payment_gateways, name="admin_payment_gateways"),
    path("staff/gateways/admin/<uuid:gateway_id>/toggle-status/", gateway_views.toggle_gateway_status, name="toggle_gateway_status"),
    path("staff/gateways/admin/<uuid:gateway_id>/toggle-mode/", gateway_views.toggle_test_mode, name="toggle_test_mode"),

    
    # Brand Public
    path("staff/brands/", brand_views.brand_list, name="brand_list"),
    path("staff/brands/<slug:slug>/", brand_views.brand_detail, name="brand_detail"),

    # Brand Admin
    path("staff/brands/admin/list/", brand_views.admin_brand_list, name="admin_brand_list"),
    path("staff/brands/admin/<uuid:brand_id>/approve/", brand_views.approve_brand, name="approve_brand"),
    path("staff/brands/admin/<uuid:brand_id>/reject/", brand_views.reject_brand, name="reject_brand"),
    path("staff/brands/admin/<uuid:brand_id>/toggle-featured/", brand_views.toggle_featured, name="toggle_featured"),
    
    path("staff/brands/create/admin/", brand_views.brand_create, name="brand_create"),
    path("staff/brands/admin/<uuid:brand_id>/edit/", brand_views.brand_edit, name="brand_edit"),

    path("payments/return/<str:provider>/<int:transaction_id>/", views_investment.payment_return, name="payment_return"),    
    path("payments/webhook/<str:provider>/", views_investment.payment_webhook, name="payment_webhook"),    
    path('webhook/crypto/', views_investment.crypto_webhook, name='crypto_webhook'),
    
    path("subscriptions/", views_investment.subscription_plans, name="subscription_plans"),
    path('checkout/subscription/<int:plan_id>/', views_investment.checkout_subscription, name='checkout_subscription'),
    path('webhook/crypto-subscription/', crypto_subscription_webhook, name='crypto_subscription_webhook'),
    path('payment/success/crypto/<int:transaction_id>/', views_investment.crypto_payment_success, name='crypto_payment_success'),
    path('btc-subscriptions/admin/', views_investment.admin_btc_subscriptions, name='admin_btc_subscriptions'),
    path('approve-btc-sub/<int:tx_id>/admin/', views_investment.admin_approve_btc_subscription, name='admin_approve_btc_subscription'),

    path("management/investments/admin/", views_investment.admin_investment_management, name="admin_investment_management"),    
    path('management/crypto-approval/', admin_crypto_approval, name='admin_crypto_approval'),
    path('management/approve-deposit/<int:tx_id>/', approve_crypto_deposit, name='approve_crypto_deposit'),
    path('management/reject-deposit/<int:tx_id>/', reject_crypto_deposit, name='reject_crypto_deposit'),
    
    path('management/approve-withdrawal/<int:withdrawal_id>/', approve_withdrawal, name='approve_withdrawal'),
    path('management/reject-withdrawal/<int:withdrawal_id>/', reject_withdrawal, name='reject_withdrawal'),

    path("notifications/", views.notification_list, name="notification_list"),
    path("notifications/mark-read/<int:notification_id>/", views.notification_mark_read, name="notification_mark_read"),
    
    path('support/chat/', views.support_chat_view, name='support_chat'),
    path('support/chat/send/', views.send_chat_message, name='send_chat_message'),
    path('support/chat/history/', views.get_chat_history, name='get_chat_history'),
    
    path("media/<int:media_id>/react/", views.react_media, name="react_media"),
    path("media/<int:media_id>/bookmark/", views.toggle_bookmark, name="toggle_bookmark"),
    path("media/<int:media_id>/comments/", views.media_comments, name="media_comments"),
    path("media/<int:media_id>/comment/add/", views.add_comment, name="add_comment"),
    
    path("profile/<str:username>/follow/", views.toggle_follow, name="toggle_follow"),
]
