diff --git a/app/Prevention/Actions/YearlyRememberAction.php b/app/Prevention/Actions/YearlyRememberAction.php index 2cb79d35..6f60f958 100644 --- a/app/Prevention/Actions/YearlyRememberAction.php +++ b/app/Prevention/Actions/YearlyRememberAction.php @@ -7,6 +7,7 @@ use App\Prevention\Data\PreventionData; use App\Prevention\Mails\YearlyMail; use App\Prevention\PreventionSettings; use Illuminate\Support\Collection; +use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Mail; use Lorisleiva\Actions\Concerns\AsAction; @@ -40,7 +41,11 @@ class YearlyRememberAction continue; } - Mail::send($this->createMail($member, $preventions)); + Cache::remember( + 'prevention-' . $member->id, + (int) now()->diffInSeconds(now()->addWeeks($settings->freshRememberInterval)), + fn() => Mail::send($this->createMail($member, $preventions)) + ); } } diff --git a/app/Prevention/PreventionSettings.php b/app/Prevention/PreventionSettings.php index 00ee3ac9..1a3cebcb 100644 --- a/app/Prevention/PreventionSettings.php +++ b/app/Prevention/PreventionSettings.php @@ -11,6 +11,7 @@ class PreventionSettings extends LocalSettings public EditorData $formmail; public EditorData $yearlymail; public int $weeks; + public int $freshRememberInterval; public static function group(): string { diff --git a/database/settings/2025_05_24_202013_create_prevention_yearly_mail_settings.php b/database/settings/2025_05_24_202013_create_prevention_yearly_mail_settings.php index 6f324517..078bd548 100644 --- a/database/settings/2025_05_24_202013_create_prevention_yearly_mail_settings.php +++ b/database/settings/2025_05_24_202013_create_prevention_yearly_mail_settings.php @@ -8,5 +8,6 @@ return new class extends SettingsMigration { $this->migrator->add('prevention.yearlymail', ['time' => 1, 'blocks' => [], 'version' => '1.0']); $this->migrator->add('prevention.weeks', 8); + $this->migrator->add('prevention.freshRememberInterval', 12); } };