/**
 * Database Connector Plugin - Frontend Entry Point
 * Registers all UI components with AgentLabs plugin registry
 */

import { AdminDatabaseConnections } from '../ui/AdminDatabaseConnections';
import { AdminScheduledCallbacks } from '../ui/AdminScheduledCallbacks';
import { PaymentAnalyticsDashboard } from '../ui/PaymentAnalyticsDashboard';
import { QueryBuilder } from '../ui/QueryBuilder';
import { ActionBuilder } from '../ui/ActionBuilder';
import { CallScriptsManager } from '../ui/CallScriptsManager';
import { AlertsManager } from '../ui/AlertsManager';
import { RiskDashboard } from '../ui/RiskDashboard';
import { ReportsBuilder } from '../ui/ReportsBuilder';

// Plugin registry interface (provided by AgentLabs)
interface PluginRegistry {
  registerComponent: (name: string, component: React.ComponentType<any>) => void;
  registerRoute: (path: string, component: React.ComponentType<any>, options?: any) => void;
  registerMenuItem: (menu: string, item: any) => void;
}

// Register all plugin components
export function registerDatabaseConnectorComponents(registry: PluginRegistry): void {
  // Register admin pages
  registry.registerComponent('AdminDatabaseConnections', AdminDatabaseConnections);
  registry.registerComponent('AdminScheduledCallbacks', AdminScheduledCallbacks);
  registry.registerComponent('PaymentAnalyticsDashboard', PaymentAnalyticsDashboard);
  registry.registerComponent('QueryBuilder', QueryBuilder);
  registry.registerComponent('ActionBuilder', ActionBuilder);
  registry.registerComponent('CallScriptsManager', CallScriptsManager);
  registry.registerComponent('AlertsManager', AlertsManager);
  registry.registerComponent('RiskDashboard', RiskDashboard);
  registry.registerComponent('ReportsBuilder', ReportsBuilder);
  
  // Register admin routes
  registry.registerRoute('/admin/database-connections', AdminDatabaseConnections, {
    title: 'Database Connections',
    icon: 'Database',
  });
  
  registry.registerRoute('/admin/database-callbacks', AdminScheduledCallbacks, {
    title: 'Scheduled Callbacks',
    icon: 'Clock',
  });

  registry.registerRoute('/admin/database-analytics', PaymentAnalyticsDashboard, {
    title: 'Payment Analytics',
    icon: 'BarChart',
  });

  registry.registerRoute('/admin/database-queries', QueryBuilder, {
    title: 'Query Builder',
    icon: 'Search',
  });

  registry.registerRoute('/admin/database-actions', ActionBuilder, {
    title: 'Action Builder',
    icon: 'Zap',
  });

  registry.registerRoute('/admin/database-scripts', CallScriptsManager, {
    title: 'Call Scripts',
    icon: 'FileText',
  });

  registry.registerRoute('/admin/database-alerts', AlertsManager, {
    title: 'Alerts Manager',
    icon: 'Bell',
  });

  registry.registerRoute('/admin/database-risk', RiskDashboard, {
    title: 'Risk Dashboard',
    icon: 'AlertTriangle',
  });

  registry.registerRoute('/admin/database-reports', ReportsBuilder, {
    title: 'Reports Builder',
    icon: 'FileText',
  });
  
  // Register menu items
  registry.registerMenuItem('admin', {
    id: 'database-connector',
    label: 'Database Connector',
    icon: 'Database',
    children: [
      {
        id: 'database-analytics',
        label: 'لوحة التحليلات',
        path: '/admin/database-analytics',
        icon: 'BarChart',
      },
      {
        id: 'database-connections',
        label: 'الاتصالات',
        path: '/admin/database-connections',
        icon: 'Server',
      },
      {
        id: 'database-queries',
        label: 'الاستعلامات',
        path: '/admin/database-queries',
        icon: 'Search',
      },
      {
        id: 'database-actions',
        label: 'الإجراءات',
        path: '/admin/database-actions',
        icon: 'Zap',
      },
      {
        id: 'database-callbacks',
        label: 'المكالمات المجدولة',
        path: '/admin/database-callbacks',
        icon: 'Clock',
      },
      {
        id: 'database-scripts',
        label: 'نصوص المكالمات',
        path: '/admin/database-scripts',
        icon: 'FileText',
      },
      {
        id: 'database-alerts',
        label: 'التنبيهات',
        path: '/admin/database-alerts',
        icon: 'Bell',
      },
      {
        id: 'database-risk',
        label: 'لوحة المخاطر',
        path: '/admin/database-risk',
        icon: 'AlertTriangle',
      },
      {
        id: 'database-reports',
        label: 'التقارير',
        path: '/admin/database-reports',
        icon: 'FileText',
      },
    ],
  });

  console.log('[Database Connector] Frontend components registered');
}

// Auto-register if plugin registry is available globally
if (typeof window !== 'undefined' && (window as any).__AGENTLABS_PLUGIN_REGISTRY__) {
  registerDatabaseConnectorComponents((window as any).__AGENTLABS_PLUGIN_REGISTRY__);
}

export default registerDatabaseConnectorComponents;
