File manager - Edit - /var/www/html/portal/app/Console/Commands/ConvenioAlertasCommand.php
Back
<?php namespace App\Console\Commands; use App\Http\Resources\ConvenioResource; use App\Mail\ConvenioAlertaMail; use App\Models\Convenio; use Illuminate\Console\Command; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Mail; class ConvenioAlertasCommand extends Command { protected $signature = 'convenios:alertas'; protected $description = 'Envia alertas automáticos de acompanhamento dos convênios por e-mail'; public function handle(): int { $destinatarios = config('convenios.alertas_emails', []); if ($destinatarios === []) { $this->warn(__('Nenhum destinatário configurado (CONVENIOS_ALERTAS_EMAIL). Alertas não enviados.')); return self::SUCCESS; } $enviados = 0; Convenio::where('status', 'ATIVADO') ->where(function ($query) { $query->whereNotNull('data_recebimento_recurso') ->orWhereNotNull('vigencia_clausula_suspensiva') ->orWhereNotNull('vigencia_prazo_contratual'); }) ->orderBy('created_at') ->chunkById(50, function ($convenios) use ($destinatarios, &$enviados) { foreach ($convenios as $convenio) { $pendentes = ConvenioResource::alertasPendentesEnvio($convenio); if ($pendentes->isEmpty()) { continue; } try { Mail::to($destinatarios)->send(new ConvenioAlertaMail( $convenio, $pendentes->map(fn ($item) => [ 'tipo' => $item['tipo'], 'mensagem' => $item['mensagem'], ])->all() )); foreach ($pendentes as $pendente) { ConvenioResource::registrarAlertaEnviado( $convenio, $pendente['tipo'], $pendente['data_referencia'] ); } $enviados++; } catch (\Throwable $exception) { Log::error('Falha ao enviar alerta de convênio', [ 'convenio_id' => $convenio->id, 'erro' => $exception->getMessage(), ]); $this->error(__('Falha no convênio :id: :erro', [ 'id' => $convenio->id, 'erro' => $exception->getMessage(), ])); } } }); $this->info(__('E-mails de alerta enviados para :total convênio(s).', ['total' => $enviados])); return self::SUCCESS; } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.1 |
proxy
|
phpinfo
|
Settings