# 📋 GUÍA DE CONFIGURACIÓN: Sistema de Certificaciones

## 🔧 Instalación y Configuración Rápida

### 1️⃣ Ejecutar Migraciones
```bash
php artisan migrate
```

Esto crea las tablas:
- `certificaciones` - Certificados registrados
- `certificacion_descargas` - Auditoría de descargas
- `certificacion_notificaciones` - Registro de emails enviados

### 2️⃣ Configurar Logo y Firma Digital

**Ubicación de archivos:**
```
storage/app/public/
├── logo.png              (Logo de la empresa)
└── firma.png             (Firma digital para el PDF)
```

**Variables de entorno (.env):**
```env
CERTIFICATES_LOGO_PATH=logo.png
CERTIFICATES_SIGNATURE_PATH=firma.png
```

### 3️⃣ Activar Firma Criptográfica (Opcional)

Si deseas que los PDFs estén digitalmente firmados:

**A. Crear un certificado digital (.p12 o .pfx):**
```bash
openssl req -new -x509 -days 365 -keyout private-key.pem -out certificate.pem
openssl pkcs12 -export -in certificate.pem -inkey private-key.pem -out certificate.p12
```

**B. Configurar en .env:**
```env
CERTIFICATES_SIGNING_ENABLED=true
CERTIFICATES_SIGN_CERT=/ruta/absoluta/al/certificate.p12
CERTIFICATES_SIGN_PRIVKEY=/ruta/absoluta/a/private-key.pem
CERTIFICATES_SIGN_PASSPHRASE=tu_contraseña
```

**C. Ubicación recomendada:**
```
storage/app/private/certs/
├── certificate.p12
└── private-key.pem
```

### 4️⃣ Configurar Correo Electrónico

En el archivo `.env`:
```env
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=tu_email@gmail.com
MAIL_PASSWORD=tu_contraseña_app
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=tu_email@gmail.com
MAIL_FROM_NAME="Escuela de Fútbol"
```

## 📊 Flujo de Trabajo

### Para Administrador/Escuela:
1. Ir a `/admin/certificaciones`
2. Click en "Nueva Certificación"
3. Seleccionar deportista, tipo, número, fechas
4. Guardar
5. ✅ Email automático se envía al deportista

### Para Deportista:
1. Ir a `/deportista/certificaciones`
2. Ver lista de sus certificaciones
3. Click en "Descargar" para obtener PDF
4. ✅ Descarga registrada automáticamente en auditoría

### Para Auditor/Admin:
1. Ir a `/admin/certificaciones-auditoria/ver`
2. Ver todas las descargas realizadas
3. Filtrar por fecha, deportista, certificación
4. Exportar a Excel si es necesario

## 🔐 Seguridad Implementada

✅ **Validación de Permisos:**
- Deportista solo ve sus propias certificaciones
- Deportista solo descarga la suya (403 si intenta acceder a otra)

✅ **Auditoría Automática:**
- IP address registrada
- User agent registrada
- Timestamp exacto de descarga

✅ **Notificaciones:**
- Email cuando se genera certificación
- Deportista recibe enlace directo para descargar

## 📧 Templates de Email

Ubicación: `resources/views/emails/certificacion-creada.blade.php`

Se envía automáticamente cuando:
- Admin crea una nueva certificación
- Contiene: tipo, número, fechas, descripción
- Botón directo para descargar

## 🎨 Personalización del PDF

Ubicación: `resources/views/certificaciones/pdf.blade.php`

Puedes personalizar:
- Colores (actualmente azul `#1a5f7a`)
- Textos y títulos
- Posición del logo y firma
- Watermark (filigrana)
- Bordes y estilos

## 📈 Estadísticas Disponibles

En la auditoría se muestran:
- Total de descargas
- Descargas este mes
- Certificaciones únicas descargadas
- Deportistas únicos que descargaron

## 🚀 Rutas Disponibles

### Admin:
- `GET /admin/certificaciones` - Listar todas
- `GET /admin/certificaciones/crear` - Formulario
- `POST /admin/certificaciones` - Guardar
- `GET /admin/certificaciones/{id}` - Ver detalles
- `GET /admin/certificaciones/{id}/editar` - Editar
- `PUT /admin/certificaciones/{id}` - Actualizar
- `DELETE /admin/certificaciones/{id}` - Eliminar
- `GET /admin/certificaciones-auditoria/ver` - Ver auditoría
- `POST /admin/certificaciones-auditoria/exportar` - Exportar Excel

### Deportista:
- `GET /deportista/certificaciones` - Mis certificaciones
- `GET /deportista/certificaciones/{id}/descargar` - Descargar PDF

## 🐛 Troubleshooting

### El email no se envía:
1. Verifica credenciales en `.env`
2. Revisa `storage/logs/laravel.log`
3. Asegúrate que Less secure apps esté habilitado (Gmail)

### El PDF no tiene logo/firma:
1. Verifica que el archivo exista en `storage/app/public/`
2. Comprueba permisos de carpeta (755)
3. Verifica ruta en `.env` (debe ser relativa)

### Firma criptográfica no funciona:
1. Verifica que CERTIFICATES_SIGNING_ENABLED=true
2. Asegúrate que la ruta al .p12 sea absoluta
3. Verifica que el certificado no esté expirado
4. Comprueba el passphrase

## 📞 Soporte

Para más información:
- [Laravel Documentation](https://laravel.com/docs)
- [Barryvdh DomPDF](https://github.com/barryvdh/laravel-dompdf)
- [Laravel Mail](https://laravel.com/docs/mail)
