<?php
session_start();
require_once(__DIR__ . '/../db/conexion.php');

if (!isset($_SESSION['rol']) || !in_array($_SESSION['rol'], ['contabilidad', 'adminTi'])) {
    http_response_code(403);
    echo 'No autorizado.';
    exit;
}

if (empty($_POST['curps']) || empty($_POST['folio']) || empty($_POST['fecha'])) {
    http_response_code(400);
    echo 'Faltan datos.';
    exit;
}

$curps = json_decode($_POST['curps'], true);
$folio = trim($_POST['folio']);
$fecha = trim($_POST['fecha']);

if (!is_array($curps) || !$folio || !$fecha) {
    http_response_code(400);
    echo 'Datos inválidos.';
    exit;
}

// Log de entrada de datos
error_log(date('Y-m-d H:i:s') . " PREBAJA POST: " . json_encode($_POST) . "\n", 3, __DIR__ . '/error_log.txt');
error_log(date('Y-m-d H:i:s') . " PREBAJA CURPS: " . json_encode($curps) . ", FOLIO: $folio, FECHA: $fecha\n", 3, __DIR__ . '/error_log.txt');

$errores = [];
foreach ($curps as $curp) {
    if (!$curp) {
        error_log(date('Y-m-d H:i:s') . " PREBAJA: CURP vacío\n", 3, __DIR__ . '/error_log.txt');
        continue;
    }
    // Verificar si existe registro
    $check = $conn->prepare("SELECT 1 FROM Plantilla_datos_financieros WHERE CURP = ? LIMIT 1");
    $check->bind_param('s', $curp);
    $check->execute();
    $check->store_result();
    if ($check->num_rows > 0) {
        error_log(date('Y-m-d H:i:s') . " PREBAJA: UPDATE $curp\n", 3, __DIR__ . '/error_log.txt');
        $stmt = $conn->prepare("UPDATE Plantilla_datos_financieros SET Folio_pre_baja_idse = ?, Fecha_pre_baja = ? WHERE CURP = ?");
        $stmt->bind_param('sss', $folio, $fecha, $curp);
        if (!$stmt->execute()) {
            $errores[] = $curp;
            error_log(date('Y-m-d H:i:s') . " PREBAJA: ERROR UPDATE $curp: " . $stmt->error . "\n", 3, __DIR__ . '/error_log.txt');
        }
    } else {
        error_log(date('Y-m-d H:i:s') . " PREBAJA: INSERT $curp\n", 3, __DIR__ . '/error_log.txt');
        $stmt = $conn->prepare("INSERT INTO Plantilla_datos_financieros (CURP, Folio_pre_baja_idse, Fecha_pre_baja) VALUES (?, ?, ?)");
        $stmt->bind_param('sss', $curp, $folio, $fecha);
        if (!$stmt->execute()) {
            $errores[] = $curp . ' (Error: ' . $stmt->error . ')';
            error_log(date('Y-m-d H:i:s') . " PREBAJA: ERROR INSERT $curp: " . $stmt->error . "\n", 3, __DIR__ . '/error_log.txt');
        }
    }
}

if (count($errores) > 0) {
    $msg = 'Error al guardar pre-baja para: ' . implode(', ', $errores);
    error_log(date('Y-m-d H:i:s') . ' ' . $msg . "\n", 3, __DIR__ . '/error_log.txt');
    http_response_code(500);
    echo $msg;
    exit;
}

echo 'ok';
