<?php

namespace Webkul\WebkulCsvBundle\Job;

use Symfony\Component\EventDispatcher\Event;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\Filesystem\Exception\IOException;
use Symfony\Component\Filesystem\Filesystem;

$classLoader = new \Webkul\WebkulCsvBundle\Listener\ClassDefinationForCompatibility();
$classLoader->customLoaderSystem();

/**
 * Implementation of the {@link Job} interface.
 */
class Job extends \PimJob implements \JobInterface
{
    const PRODUCT_MODEL_STEP_NAME = 'product_model_csv_export';
    /**
     * {@inheritdoc}
     */
    protected function doExecute(\JobExecution $jobExecution)
    {
        $this->steps = $this->modifyStepsOrder($this->steps, $jobExecution);
       
        parent::doExecute($jobExecution);
    }

    protected function modifyStepsOrder(array $steps, \JobExecution $jobExecution)
    {
        $jobParameters = $jobExecution->getJobParameters();
        $updatedSteps = $steps;

        if ($jobParameters->has('exportProductModelFirst')
            && $jobParameters->get('exportProductModelFirst')) {
            foreach ($steps as $index => $step) {
                if ($step->getName() === self::PRODUCT_MODEL_STEP_NAME) {
                    unset($updatedSteps[$index]);
                    array_unshift($updatedSteps, $step);

                    break;
                }
            }
        }
        
        return $updatedSteps;
    }
}
