<?php
include '../connect.php';

$response = ['success' => false];

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['profile_image']) && isset($_POST['user_id'])) {
    $userId = intval($_POST['user_id']);
    $file = $_FILES['profile_image'];

    // Verifica erros
    if ($file['error'] !== UPLOAD_ERR_OK) {
        $response['message'] = "Erro no upload da imagem.";
        echo json_encode($response);
        exit;
    }

    // Valida tipo de arquivo
    $allowedTypes = ['image/jpeg', 'image/png', 'image/webp'];
    if (!in_array($file['type'], $allowedTypes)) {
        $response['message'] = "Tipo de imagem inválido.";
        echo json_encode($response);
        exit;
    }

    // Gera nome único
    $ext = pathinfo($file['name'], PATHINFO_EXTENSION);
    $newFileName = "user_{$userId}_" . time() . ".$ext";
    $uploadDir = '../uploads/';
    $uploadPath = $uploadDir . $newFileName;

    if (!is_dir($uploadDir)) {
        mkdir($uploadDir, 0755, true);
    }

    if (move_uploaded_file($file['tmp_name'], $uploadPath)) {
        $relativePath = "uploads/$newFileName";

        // Atualiza no banco
        $stmt = $TraceStockDB->prepare("UPDATE usuarios SET foto = ? WHERE id = ?");
        $stmt->bind_param("si", $relativePath, $userId);
        if ($stmt->execute()) {
            $response['success'] = true;
            $response['newImageUrl'] = "../" . $relativePath; // caminho relativo ao HTML
        } else {
            $response['message'] = "Erro ao atualizar no banco.";
        }
    } else {
        $response['message'] = "Erro ao mover o arquivo.";
    }
} else {
    $response['message'] = "Requisição inválida.";
}

echo json_encode($response);
?>