<?php

/**
 * Sincroniza las relaciones entre un alumno y una lista de familiares.
 *
 * Este script recibe un `alumno_id` y un array de `familiares`.
 * Primero, elimina todas las asociaciones existentes para ese alumno.
 * Luego, itera sobre el array de familiares y crea las nuevas asociaciones,
 * guardando el rol y el parentesco específico para cada uno.
 */

session_start();
header('Content-Type: application/json');

// 1. Seguridad: Verificar que el usuario esté autenticado
if (!isset($_SESSION['user_id'])) {
    http_response_code(403); // Forbidden
    echo json_encode(['success' => false, 'error' => 'Acceso no autorizado.']);
    exit;
}

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

$input = json_decode(file_get_contents('php://input'), true);

$alumno_id = $input['alumno_id'] ?? null;
$familiares = $input['familiares'] ?? [];

if (!$alumno_id || empty($familiares)) {
    http_response_code(400);
    echo json_encode(['success' => false, 'error' => 'Faltan datos: se requiere alumno_id y una lista de familiares.']);
    exit;
}

try {
    $pdo->beginTransaction();

    // 1. Eliminar todas las asociaciones existentes para este alumno
    $stmt_delete = $pdo->prepare("DELETE FROM alumno_familiar WHERE alumno_id = ?");
    $stmt_delete->execute([$alumno_id]);

    // 2. Insertar las nuevas asociaciones
    $stmt_insert = $pdo->prepare(
        "INSERT INTO alumno_familiar (alumno_id, familiar_id, tipo_relacion, parentesco_especifico) VALUES (?, ?, ?, ?)"
    );

    foreach ($familiares as $familiar) {
        $familiar_id = $familiar['id'] ?? null;
        $roles_string = $familiar['rol'] ?? '';
        $parentesco_especifico = !empty($familiar['parentesco_especifico']) ? $familiar['parentesco_especifico'] : null;

        if ($familiar_id) {
            // Separar los roles si vienen como una cadena (ej: "ROL1, ROL2")
            $roles = array_map('trim', explode(',', $roles_string));

            // Si no hay roles, asignar uno por defecto para asegurar la relación
            if (empty(array_filter($roles))) {
                $roles = ['No especificado'];
            }

            // Insertar una fila por cada rol
            foreach ($roles as $rol) {
                if (!empty($rol)) {
                    $stmt_insert->execute([$alumno_id, $familiar_id, $rol, $parentesco_especifico]);
                }
            }
        }
    }

    $pdo->commit();
    echo json_encode(['success' => true, 'message' => 'Asociaciones sincronizadas correctamente.']);
} catch (Exception $e) {
    $pdo->rollBack();
    http_response_code(500);
    echo json_encode(['success' => false, 'error' => 'Error en la base de datos: ' . $e->getMessage()]);
}
