const db = require('../config/database');

/**
 * Visitor Tracking Middleware
 * Her gün bir IP'den sadece bir kayıt tutar (günlük unique ziyaretçi)
 */
const trackVisitor = async (req, res, next) => {
  try {
    // IP adresi al
    const ip_address = req.headers['x-forwarded-for']?.split(',')[0]?.trim() ||
                       req.headers['x-real-ip'] ||
                       req.connection.remoteAddress ||
                       req.socket.remoteAddress ||
                       '127.0.0.1';

    // IPv6-mapped IPv4 temizle
    const cleanIp = ip_address.startsWith('::ffff:') ? ip_address.substring(7) : ip_address;

    // Bot kontrolü (basit)
    const userAgent = req.headers['user-agent'] || '';
    const isBot = /bot|crawler|spider|scraper/i.test(userAgent);

    if (isBot) {
      return next(); // Bot'ları kaydetme
    }

    // Bugün bu IP'den kayıt var mı kontrol et
    const today = new Date().toISOString().split('T')[0]; // YYYY-MM-DD
    const [existing] = await db.query(
      'SELECT id FROM visitor_logs WHERE ip_address = ? AND DATE(created_at) = ? LIMIT 1',
      [cleanIp, today]
    );

    // Bugün ilk ziyareti ise kaydet
    if (existing.length === 0) {
      await db.query(
        'INSERT INTO visitor_logs (ip_address, user_agent, page_url, referrer) VALUES (?, ?, ?, ?)',
        [
          cleanIp,
          userAgent.substring(0, 500),
          req.originalUrl || req.url,
          req.headers.referer || req.headers.referrer || null
        ]
      );
    }
  } catch (error) {
    console.error('Visitor tracking error:', error);
    // Hata olsa bile devam et
  }

  next();
};

module.exports = { trackVisitor };
