<?php
header('Content-Type: application/json');
$watermarkImageDir = 'watermark_logos/';

// Crear directorio si no existe
if (!is_dir($watermarkImageDir)) {
    if (!mkdir($watermarkImageDir, 0777, true)) {
        echo json_encode(['success' => false, 'message' => 'No se pudo crear el directorio']);
        exit;
    }
}

// Verificar que se recibió el archivo
if (!isset($_FILES['logo'])) {
    echo json_encode(['success' => false, 'message' => 'No se recibió ningún archivo']);
    exit;
}

// Verificar errores en la carga
if ($_FILES['logo']['error'] !== UPLOAD_ERR_OK) {
    $errorMessages = [
        UPLOAD_ERR_INI_SIZE => 'El archivo excede el tamaño máximo permitido',
        UPLOAD_ERR_FORM_SIZE => 'El archivo excede el tamaño del formulario',
        UPLOAD_ERR_PARTIAL => 'El archivo se subió parcialmente',
        UPLOAD_ERR_NO_FILE => 'No se subió ningún archivo',
        UPLOAD_ERR_NO_TMP_DIR => 'Falta el directorio temporal',
        UPLOAD_ERR_CANT_WRITE => 'No se pudo escribir en el disco',
        UPLOAD_ERR_EXTENSION => 'Una extensión de PHP detuvo la carga'
    ];
    
    $message = isset($errorMessages[$_FILES['logo']['error']]) 
        ? $errorMessages[$_FILES['logo']['error']] 
        : 'Error desconocido: ' . $_FILES['logo']['error'];
    
    echo json_encode(['success' => false, 'message' => $message]);
    exit;
}

// OPCIONAL: Verificar tamaño del archivo (5MB máximo)
$maxSize = 5 * 1024 * 1024; // 5MB
if ($_FILES['logo']['size'] > $maxSize) {
    echo json_encode(['success' => false, 'message' => 'El logo no debe superar los 5MB']);
    exit;
}

$targetFile = $watermarkImageDir . 'logo.png';
$imageFileType = strtolower(pathinfo($_FILES['logo']['name'], PATHINFO_EXTENSION));

// Verificar si es una imagen válida
$check = getimagesize($_FILES['logo']['tmp_name']);
if ($check === false) {
    echo json_encode(['success' => false, 'message' => 'El archivo no es una imagen válida']);
    exit;
}

// Cargar la imagen según su tipo
$image = null;
switch ($imageFileType) {
    case 'jpg':
    case 'jpeg':
        $image = @imagecreatefromjpeg($_FILES['logo']['tmp_name']);
        break;
    case 'png':
        $image = @imagecreatefrompng($_FILES['logo']['tmp_name']);
        break;
    case 'gif':
        $image = @imagecreatefromgif($_FILES['logo']['tmp_name']);
        break;
    case 'webp':
        $image = @imagecreatefromwebp($_FILES['logo']['tmp_name']);
        break;
    default:
        echo json_encode(['success' => false, 'message' => 'Formato no soportado. Use JPG, PNG, GIF o WebP']);
        exit;
}

if ($image === false || $image === null) {
    echo json_encode(['success' => false, 'message' => 'Error al procesar la imagen']);
    exit;
}

// Guardar siempre como PNG para mantener transparencia
imagealphablending($image, false);
imagesavealpha($image, true);

if (imagepng($image, $targetFile)) {
    imagedestroy($image);
    echo json_encode([
        'success' => true, 
        'message' => 'Logo subido correctamente',
        'path' => $targetFile
    ]);
} else {
    imagedestroy($image);
    echo json_encode(['success' => false, 'message' => 'Error al guardar el logo']);
}
?>