<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\View;
use Carbon\Carbon;
use App\Models\Patient;
use App\Models\Hcp;
use App\Models\FavouritePatient;
use App\Models\PatientAllergies;
use App\Models\PatientVitals;
use App\Models\PatientHealthHistory;
use Illuminate\Support\Facades\Config;  


class AuthenticatePatients 
{
    public function handle(Request $request, Closure $next, $guard = 'patients')
    {
    //   Config::set('app.timezone', 'Asia/Kolkata');
    //     Carbon::setLocale('en'); // Set the locale if needed for Carbon
    //     date_default_timezone_set('Asia/Kolkata'); // For immediate effect
        if (!Auth::guard($guard)->check()) {
           // Session::forget('last_activity_patients');
            return redirect('/patient-login');
        }

        // $lastActivity = Carbon::parse(Session::get('last_activity_patients'));
        // $timeout = 15; // Timeout in minutes
        // $now = Carbon::now();

        // $diffInMinutes = $now->diffInMinutes($lastActivity);
        // $diffInMinutes = abs($diffInMinutes);  
        // $diffInMinutes = round($diffInMinutes);  
        // $diffInMinutes = (int) $diffInMinutes; 

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

        // // Update session activity timestamp
        // if ($lastActivity && $now->diffInMinutes($lastActivity) <= $timeout) {
        //     Session::put('last_activity_patients', $now);
        // } else {
        //     Session::put('last_activity_patients', $now);
        // }

        // Share sidebar data with the view only if the patient is authenticated
        $patient = Auth::guard($guard)->user();
        $hcp = Auth::guard('hcp')->user();
         
      
       
        $hcpData= '';
        $favouritePatient = '';
        if ($patient) {
            $patientId = $patient->patient_id;
            $patient = Patient::where('patient_id', $patient->patient_id)->first(); 
            $getAllergies = PatientAllergies::where('patient_id', $patientId)->get();
            $getVitals = PatientVitals::where('patient_id', $patientId)
    ->orderBy('vital_id', 'desc')
    ->get();

            $getDiagnosis = PatientHealthHistory::where('patient_id', $patientId)->get();
            
            if($hcp){
            $hcpData = Hcp::where('hcp_id', $hcp->hcp_id)->first();  
            $favouritePatient = FavouritePatient::where(['hcp_id'=> $hcp->hcp_id, 'patient_id' => $patient->patient_id])->first();  
            }
 
            // Share the data with views for sidebar display
            View::share(compact('patient', 'getAllergies', 'getVitals', 'getDiagnosis', 'hcpData', 'favouritePatient'));
        }

        return $next($request);
    }
}
