Completed
Pull Request — master (#18)
by Samuel
02:36
created

ExcludeWeekendConstraint::isWeekend()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 3
ccs 1
cts 1
cp 1
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 1
crap 1
1
<?php
2
3
namespace Recurrence\Constraint;
4
5
use Recurrence\Model\Recurrence;
6
7
/**
8
 * Class ExcludeWeekendConstraint
9
 * @package Recurrence\Constraint
10
 */
11
class ExcludeWeekendConstraint implements RecurrenceConstraintInterface
12
{
13
14
    /**
15
     * @param Recurrence $recurrence
16
     * @param \Datetime $datetime
17
     * @return \Datetime
18
     */
19
    public function apply(Recurrence $recurrence, \Datetime $datetime)
20
    {
21 1
        if ($this->isWeekend($datetime)) {
22
            // Add 1 or 2 days to skip weekend (we didn't use `next monday` pattern of \Datetime::format cause it remove time)
23 1
            $days = (7 - (int) $datetime->format('N') + 1);
24 1
            $datetime->modify(sprintf('+%d days', $days));
25
        }
26
27 1
        return $datetime;
28
    }
29
30
    /**
31
     * @param \Datetime $datetime
32
     * @return bool
33
     */
34
    private function isWeekend($datetime) {
35 1
        return ((int) $datetime->format('N') >= 6);
36
    }
37
}
38