<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Symfony\Component\HttpFoundation\Response;
use App\Helpers\RoleHelper;

class SellerMiddleware
{
    public function handle(Request $request, Closure $next): Response
    {
        if (!Auth::check()) {
            return redirect()->route('seller.login')->with('error', 'Veuillez vous connecter d\'abord.');
        }

        $user = Auth::user();
        
        // Autoriser l'accès si l'admin est en mode impersonate d'un seller
        if (session()->has('impersonator.id') && $user->role === 'seller') {
            // L'admin impersone un seller, vérifier que le seller existe et est actif
            if (!$user->seller) {
                return redirect()->route('home')->with('error', 'Ce compte vendeur n\'a pas de profil vendeur configuré.');
            }
            if (!$user->seller->is_active) {
                return redirect()->route('home')->with('error', 'Ce compte vendeur est désactivé.');
            }
            return $next($request);
        }

        if (!$user->seller) {
            return redirect()->route('home')->with('error', 'Vous devez d\'abord vous inscrire comme vendeur.');
        }

        if (!$user->seller->is_active) {
            Auth::logout();
            return redirect()->route('seller.login')->with('error', 'Votre compte vendeur est desactive.');
        }

        return $next($request);
    }
}
