diff --git a/app/Console/Commands/SendDueReminders.php b/app/Console/Commands/SendDueReminders.php index 0eed954..845f14e 100644 --- a/app/Console/Commands/SendDueReminders.php +++ b/app/Console/Commands/SendDueReminders.php @@ -25,20 +25,19 @@ class SendDueReminders extends Command */ public function handle(): int { - $now = now(); - $yesterday = now()->subDay(); - - $reminders = Reminder::with(['user', 'packageName'])->where(function ($query) use ($now) { + $now = now(); + + $reminders = Reminder::with(['user', 'packageName']) + ->where('time', '<=', $now->toTimeString()) + ->where(function ($query) use ($now) { + // Non-repeatable reminders: send once $query->where('repeatable', false) - ->where('time', '<=', $now) - ->whereNull('last_repeat'); - }) - ->orWhere(function ($query) use ($now, $yesterday) { - $query->where('repeatable', true) - ->where('time', '<=', $now) - ->where(function ($sub) use ($now, $yesterday) { + ->whereNull('last_repeat') + // OR repeatable reminders that haven't been sent today + ->orWhere('repeatable', true) + ->where(function ($sub) use ($now) { $sub->whereNull('last_repeat') - ->orWhere('last_repeat', '<=', $yesterday); + ->orWhereDate('last_repeat', '<', $now->toDateString()); }); }) ->get(); @@ -79,8 +78,10 @@ public function handle(): int ); } - $reminder->last_repeat = now(); - $reminder->save(); + $scheduledTime = Carbon::parse($reminder->time); + $scheduledTime->setDate($now->year, $now->month, $now->day); + $reminder->last_repeat = $scheduledTime; + $reminder->save(); $this->info("Queued push notification for reminder {$reminder->id}."); }