<?php

namespace App\Waitlist\Command;

use App\Waitlist\Service\WaitlistExpirer;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle;

/**
 * اجرای دستیِ انقضای لیست انتظار؛ زمان‌بند هر روز همین کار را می‌کند.
 */
#[AsCommand(name: 'app:waitlist:expire', description: 'Close waitlist entries whose desired window has passed.')]
class ExpireWaitlistCommand extends Command
{
    public function __construct(private readonly WaitlistExpirer $expirer)
    {
        parent::__construct();
    }

    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $io    = new SymfonyStyle($input, $output);
        $count = $this->expirer->expire();

        $io->success(sprintf('%d ردیف لیست انتظار منقضی شد.', $count));

        return Command::SUCCESS;
    }
}
