<?php
/**
 * Actualiza los datos clave de la tabla Plantilla a partir de los datos del aspirante,
 * cambia el estatus en aspirantes a 'contratado', marca envio_plantilla = 1 y lo registra en seguimiento_estatus.
 * @param mysqli $conn        Conexión activa a la BD
 * @param string $curp        CURP del aspirante
 * @param string $fechaIngreso Fecha de ingreso (YYYY-MM-DD)
 * @param string $usuario      Usuario que realiza la acción
 * @return array Resultado del proceso (success, message)
 */
function actualizarPlantillaSubd($conn, $curp, $fechaIngreso = null, $usuario = 'Sistema') {
    if (!$curp) return ['success' => false, 'message' => 'CURP no proporcionado'];

    // Obtener los datos necesarios desde aspirantes
    $sql = "SELECT id, vacante_pdv, modalidad, vacante_codigo FROM aspirantes WHERE curp = ?";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("s", $curp);
    $stmt->execute();
    $stmt->bind_result($aspirante_id, $vacante_pdv, $modalidad, $vacante_codigo);

    if ($stmt->fetch()) {
        $stmt->close();

        // Calcula fecha de nacimiento a partir de la CURP
        $fecha_nac = null;
        if ($curp && strlen($curp) === 18) {
            $yy = substr($curp, 4, 2);
            $mm = substr($curp, 6, 2);
            $dd = substr($curp, 8, 2);
            $siglo = intval($yy) <= 24 ? "20" : "19";
            $fecha_nac = "{$siglo}{$yy}-{$mm}-{$dd}";
        }

        // Realiza el UPDATE a Plantilla
        $sql2 = "UPDATE Plantilla SET 
                    `DEPARTAMENTO INTERNO` = ?, 
                    MODALIDAD = ?, 
                    posicionCode = ?, 
                    `FECHA DE INGRESO` = ?, 
                    `FECHA NACIMIENTO` = ?
                  WHERE CURP = ?";
        $stmt2 = $conn->prepare($sql2);
        $stmt2->bind_param("ssssss", $vacante_pdv, $modalidad, $vacante_codigo, $fechaIngreso, $fecha_nac, $curp);
        $resultado = $stmt2->execute();
        $stmt2->close();

        if ($resultado) {
            // 1. Cambia el estatus en aspirantes a 'contratado' y marca envio_plantilla = 1
            $nuevoEstatus = 'contratado';
            $stmt3 = $conn->prepare("UPDATE aspirantes SET estatus_actual = ?, envio_plantilla = 1 WHERE curp = ?");
            $stmt3->bind_param("ss", $nuevoEstatus, $curp);
            $stmt3->execute();
            $stmt3->close();

            // 2. Registra en seguimiento_estatus el movimiento
            if ($aspirante_id) {
                $comentario = "Cambio de estatus desde Pre-Alta (Subdistribuidor)";
                $stmt4 = $conn->prepare("INSERT INTO seguimiento_estatus (aspirante_id, estatus, usuario, comentario) VALUES (?, ?, ?, ?)");
                $stmt4->bind_param("isss", $aspirante_id, $nuevoEstatus, $usuario, $comentario);
                $stmt4->execute();
                $stmt4->close();
            }

            return ['success' => true, 'message' => 'Datos actualizados, estatus cambiado a contratado y marcado envío a plantilla.'];
        } else {
            return ['success' => false, 'message' => 'No se pudo actualizar datos en Plantilla.'];
        }
    }
    return ['success' => false, 'message' => 'No se encontró información del aspirante'];
}

// --- USO COMO ENDPOINT SOLO SI SE ACCEDE DIRECTAMENTE ---
if (basename(__FILE__) === basename($_SERVER['SCRIPT_FILENAME'])) {
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        require_once __DIR__ . '/../db/conexion.php';
        $curp = strtoupper(trim($_POST['CURP'] ?? ''));
        $fechaIngreso = $_POST['FECHA_DE_INGRESO'] ?? null;
        $usuario = $_SESSION['attuid'] ?? $_SESSION['nombre_usuario'] ?? 'Sistema';

        $result = actualizarPlantillaSubd($conn, $curp, $fechaIngreso, $usuario);
        echo json_encode($result); // Solo aquí se imprime el resultado
    }
}
