File manager - Edit - /var/www/html/homologBancodetalentos/app/Console/Commands/DeactivateInactiveCompanyJobsCommand.php
Back
<?php namespace App\Console\Commands; use App\Models\TalentBank\Company; use Illuminate\Console\Command; use Illuminate\Support\Carbon; class DeactivateInactiveCompanyJobsCommand extends Command { protected $signature = 'talent-bank:deactivate-inactive-company-jobs {--days=180 : Dias sem login para considerar empresa inativa} {--dry-run : Apenas exibe o que seria desativado, sem gravar}'; protected $description = 'Desativa vagas de empresas que não fizeram login há mais de X dias (padrão: 180).'; public function handle(): int { $days = (int) $this->option('days'); $isDryRun = (bool) $this->option('dry-run'); $cutoff = Carbon::now()->subDays($days); $companies = Company::query() ->where(function ($q) use ($cutoff) { $q->whereNull('last_login_at') ->orWhere('last_login_at', '<', $cutoff); }) ->whereHas('jobListings', fn ($q) => $q->where('is_hiring', true)) ->with('jobListings') ->get(); if ($companies->isEmpty()) { $this->info('Nenhuma empresa inativa com vagas ativas encontrada.'); return self::SUCCESS; } $totalJobs = 0; foreach ($companies as $company) { $activeJobs = $company->jobListings->where('is_hiring', true); $count = $activeJobs->count(); $totalJobs += $count; $lastLogin = $company->last_login_at ? $company->last_login_at->format('d/m/Y') : 'nunca'; $this->line( sprintf( '[%s] %s — último login: %s — %d vaga(s) a desativar', $company->cnpj, $company->trading_name ?: $company->corporate_name, $lastLogin, $count, ) ); if (! $isDryRun) { $company->jobListings()->where('is_hiring', true)->update([ 'is_hiring' => false, 'deactivated_by_inactivity' => true, ]); } } $prefix = $isDryRun ? '[DRY-RUN] ' : ''; $this->info( sprintf( '%s%d vaga(s) em %d empresa(s) %s.', $prefix, $totalJobs, $companies->count(), $isDryRun ? 'seriam desativadas' : 'desativadas', ) ); return self::SUCCESS; } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings