subDay()->startOfDay(); $to = now()->subDay()->endOfDay(); $sent = 0; Organization::query()->each(function (Organization $organization) use ($reports, $email, $from, $to, &$sent) { $recipients = data_get($organization->settings, 'report_daily_recipients', []); if ($recipients === []) { return; } $summary = $reports->summary($organization->owner_ref, $organization, $from, $to); $subject = "Frontdesk daily summary — {$organization->name} ({$from->toDateString()})"; $body = implode("\n", [ "Visitors checked in: {$summary['checked_in']}", "Currently unique visitors: {$summary['unique_visitors']}", "Contractors: {$summary['contractors']}", "Deliveries: {$summary['deliveries']}", "Average visit duration (min): {$summary['avg_duration_minutes']}", ]); foreach ($recipients as $address) { if (is_string($address) && filter_var($address, FILTER_VALIDATE_EMAIL)) { $email->send($address, $subject, $body, $organization->name, null, $organization); $sent++; } } }); $this->info("Sent {$sent} daily report email(s)."); return self::SUCCESS; } }