<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;

/**
 * راه‌حل اصلاحی برای بند ۳۳ (که در Phase 1/5 جا افتاده بود).
 * به‌جای Update در هر درخواست (که فشار زیادی به دیتابیس می‌زند)، فقط اگر
 * last_seen_at بیش از ۶۰ ثانیه قدیمی باشد به‌روزرسانی می‌شود — سبک و کافی
 * برای دقتِ «آنلاین/آفلاین» که در حد چند ثانیه اهمیت ندارد.
 *
 * ثبت در bootstrap/app.php به‌عنوان global middleware (بعد از 'auth'):
 *   $middleware->append(\App\Http\Middleware\TrackLastSeen::class);
 */
class TrackLastSeen
{
    public function handle(Request $request, Closure $next): Response
    {
        $user = $request->user();

        if ($user && (! $user->last_seen_at || $user->last_seen_at->lt(now()->subSeconds(60)))) {
            $user->forceFill(['last_seen_at' => now()])->saveQuietly(); // بدون رویدادهای Eloquent اضافی
        }

        return $next($request);
    }
}
