use Helpers\CSV\CsvSplitter;
use Helpers\ProcessLocker;
use Keboola\Csv\CsvFile;
use Slim\Slim;
$app = new Slim(array('mode' => 'development', 'templates.path' => $config['templates_path']));
$app->get('/', function () use($app, $config) {
    $app->render('page.php', array('csv_files_path' => $config['csv_files_path'], 'log_files_path' => $config['log_files_path']));
});
$app->get('/download_report', function () use($app, $config) {
    $fileName = $app->request()->params('filename');
    echo "<pre>";
    echo file_get_contents($config['log_files_path'] . $fileName);
});
$app->get('/process/', function () use($app, $config) {
    $fileName = $app->request()->params('filename');
    $locker = new ProcessLocker($config['lock_file']);
    if (!$locker->isLocked()) {
        $splitter = new CsvSplitter(new CsvFile($fileName), $config['output_csv_path']);
        $splitter->split($config['split_size']);
        $command = $config['nohup_path'] . ' ' . $config['php_path'] . ' ' . __DIR__ . '/src/shell/csv_importer.php ' . $config['output_csv_path'] . '  > /dev/null 2>&1 &';
        $process = new Process($command, $config['proc_working_path']);
        $process->run();
    }
    $app->redirect('/csv_batch_process/index.php');
});
use Helpers\Magento\MageWrapper;
use Repositories\Magento\CatalogRepository;
use Repositories\Magento\EavCatalogProductRepository;
use Processors\Magento\ProductImporter;
$app->get('/test/', function () use($app, $config) {
    ini_set('max_execution_time', -1);
<?php

include_once __DIR__ . '/../config/config.php';
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Monolog\Handler\FirePHPHandler;
use Symfony\Component\Process\Process;
use Symfony\Component\Process\ProcessBuilder;
use Symfony\Component\Process\PhpProcess;
use Symfony\Component\Filesystem\Filesystem;
use Helpers\ProcessLocker;
$locker = new ProcessLocker($config['lock_file']);
if ($locker->isLocked()) {
    return;
}
$locker->lockProcess();
$logFileName = $config['log_files_path'] . 'report ' . date('d-m-Y H i s') . '.log';
$fs = new FileSystem();
$fs->touch($logFileName);
$logger = new Logger('csv_batch_importer');
$logger->pushHandler(new StreamHandler($logFileName, Logger::DEBUG));
$logger->pushHandler(new FirePHPHandler());
$files = array_filter(scandir($config['output_csv_path']), function ($file_name) {
    return preg_match('/^output.*\\.csv$/', $file_name) ? $file_name : null;
});
foreach ($files as $file_name) {
    $file_name = $config['output_csv_path'] . $file_name;
    $process_builder = new ProcessBuilder(array($config['php_path'], __DIR__ . '/csv_process.php', $file_name), $config['proc_working_path']);
    $process_builder->setTimeout(0);
    $process_builder->getProcess()->run(function ($type, $buffer) use($logger) {
        if (Process::ERR === $type) {