# Importación de Deportistas desde Excel

## 📋 Descripción

Se ha implementado un sistema completo para importar múltiples deportistas desde un archivo Excel. Esta funcionalidad permite registrar deportistas y sus acudientes de forma masiva sin necesidad de hacerlo uno a uno.

## 🚀 Características

✅ **Importación masiva de deportistas** desde archivos Excel
✅ **Validación automática** de datos antes de insertar
✅ **Creación automática** de usuarios (deportistas y acudientes)
✅ **Manejo de errores** con reportes detallados
✅ **Descarga de plantilla** Excel predefinida
✅ **Soporte para múltiples formatos**: .xlsx, .xls, .csv
✅ **Transacciones de base de datos** para garantizar integridad

## 📁 Archivos Creados

### Controlador
- `app/Http/Controllers/ImportDeportistasController.php` - Controla la importación y descarga de plantillas

### Clase de Importación
- `app/Imports/DeportistasImport.php` - Lógica principal para procesar el archivo Excel

### Vistas
- `resources/views/admin/importar-deportistas/create.blade.php` - Formulario de importación
- `resources/views/admin/importar-deportistas/resultado.blade.php` - Resultado de la importación

### Rutas
Se agregaron las siguientes rutas en `routes/web.php`:
```php
Route::get('/admin/importar-deportistas', [ImportDeportistasController::class, 'create'])->name('import-deportistas.create');
Route::post('/admin/importar-deportistas', [ImportDeportistasController::class, 'store'])->name('import-deportistas.store');
Route::get('/admin/importar-deportistas/descargar-plantilla', [ImportDeportistasController::class, 'descargarPlantilla'])->name('import-deportistas.descargar-plantilla');
```

## 📊 Formato del Archivo Excel

El archivo Excel debe tener la siguiente estructura de columnas (en la primera fila van los encabezados):

| Columna | Campo | Tipo | Ejemplo |
|---------|-------|------|---------|
| A | Nombre Deportista | Texto | Juan Carlos García |
| B | Email Deportista | Email | juan.carlos@email.com |
| C | Fecha Nacimiento | Fecha (DD/MM/YYYY) | 15/06/2010 |
| D | Género | Texto | Masculino / Femenino |
| E | Nombre Acudiente | Texto | María García López |
| F | Email Acudiente | Email | maria.garcia@email.com |
| G | Teléfono Acudiente | Texto | 3001234567 |
| H | Relación Acudiente | Texto | Madre / Padre / Tío / etc |

## 🔧 Cómo Usar

### 1. Acceder al formulario de importación
```
http://tu-dominio/admin/importar-deportistas
```

### 2. Descargar la plantilla
Haz clic en el botón "Descargar Plantilla" para obtener un archivo Excel con los encabezados ya configurados.

### 3. Completar los datos
Abre la plantilla descargada y rellena los datos de los deportistas. Ejemplo:

```
| Nombre Deportista | Email Deportista | Fecha Nacimiento | Género | Nombre Acudiente | Email Acudiente | Teléfono Acudiente | Relación Acudiente |
|---|---|---|---|---|---|---|---|
| Juan Carlos García | juan.carlos@email.com | 15/06/2010 | Masculino | María García | maria.garcia@email.com | 3001234567 | Madre |
| Sofia Martínez | sofia.martinez@email.com | 22/05/2012 | Femenino | Pedro Martínez | pedro.martinez@email.com | 3009876543 | Padre |
```

### 4. Subir el archivo
1. En el formulario, selecciona el archivo Excel completado
2. Haz clic en el botón "Importar"
3. El sistema procesará los datos automáticamente

### 5. Ver resultados
Después de la importación, verás un resumen con:
- **Filas procesadas**: Total de filas leídas del archivo
- **Importados exitosamente**: Deportistas registrados correctamente
- **Errores**: Lista de filas con problemas

## ⚠️ Validaciones

El sistema realiza las siguientes validaciones automáticamente:

✓ **Nombre del deportista**: Requerido, máximo 255 caracteres
✓ **Email del deportista**: Requerido, formato válido de email, único en la base de datos
✓ **Fecha de nacimiento**: Requerido, formato DD/MM/YYYY o DD-MM-YYYY
✓ **Género**: Requerido, solo acepta "Masculino" o "Femenino"
✓ **Nombre del acudiente**: Requerido, máximo 255 caracteres
✓ **Email del acudiente**: Requerido, formato válido de email
✓ **Teléfono**: Opcional, máximo 20 caracteres
✓ **Relación**: Opcional, máximo 50 caracteres

## 🔐 Seguridad

- ✅ Validación de tipo de archivo (solo Excel y CSV)
- ✅ Límite de tamaño de archivo (5MB máximo)
- ✅ Validación de datos antes de insertar
- ✅ Uso de transacciones para garantizar integridad
- ✅ Hasheo de contraseñas automático
- ✅ Protección CSRF mediante tokens

## 📝 Notas Importantes

1. **Contraseña temporal**: Todos los usuarios importados reciben la contraseña temporal: `password123`
   - Se recomienda que cambien su contraseña al primer login

2. **Acudientes**: Si un email de acudiente ya existe en el sistema, se reutiliza ese registro

3. **Duplicados**: No se pueden importar deportistas con emails duplicados (tanto en el archivo como en la BD)

4. **Transacciones**: Si ocurre un error durante la importación de una fila, se revierte solo esa fila

5. **Roles automáticos**: 
   - Los deportistas se crean con rol `deportista`
   - Los acudientes se crean con rol `acudiente`

## 🐛 Solución de Problemas

### Error: "El archivo debe ser Excel (.xlsx, .xls) o CSV"
→ Asegúrate de usar un archivo con extensión `.xlsx`, `.xls` o `.csv`

### Error: "El email del deportista ya está registrado"
→ El email ya existe en la base de datos. Verifica que no esté duplicado en el archivo o BD

### Error: "Formato de fecha inválido. Use DD/MM/YYYY"
→ Asegúrate de usar el formato correcto: Día/Mes/Año (ej: 15/06/2010)

### Error: "Género debe ser 'Masculino' o 'Femenino'"
→ Solo se aceptan estos dos valores exactamente

## 📞 Soporte

Si encuentras problemas durante la importación, verifica:
1. El formato del archivo Excel
2. Que todos los campos requeridos estén completos
3. Que no haya espacios en blanco extra en los datos
4. Que el archivo no esté corrupto

## 🔄 Próximas mejoras potenciales

- [ ] Importar fotos de deportistas desde URLs
- [ ] Soporte para archivos ZIP con múltiples archivos
- [ ] Configuración personalizada de columnas
- [ ] Exportar errores a archivo Excel
- [ ] Importación con asignación automática a entrenamientos
- [ ] Visualización previa antes de importar
