<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; 
use Symfony\Component\HttpFoundation\Response;
use Illuminate\Support\Facades\Session;

use Carbon\Carbon;
class AdminMiddleware
{
  
    public function handle(Request $request, Closure $next): Response
    {

        if (!Auth::guard('admin')->check()) { 
        Session::forget('last_activity_admin');    
            return redirect('/admin/login');  
            exit;
        }

       $lastActivity = Carbon::parse(Session::get('last_activity_admin'));
         
        $timeout = 45; 
       $now = Carbon::now();
   
    $diffInMinutes = $now->diffInMinutes($lastActivity);

   $diffInMinutes = abs($diffInMinutes);  


    $diffInMinutes = round($diffInMinutes);  

    $diffInMinutes = (int) $diffInMinutes; 
        if ($lastActivity && $diffInMinutes > $timeout) {
            Auth::guard('admin')->logout(); 
            Session::forget('last_activity_admin');    
            return redirect('/patient-login')->with('message', 'Session timed out. Please log in again.');
        }

        if ($lastActivity && $now->diffInMinutes($lastActivity) <= $timeout) {
         
            Session::put('last_activity_admin', $now);
        } else {
            Session::put('last_activity_admin', $now);
        }
        return $next($request);
    }
}
