DatetimeProviderFactory::create()   A
last analyzed

Complexity

Conditions 4
Paths 2

Size

Total Lines 13
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 4

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 7
c 1
b 0
f 0
dl 0
loc 13
ccs 6
cts 6
cp 1
rs 10
cc 4
nc 2
nop 1
crap 4
1
<?php
2
3
namespace Recurrence\Provider;
4
5
use Recurrence\Constraint\ProviderConstraint\EndOfMonthConstraint;
6
use Recurrence\Model\Frequency;
7
use Recurrence\Model\Recurrence;
8
9
class DatetimeProviderFactory
10
{
11
    public static function create(Recurrence $recurrence): EndOfMonthProvider | OptimizedProvider
12
    {
13 1
        $provider = new OptimizedProvider();
14
15
        if (
16 1
            $recurrence->hasConstraint(EndOfMonthConstraint::class) &&
17 1
            (string) $recurrence->getFrequency() == Frequency::FREQUENCY_MONTHLY &&
18 1
            in_array((int) $recurrence->getPeriodStartAt()->format('d'), [29, 30, 31])
19
        ) {
20 1
            $provider = new EndOfMonthProvider();
21
        }
22
23 1
        return $provider;
24
    }
25
}
26