<?php
// api_gold/usuario/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_COMPLETO_USUARIO', 'CORREO_USUARIO', 'PASSWORD_USUARIO', 
    'TIPO_USUARIO', 'ESTADO_USUARIO'
];

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. Dividir el nombre completo
 $nombreCompleto = trim($data['NOMBRE_COMPLETO_USUARIO']);
 $partes = explode(' ', $nombreCompleto, 2);
 $nombre = $partes[0];
 $apellido = isset($partes[1]) ? $partes[1] : '';

// 2. Hashear la contraseña
 $password_hash = password_hash($data['PASSWORD_USUARIO'], PASSWORD_DEFAULT);

// 3. Manejar la imagen (Base64 a archivo)
 $fotoPath = '';
if (!empty($data['FOTO_USUARIO'])) {
    $base64Image = $data['FOTO_USUARIO'];
    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/usuarios/';
        if (!file_exists($uploadDir)) {
            mkdir($uploadDir, 0777, true);
        }

        $fileName = 'usuario_' . uniqid() . '.' . $imageType;
        $filePath = $uploadDir . $fileName;

        if (file_put_contents($filePath, $decodedImage)) {
            $fotoPath = 'uploads/usuarios/' . $fileName;
        }
    }
}

// --- Insertar en la base de datos ---
 $sql = "
    INSERT INTO USUARIOS_SISTEMA (
        NOMBRE_USUARIO, APELLIDO_USUARIO, CORREO_USUARIO, 
        PASSWORD_USUARIO, TIPO_USUARIO, ESTADO_USUARIO, FOTO_USUARIO
    ) VALUES (?, ?, ?, ?, ?, ?, ?)
";

 $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(
    "ssssiss", 
    $nombre, 
    $apellido, 
    $data['CORREO_USUARIO'], 
    $password_hash, 
    $data['TIPO_USUARIO'], 
    $data['ESTADO_USUARIO'],
    $fotoPath
);

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

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