"""
Adtlas Core URL Configuration

This module defines the main URL routing for the Adtlas DAI Management System.
It includes routes for all applications and API endpoints.

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/5.2/topics/http/urls/

URL Structure:
- /admin - Django admin interface 
- /auth - Authentication endpoints
- /campaigns - Campaign management
- /advertisers - Advertiser management
- /channels - Channel management
- /adspots - Ad spot management
- /playlists - Playlist management
- /analytics - Analytics and reporting
- /vast - VAST protocol endpoints 

"""

from django.contrib import admin
from django.conf import settings
from django.http import JsonResponse
from django.views.static import serve 
from django.conf.urls.static import static
from django.views.generic import RedirectView
from django.urls import path, include, re_path
from django.conf.urls.i18n import i18n_patterns 


urlpatterns = [
    # Django Admin Interface
    path("admin/", admin.site.urls),  

    # Prometheus metrics endpoint
    path("", include("django_prometheus.urls")),
 
    # Core application URLs
    path("", include("apps.core.urls", namespace="core")),  
 
    # Authentication application URLs
    path("auth/", include("apps.authentication.urls", namespace="auth")),
    
    # Accounts application URLs
    path("accounts/", include("apps.accounts.urls", namespace="accounts")), 
    
    # Campaigns application URLs
    path("campaigns/", include("apps.campaigns.urls", namespace="campaigns")),
    
    # Agencies application URLs
    path("agencies/", include("apps.agencies.urls", namespace="agencies")),
    
    # Channels application URLs
    path("channels/", include("apps.channels.urls", namespace="channels")),

    # Playlists application URLs
    path("playlists/", include("apps.playlists.urls", namespace="playlists")),
    
    # Reports application URLs
    path("reports/", include("apps.reports.urls", namespace="reports")),
    
    # Activities application URLs
    path("activities/", include("apps.activities.urls", namespace="activities")),

    # VAST application URLs
    path("vast/", include("apps.vast.urls", namespace="vast")),
    
    # API authentication URLs
    path("api-auth/", include("rest_framework.urls"))
]


# 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
else:
    urlpatterns += [
        re_path(r'^media/(?P<path>.*)$', serve, {"document_root": settings.MEDIA_ROOT}),
        re_path(r'^static/(?P<path>.*)$', serve, {"document_root": settings.STATIC_ROOT})
    ]

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


# Admin site customization
admin.site.site_header = "Adtlas Administration"
admin.site.site_title = "Adtlas Admin Portal"
admin.site.index_title = "Welcome to Adtlas Administration Portal"
