$form ->where('needs_prevention', true) ->where('from', '>=', now()) ) ->where( fn ($q) => $q ->where('last_remembered_at', '<=', now()->subWeeks(2)) ->orWhereNull('last_remembered_at') ); foreach ($query->get() as $participant) { if (!app(FormConditionResolver::class)->forParticipant($participant)->filterCondition($participant->form->prevention_conditions)) { continue; } if ($participant->getFields()->getMailRecipient() === null || count($participant->preventions()) === 0) { continue; } $body = app(PreventionSettings::class)->refresh()->formmail ->placeholder('formname', $participant->form->name) ->append($participant->form->prevention_text); Mail::send(new PreventionRememberMail($participant, $body)); $participant->update(['last_remembered_at' => now()]); } } }