ParserController.php 2.2 KB
<?php
namespace console\controllers;

use yii\console\Controller;
use yii\helpers\Console;
use common\components\PriceWriter;
use backend\models\ImportersFiles;
use backend\models\Importers;
use yii\base\ErrorException;

class ParserController extends Controller{

    public function actionParseCsv ()
    {
        Console::output('1');
        foreach (glob( \Yii::getAlias('@auto_upload') . '/*.csv' ) as $file_path) {
            $file_name = basename($file_path,".csv");
                Console::output('2');
                $importer_id = ImportersFiles::findOne(['id' => $file_name])->importer_id;
                $keys = Importers::findOne( ['id' => $importer_id] )->keys;

                $config = ['record_id' => $file_name,
                    'importer_id' => $importer_id,
                    'parser_config' => ['keys' => $keys,
                        'mode' => 'console']
                ];
                Console::output('3');
                if( $this->parseFileConsole( $file_path, $config ) ){
                    Console::output('4');
                    unlink( $file_path );
                    if (isset( $arr_id_files[$file_path] ) ) {
                        unset( $arr_id_files[$file_path] );
                    }
                }
            }


        //return $this->redirect('serverFiles');
    }

    public function actionParseXml ()
    {

    }
    protected function parseFileConsole( $file_path, $configuration ){

        if( !file_exists( $file_path ) )
            throw new ErrorException("$file_path does not exist!");

        $parser_config = [];
        if ( isset( $configuration['parser_config'] ) ) {
            $parser_config = $configuration['parser_config'];
        }

        $data = \Yii::$app->multiparser->parse( $file_path, $parser_config );

        $writer = new PriceWriter();
        $writer->configuration = $configuration;
        $writer->data = $data;
        $writer->mode = 1; //console-режим
        if ( $writer->writeDataToDB() ){
            Console::output('It is working');
            return true;
        }

        return false;
    }

    public function actionTest ()
    {
        Console::output('It is working ');
       \Yii::info('2','parser');

    }
}