. */ namespace App\Http\Middleware; use App\Application; use App\User; use Closure; use Exception; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\View; class ApplicationEligibility { /** * Handle an incoming request. * * @deprecated Deprecated in 0.9.0 * @see User::isEligible() * * @param Request $request * @param Closure $next * @return mixed * * @throws Exception */ public function handle($request, Closure $next) { $eligible = false; $daysRemaining = __('N/A'); if (Auth::check()) { $lastApplication = Application::where('applicantUserID', Auth::user()->id)->latest()->first(); if (is_null($lastApplication)) { View::share('isEligibleForApplication', true); View::share('eligibilityDaysRemaining', 0); return $next($request); } $daysRemaining = $lastApplication->created_at->addMonth()->diffInDays(now()); if ($lastApplication->created_at->diffInMonths(now()) > 1 && in_array($lastApplication->applicationStatus, ['DENIED', 'APPROVED'])) { $eligible = true; } Log::debug('Perfomed application eligibility check', [ 'eligible' => $eligible, 'daysRemaining' => $daysRemaining, 'ipAddress' => Auth::user()->originalIP, 'checkUserID' => Auth::user()->id, ]); View::share('isEligibleForApplication', $eligible); View::share('eligibilityDaysRemaining', $daysRemaining); } return $next($request); } }