<?php
namespace app\command;

use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;

class CreateControllerCommand extends Command
{
    protected static $defaultName = 'make:apicontroller';

    protected function configure()
    {
        $this->setDescription('Create a new controller')
            ->setHelp('This command allows you to create a new controller...');
    }

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        // 获取控制器名称
        $controllerName = $input->getArgument('name');
        if (!$controllerName) {
            $output->writeln('<error>Controller name is required</error>');
            return Command::FAILURE;
        }

        // 创建控制器文件
        $controllerFile = __DIR__ . "/../../app/Controllers/api/{$controllerName}Controller.php";

        if (file_exists($controllerFile)) {
            $output->writeln("<error>Controller {$controllerName} already exists!</error>");
            return Command::FAILURE;
        }

        // 控制器的基本代码模板
        $controllerTemplate = "<?php\n\nnamespace App\Controllers;\n\nclass {$controllerName}Controller\n{\n    // Your controller code here\n}\n";

        // 将控制器内容写入文件
        file_put_contents($controllerFile, $controllerTemplate);

        $output->writeln("<info>Controller {$controllerName} created successfully!</info>");
        return Command::SUCCESS;
    }
}