<?php

namespace App\Http\Middleware;

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

use Carbon\Carbon;
class AuthenticateHcp

{
    /**
     * Handle an incoming request.
     *
     * @param  \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response)  $next
     */
    public function handle(Request $request, Closure $next, $guard= 'hcp'): Response
    {
          if (!Auth::guard('hcp')->check()) {
          Session::forget('last_activity_hcp');
            // If not authenticated, redirect to the login page for admins
            return redirect('/hcp/login')->with('error', 'You must be logged in as an admin.');
        }
        $lastActivity = Carbon::parse(Session::get('last_activity_hcp'));
         
        $timeout = 45; 
       $now = Carbon::now();
   
    $diffInMinutes = $now->diffInMinutes($lastActivity);

   $diffInMinutes = abs($diffInMinutes);  


    $diffInMinutes = round($diffInMinutes);  

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

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