<?php
session_start();
header('Content-Type: application/json');
require_once(__DIR__ . '/../db/conexion.php');
require_once(__DIR__ . '/../utils/normalizar_texto.php');

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

// Validar CURP
$curp = strtoupper(trim(limpiarTexto($data['CURP'] ?? '', 'texto')));
if (empty($curp)) {
    echo json_encode(['success' => false, 'message' => 'CURP no recibido']);
    exit;
}

$empleado = $data['empleado'] ?? [];

// Limpiar y preparar datos
$modalidad            = limpiarTexto($empleado['MODALIDAD'] ?? '');
$departamento         = limpiarTexto($empleado['DEPARTAMENTO INTERNO'] ?? '');
$usuarioPRM           = limpiarTexto($empleado['UsuarioPRM'] ?? '');
$correoPersonal       = limpiarTexto($empleado['CORREO_PERSONAL'] ?? '', 'email');
$correoCorporativo    = limpiarTexto($empleado['CORREO CORPORATIVO'] ?? '', 'email');
$estado               = limpiarTexto($empleado['ESTADO'] ?? '');
$ciudad               = limpiarTexto($empleado['CIUDAD'] ?? '');
$direccion            = limpiarTexto($empleado['direccion'] ?? '');
$telefonoHerramienta  = limpiarTexto($empleado['telefonoHerramienta'] ?? '');
$tipoComision         = limpiarTexto($empleado['tipoComision'] ?? '');
$sueldo               = floatval($empleado['SUELDO MENSUAL'] ?? 0);
$valesDespensa        = limpiarTexto($empleado['ValesDespensa'] ?? '');
$cpdeRFC              = limpiarTexto($empleado['CPdeRFC'] ?? '');
$estatus              = limpiarTexto($empleado['Estatus'] ?? '');
$puesto               = limpiarTexto($empleado['PUESTO'] ?? '');
$attuid               = limpiarTexto($empleado['ATTUID'] ?? '');
$idEmpleado           = limpiarTexto($empleado['ID'] ?? '');
$nss                  = limpiarTexto($empleado['NSS'] ?? '');
$fechaIngreso         = limpiarTexto($empleado['FECHA DE INGRESO'] ?? '');
$numeroCuenta         = limpiarTexto($empleado['NUMERO_CUENTA'] ?? ''); // <-- NUEVO
$fechaBaja            = limpiarTexto($empleado['Fecha Baja'] ?? '');
$comentarioBaja       = limpiarTexto($empleado['ComentarioBaja'] ?? '');

// Validación del número de cuenta
if (!empty($numeroCuenta) && !preg_match('/^[0-9]{8,30}$/', $numeroCuenta)) {
    echo json_encode(['success' => false, 'message' => 'El número de cuenta debe tener solo números (8 a 30 dígitos).']);
    exit;
}

// Validar si el CURP ya existe en Plantilla
$check = $conn->prepare("SELECT 1 FROM Plantilla WHERE CURP = ?");
$check->bind_param("s", $curp);
$check->execute();
$existe = $check->get_result()->num_rows > 0;

if ($existe) {
    $sql = "UPDATE Plantilla SET
        MODALIDAD = ?, `DEPARTAMENTO INTERNO` = ?, UsuarioPRM = ?, `CORREO CORPORATIVO` = ?,
        CORREO_PERSONAL = ?, ESTADO = ?, CIUDAD = ?, direccion = ?, telefonoHerramienta = ?, tipoComision = ?,
        `SUELDO MENSUAL` = ?, ValesDespensa = ?, CPdeRFC = ?, Estatus = ?, PUESTO = ?, NSS = ?, ATTUID = ?, ID = ?, `FECHA DE INGRESO` = ?, `Fecha Baja` = ?, ComentarioBaja = ?
        WHERE CURP = ?";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("ssssssssssdsssssssssss",
    $modalidad, $departamento, $usuarioPRM, $correoCorporativo,
    $correoPersonal, $estado, $ciudad, $direccion, $telefonoHerramienta, $tipoComision,
    $sueldo, $valesDespensa, $cpdeRFC, $estatus, $puesto, $nss, $attuid, $idEmpleado, $fechaIngreso,
    $fechaBaja, $comentarioBaja, $curp
    );
} else {
    $sql = "INSERT INTO Plantilla (
        MODALIDAD, `DEPARTAMENTO INTERNO`, UsuarioPRM, `CORREO CORPORATIVO`, CORREO_PERSONAL,
        ESTADO, CIUDAD, direccion, telefonoHerramienta, tipoComision,
        `SUELDO MENSUAL`, ValesDespensa, CPdeRFC, Estatus, PUESTO, NSS, ATTUID, ID, `FECHA DE INGRESO`, `Fecha Baja`, ComentarioBaja, CURP
    ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

    $stmt = $conn->prepare($sql);
    $stmt->bind_param("ssssssssssdsssssssssss",
    $modalidad, $departamento, $usuarioPRM, $correoCorporativo,
    $correoPersonal, $estado, $ciudad, $direccion, $telefonoHerramienta, $tipoComision,
    $sueldo, $valesDespensa, $cpdeRFC, $estatus, $puesto, $nss, $attuid, $idEmpleado, $fechaIngreso,
    $fechaBaja, $comentarioBaja, $curp
    );
}

if ($stmt->execute()) {
    echo json_encode([
        'success' => true,
        'message' => $existe ? 'Datos actualizados correctamente en Plantilla' : 'Datos insertados en Plantilla'
    ]);
} else {
    echo json_encode([
        'success' => false,
        'message' => 'Error al guardar en Plantilla: ' . $stmt->error
    ]);
}
