<?php

namespace App\Http\Middleware;

use App\Providers\RouteServiceProvider;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class RedirectIfAuthenticated
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string|null  ...$guards
     * @return mixed
     */
    public function handle(Request $request, Closure $next, $guard = null)
    {
        switch($guard){
            case 'admin':
                if (Auth::guard($guard)->check()) {

                    if (auth('admin')->check()) {
                        $roleNames = auth('admin')->user()->getRoleNames()->toArray();
                        $leadManagerEnvRole = explode(',', env('AVAILABLE_LEAD_ROLES', 'Lead Manager,Operation Manager'));
                        
                        if (userCan('dashboard.agent') && array_intersect($leadManagerEnvRole, $roleNames)) {
                            return redirect()->route('dashboard.agentDashboard');
                        }
                    }
                    return redirect()->route('admin.dashboard');
                }
                break;
            default:
                if (Auth::guard($guard)->check()) {
                    return redirect()->route('student.dashboard');
                }
                break;
        }
        return $next($request);
    }
}
