| Total Complexity | 3 |
| Total Lines | 16 |
| Duplicated Lines | 0 % |
| Coverage | 100% |
| Changes | 1 | ||
| Bugs | 0 | Features | 0 |
| 1 | <?php |
||
| 8 | class ExcludeWeekendConstraint implements DatetimeConstraintInterface, RecurrenceConstraintInterface |
||
| 9 | { |
||
| 10 | public function apply(Recurrence $recurrence, \Datetime $datetime): \Datetime |
||
| 11 | { |
||
| 12 | 1 | if ($this->isWeekend($datetime)) { |
|
| 13 | // Add 1 or 2 days to skip weekend (we didn't use `next monday` pattern of \Datetime::format cause it remove time) |
||
| 14 | 1 | $days = (7 - (int) $datetime->format('N') + 1); |
|
| 15 | 1 | $datetime->modify(sprintf('+%d days', $days)); |
|
| 16 | } |
||
| 17 | |||
| 18 | 1 | return $datetime; |
|
| 19 | } |
||
| 20 | |||
| 21 | private function isWeekend(\Datetime$datetime): bool |
||
| 24 | } |
||
| 25 | } |
||
| 26 |