<?php

namespace Core\App\Middleware;

use Core\App\Models\PageviewsModel;

class TrackPageview
{
    /**

     */
    public function handle(): void
    {
        // تأكد من وجود السيشن
        if (session_status() === PHP_SESSION_NONE) {
            session_start();
        }

        // إعداد session_id
        $sessionId = session_id();

        // IP
        $ip = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';

        // User Agent
        $agent = $_SERVER['HTTP_USER_AGENT'] ?? 'unknown';

        // URL الحالية
        $url = $_SERVER['REQUEST_URI'] ?? '/';

        // تجاهل تتبع طلبات AJAX للإحصائيات أو لوحة التحكم
        if ($this->shouldIgnore($url)) {
            return;
        }

        // نموذج الإحصائيات
        $model = new PageviewsModel();

        // حفظ الزيارة
        $model->addPageview($sessionId, $ip, $agent, $url);
    }

    /**
     * تحديد الصفحات التي يجب عدم تتبعها
     */
    protected function shouldIgnore(string $url): bool
    {
        // عدم تتبع الادمن
        if (str_starts_with($url, '/admin')) {
            return true;
        }

        // عدم تتبع API
        if (str_starts_with($url, '/api/')) {
            return true;
        }

        // عدم تتبع AJAX الداخلية
        if (str_contains($url, 'ajax') || str_contains($url, 'fetch')) {
            return true;
        }

        return false;
    }
}
