<?php

declare(strict_types=1);

namespace App\Console\Commands;

use App\Jobs\Billing\BalancePreflightSweepJob;
use Illuminate\Console\Command;

/**
 * One-time: при выкатке преfflight прогнать всех тенантов и заморозить
 * недофинансированных. Запускается ОДИН раз вручную после миграции.
 *
 * См. спек §3.9: «Клиент уже в минусовом балансе на момент запуска
 * преfflight (legacy состояние) — одноразовая artisan-команда».
 *
 * Идемпотентна: повторный запуск не пере-замораживает уже замороженных
 * (логика sweep-джоба — переход active→frozen / frozen→active, стабильное
 * состояние не трогается).
 */
final class BillingPreflightInitialSweepCommand extends Command
{
    /** @var string */
    protected $signature = 'billing:preflight-initial-sweep';

    /** @var string */
    protected $description = 'Разовый преfflight при внедрении — заморозить недофинансированных тенантов';

    public function handle(): int
    {
        $this->warn('Разовый преfflight всех тенантов. Запускать ОДИН раз после выкатки Spec C.');
        (new BalancePreflightSweepJob)->handle();
        $this->info('Initial sweep завершён.');

        return self::SUCCESS;
    }
}
