funzionante()) { $this->warn('Nessun server di posta funzionante: modulo S-13 non inviato.'); return self::SUCCESS; } $anno = $this->option('anno') ? AnnoTeocratico::where('label', $this->option('anno'))->first() : AnnoTeocratico::corrente(); if (! $anno) { $this->error("Anno di servizio {$this->option('anno')} non trovato."); return self::FAILURE; } $destinatari = User::role('amministratore')->get() ->filter(fn (User $u) => $u->email && $u->email_verified_at !== null) ->values(); if ($destinatari->isEmpty()) { $this->warn('Nessun amministratore con un\'email confermata: modulo S-13 non inviato.'); return self::SUCCESS; } $pdf = $modulo->genera($anno); // Uno per uno: un indirizzo rifiutato non ferma gli altri. $inviati = 0; foreach ($destinatari as $utente) { try { Mail::to($utente->email)->send(new ModuloS13Mail($utente, $anno, $pdf)); $inviati++; } catch (\Throwable $e) { report($e); $this->error("Invio a {$utente->email} non riuscito: {$e->getMessage()}"); } } // Nel registro quanti, non chi: gli indirizzi stanno nelle utenze. activity()->withProperties(['anno' => $anno->label, 'destinatari' => $inviati])->log('s13_inviato'); $this->info("Modulo S-13 {$anno->label} inviato a {$inviati} amministratori su {$destinatari->count()}."); return $inviati === $destinatari->count() ? self::SUCCESS : self::FAILURE; } }