Files
roxane/app/Jobs/SendSubscriptionExpiredPhase1Notifications.php

34 lines
893 B
PHP
Raw Normal View History

2026-02-08 21:59:16 +01:00
<?php
namespace App\Jobs;
use App\Models\Member;
use App\Models\NotificationTemplate;
2026-02-08 21:59:16 +01:00
use App\Notifications\SubscriptionExpiredPhase1;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Queue\Queueable;
class SendSubscriptionExpiredPhase1Notifications implements ShouldQueue
{
use Queueable;
public function __construct() {}
2026-02-08 21:59:16 +01:00
public function handle(): void
{
$template = NotificationTemplate::findByIdentifier('subscription_expired_phase1');
if (! $template) {
return;
}
Member::query()
->whereHas('memberships', fn ($query) => $query->where('status', 'expired'))
->chunk(100, function ($members) use ($template) {
2026-02-08 21:59:16 +01:00
foreach ($members as $member) {
$member->notify(new SubscriptionExpiredPhase1($template));
2026-02-08 21:59:16 +01:00
}
});
}
}