MOON
Server: Apache
System: Linux server.royaltuning.hu 4.18.0-425.13.1.el8_7.x86_64 #1 SMP Tue Feb 21 04:20:52 EST 2023 x86_64
User: royaltuning (1001)
PHP: 8.2.32
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //var/www/html/Modules/Coupon/Checkers/ExcludedCategories.php
<?php

namespace Modules\Coupon\Checkers;

use Closure;
use Modules\Cart\Facades\Cart;
use Modules\Coupon\Exceptions\InapplicableCouponException;

class ExcludedCategories
{
    public function handle($coupon, Closure $next)
    {
        $coupon->load('excludeCategories');

        if ($coupon->excludeCategories->isEmpty()) {
            return $next($coupon);
        }

        foreach (Cart::items() as $cartItem) {
            if ($this->inExcludedCategories($coupon, $cartItem)) {
                throw new InapplicableCouponException;
            }
        }

        return $next($coupon);
    }

    private function inExcludedCategories($coupon, $cartItem)
    {
        return $coupon->excludeCategories->intersect($cartItem->product->categories)->isNotEmpty();
    }
}