| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- <?php
- namespace App\Console\Commands;
- use Illuminate\Console\Command;
- use App\Models\SmsMessage;
- use App\Jobs\SendSmsMessage;
- use Illuminate\Foundation\Auth\User;
- class DispatchDueSms extends Command
- {
- protected $signature = 'sms:dispatch-due';
- protected $description = 'Invia gli sms programmati giunti a scadenza';
- public function handle()
- {
- $users = User::whereNotNull('tenant_host')
- ->whereNotNull('tenant_database')
- ->whereNotNull('tenant_username')
- ->whereNotNull('tenant_password')
- ->get([
- 'id',
- 'tenant_host',
- 'tenant_database',
- 'tenant_username',
- 'tenant_password',
- ]);
- if ($users->isEmpty()) {
- $this->warn('Nessun utente con info di database trovata.');
- return Command::SUCCESS;
- }
- $tenants = $users->unique(function ($u) {
- return $u->tenant_host . '|' . $u->tenant_database . '|' . $u->tenant_username;
- });
- foreach ($tenants as $userTenant) {
- $this->info("Processo tenant db={$userTenant->tenant_database} (user id={$userTenant->id})");
- app(\App\Http\Middleware\TenantMiddleware::class)->setupTenantConnection($userTenant);
- // SmsMessage::where('status', 'scheduled')
- SmsMessage::where('schedule_at', '<=', now())
- ->chunkById(100, function ($chunk) {
- foreach ($chunk as $msg) {
- dispatch(new SendSmsMessage($msg->id));
- }
- });
- }
- return Command::SUCCESS;
- }
- }
|