<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;

class CheckOnboarding
{
    /**
     * Handle an incoming request.
     */
    public function handle(Request $request, Closure $next): Response
    {
        // Onboarding is disabled — skip all checks to keep sign-up fast.
        // The onboarding routes/views/controller are preserved for future use.
        return $next($request);

        // Only check for authenticated users
        if (!auth()->check()) {
            return $next($request);
        }

        $user = auth()->user();

        // Skip onboarding check for inactive users (they see banned dashboard)
        if (!$user->is_active) {
            return $next($request);
        }

        // Skip onboarding check for admin users
        if ($user->is_admin) {
            return $next($request);
        }

        // Check if user has completed onboarding
        $preferences = $user->preferences;
        if (!$preferences || !$preferences->onboarding_completed) {
            // Don't redirect if already on onboarding pages
            if ($request->routeIs('onboarding.*')) {
                return $next($request);
            }

            // Don't redirect for AJAX requests
            if ($request->expectsJson()) {
                return $next($request);
            }

            // Don't redirect for API routes
            if ($request->is('api/*')) {
                return $next($request);
            }

            // Redirect to onboarding
            return redirect()->route('onboarding.show');
        }

        return $next($request);
    }
}