<?php
session_start();
require_once __DIR__ . '/../db/conexion.php';
require_once __DIR__ . '/../utils/normalizar_texto.php';
require_once __DIR__ . '/../phpmailer/correo_solicitud_prm.php';

header('Content-Type: application/json');

$curp = limpiarTexto($_POST['CURP'] ?? '');

$fechaIngreso = $_POST['fecha_ingreso'] ?? '';
$tipoComision = limpiarTexto($_POST['tipo_comision'] ?? '');
$prmFinNuevoSugerida = $_POST['prm_fin_nuevo_sugerida'] ?? null;
$prmFinNuevo = $_POST['prm_fin_nuevo'] ?? null;

if (empty($curp) || empty($fechaIngreso) || empty($tipoComision)) {
    echo json_encode(['success' => false, 'message' => 'Faltan datos requeridos.']);
    exit;
}
// Validar fechas
if (empty($prmFinNuevoSugerida) || empty($prmFinNuevo)) {
    echo json_encode(['success' => false, 'message' => 'Faltan fechas de fin de estatus nuevo.']);
    exit;
}

// ✅ Validar si ya se envió la solicitud PRM
$verifica = $conn->prepare("SELECT solicitud_prm_enviada FROM Plantilla WHERE CURP = ? LIMIT 1");
$verifica->bind_param("s", $curp);
$verifica->execute();
$resVerifica = $verifica->get_result();

if ($row = $resVerifica->fetch_assoc()) {
    if ((int)$row['solicitud_prm_enviada'] === 1) {
        echo json_encode(['success' => false, 'message' => 'La solicitud PRM ya fue enviada anteriormente.']);
        exit;
    }
}

// ✅ Validar existencia y obtener datos
$stmt = $conn->prepare("SELECT CONCAT(NOMBRES, ' ', `APELLIDO PATERNO`, ' ', `APELLIDO MATERNO`) AS nombre_completo, `DEPARTAMENTO INTERNO` AS pdv, PUESTO FROM Plantilla WHERE CURP = ?");
$stmt->bind_param("s", $curp);
$stmt->execute();
$res = $stmt->get_result();

if ($res->num_rows === 0) {
    echo json_encode(['success' => false, 'message' => 'El CURP no existe en Plantilla.']);
    exit;
}

$datos = $res->fetch_assoc();
$nombreCompleto = mb_strtoupper($datos['nombre_completo']);
$pdv = mb_strtoupper($datos['pdv']);
$puesto = mb_strtoupper($datos['PUESTO']);


// ✅ Actualizar datos en Plantilla, incluyendo las nuevas fechas y estatus_prm
$update = $conn->prepare("UPDATE Plantilla SET `FECHA DE INGRESO` = ?, tipoComision = ?, prm_fin_nuevo_sugerida = ?, prm_fin_nuevo = ?, estatus_prm = 1 WHERE CURP = ?");
$update->bind_param("sssss", $fechaIngreso, $tipoComision, $prmFinNuevoSugerida, $prmFinNuevo, $curp);

if ($update->execute()) {
    // 📨 Enviar correo
    $correoExito = enviarCorreoPRM($nombreCompleto, $pdv, $fechaIngreso, $tipoComision, $puesto);

    if (!$correoExito) {
        error_log("⚠️ El correo no pudo enviarse, pero la solicitud fue actualizada.");
    }

    // 🟢 Marcar como enviada en Plantilla
    $marca = $conn->prepare("UPDATE Plantilla SET solicitud_prm_enviada = 1 WHERE CURP = ?");
    $marca->bind_param("s", $curp);
    $marca->execute();

    // 🧾 Insertar en Tickets
    date_default_timezone_set('America/Mexico_City');

    $quienSolicita = 'SACC';
    $pdvFijo = 'GRP TDA SAN JUANISTAS MER';
    $descripcion = "
Buen día.

Solicito su apoyo para crear el PRM del siguiente ejecutivo :

• Nombre completo: $nombreCompleto
• PDV: $pdv
• Fecha de ingreso: $fechaIngreso
• Tipo de comisión: $tipoComision
• Puesto: $puesto

Favor de validar el Ticket en intraRoca.
";

    $fechaHora = date('Y-m-d H:i:s');
    $departamento = 'SOFTWARE';
    $categoria = 'PRM';
    $estatus = 'NO ATENDIDO';
    $prmOptions = 'Nuevo Usuario';

    $insertTicket = $conn->prepare("INSERT INTO Tickets (Departamento, categoria, quienSolicita, PDV, descripcion, fechaHora, Estatus, PRMOptions, Prioridad) VALUES (?, ?, ?, ?, ?, ?, ?, ?, NULL)");
    $insertTicket->bind_param("ssssssss", $departamento, $categoria, $quienSolicita, $pdvFijo, $descripcion, $fechaHora, $estatus, $prmOptions);
    $insertTicket->execute();

// ✅ Obtener aspirante_id desde CURP
$getID = $conn->prepare("SELECT id FROM aspirantes WHERE curp = ? LIMIT 1");
$getID->bind_param("s", $curp);
$getID->execute();
$resID = $getID->get_result();
$rowID = $resID->fetch_assoc();

if ($rowID && isset($rowID['id'])) {
    $aspirante_id = $rowID['id'];

    // Verificar si ya existe un registro con estatus "contratado"
    $verificaSeg = $conn->prepare("SELECT 1 FROM seguimiento_estatus WHERE aspirante_id = ? AND estatus = 'contratado' LIMIT 1");
    $verificaSeg->bind_param("i", $aspirante_id);
    $verificaSeg->execute();
    $resSeg = $verificaSeg->get_result();

    if ($resSeg->num_rows === 0) {
        // Insertar comentario automático
        $comentario = "Se realizó la firma de contrato (vía solicitud PRM)";
        $estatusNuevo = "contratado";
        $usuario = $_SESSION['nombre_usuario'] ?? 'SISTEMA';
        $fecha = date('Y-m-d H:i:s');

        $insertSeg = $conn->prepare("INSERT INTO seguimiento_estatus (aspirante_id, estatus, fecha, usuario, comentario) VALUES (?, ?, ?, ?, ?)");
        $insertSeg->bind_param("issss", $aspirante_id, $estatusNuevo, $fecha, $usuario, $comentario);
        $insertSeg->execute();
    }
}

    echo json_encode(['success' => true, 'message' => 'Solicitud PRM enviada y registrada correctamente.']);
} else {
    echo json_encode(['success' => false, 'message' => 'Error al actualizar los datos en Plantilla.']);
}
