<?php
/**
 * Script de corrección para asignar roles por defecto a familiares
 * Problema: Importaciones masivas anteriores dejaron tipo_relacion = NULL
 * Solución: Asignar "APODERADO TITULAR" por defecto a registros sin rol
 */

session_start();

// Verificar autenticación de administrador
if (!isset($_SESSION['user_id']) || strtolower($_SESSION['rol'] ?? '') !== 'administrador') {
    die("❌ Error: Solo administradores pueden ejecutar este script");
}

require_once __DIR__ . '/../config/db_auto.php';
require_once __DIR__ . '/system_logger.php';

$logger = SystemLogger::getInstance();

echo "<h2>🔧 Corrección de Relaciones Familiares</h2>\n";
echo "<p>Ejecutado por: " . htmlspecialchars($_SESSION['usuario']) . " el " . date('Y-m-d H:i:s') . "</p>\n";

try {
    $pdo->beginTransaction();
    
    // 1. Verificar registros problemáticos
    $stmt = $pdo->query("SELECT COUNT(*) FROM alumno_familiar WHERE tipo_relacion IS NULL OR tipo_relacion = ''");
    $count_null = $stmt->fetchColumn();
    
    echo "<h3>📊 Diagnóstico:</h3>\n";
    echo "<ul>\n";
    echo "<li>Registros con tipo_relacion NULL/vacío: <strong>$count_null</strong></li>\n";
    
    // Mostrar distribución actual
    $stmt = $pdo->query("
        SELECT tipo_relacion, COUNT(*) as cantidad 
        FROM alumno_familiar 
        GROUP BY tipo_relacion 
        ORDER BY cantidad DESC
    ");
    $distribucion = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    echo "<li>Distribución actual:<ul>\n";
    foreach($distribucion as $d) {
        $tipo = $d['tipo_relacion'] ?: 'NULL/VACÍO';
        echo "<li>$tipo: {$d['cantidad']} registros</li>\n";
    }
    echo "</ul></li>\n";
    echo "</ul>\n";
    
    if($count_null > 0) {
        echo "<h3>🔄 Aplicando corrección...</h3>\n";
        
        // 2. Actualizar registros NULL
        $stmt = $pdo->prepare("
            UPDATE alumno_familiar 
            SET tipo_relacion = 'APODERADO TITULAR' 
            WHERE tipo_relacion IS NULL OR tipo_relacion = ''
        ");
        $stmt->execute();
        $affected = $stmt->rowCount();
        
        echo "<p>✅ <strong>$affected registros actualizados</strong> a 'APODERADO TITULAR'</p>\n";
        
        // 3. Verificar resultado
        echo "<h3>📈 Resultado:</h3>\n";
        $stmt = $pdo->query("
            SELECT tipo_relacion, COUNT(*) as cantidad 
            FROM alumno_familiar 
            GROUP BY tipo_relacion 
            ORDER BY cantidad DESC
        ");
        $nueva_distribucion = $stmt->fetchAll(PDO::FETCH_ASSOC);
        
        echo "<ul>\n";
        foreach($nueva_distribucion as $d) {
            $tipo = $d['tipo_relacion'] ?: 'NULL/VACÍO';
            echo "<li>$tipo: {$d['cantidad']} registros</li>\n";
        }
        echo "</ul>\n";
        
        $pdo->commit();
        
        // Log de la operación
        $detalles = "Corregidos $affected registros de tipo_relacion NULL a APODERADO TITULAR";
        $logger->info('Corrección de relaciones familiares', $detalles);
        
        echo "<div style='background: #d4edda; border: 1px solid #c3e6cb; color: #155724; padding: 12px; border-radius: 4px; margin: 10px 0;'>\n";
        echo "<strong>✅ CORRECCIÓN COMPLETADA EXITOSAMENTE</strong><br>\n";
        echo "Ahora todos los alumnos deberían tener familiares disponibles para entrevistas.\n";
        echo "</div>\n";
        
    } else {
        echo "<div style='background: #d1ecf1; border: 1px solid #bee5eb; color: #0c5460; padding: 12px; border-radius: 4px; margin: 10px 0;'>\n";
        echo "<strong>ℹ️ NO SE REQUIERE CORRECCIÓN</strong><br>\n";
        echo "Todos los registros ya tienen tipo_relacion asignado.\n";
        echo "</div>\n";
        
        $pdo->rollback();
    }
    
} catch(Exception $e) {
    $pdo->rollback();
    echo "<div style='background: #f8d7da; border: 1px solid #f5c6cb; color: #721c24; padding: 12px; border-radius: 4px; margin: 10px 0;'>\n";
    echo "<strong>❌ ERROR:</strong> " . htmlspecialchars($e->getMessage()) . "\n";
    echo "</div>\n";
    
    $logger->error('Error en corrección de relaciones familiares', $e->getMessage());
}

echo "<p><a href='../views/convivencia_educativa.php'>← Volver a Convivencia Educativa</a></p>\n";
?>
