Spaces:
No application file
No application file
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 SchedulerWeeklyBuilder implements BuilderInterface | |
{ | |
/** | |
* @throws InvalidSchedulerException | |
*/ | |
public function build(Rule $rule, SchedulerInterface $scheduler): Rule | |
{ | |
try { | |
$rule->setFreq('WEEKLY'); | |
if ($scheduler->isScheduledWeekDays()) { | |
$days = SchedulerEnum::getWeekDays(); | |
} else { | |
$days = [$scheduler->getScheduleDay()]; | |
} | |
$rule->setByDay($days); | |
} catch (InvalidArgument|InvalidRRule) { | |
throw new InvalidSchedulerException(); | |
} | |
return $rule; | |
} | |
} | |