<?php
// api_poligrafia/gestion_candidato/update.php

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Content-Type");
header("Access-Control-Allow-Methods: POST, OPTIONS");
header("Content-Type: application/json");

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    http_response_code(200);
    exit;
}

require_once(__DIR__ . '/../config.php');

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

if (!isset($data['ID_EMPRESA']) || empty($data['ID_EMPRESA'])) {
    http_response_code(400);
    echo json_encode(["success" => false, "message" => "ID de candidato es requerido para actualizar."]);
    exit;
}

 $required_fields = ['NOMBRE_CANDIDATO', 'APELLIDO_CANDIDATO', 'CORREO_CANDIDATO', 'TIPO_DOCUMENTO_CANDIDATO', 'NUMERO_DOCUMENTO_CANDIDATO', 'EMPRESA_CANDIDATO', 'ESTADO_CANDIDATO'];
foreach ($required_fields as $field) {
    if (!isset($data[$field]) || trim($data[$field]) === '') {
        http_response_code(400);
        echo json_encode(["success" => false, "message" => "Datos incompletos: el campo '$field' es requerido."]);
        exit;
    }
}

 $id = $mysqli->real_escape_string($data['ID_EMPRESA']);

// 1. Obtener la ruta de la imagen actual
 $stmt_get = $mysqli->prepare("SELECT FOTO_CANDIDATO FROM CANDIDATO_EMPRESA WHERE ID_EMPRESA = ?");
if ($stmt_get) {
    $stmt_get->bind_param("i", $id);
    $stmt_get->execute();
    $result_get = $stmt_get->get_result();
    if ($row = $result_get->fetch_assoc()) {
        $fotoPath = $row['FOTO_CANDIDATO'];
    }
    $stmt_get->close();
}

// 2. Manejar la imagen
 $fotoPath = $data['FOTO_CANDIDATO']; // Mantener la actual por defecto
if (!empty($data['FOTO_CANDIDATO']) && preg_match('/^data:image\/(\w+);base64,/', $data['FOTO_CANDIDATO'])) {
    // Es una imagen nueva, procesarla
    $base64Image = $data['FOTO_CANDIDATO'];
    $imageType = $matches[1];
    $base64Data = substr($base64Image, strpos($base64Image, ',') + 1);
    $decodedImage = base64_decode($base64Data);

    if ($decodedImage !== false) {
        $uploadDir = __DIR__ . '/uploads/candidatos/';
        if (!file_exists($uploadDir)) {
            mkdir($uploadDir, 0777, true);
        }
        $fileName = 'candidato_' . uniqid() . '.' . $imageType;
        $filePath = $uploadDir . $fileName;
        if (file_put_contents($filePath, $decodedImage)) {
            $fotoPath = 'uploads/candidatos/' . $fileName;
        }
    }
}

// 3. Actualizar en la base de datos
 $sql = "UPDATE CANDIDATO_EMPRESA SET 
            NOMBRE_CANDIDATO = ?, 
            APELLIDO_CANDIDATO = ?, 
            CORREO_CANDIDATO = ?, 
            TIPO_DOCUMENTO_CANDIDATO = ?, 
            NUMERO_DOCUMENTO_CANDIDATO = ?, 
            EMPRESA_CANDIDATO = ?, 
            ESTADO_CANDIDATO = ?,
            FOTO_CANDIDATO = ?
        WHERE ID_EMPRESA = ?";

 $stmt = $mysqli->prepare($sql);
if ($stmt === false) {
    http_response_code(500);
    echo json_encode(["success" => false, "message" => "Error al preparar la consulta: " . $mysqli->error]);
    exit;
}

 $stmt->bind_param(
    "ssssssssi", 
    $data['NOMBRE_CANDIDATO'], 
    $data['APELLIDO_CANDIDATO'], 
    $data['CORREO_CANDIDATO'], 
    $data['TIPO_DOCUMENTO_CANDIDATO'], 
    $data['NUMERO_DOCUMENTO_CANDIDATO'], 
    $data['EMPRESA_CANDIDATO'], 
    $data['ESTADO_CANDIDATO'],
    $fotoPath,
    $id
);

if ($stmt->execute()) {
    echo json_encode([
        "success" => true, 
        "message" => "Candidato actualizado exitosamente."
    ]);
} else {
    http_response_code(500);
    echo json_encode(["success" => false, "message" => "Error al ejecutar la consulta: " . $stmt->error]);
}

 $stmt->close();
 $mysqli->close();
?>