option('minutes'); $from = now(); $to = now()->addMinutes($minutes); $appointments = QueueAppointment::query() ->where('status', 'scheduled') ->whereBetween('scheduled_at', [$from, $to]) ->where(function ($q) { $q->whereNull('metadata') ->orWhereNull('metadata->reminder_sent'); }) ->get(); $count = 0; foreach ($appointments as $appointment) { $notifications->appointmentReminder($appointment); $metadata = $appointment->metadata ?? []; $metadata['reminder_sent'] = now()->toIso8601String(); $appointment->update(['metadata' => $metadata]); $count++; } $this->info("Sent {$count} appointment reminder(s)."); return self::SUCCESS; } }