38 lines
1.3 KiB
PHP
38 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Console\Commands;
|
|
|
|
use App\Models\Opportunity;
|
|
use App\Services\OfferAvailability;
|
|
use App\Services\PrivateOfferOperations;
|
|
use Illuminate\Console\Command;
|
|
|
|
final class ExpirePrivateOffers extends Command
|
|
{
|
|
protected $signature = 'investmoz:offers-expire {--confirm : Persist the already effective expiry}';
|
|
|
|
protected $description = 'Conferir expiração de Ofertas sem publicar conteúdos ou alterar o NDA';
|
|
|
|
public function handle(): int
|
|
{
|
|
$count = 0;
|
|
Opportunity::query()->whereNotNull('workflow_context->private_offer_preparation')->orderBy('id')->chunkById(100, function ($records) use (&$count) {
|
|
foreach ($records as $record) {
|
|
if (app(OfferAvailability::class)->record($record)['state'] !== 'expired') {
|
|
continue;
|
|
}
|
|
if ($this->option('confirm')) {
|
|
if (app(PrivateOfferOperations::class)->expire($record->id)) {
|
|
$count++;
|
|
}
|
|
} else {
|
|
$count++;
|
|
}
|
|
}
|
|
});
|
|
$this->info(($this->option('confirm') ? 'Expirações registadas: ' : 'Expiradas, sem escrita: ').$count);
|
|
|
|
return self::SUCCESS;
|
|
}
|
|
}
|