addWeeks($settings->weeks); foreach (Member::get() as $member) { $noticePreventions = $member->preventions($expireDate) ->filter(fn($prevention) => $prevention->expiresAt($expireDate)); if ($noticePreventions->count() === 0) { continue; } Mail::send($this->createMail($member, $noticePreventions)); } foreach (Member::get() as $member) { $preventions = $member->preventions() ->filter(fn($prevention) => $prevention->expiresAt(now())); if ($preventions->count() === 0) { continue; } Cache::remember( 'prevention-' . $member->id, (int) now()->diffInSeconds(now()->addWeeks($settings->freshRememberInterval)), function () use ($member, $preventions) { Mail::send($this->createMail($member, $preventions)); return 0; } ); } } /** * @param Collection $preventions */ protected function createMail(Member $member, Collection $preventions): YearlyMail { $body = app(PreventionSettings::class)->refresh()->yearlymail; return new YearlyMail($member, $body, $preventions); } }