<?php
require_once __DIR__ . '/../config/db_auto.php';
require_once __DIR__ . '/system_logger.php';
session_start();
header('Content-Type: application/json');

$logger = SystemLogger::getInstance();

if (!isset($_SESSION['user_id'])) {
    http_response_code(401);
    echo json_encode(['success' => false, 'msg' => 'No autenticado.']);
    exit;
}

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    http_response_code(405);
    echo json_encode(['success' => false, 'msg' => 'Método no permitido.']);
    exit;
}

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

if (json_last_error() !== JSON_ERROR_NONE) {
    http_response_code(400);
    echo json_encode(['success' => false, 'msg' => 'Datos JSON inválidos.']);
    exit;
}

$alumno_id = isset($data['alumno_id']) ? (int)$data['alumno_id'] : null;
$fecha_atencion = isset($data['fecha_atencion']) ? trim($data['fecha_atencion']) : null;
$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_registro = (int)$_SESSION['user_id'];

if (!$alumno_id || !$fecha_atencion || !$motivo_atencion) {
    echo json_encode(['success' => false, 'msg' => 'Faltan datos obligatorios: Alumno, Fecha y Motivo.']);
    exit;
}

// Formatear fecha para la BD
$fecha_completa = str_replace('T', ' ', $fecha_atencion);
if (strlen($fecha_completa) === 16) { // Si no vienen segundos
    $fecha_completa .= ':00';
}

try {
    $pdo->beginTransaction();

    $stmt = $pdo->prepare("
        INSERT INTO atencion_sicologica (
            alumno_id, usuario_id, fecha_atencion, motivo_atencion, 
            antecedentes, ideacion, planificacion, intentos, 
            medidas_acuerdos, notas, cierre, 
            fecha_creacion, usuario_registro
        ) VALUES (
            :alumno_id, :usuario_id, :fecha_atencion, :motivo_atencion,
            :antecedentes, :ideacion, :planificacion, :intentos,
            :medidas_acuerdos, :notas, :cierre,
            NOW(), :usuario_registro
        )
    ");

    $stmt->execute([
        ':alumno_id' => $alumno_id,
        ':usuario_id' => $usuario_registro,
        ':fecha_atencion' => $fecha_completa,
        ':motivo_atencion' => $motivo_atencion,
        ':antecedentes' => $antecedentes,
        ':ideacion' => $ideacion,
        ':planificacion' => $planificacion,
        ':intentos' => $intentos,
        ':medidas_acuerdos' => $medidas_acuerdos,
        ':notas' => $notas,
        ':cierre' => $cierre,
        ':usuario_registro' => $usuario_registro
    ]);

    $atencion_id = $pdo->lastInsertId();

    $pdo->commit();

    $logger->data('Nueva atención psicológica creada', "ID: $atencion_id, Alumno ID: $alumno_id, Motivo: $motivo_atencion");
    echo json_encode([
        'success' => true,
        'msg' => 'Atención guardada correctamente.',
        'atencion_id' => $atencion_id
    ]);
} catch (Exception $e) {
    if ($pdo->inTransaction()) {
        $pdo->rollBack();
    }
    $logger->error('Error al guardar atención psicológica', "Usuario ID: {$_SESSION['user_id']}, Alumno ID: $alumno_id, Error: " . $e->getMessage());
    http_response_code(500);
    echo json_encode(['success' => false, 'msg' => 'Error en el servidor: ' . $e->getMessage()]);
}
