Importación Masiva de Tutorados

Carga un archivo CSV o Excel para registrar tutorados en masa

{{-- STEPPER --}}
@foreach([1 => 'Cargar Archivo', 2 => 'Vista Previa', 3 => 'Asignar Tutor', 4 => 'Resultados'] as $num => $label)
@if($step > $num) @else {{ $num }} @endif
{{ $label }}
@if($num < 4)
@endif
@endforeach
{{-- ===================== STEP 1: UPLOAD ===================== --}} @if($step == 1)

Paso 1: Cargar Archivo

Sube un archivo CSV o Excel (.xlsx) con los datos de los tutorados.

{{-- Format Info --}}

Formato requerido del archivo:

Columna Requerida Descripción
nombre✅ SíNombre completo
email✅ SíCorreo institucional
codigoOpcionalCódigo de estudiante
telefonoOpcionalTeléfono de contacto
carreraOpcionalCarrera / programa
semestreOpcionalSemestre actual
numero_controlOpcionalNúmero de control
{{-- Upload Zone --}}
{{-- Loading indicator --}}
Procesando archivo...
@error('archivo')

{{ $message }}

@enderror
@endif {{-- ===================== STEP 2: PREVIEW ===================== --}} @if($step == 2)

Paso 2: Vista Previa

Archivo: {{ $archivoNombre }}{{ $totalFilas }} registro(s) encontrado(s) @if($totalFilas > 100) · Mostrando primeros 100 @endif

{{-- Validation Errors --}} @if(!empty($erroresValidacion))

Se encontraron {{ count($erroresValidacion) }} problema(s):

    @foreach(array_slice($erroresValidacion, 0, 10) as $error)
  • {{ $error }}
  • @endforeach
@if(count($erroresValidacion) > 10)

... y {{ count($erroresValidacion) - 10 }} error(es) más

@endif
@else

Estructura válida. {{ $totalFilas }} registros listos para importar.

@endif {{-- Data Table --}}
@foreach($headers as $header) @endforeach @foreach($previewData as $idx => $row) @foreach($headers as $header) @endforeach @endforeach
#{{ $header }}
{{ $idx + 1 }} @if($header === 'email' && !filter_var($row[$header] ?? '', FILTER_VALIDATE_EMAIL)) {{ $row[$header] ?? '-' }} @elseif(empty($row[$header] ?? '')) @else {{ $row[$header] }} @endif
@endif {{-- ===================== STEP 3: ASSIGN TUTOR ===================== --}} @if($step == 3)

Paso 3: Asignar Tutor

Selecciona el tutor que recibirá los {{ $totalFilas }} tutorados de este archivo.

@error('tutorSeleccionado')

{{ $message }}

@enderror @error('selectedTutorId')

{{ $message }}

@enderror
{{-- Summary before confirm --}} @if($tutorSeleccionado) @php $tutorSelec = $tutores->find($tutorSeleccionado) @endphp

Resumen de la operación:

  • {{ $totalFilas }} registros en el archivo
  • • Tutor destino: {{ $tutorSelec?->name }}
  • • Se crearán usuarios nuevos con contraseña temporal
  • • Los emails duplicados se actualizarán y reasignarán
@endif {{-- Confirm dialog --}} @if($confirmarImportacion)

⚠️ ¿Confirmas la importación de {{ $totalFilas }} registros?

Esta acción creará/actualizará usuarios y asignará tutor. No se puede deshacer fácilmente.

@endif
@if(!$confirmarImportacion) @endif
@endif {{-- ===================== STEP 4: RESULTS ===================== --}} @if($step == 4)
{{-- Result Summary --}}

¡Importación Completada!

Archivo: {{ $archivoNombre }}

{{ $resultados['creados'] ?? 0 }}

Creados

{{ $resultados['actualizados'] ?? 0 }}

Actualizados

{{ $resultados['omitidos'] ?? 0 }}

Omitidos

{{ $resultados['errores'] ?? 0 }}

Errores

{{-- Generated Credentials (Admin Only) --}} @if(!empty($credencialesGeneradas))

Credenciales Generadas

⚠️ Visible solo para administradores. Comparte con cuidado.

@foreach($credencialesGeneradas as $cred) @endforeach
Nombre Email Código Contraseña Temporal
{{ $cred['nombre'] }} {{ $cred['email'] }} {{ $cred['codigo'] }} {{ $cred['password_temporal'] }}

Se recomienda solicitar a los estudiantes que cambien su contraseña en el primer inicio de sesión.

@endif
Ver Usuarios
@endif