<?php
// activa_datos_alta.php
require_once '../db/conexion.php';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $curps = isset($_POST['curps']) ? json_decode($_POST['curps'], true) : [];
    $folio = isset($_POST['folio']) ? trim($_POST['folio']) : '';
    $fecha = isset($_POST['fecha']) ? trim($_POST['fecha']) : '';
    if (!$curps || !is_array($curps) || !$folio || !$fecha) {
        http_response_code(400);
        echo json_encode(['success' => false, 'message' => 'Datos incompletos']);
        exit;
    }

    // DEBUG: Log de entrada
    error_log('CURPs recibidos: ' . print_r($curps, true));
    error_log('Folio: ' . $folio . ' | Fecha: ' . $fecha);
    if (empty($curps)) {
        error_log('Array de CURPs vacío');
    }
    foreach ($curps as $c) {
        if (empty($c)) error_log('CURP vacío detectado');
    }

    // Sanitizar y validar folio y fecha
    // Solo elimina espacios al inicio y final, permite cualquier carácter
    $folio = trim($folio);
    if ($folio === '') {
        error_log('Folio vacío');
        http_response_code(400);
        echo json_encode(['success' => false, 'message' => 'Folio vacío']);
        exit;
    }
    // Validar formato de fecha (YYYY-MM-DD)
    if (!preg_match('/^\d{4}-\d{2}-\d{2}$/', $fecha)) {
        error_log('Fecha inválida: ' . $fecha);
        http_response_code(400);
        echo json_encode(['success' => false, 'message' => 'Fecha inválida']);
        exit;
    }

    // Actualizar Plantilla (bind dinámico)
    $placeholders = implode(',', array_fill(0, count($curps), '?'));
    $sql = "UPDATE Plantilla SET NSSActivo = 1, RFCActivo = 1, estatusContaAlta = 'Alta' WHERE CURP IN ($placeholders)";
    $stmt = $conn->prepare($sql);
    if ($stmt === false) {
        error_log('Error prepare Plantilla: ' . $conn->error);
        http_response_code(500);
        echo json_encode(['success' => false, 'message' => 'Error prepare Plantilla']);
        exit;
    }
    $types = str_repeat('s', count($curps));
    if (!empty($curps)) {
        $bind = $stmt->bind_param($types, ...$curps);
        if ($bind === false) {
            error_log('Error en bind_param Plantilla: ' . $stmt->error);
        }
    }
    $ok = $stmt->execute();
    if ($ok === false) {
        error_log('Error execute Plantilla: ' . $stmt->error);
        http_response_code(500);
        echo json_encode(['success' => false, 'message' => 'Error execute Plantilla: ' . $stmt->error]);
        exit;
    }

    // Insertar/actualizar en Plantilla_datos_financieros
    $sqlFin = "INSERT INTO Plantilla_datos_financieros (CURP, Folio_idse, Fecha_alta_idse) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE Folio_idse = VALUES(Folio_idse), Fecha_alta_idse = VALUES(Fecha_alta_idse)";
    $stmtFin = $conn->prepare($sqlFin);
    if ($stmtFin === false) {
        error_log('Error prepare Financieros: ' . $conn->error);
        http_response_code(500);
        echo json_encode(['success' => false, 'message' => 'Error prepare Financieros']);
        exit;
    }
    $okFin = true;
    foreach ($curps as $curp) {
        $stmtFin->bind_param('sss', $curp, $folio, $fecha);
        if (!$stmtFin->execute()) {
            $okFin = false;
            error_log('Error insert Financieros: ' . $stmtFin->error);
            http_response_code(500);
            echo json_encode(['success' => false, 'message' => 'Error insert Financieros: ' . $stmtFin->error]);
            exit;
        }
    }

    if ($ok && $okFin) {
        echo json_encode(['success' => true]);
    } else {
        http_response_code(500);
        echo json_encode(['success' => false, 'message' => 'Error al actualizar']);
    }
    exit;
}

http_response_code(405);
echo json_encode(['success' => false, 'message' => 'Método no permitido']);
