statisticsOpensRepository = $statisticsOpensRepository; $this->subscribersRepository = $subscribersRepository; } public function processTaskStrategy(ScheduledTask $task, $timer) { $subscribers = $this->subscribersRepository->findByUpdatedScoreNotInLastMonth(SubscribersEngagementScore::BATCH_SIZE); foreach ($subscribers as $subscriber) { $this->statisticsOpensRepository->recalculateSubscriberScore($subscriber); } if ($subscribers) { $this->scheduleImmediately(); } else { $this->schedule(); } return true; } public function getNextRunDate() { // random day of the next week $date = Carbon::createFromTimestamp($this->wp->currentTime('timestamp')); $date->addDay(); $date->setTime(mt_rand(0, 23), mt_rand(0, 59)); return $date; } }