Spaces:
No application file
No application file
File size: 1,180 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
<?php
namespace Mautic\ReportBundle\Scheduler\Builder;
use Mautic\ReportBundle\Scheduler\BuilderInterface;
use Mautic\ReportBundle\Scheduler\Enum\SchedulerEnum;
use Mautic\ReportBundle\Scheduler\Exception\InvalidSchedulerException;
use Mautic\ReportBundle\Scheduler\SchedulerInterface;
use Recurr\Exception\InvalidArgument;
use Recurr\Exception\InvalidRRule;
use Recurr\Rule;
class SchedulerMonthBuilder implements BuilderInterface
{
/**
* @throws InvalidSchedulerException
*/
public function build(Rule $rule, SchedulerInterface $scheduler): Rule
{
try {
$frequency = $scheduler->getScheduleMonthFrequency();
$rule->setFreq('MONTHLY');
if ($scheduler->isScheduledWeekDays()) {
$days = SchedulerEnum::getWeekDays();
} else {
$days = [$scheduler->getScheduleDay()];
}
foreach ($days as $key => $day) {
$days[$key] = $frequency.$day;
}
$rule->setByDay($days);
} catch (InvalidArgument|InvalidRRule) {
throw new InvalidSchedulerException();
}
return $rule;
}
}
|