"""Channels App URL Configuration

This module defines URL patterns for the channels application.
Provides routing for channel management, zone configuration, jingle management,
and adbreak monitoring functionality.

URL Patterns:
    - Channel CRUD operations
    - Channel zone management
    - Jingle management
    - Adbreak monitoring
    - API endpoints for AJAX requests

Author: Adtlas Development Team
Version: 1.0.0
"""

from django.urls import path, include
from django.views.decorators.cache import cache_page
from apps.channels import views

# App namespace for URL reversing
app_name = 'channels'

# Main URL patterns for the channels app
urlpatterns = [
    # Channel Management URLs
    path("", views.ChannelListView.as_view(), name="channel_list"),
    path("list", views.ChannelListView.as_view(), name="channel_list_alt"),
    path("create", views.ChannelCreateView.as_view(), name="channel_create"),
    path("<uuid:channel_id>", views.ChannelDetailView.as_view(), name="channel_detail"),
    path("<uuid:channel_id>/edit", views.ChannelUpdateView.as_view(), name="channel_update"),
    path("<uuid:channel_id>/delete", views.ChannelDeleteView.as_view(), name="channel_delete"),
    
    # Channel Zone Management URLs
    path("zones", views.ChannelZoneListView.as_view(), name="zone_list"),
    path("zones/create", views.ChannelZoneCreateView.as_view(), name="zone_create"),
    path("zones/<uuid:pk>", views.ChannelZoneDetailView.as_view(), name="zone_detail"),
    path("zones/<uuid:pk>/edit", views.ChannelZoneUpdateView.as_view(), name="zone_update"),
    path("zones/<uuid:pk>/delete", views.ChannelZoneDeleteView.as_view(), name="zone_delete"),
    
    # Jingle Management URLs
    path("jingles", views.JingleListView.as_view(), name="jingle_list"),
    path("jingles/create", views.JingleCreateView.as_view(), name="jingle_create"),
    path("jingles/<uuid:pk>", views.JingleDetailView.as_view(), name="jingle_detail"),
    path("jingles/<uuid:pk>/edit", views.JingleUpdateView.as_view(), name="jingle_update"),
    path("jingles/<uuid:pk>/delete", views.JingleDeleteView.as_view(), name="jingle_delete"),
    
    # Adbreak Management URLs
    path("adbreaks", views.AdbreakListView.as_view(), name="adbreak_list"),
    path("adbreaks/create", views.AdbreakCreateView.as_view(), name="adbreak_create"),
    path("adbreaks/<uuid:pk>", views.AdbreakDetailView.as_view(), name="adbreak_detail"),
    path("adbreaks/<uuid:pk>/edit", views.AdbreakUpdateView.as_view(), name="adbreak_update"),
    path("adbreaks/<uuid:pk>/delete", views.AdbreakDeleteView.as_view(), name="adbreak_delete"),
    
    # Channel Health Monitoring URLs
    path("<uuid:pk>/health", views.ChannelHealthView.as_view(), name="channel_health"),
    path("health/dashboard", views.ChannelHealthDashboardView.as_view(), name="health_dashboard"),
    
    # API Endpoints for AJAX requests
    path("api/", include([
        # Channel API endpoints
        path("channels/", views.ChannelAPIListView.as_view(), name="api_channel_list"),
        path("channels/<uuid:pk>", views.ChannelAPIDetailView.as_view(), name="api_channel_detail"),
        
        # Zone API endpoints
        path("zones", views.ChannelZoneAPIListView.as_view(), name="api_zone_list"),
        path("zones/<uuid:zone_id>/channels", views.ZoneChannelsAPIView.as_view(), name="api_zone_channels"),
        
        # Jingle API endpoints
        path("jingles", views.JingleAPIListView.as_view(), name="api_jingle_list"),
        path("channels/<uuid:channel_id>/jingles", views.ChannelJinglesAPIView.as_view(), name="api_channel_jingles"),
        
        # Adbreak API endpoints
        path("adbreaks", views.AdbreakAPIListView.as_view(), name="api_adbreak_list"),
        path("channels/<uuid:channel_id>/adbreaks", views.ChannelAdbreaksAPIView.as_view(), name="api_channel_adbreaks"),
        
        # Health monitoring API
        path("health", views.ChannelHealthAPIView.as_view(), name="api_channel_health"),
    ])),
]