# 🔧 SOLUCIÓN: Error "No hay campaña activa" (422)

## ❌ **EL PROBLEMA**

```
Error: "No hay campaña activa"
Status: 422 (Unprocessable Content)

Afecta a:
❌ http://localhost:8001/qr-campaigns/dashboard
❌ http://localhost:8001/electoral-map
❌ http://localhost:8001/call-center/dashboard
❌ http://localhost:8001/volunteers/dashboard
```

---

## 🎯 **CAUSA**

Tu sesión/token actual **NO incluye el `current_campaign_id`**.

Esto sucede cuando:
- Has iniciado sesión antes de que se configurara la campaña
- El token JWT está desactualizado
- El localStorage tiene datos antiguos

---

## ✅ **SOLUCIÓN DEFINITIVA** (3 pasos - 2 minutos)

### **Método 1: Script Automático** (MÁS FÁCIL)

```bash
# Paso 1: Abre esta URL
http://localhost:8001/fix-session.html

# Paso 2: Haz clic en el botón
"Cerrar Sesión y Redirigir a Login"

# Paso 3: Login de nuevo
Email: admin@campaign.com
Password: password

# ✅ ¡LISTO! Ahora todos los dashboards funcionarán
```

---

### **Método 2: Consola del Navegador** (RÁPIDO)

```bash
# Paso 1: Presiona F12 (abrir consola)

# Paso 2: Pega esto y presiona Enter
localStorage.clear();
sessionStorage.clear();
location.href = '/login';

# Paso 3: Login
Email: admin@campaign.com
Password: password

# ✅ ¡LISTO!
```

---

### **Método 3: Manual** (SI LOS ANTERIORES NO FUNCIONAN)

```bash
# Paso 1: Click derecho en la página → Inspeccionar
# Paso 2: Pestaña "Application" (Chrome) o "Storage" (Firefox)
# Paso 3: Expandir "Local Storage" → http://localhost:8001
# Paso 4: Click derecho → "Clear"
# Paso 5: Cerrar inspector
# Paso 6: Ir a http://localhost:8001/login
# Paso 7: Login con admin@campaign.com / password
```

---

## 🧪 **VERIFICACIÓN POST-SOLUCIÓN**

Después de hacer login nuevamente, abre consola (F12) y ejecuta:

```javascript
console.log('User:', JSON.parse(localStorage.getItem('user')));
```

**Deberías ver**:
```javascript
{
  id: 9,
  email: "admin@campaign.com",
  current_campaign_id: 10,  // ← ¡ESTO ES LO IMPORTANTE!
  name: "Admin Demo",
  ...
}
```

Si `current_campaign_id` es `null` o no existe, el login NO funcionó correctamente.

---

## 🎯 **URLS QUE FUNCIONARÁN DESPUÉS**

Una vez que hagas logout/login correctamente:

```bash
✅ http://localhost:8001/admin/dashboard
✅ http://localhost:8001/qr-campaigns/dashboard
✅ http://localhost:8001/electoral-map
✅ http://localhost:8001/call-center/dashboard
✅ http://localhost:8001/volunteers/dashboard
✅ http://localhost:8001/donations/dashboard
✅ http://localhost:8001/events/dashboard
✅ http://localhost:8001/voters/dashboard
✅ http://localhost:8001/email-marketing/dashboard
✅ http://localhost:8001/proposals/dashboard
✅ http://localhost:8001/content-ai/generator
✅ http://localhost:8001/debate-simulator

TODAS estas URLs requieren que el usuario tenga una campaña activa.
```

---

## 📊 **DATOS DISPONIBLES PARA CAMPAÑA 10**

Una vez que funcione, verás:

### **Mapa Electoral**:
```
http://localhost:8001/electoral-map

Datos:
✅ 10 zonas electorales (Bogotá)
✅ 38 mesas de votación
✅ Apoyo promedio: 59.1%
✅ Mapa con marcadores de colores:
   🟢 Verde = Alto apoyo (>60%)
   🟡 Amarillo = Medio (40-60%)
   🔴 Rojo = Bajo (<40%)
```

### **QR Campaigns**:
```
http://localhost:8001/qr-campaigns/dashboard

Datos:
✅ 15 afiches QR
✅ ~500 escaneos
✅ Mapa de calor
✅ 3 tabs funcionales
```

### **Call Center**:
```
http://localhost:8001/call-center/dashboard

Datos:
✅ 50 llamadas
✅ 2 scripts
✅ Gráfico de resultados
```

### **Voluntarios**:
```
http://localhost:8001/volunteers/dashboard

Datos:
✅ 30 voluntarios
✅ 300+ tareas
✅ Top 10 ranking
```

---

## 🔍 **DEBUGGING ADICIONAL**

### **Si después de logout/login sigue sin funcionar**:

```javascript
// En consola (F12), ejecuta:
fetch('/api/auth/me', {
    headers: {
        'Authorization': 'Bearer ' + localStorage.getItem('auth_token'),
        'Accept': 'application/json'
    }
}).then(r => r.json()).then(d => console.log('Usuario actual:', d));
```

**Deberías ver**:
```javascript
{
  id: 9,
  email: "admin@campaign.com",
  current_campaign_id: 10,  // ← DEBE ESTAR PRESENTE
  roles: ["campaign_admin"],
  ...
}
```

### **Si `current_campaign_id` es `null`**:

```bash
# Ejecutar en terminal:
php artisan tinker

# Dentro de tinker:
$user = User::find(9);
$user->current_campaign_id = 10;
$user->save();
exit

# Luego hacer logout/login de nuevo
```

---

## ⚡ **SOLUCIÓN RÁPIDA (COPY/PASTE)**

```javascript
// Pega esto en la consola del navegador (F12):
localStorage.clear();
sessionStorage.clear();
alert('Sesión limpiada. Redirigiendo al login...');
setTimeout(() => location.href = '/login', 1000);
```

Luego login con: `admin@campaign.com` / `password`

---

## 🚀 **HAZLO AHORA**

```
1. F12 (abrir consola)
2. Pegar: localStorage.clear(); location.href='/login';
3. Enter
4. Login: admin@campaign.com / password
5. Ir a: http://localhost:8001/electoral-map
```

**¡En 30 segundos estará funcionando!** ✅

---

## 📊 **QUÉ VERÁS DESPUÉS**

```
Mapa Electoral:
→ Estadísticas: 10 zonas, 38 mesas, 59.1% apoyo
→ Mapa con 38 marcadores de colores
→ Lista de 10 zonas ordenadas por apoyo
→ Tabla detallada

Console (F12):
🗺️ Response status: 200  ← (antes 422)
🗺️ Total zonas: 10
✅ Mapa electoral cargado exitosamente
```

**¡HAZ LOGOUT/LOGIN Y TODO FUNCIONARÁ!** 🎉




