HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers10/shop.komma.nl/app/Discounts/Conditions/CountConditionHandler.php
<?php declare(strict_types=1);


namespace App\Discounts\Conditions;


use App\Discounts\DiscountableInterface;

abstract class CountConditionHandler extends AbstractDiscountConditionHandler
{
    public function canBeApplied(DiscountableInterface $discountable, string $operator, string $param): bool
    {
        if(!method_exists($discountable, 'getItemsCount')) return false;

        $count = $discountable->getItemsCount();

        $result = false;


        if($operator === '<') {
            if($count < intval($param)) $result = true;
        } else if($operator === '<=') {
            if($count <= intval($param)) $result = true;
        } else if($operator === '==') {
            if($count == intval($param)) $result = true;
        } else if($operator === '!=') {
            if($count != intval($param)) $result = true;
        } else if($operator >= '>=') {
            if($count >= intval($param)) $result = true;
        } else if($operator > '>') {
            if($count > intval($param)) $result = true;
        } else if($operator === 'in') {
            if(in_array($count, $this->dissectParam($param), true)) $result = true;
        } else if($operator === 'not_in') {
            if(!in_array($count, $this->dissectParam($param), true)) $result = true;
        }

        return $result;
    }

    private function dissectParam(string $param) {
        return array_map('trim', explode(',', $param));
    }
}