# -*- coding: utf-8 -*-
"""
Channel Management API v1 URLs

This module defines URL patterns for the channel management API v1 endpoints.
"""

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

app_name = 'api'

# Create a router and register our viewsets with it
router = DefaultRouter()
router.register(r'channels', views.ChannelViewSet, basename='channel')
router.register(r'zones', views.ChannelZoneViewSet, basename='zone')
router.register(r'codecs', views.ChannelCodecViewSet, basename='codec')
router.register(r'relations', views.ChannelZoneRelationViewSet, basename='relation')
router.register(r'epg', views.EPGProgramViewSet, basename='epg')
router.register(r'jingles', views.JingleViewSet, basename='jingle')
router.register(r'detections', views.JingleDetectionViewSet, basename='detection')
router.register(r'schedules', views.ChannelScheduleViewSet, basename='schedule')
router.register(r'vpn/ipsec', views.IPSecConfigurationViewSet, basename='ipsec')
router.register(r'vpn/openvpn', views.OpenVPNConfigurationViewSet, basename='openvpn')
router.register(r'vpn/wireguard', views.WireGuardConfigurationViewSet, basename='wireguard')

# The API URLs are now determined automatically by the router
urlpatterns = [
    # Include router URLs
    path('', include(router.urls)),
    
    # Custom API endpoints
    path('channels/<int:pk>/health-check/', views.ChannelHealthCheckAPIView.as_view(), name='channel-health-check'),
    path('channels/<int:pk>/statistics/', views.ChannelStatisticsAPIView.as_view(), name='channel-statistics'),
    path('channels/bulk-actions/', views.BulkChannelActionAPIView.as_view(), name='channel-bulk-actions'),
    path('channels/import/', views.ChannelImportAPIView.as_view(), name='channel-import'),
    path('channels/export/', views.ChannelExportAPIView.as_view(), name='channel-export'),
    
    # Zone-specific endpoints
    path('zones/<int:pk>/channels/', views.ZoneChannelsAPIView.as_view(), name='zone-channels'),
    path('zones/<int:pk>/statistics/', views.ZoneStatisticsAPIView.as_view(), name='zone-statistics'),
    
    # EPG-specific endpoints
    path('epg/schedule/', views.EPGScheduleAPIView.as_view(), name='epg-schedule'),
    path('epg/import/', views.EPGImportAPIView.as_view(), name='epg-import'),
    path('epg/export/', views.EPGExportAPIView.as_view(), name='epg-export'),
    
    # Jingle-specific endpoints
    path('jingles/<int:pk>/fingerprint/', views.JingleFingerprintAPIView.as_view(), name='jingle-fingerprint'),
    path('jingles/<int:pk>/play/', views.JinglePlayAPIView.as_view(), name='jingle-play'),
    path('jingles/detect/', views.JingleDetectionAPIView.as_view(), name='jingle-detect'),
    
    # Schedule-specific endpoints
    path('schedules/upcoming/', views.UpcomingSchedulesAPIView.as_view(), name='schedules-upcoming'),
    path('schedules/conflicts/', views.ScheduleConflictsAPIView.as_view(), name='schedules-conflicts'),
    
    # Search and filtering endpoints
    path('search/channels/', views.ChannelSearchAPIView.as_view(), name='search-channels'),
    path('search/epg/', views.EPGSearchAPIView.as_view(), name='search-epg'),
    path('search/jingles/', views.JingleSearchAPIView.as_view(), name='search-jingles'),
    
    # Analytics and reporting endpoints
    path('analytics/channel-performance/', views.ChannelPerformanceAPIView.as_view(), name='analytics-channel-performance'),
    path('analytics/zone-usage/', views.ZoneUsageAPIView.as_view(), name='analytics-zone-usage'),
    path('analytics/jingle-usage/', views.JingleUsageAPIView.as_view(), name='analytics-jingle-usage'),
    
    # Health and monitoring endpoints
    path('health/channels/', views.ChannelsHealthAPIView.as_view(), name='health-channels'),
    path('health/zones/', views.ZonesHealthAPIView.as_view(), name='health-zones'),
    path('health/system/', views.SystemHealthAPIView.as_view(), name='health-system'),
]