apility/rule-builder

v1.4.1 2023-10-03 08:04 UTC

This package is auto-updated.

Last update: 2024-10-31 00:17:51 UTC


README

Installation

composer require apility/rule-builder

Example usage

<?php

use Carbon\Carbon;
use Netflex\RuleBuilder\DateRules\DateRule;

// Example of a rule that matches any dates in the year 2021 except the 17th of May, 24th of December and the month of June.
$rule = DateRule::parse([
    'type' => 'group',
    'count' => 'all',
    'children' => [
        [
            'type' => 'group',
            'count' => 'any',
            'children' => [
                [
                    'type' => 'dateRange',
                    'from' => '2021-01-01',
                    'to' => '2022-01-01'
                ]
            ]
        ],
        [
            'type' => 'not',
            'child' => [
                'type' => 'group',
                'count' => 'any',
                'children' => [
                    [
                        'name' => '17th of May',
                        'type' => 'dateRange',
                        'from' => '2021-05-17',
                        'to' => '2021-05-18'
                    ]
                    [
                        'name' => 'Christmas',
                        'type' => 'dateRange',
                        'from' => '2021-12-24',
                        'to' => '2021-12-25'
                    ],
                    [
                        'name' => 'Closed for the summer',
                        'type' => 'dateRange',
                        'from' => '2021-06-01',
                        'to' => '2021-07-01'
                    ]
                ]
            ]
        ]
    ]
]);

$validated = $rule->validate(Carbon::parse('2021-11-20'));

if ($validated) {
    // The rule matched the given date
}
<?php

use Carbon\Carbon;
use Netflex\RuleBuilder\DateRules\DateRule;

// Example of a rule that matches every saturday and sunday in the month of September in the year 2021.
$rule = DateRule::parse([
    'type' => 'group',
    'count' => 'all',
    'children' => [
        [
            'type' => 'dateRange',
            'from' => '2021-09-01',
            'to' => '2022-10-01'
        ],
        [
            'type' => 'dayOfWeek',
            'days' => [6, 0]
        ]
    ]
]);

$validated = $rule->validate(Carbon::parse('2021-09-22'));

if ($validated) {
    // The rule matched the given date
}