<?php

declare(strict_types=1);

namespace WerkraumMedia\Events\Command;

use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use TYPO3\CMS\Core\Core\Bootstrap;
use WerkraumMedia\Events\Domain\DestinationData\ImportFactory;
use WerkraumMedia\Events\Service\DestinationDataImportService;

class ImportDestinationDataViaAllConfigruationsCommand extends Command
{
    public function __construct(
        private readonly DestinationDataImportService $destinationDataImportService,
        private readonly ImportFactory $importFactory
    ) {
        parent::__construct();
    }

    public function configure(): void
    {
        $this->setDescription('Import Destination Data Events');
        $this->setHelp('Destination Data Events are imported from all configuration records.');
    }

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        Bootstrap::initializeBackendAuthentication();

        $finalResult = 0;
        foreach ($this->importFactory->createAll() as $import) {
            $result = $this->destinationDataImportService->import($import);
            if ($result !== 0) {
                $finalResult = $result;
            }
        }

        return $finalResult;
    }
}