<?php
// api_poligrafia/gestion_candidato/create.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);

// Validar que los campos requeridos existan
 $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;
    }
}

// --- Preparar datos ---

// 1. Manejar la imagen (Base64 a archivo)
 $fotoPath = '';
if (!empty($data['FOTO_CANDIDATO'])) {
    $base64Image = $data['FOTO_CANDIDATO'];
    if (preg_match('/^data:image\/(\w+);base64,/', $base64Image, $matches)) {
        $imageType = $matches[1];
        $base64Data = substr($base64Image, strpos($base64Image, ',') + 1);
        $decodedImage = base64_decode($base64Data);

        if ($decodedImage === false) {
            http_response_code(400);
            echo json_encode(["success" => false, "message" => "La imagen enviada no es válida."]);
            exit;
        }

        $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;
        }
    }
}

// --- Insertar en la base de datos ---
// CORREGIDO: Consulta SQL con el número correcto de columnas y valores
 $sql = "
    INSERT INTO CANDIDATO_EMPRESA (
        NOMBRE_CANDIDATO, APELLIDO_CANDIDATO, CORREO_CANDIDATO, 
        TIPO_DOCUMENTO_CANDIDATO, NUMERO_DOCUMENTO_CANDIDATO, 
        EMPRESA_CANDIDATO, ESTADO_CANDIDATO, FOTO_CANDIDATO, 
        USUARIO_CREA, FECHA_CREACION
    ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())
";

 $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;
}

// CORREGIDO: Número correcto de parámetros y tipos
 $usuarioCrea = 1; // Valor por defecto para USUARIO_CREA
 $stmt->bind_param(
    "ssssssssi", // 9 strings y 1 integer (total 10)
    $data['NOMBRE_CANDIDATO'], 
    $data['APELLIDO_CANDIDATO'], 
    $data['CORREO_CANDIDATO'], 
    $data['TIPO_DOCUMENTO_CANDIDATO'], 
    $data['NUMERO_DOCUMENTO_CANDIDATO'], 
    $data['EMPRESA_CANDIDATO'], 
    $data['ESTADO_CANDIDATO'],
    $fotoPath, // FOTO_CANDIDATO
    $usuarioCrea // USUARIO_CREA
);

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

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