# -*- coding: utf-8 -*-
"""
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/4.2/topics/http/urls/

URL Structure:
- /admin/ - Django admin interface
- /api/ - REST API endpoints
- /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

# Health check endpoint
def health_check(request):
    """
    Health check endpoint for monitoring.
    
    Returns:
        JsonResponse: System status information
    """
    return JsonResponse({
        'status': 'healthy',
        'service': 'Adtlas DAI Management System',
        'version': '2.0.0'
    })


# Main URL patterns
urlpatterns = [
    # Admin interface
    path('admin/', admin.site.urls),
    
    # 
    # path("i18n/", include("django.conf.urls.i18n")),

    # Health check endpoint
    path('health/', health_check, name='health_check'),
    
    # Redirect root to dashboard
    # path('', RedirectView.as_view(url='/dashboard/', permanent=False), name='root_redirect'),
    
    # Authentication URLs
    # path('auth/', include('apps.accounts.urls')),
 
    # # 
    # path("", include("apps.core.urls", namespace="core")),
    # # 
    # path("auth/", include("apps.authentication.urls", namespace="auth")), 
    # # 
    # path("agency/", include("apps.agencies.urls", namespace="agency")),

    # # Core application URLs
    # path('dashboard/', include('apps.core.urls')),
    
    # # Campaign management URLs
    # path('campaigns/', include('apps.campaigns.urls', namespace="campaign")),
    
    # # Advertiser management URLs
    # path('advertisers/', include('apps.advertisers.urls')),
    
    # # Channel management URLs
    # path('channels/', include('apps.channels.urls', namespace="channel")),
    
    # # Ad spot management URLs
    # path('adspots/', include('apps.adspots.urls')),
    
    # # Playlist management URLs
    # path('playlists/', include('apps.playlists.urls')),
    
    # # Analytics and reporting URLs
    # path('analytics/', include('apps.analytics.urls')),

    # # VAST protocol URLs
    # path('vast/', include('apps.vast.urls')),
    
    # API endpoints
    # path('api/v1/', include([
        # path('auth/', include('apps.accounts.api_urls')),
        # path('campaigns/', include('apps.campaigns.api_urls')),
        # path('advertisers/', include('apps.advertisers.api_urls')),
        # path('channels/', include('apps.channels.api_urls')),
        # path('adspots/', include('apps.adspots.api_urls')),
        # path('playlists/', include('apps.playlists.api_urls')),
        # path('analytics/', include('apps.analytics.api_urls')),
        # path('vast/', include('apps.vast.api_urls')),
    # ])),
    
    # Django REST Framework browsable API
    # path('api-auth/', include('rest_framework.urls')),
]

# Serve media files in development
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

    # Debug toolbar URLs
    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})
    urlpatterns += re_path(r'^static/(?P<path>.*)$', serve,{"document_root": settings.STATICFILES_DIRS})

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

# Custom error handlers
# handler400 = 'apps.core.views.bad_request'
# handler403 = 'apps.core.views.permission_denied'
# handler404 = 'apps.core.views.page_not_found'
# handler500 = 'apps.core.views.server_error'

# Admin site customization
admin.site.site_header = 'Adtlas DAI Management'
admin.site.site_title = 'Adtlas Admin'
admin.site.index_title = 'Welcome to Adtlas Administration'
