from django.contrib import admin
from django.urls import path, include
from notcloudapp import views
from rest_framework.routers import DefaultRouter

from django.conf import settings
from django.conf.urls.static import static

app_name = "NotCloudStorage"

router = DefaultRouter()
router.include_root_view = False


urlpatterns = [
    #path('admin/', admin.site.urls),
    
    # Manual route for root that uses your ViewSet action
    path('', views.NotCloudStorageViewSet.as_view({'get': 'default_page'}), name='root'),
    
    path('signup/', views.SignupViewSet.as_view({'get': 'signup', 'post': 'signup'}), name='signup'),
    
    path('login/', views.LoginViewSet.as_view({'get': 'admin_login', 'post': 'admin_login'}), name='login'),
    path('logout/', views.LogoutViewSet.as_view({'get': 'logout_user'}), name='logout'),
    
    
    path('transfer/new/', views.CloudTransferViewSet.as_view({'get': 'new_transfer', 'post': 'new_transfer'}), name='new_transfer'),
    path('upload/local/', views.CloudTransferViewSet.as_view({'post': 'upload_local_file'}), name='upload_local_file'), #UPLOAAD LOCAL FILE ENDPOINT
    path('transfer/cloud-connect/', views.CloudConnectViewSet.as_view({'get': 'cloud_connect', 'post': 'cloud_connect'}), name='cloud_connect'),
    path('transfer/storage/', views.StorageViewSet.as_view({'get': 'storage_selection', 'post': 'storage_selection'}), name='storage_selection'),
    path('transfer/payment/', views.PaymentViewSet.as_view({'get': 'payment_view', 'post': 'payment_view'}), name='payment_view'),
    path('payment/', views.StorageViewSet.as_view({'get': 'storage_selection', 'post': 'storage_selection'}), name='storage_selection'),
    
    #Client Order Status Routes
    path('transfer/orders/', views.ClientOrderStatusViewSet.as_view({'get': 'user_orders'}), name='user_orders'),
    path('transfer/status/<str:order_id>/', views.ClientOrderStatusViewSet.as_view({'get': 'order_status'}), name='order_status'),
    
    
    
    #ADMIN DOWNLOAD ROUTES 
    path('downloads/', views.AdminDownloadViewSet.as_view({'get': 'download_dashboard'}), name='download_dashboard'),
    path('notcloudstorage/download-files/', views.AdminDownloadViewSet.as_view({'post': 'download_selected_files'}), name='download_selected_files'),
    path('notcloudstorage/order-files/<str:order_id>/', views.AdminDownloadViewSet.as_view({'get': 'get_order_files'}), name='get_order_files'),
    path('direct-download/<str:order_id>/', views.AdminDownloadViewSet.as_view({'get': 'direct_download'}), name='direct_download'),
    path('download-local/<str:order_id>/', views.AdminDownloadViewSet.as_view({'get': 'download_local_file'}), name='download_local_file'),
    path('download-status/<uuid:order_id>/', views.AdminDownloadViewSet.as_view({'get': 'get_download_status'}), name='download-status'),
    path('file-download-status/<uuid:order_id>/<uuid:file_id>/', views.AdminDownloadViewSet.as_view({'get': 'get_file_download_status'}), name='file-download-status'),
    
    #UNCOMMENT THE PATH BELOW WHEN WE NEED TO ADJUST THE DOWNLOAD PROGRESS FEATURE.
    #path('notcloudstorage/download-status/<str:order_id>/', views.AdminDownloadViewSet.as_view({'get': 'direct_download'}), name='direct_download'),
    
    
    
    
    # Include router URLs for other endpoints
    #path('', include(router.urls)),
]

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)