2026-02-08 21:59:16 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace App\Jobs;
|
|
|
|
|
|
|
|
|
|
use App\Models\Member;
|
2026-02-16 14:16:52 +01:00
|
|
|
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;
|
|
|
|
|
|
2026-02-16 14:16:52 +01:00
|
|
|
public function __construct() {}
|
2026-02-08 21:59:16 +01:00
|
|
|
|
|
|
|
|
public function handle(): void
|
|
|
|
|
{
|
2026-02-16 14:16:52 +01:00
|
|
|
$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) {
|
2026-02-16 14:16:52 +01:00
|
|
|
$member->notify(new SubscriptionExpiredPhase1($template));
|
2026-02-08 21:59:16 +01:00
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|