"""URL configuration for Reporting and Analytics app."""

from django.urls import path, include
from rest_framework.routers import DefaultRouter
from rest_framework.urlpatterns import format_suffix_patterns

from . import views

# Create router for API endpoints
router = DefaultRouter()
router.register(r'analytics-regions', views.AnalyticsRegionViewSet, basename='analyticsregion')
router.register(r'analytics-targets', views.AnalyticsTargetViewSet, basename='analyticstarget')
router.register(r'sfr-analytics', views.SfrAnalyticsViewSet, basename='sfranalytics')
router.register(r'market-share', views.MarketShareViewSet, basename='marketshare')
router.register(r'verification-records', views.VerificationRecordViewSet, basename='verificationrecord')
router.register(r'prediction-models', views.PredictionModelViewSet, basename='predictionmodel')
router.register(r'sfr-predictions', views.SfrPredictionViewSet, basename='sfrprediction')
router.register(r'adbreak-predictions', views.AdbreakPredictionViewSet, basename='adbreakprediction')
router.register(r'activity-logs', views.ActivityLogViewSet, basename='activitylog')
router.register(r'real-time-adbreaks', views.RealTimeAdbreakViewSet, basename='realtimeadbreak')

app_name = 'reporting'

urlpatterns = [
    # API endpoints
    path('api/', include(router.urls)),
    
    # Custom API endpoints
    path('api/analytics/summary/', views.analytics_summary_api, name='analytics-summary-api'),
    path('api/analytics/trends/', views.analytics_trends_api, name='analytics-trends-api'),
    path('api/analytics/top-performers/', views.top_performers_api, name='top-performers-api'),
    path('api/market-share/rankings/', views.market_share_rankings_api, name='market-share-rankings-api'),
    path('api/market-share/trends/', views.market_share_trends_api, name='market-share-trends-api'),
    path('api/verification/summary/', views.verification_summary_api, name='verification-summary-api'),
    path('api/verification/status-update/', views.verification_status_update_api, name='verification-status-update-api'),
    path('api/predictions/accuracy/', views.prediction_accuracy_api, name='prediction-accuracy-api'),
    path('api/predictions/generate/', views.generate_predictions_api, name='generate-predictions-api'),
    path('api/activity/recent/', views.recent_activity_api, name='recent-activity-api'),
    path('api/real-time/current/', views.current_adbreaks_api, name='current-adbreaks-api'),
    
    # Bulk operations
    path('api/analytics/bulk-import/', views.bulk_import_analytics, name='bulk-import-analytics'),
    path('api/verification/bulk-update/', views.bulk_update_verifications, name='bulk-update-verifications'),
    path('api/predictions/bulk-generate/', views.bulk_generate_predictions, name='bulk-generate-predictions'),
    
    # Export endpoints
    path('api/analytics/export/', views.export_analytics_data, name='export-analytics'),
    path('api/market-share/export/', views.export_market_share_data, name='export-market-share'),
    path('api/verification/export/', views.export_verification_data, name='export-verification'),
    path('api/predictions/export/', views.export_predictions_data, name='export-predictions'),
    path('api/activity/export/', views.export_activity_logs, name='export-activity'),
    
    # Report generation
    path('api/reports/analytics/', views.generate_analytics_report, name='generate-analytics-report'),
    path('api/reports/market-share/', views.generate_market_share_report, name='generate-market-share-report'),
    path('api/reports/verification/', views.generate_verification_report, name='generate-verification-report'),
    path('api/reports/prediction-accuracy/', views.generate_prediction_accuracy_report, name='generate-prediction-accuracy-report'),
    path('api/reports/daily/', views.generate_daily_report, name='generate-daily-report'),
    path('api/reports/weekly/', views.generate_weekly_report, name='generate-weekly-report'),
    path('api/reports/monthly/', views.generate_monthly_report, name='generate-monthly-report'),
    
    # Real-time endpoints
    path('api/real-time/dashboard/', views.real_time_dashboard_data, name='real-time-dashboard'),
    path('api/real-time/alerts/', views.real_time_alerts, name='real-time-alerts'),
    path('api/real-time/notifications/', views.real_time_notifications, name='real-time-notifications'),
    
    # Analytics dashboard endpoints
    path('api/dashboard/overview/', views.dashboard_overview_data, name='dashboard-overview'),
    path('api/dashboard/charts/', views.dashboard_charts_data, name='dashboard-charts'),
    path('api/dashboard/kpis/', views.dashboard_kpis_data, name='dashboard-kpis'),
    path('api/dashboard/recent-activity/', views.dashboard_recent_activity, name='dashboard-recent-activity'),
    
    # Model management endpoints
    path('api/models/activate/<int:model_id>/', views.activate_prediction_model, name='activate-model'),
    path('api/models/deactivate/<int:model_id>/', views.deactivate_prediction_model, name='deactivate-model'),
    path('api/models/performance/<int:model_id>/', views.model_performance_data, name='model-performance'),
    path('api/models/comparison/', views.model_comparison_data, name='model-comparison'),
    
    # Data validation endpoints
    path('api/validation/analytics/', views.validate_analytics_data, name='validate-analytics'),
    path('api/validation/predictions/', views.validate_predictions_data, name='validate-predictions'),
    path('api/validation/verification/', views.validate_verification_data, name='validate-verification'),
    
    # Integration endpoints
    path('api/integration/sfr-import/', views.sfr_data_import, name='sfr-data-import'),
    path('api/integration/verification-import/', views.verification_data_import, name='verification-data-import'),
    path('api/integration/external-sync/', views.external_data_sync, name='external-data-sync'),
    
    # Webhook endpoints
    path('webhooks/analytics-update/', views.analytics_webhook, name='analytics-webhook'),
    path('webhooks/verification-update/', views.verification_webhook, name='verification-webhook'),
    path('webhooks/prediction-complete/', views.prediction_webhook, name='prediction-webhook'),
    
    # Health check endpoints
    path('api/health/analytics/', views.analytics_health_check, name='analytics-health'),
    path('api/health/predictions/', views.predictions_health_check, name='predictions-health'),
    path('api/health/verification/', views.verification_health_check, name='verification-health'),
    
    # Django template views
    path('', views.AnalyticsDashboardView.as_view(), name='dashboard'),
    path('dashboard/', views.AnalyticsDashboardView.as_view(), name='analytics-dashboard'),
    
    # SFR Analytics views
    path('sfr-analytics/', views.SfrAnalyticsListView.as_view(), name='sfr-analytics-list'),
    path('sfr-analytics/create/', views.SfrAnalyticsCreateView.as_view(), name='sfr-analytics-create'),
    path('sfr-analytics/<int:pk>/', views.SfrAnalyticsDetailView.as_view(), name='sfr-analytics-detail'),
    path('sfr-analytics/<int:pk>/update/', views.SfrAnalyticsUpdateView.as_view(), name='sfr-analytics-update'),
    path('sfr-analytics/<int:pk>/delete/', views.SfrAnalyticsDeleteView.as_view(), name='sfr-analytics-delete'),
    
    # Market Share views
    path('market-share/', views.MarketShareListView.as_view(), name='market-share-list'),
    path('market-share/create/', views.MarketShareCreateView.as_view(), name='market-share-create'),
    path('market-share/<int:pk>/', views.MarketShareDetailView.as_view(), name='market-share-detail'),
    path('market-share/<int:pk>/update/', views.MarketShareUpdateView.as_view(), name='market-share-update'),
    path('market-share/<int:pk>/delete/', views.MarketShareDeleteView.as_view(), name='market-share-delete'),
    path('market-share/rankings/', views.MarketShareRankingsView.as_view(), name='market-share-rankings'),
    
    # Verification views
    path('verification/', views.VerificationRecordsListView.as_view(), name='verification-list'),
    path('verification/create/', views.VerificationRecordCreateView.as_view(), name='verification-create'),
    path('verification/<int:pk>/', views.VerificationRecordDetailView.as_view(), name='verification-detail'),
    path('verification/<int:pk>/update/', views.VerificationRecordUpdateView.as_view(), name='verification-update'),
    path('verification/<int:pk>/delete/', views.VerificationRecordDeleteView.as_view(), name='verification-delete'),
    path('verification/pending/', views.PendingVerificationsView.as_view(), name='pending-verifications'),
    path('verification/failed/', views.FailedVerificationsView.as_view(), name='failed-verifications'),
    
    # Prediction Model views
    path('models/', views.PredictionModelsListView.as_view(), name='models-list'),
    path('models/create/', views.PredictionModelCreateView.as_view(), name='model-create'),
    path('models/<int:pk>/', views.PredictionModelDetailView.as_view(), name='model-detail'),
    path('models/<int:pk>/update/', views.PredictionModelUpdateView.as_view(), name='model-update'),
    path('models/<int:pk>/delete/', views.PredictionModelDeleteView.as_view(), name='model-delete'),
    path('models/<int:pk>/performance/', views.ModelPerformanceView.as_view(), name='model-performance-view'),
    
    # SFR Predictions views
    path('predictions/sfr/', views.SfrPredictionsListView.as_view(), name='sfr-predictions-list'),
    path('predictions/sfr/create/', views.SfrPredictionCreateView.as_view(), name='sfr-prediction-create'),
    path('predictions/sfr/<int:pk>/', views.SfrPredictionDetailView.as_view(), name='sfr-prediction-detail'),
    path('predictions/sfr/<int:pk>/update/', views.SfrPredictionUpdateView.as_view(), name='sfr-prediction-update'),
    path('predictions/sfr/<int:pk>/delete/', views.SfrPredictionDeleteView.as_view(), name='sfr-prediction-delete'),
    
    # Ad Break Predictions views
    path('predictions/adbreak/', views.AdbreakPredictionsListView.as_view(), name='adbreak-predictions-list'),
    path('predictions/adbreak/create/', views.AdbreakPredictionCreateView.as_view(), name='adbreak-prediction-create'),
    path('predictions/adbreak/<int:pk>/', views.AdbreakPredictionDetailView.as_view(), name='adbreak-prediction-detail'),
    path('predictions/adbreak/<int:pk>/update/', views.AdbreakPredictionUpdateView.as_view(), name='adbreak-prediction-update'),
    path('predictions/adbreak/<int:pk>/delete/', views.AdbreakPredictionDeleteView.as_view(), name='adbreak-prediction-delete'),
    
    # Activity Log views
    path('activity/', views.ActivityLogListView.as_view(), name='activity-list'),
    path('activity/<int:pk>/', views.ActivityLogDetailView.as_view(), name='activity-detail'),
    path('activity/user/<int:user_id>/', views.UserActivityView.as_view(), name='user-activity'),
    path('activity/type/<str:activity_type>/', views.ActivityByTypeView.as_view(), name='activity-by-type'),
    
    # Real-time Ad Break views
    path('real-time/', views.RealTimeAdbreaksListView.as_view(), name='real-time-list'),
    path('real-time/create/', views.RealTimeAdbreakCreateView.as_view(), name='real-time-create'),
    path('real-time/<int:pk>/', views.RealTimeAdbreakDetailView.as_view(), name='real-time-detail'),
    path('real-time/<int:pk>/update/', views.RealTimeAdbreakUpdateView.as_view(), name='real-time-update'),
    path('real-time/<int:pk>/delete/', views.RealTimeAdbreakDeleteView.as_view(), name='real-time-delete'),
    path('real-time/active/', views.ActiveAdbreaksView.as_view(), name='active-adbreaks'),
    path('real-time/monitor/', views.AdbreakMonitorView.as_view(), name='adbreak-monitor'),
    
    # Reports views
    path('reports/', views.ReportsGenerationView.as_view(), name='reports'),
    path('reports/analytics/', views.AnalyticsReportView.as_view(), name='analytics-report'),
    path('reports/market-share/', views.MarketShareReportView.as_view(), name='market-share-report'),
    path('reports/verification/', views.VerificationReportView.as_view(), name='verification-report'),
    path('reports/predictions/', views.PredictionAccuracyReportView.as_view(), name='prediction-report'),
    path('reports/activity/', views.ActivityReportView.as_view(), name='activity-report'),
    path('reports/custom/', views.CustomReportView.as_view(), name='custom-report'),
    
    # Configuration views
    path('config/', views.ReportingConfigView.as_view(), name='config'),
    path('config/regions/', views.RegionsConfigView.as_view(), name='regions-config'),
    path('config/targets/', views.TargetsConfigView.as_view(), name='targets-config'),
    path('config/alerts/', views.AlertsConfigView.as_view(), name='alerts-config'),
    
    # Import/Export views
    path('import/', views.DataImportView.as_view(), name='data-import'),
    path('import/analytics/', views.AnalyticsImportView.as_view(), name='analytics-import'),
    path('import/verification/', views.VerificationImportView.as_view(), name='verification-import'),
    path('export/', views.DataExportView.as_view(), name='data-export'),
    path('export/analytics/', views.AnalyticsExportView.as_view(), name='analytics-export'),
    path('export/market-share/', views.MarketShareExportView.as_view(), name='market-share-export'),
    path('export/verification/', views.VerificationExportView.as_view(), name='verification-export'),
    
    # Analytics comparison views
    path('compare/', views.AnalyticsComparisonView.as_view(), name='analytics-comparison'),
    path('compare/channels/', views.ChannelComparisonView.as_view(), name='channel-comparison'),
    path('compare/periods/', views.PeriodComparisonView.as_view(), name='period-comparison'),
    path('compare/regions/', views.RegionComparisonView.as_view(), name='region-comparison'),
    
    # Trend analysis views
    path('trends/', views.TrendAnalysisView.as_view(), name='trend-analysis'),
    path('trends/analytics/', views.AnalyticsTrendsView.as_view(), name='analytics-trends'),
    path('trends/market-share/', views.MarketShareTrendsView.as_view(), name='market-share-trends'),
    path('trends/predictions/', views.PredictionTrendsView.as_view(), name='prediction-trends'),
    
    # Performance monitoring views
    path('performance/', views.PerformanceMonitorView.as_view(), name='performance-monitor'),
    path('performance/models/', views.ModelPerformanceMonitorView.as_view(), name='model-performance-monitor'),
    path('performance/data-quality/', views.DataQualityMonitorView.as_view(), name='data-quality-monitor'),
    path('performance/system/', views.SystemPerformanceView.as_view(), name='system-performance'),
    
    # Alert management views
    path('alerts/', views.AlertsManagementView.as_view(), name='alerts-management'),
    path('alerts/active/', views.ActiveAlertsView.as_view(), name='active-alerts'),
    path('alerts/history/', views.AlertsHistoryView.as_view(), name='alerts-history'),
    path('alerts/settings/', views.AlertsSettingsView.as_view(), name='alerts-settings'),
]

# Apply format suffix patterns for API endpoints
urlpatterns = format_suffix_patterns(urlpatterns)