/**
 * Thêm BACKEND_URL vào đường dẫn hình ảnh
 * @param {Object} data - Dữ liệu cần xử lý
 * @returns {Object} - Dữ liệu đã được xử lý với đường dẫn hình ảnh đầy đủ
 */
function addBaseUrlToImages(data, baseUrl) {
  // baseUrl can be passed explicitly (e.g., from req), otherwise fall back to env
  const BACKEND_URL = baseUrl || process.env.BACKEND_URL || "";

  // Tạo bản sao sâu để tránh thay đổi dữ liệu gốc
  const processedData = JSON.parse(JSON.stringify(data));

  // Hàm đệ quy để xử lý tất cả các URL hình ảnh trong đối tượng
  const processObject = (obj) => {
    if (!obj || typeof obj !== "object") return;

    Object.keys(obj).forEach((key) => {
      // Kiểm tra nếu thuộc tính chứa đường dẫn hình ảnh bắt đầu bằng /uploads/
      if (typeof obj[key] === "string" && obj[key].startsWith("/uploads/")) {
        // Thêm BACKEND_URL nếu đường dẫn chưa có http
        if (!obj[key].startsWith("http")) {
          obj[key] = `${BACKEND_URL}${obj[key]}`;
        }
      } else if (typeof obj[key] === "object") {
        // Đệ quy xử lý các đối tượng và mảng lồng nhau
        processObject(obj[key]);
      }
    });
  };

  processObject(processedData);
  return processedData;
}

/**
 * Tạo full URL cho ảnh từ đường dẫn tương đối - dùng cho EJS templates
 * @param {string} imagePath - Đường dẫn ảnh
 * @param {string} backendUrl - Backend URL (optional, sẽ lấy từ env nếu không có)
 * @returns {string} - Full URL của ảnh
 */
function getFullImageUrl(imagePath, backendUrl = null) {
  if (!imagePath) return "";

  // Nếu đã là full URL thì return luôn
  if (imagePath.startsWith("http")) {
    return imagePath;
  }

  // Lấy backend URL
  const baseUrl = (
    backendUrl ||
    process.env.BACKEND_URL ||
    "http://localhost:3001"
  ).replace(/\/$/, "");

  // Xử lý đường dẫn
  let imgSrc = imagePath;
  if (!imgSrc.startsWith("/")) {
    imgSrc = "/" + imgSrc;
  }

  return baseUrl + imgSrc;
}

module.exports = {
  addBaseUrlToImages,
  getFullImageUrl,
};
