'use client'; import React, { useState } from 'react'; import { X, Download, Database, Check, AlertCircle, Upload, FileSpreadsheet } from 'lucide-react'; import { apiFetch } from '@/lib/api'; import ExcelImportModal from './ExcelImportModal'; interface MySQLImportModalProps { onSuccess?: () => void; onCancel?: () => void; } export default function MySQLImportModal({ onSuccess, onCancel }: MySQLImportModalProps) { const [showExcelModal, setShowExcelModal] = useState(false); const [importing, setImporting] = useState(false); const [importResult, setImportResult] = useState(null); const [error, setError] = useState(null); const handleImportAll = async () => { if (!confirm('¿Estás seguro de importar preguntas desde SAM Diagnóstico (adultos, kids y teens)? Esto puede tomar varios minutos.')) { return; } try { setImporting(true); setError(null); const result = await apiFetch('/question-bank/import-sam-diagnostico', { method: 'POST', body: JSON.stringify({}), }); setImportResult(result); // Refresh parent data but keep modal open so the user can inspect counts/errors. onSuccess?.(); } catch (error: any) { console.error('SAM diagnostico import failed:', error); setError(error.message || 'Error al importar preguntas desde SAM Diagnóstico'); } finally { setImporting(false); } }; if (showExcelModal) { return ( setShowExcelModal(false)} /> ); } return (
{/* Header */}

Importar Preguntas

Desde MySQL o Excel

{/* Content */}
{/* SAM Diagnostico Import */}

Importar desde SAM Diagnostico

  • • Origen: tablas SAM diagnostico (adultos, kids y teens)
  • • Sin duplicados (usa sam_id en source_metadata)
  • • Mapeo directo al banco de preguntas de OpenCCB
{/* Excel Import */}

Importar desde Excel

  • • Archivo .xlsx con tus preguntas
  • • Plantilla personalizada
  • • Múltiples tipos de preguntas
{/* Result Messages */} {importResult && (

¡Importación completada!

Importadas: {importResult.imported}
Saltadas: {importResult.skipped}
{importResult.updated !== undefined && (
Actualizadas: {importResult.updated}
)}
{Array.isArray(importResult.errors) && importResult.errors.length > 0 && (

Errores reportados por el backend: {importResult.errors.length}

Primer error: {String(importResult.errors[0])}

)}
)} {error && (

Error

{error}

)}
{/* Actions */}
); }