from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
from django.views.generic import RedirectView

urlpatterns = [
    # Admin
    path('admin/', admin.site.urls),
    
    # Apps URLs
    path('auth/', include('apps.authentification.urls')),
    path('accounts/', include('apps.accounts.urls')),
    path('dashboard/', include('apps.dashboard.urls')),
    path('activities/', include('apps.activities.urls')),
    path('notifications/', include('apps.notifications.urls')),
    path('channels/', include('apps.channels.urls')),
    
    # API URLs
    path('api/auth/', include('apps.authentification.api.urls')),
    path('api/accounts/', include('apps.accounts.api.urls')),
    path('api/activities/', include('apps.activities.api.urls')),
    path('api/notifications/', include('apps.notifications.api.urls')),
    path('api/channels/', include('apps.channels.api.urls')),
    
    # Monitoring
    path('metrics/', include('django_prometheus.urls')),
    
    # Root redirect
    path('', RedirectView.as_view(url='/dashboard/', permanent=False)),
]

# Serve static and media files in development
if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    
    # Debug toolbar
    if 'debug_toolbar' in settings.INSTALLED_APPS:
        import debug_toolbar
        urlpatterns = [
            path('__debug__/', include(debug_toolbar.urls)),
        ] + urlpatterns

# Custom error handlers
handler404 = 'apps.core.views.handler404'
handler500 = 'apps.core.views.handler500'
handler403 = 'apps.core.views.handler403'
handler400 = 'apps.core.views.handler400'