<?php
session_start();
require_once __DIR__ . '/../config/db_auto.php';
require_once __DIR__ . '/system_logger.php';

header('Content-Type: application/json; charset=utf-8');

$logger = SystemLogger::getInstance();

$rol = strtolower($_SESSION['rol'] ?? '');
if (!isset($_SESSION['user_id']) || !in_array($rol, ['administrador', 'convivencia', 'sicologo'])) {
    echo json_encode(['success' => false, 'msg' => 'Acceso denegado. Permiso insuficiente.']);
    exit;
}

try {
    $data = json_decode(file_get_contents('php://input'), true);
    if (!$data || !isset($data['id']) || !isset($data['alumno_id'])) {
        throw new Exception('Datos incompletos: ID de atención y ID de alumno son requeridos.');
    }
    $atencion_id = (int)$data['id'];
    $alumno_id = (int)$data['alumno_id'];

    if ($alumno_id <= 0) {
        throw new Exception('ID de alumno no válido.');
    }

    if ($atencion_id <= 0) {
        throw new Exception('ID de atención no válido.');
    }

    // Recolectar y sanear datos
    $motivo_atencion = isset($data['motivo_atencion']) ? trim($data['motivo_atencion']) : null;
    $antecedentes = isset($data['antecedentes']) ? trim($data['antecedentes']) : '';
    $ideacion = isset($data['ideacion']) ? (int)$data['ideacion'] : 0;
    $planificacion = isset($data['planificacion']) ? (int)$data['planificacion'] : 0;
    $intentos = isset($data['intentos']) ? (int)$data['intentos'] : 0;
    $medidas_acuerdos = isset($data['medidas_acuerdos']) ? trim($data['medidas_acuerdos']) : '';
    $notas = isset($data['notas']) ? trim($data['notas']) : '';
    $cierre = isset($data['cierre']) ? trim($data['cierre']) : '';
    $usuario_modificacion = (int)$_SESSION['user_id'];

    if (!$motivo_atencion) {
        throw new Exception('El motivo de la atención es obligatorio.');
    }

    $stmt = $pdo->prepare("
        UPDATE atencion_sicologica SET
            motivo_atencion = :motivo_atencion,
            antecedentes = :antecedentes,
            ideacion = :ideacion,
            planificacion = :planificacion,
            intentos = :intentos,
            medidas_acuerdos = :medidas_acuerdos,
            notas = :notas,
            cierre = :cierre,
            fecha_modificacion = NOW(),
            usuario_modificacion = :usuario_modificacion
        WHERE id = :id AND alumno_id = :alumno_id
    ");

    $stmt->execute([
        ':motivo_atencion' => $motivo_atencion,
        ':antecedentes' => $antecedentes,
        ':ideacion' => $ideacion,
        ':planificacion' => $planificacion,
        ':intentos' => $intentos,
        ':medidas_acuerdos' => $medidas_acuerdos,
        ':notas' => $notas,
        ':cierre' => $cierre,
        ':usuario_modificacion' => $usuario_modificacion,
        ':id' => $atencion_id,
        ':alumno_id' => $alumno_id
    ]);

    if ($stmt->rowCount() > 0) {
        $logger->data('Atención psicológica actualizada', "ID: {$atencion_id}, Usuario: {$_SESSION['user_id']}");
        echo json_encode(['success' => true, 'msg' => 'Atención actualizada correctamente.']);
    } else {
        echo json_encode(['success' => false, 'msg' => 'No se realizaron cambios. Los datos son los mismos o el registro no corresponde al alumno seleccionado.']);
    }
} catch (Exception $e) {
    http_response_code(500);
    $logger->error('Error al actualizar atención psicológica', 'Error: ' . $e->getMessage());
    echo json_encode(['success' => false, 'msg' => $e->getMessage()]);
}
