<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use App\Services\InvestmentProductService;

class RequireInvestmentProduct
{
    /**
     * Handle an incoming request.
     *
     * Les utilisateurs membres doivent avoir payé leur produit d'investissement
     * avant d'accéder à certaines zones (boutique, commissions, etc.)
     */
    public function handle(Request $request, Closure $next)
    {
        // Vérifier que c'est un membre connecté
        if (auth()->check() && auth()->user()->role === 'member') {
            $user = auth()->user();
            $investmentService = new InvestmentProductService();
            
            // Si le produit d'investissement n'est pas payé
            if (!$investmentService->hasUserPaidInvestment($user)) {
                // Rediriger vers la page de paiement
                return redirect()->route('investment-product')
                    ->with('error', 'Vous devez d\'abord payer votre produit d\'investissement obligatoire.');
            }
        }

        return $next($request);
    }
}
