Blame view

console/controllers/ParserController.php 3.58 KB
f0dbd829   Mihail   add PriceWriter a...
1
  <?php
db543d22   Mihail   temp commit - wor...
2
3
  namespace console\controllers;
  
f0dbd829   Mihail   add PriceWriter a...
4
  use yii\console\Controller;
1fe29bbe   Mihail   fixed parser and ...
5
6
7
  use yii\helpers\Console;
  use common\components\PriceWriter;
  use backend\models\ImportersFiles;
ef41533d   Mihail   temp commit - wor...
8
9
  use backend\models\Importers;
  use yii\base\ErrorException;
f0dbd829   Mihail   add PriceWriter a...
10
11
  
  class ParserController extends Controller{
ef41533d   Mihail   temp commit - wor...
12
13
  
      public function actionParseCsv ()
f0dbd829   Mihail   add PriceWriter a...
14
      {
ea4ecf3d   Mihail   console csv parsing
15
          \Yii::info('Начало загрузки файлов прайсов csv','parser');
ef41533d   Mihail   temp commit - wor...
16
          foreach (glob( \Yii::getAlias('@auto_upload') . '/*.csv' ) as $file_path) {
ea4ecf3d   Mihail   console csv parsing
17
18
19
20
              $file_name = basename( $file_path,".csv" );
              \Yii::info("Обработка файла - $file_path",'parser');
              $importer_id = ImportersFiles::findOne(['id' => $file_name])->importer_id;
              $keys = Importers::findOne( ['id' => $importer_id] )->keys;
ef41533d   Mihail   temp commit - wor...
21
  
ea4ecf3d   Mihail   console csv parsing
22
23
24
25
26
27
28
29
30
31
32
33
34
35
              $config = ['record_id' => $file_name,
                  'importer_id' => $importer_id,
                  'parser_config' => ['keys' => $keys,
                      'mode' => 'console']
              ];
              if( $this->parseFileConsole( $file_path, $config ) ){
                  unlink( \Yii::getAlias('@temp_upload') . '/' . $file_name . '.csv' );
                  \Yii::info("Загрузка файла - $file_path успешно завершена",'parser');
              } else{
                  \Yii::error( "Загрузка файла - $file_path завершена с ошибкой", 'parser' );
              }
                  //при любом завершении скрипта файл с очереди автозагрузки нужно удалить
              unlink( \Yii::getAlias('@auto_upload') . '/' . $file_name . '.csv' );
          }
ef41533d   Mihail   temp commit - wor...
36
  
f0dbd829   Mihail   add PriceWriter a...
37
      }
ef41533d   Mihail   temp commit - wor...
38
  
f0dbd829   Mihail   add PriceWriter a...
39
  
1fe29bbe   Mihail   fixed parser and ...
40
      protected function parseFileConsole( $file_path, $configuration ){
ef41533d   Mihail   temp commit - wor...
41
42
  
          if( !file_exists( $file_path ) )
ea4ecf3d   Mihail   console csv parsing
43
              throw new ErrorException("$file_path - файл не найден!");
ef41533d   Mihail   temp commit - wor...
44
  
1fe29bbe   Mihail   fixed parser and ...
45
46
47
48
          $parser_config = [];
          if ( isset( $configuration['parser_config'] ) ) {
              $parser_config = $configuration['parser_config'];
          }
ef41533d   Mihail   temp commit - wor...
49
          $data = \Yii::$app->multiparser->parse( $file_path, $parser_config );
ea4ecf3d   Mihail   console csv parsing
50
51
52
53
          if (! $data) {
              // @todo переделать, что бы ошибка автоматически останавливала сценарий
              return false;
          }
f0dbd829   Mihail   add PriceWriter a...
54
  
1fe29bbe   Mihail   fixed parser and ...
55
56
57
58
          $writer = new PriceWriter();
          $writer->configuration = $configuration;
          $writer->data = $data;
          $writer->mode = 1; //console-режим
ea4ecf3d   Mihail   console csv parsing
59
  
1fe29bbe   Mihail   fixed parser and ...
60
          if ( $writer->writeDataToDB() ){
ea4ecf3d   Mihail   console csv parsing
61
  
1fe29bbe   Mihail   fixed parser and ...
62
63
              return true;
          }
f0dbd829   Mihail   add PriceWriter a...
64
  
1fe29bbe   Mihail   fixed parser and ...
65
          return false;
f0dbd829   Mihail   add PriceWriter a...
66
      }
db543d22   Mihail   temp commit - wor...
67
  
ea4ecf3d   Mihail   console csv parsing
68
69
      public function actionParseXml ()
      {
99ab22f3   Mihail   fixed convert to ...
70
71
72
73
          \Yii::info('Начало загрузки файлов прайсов xml','parser');
          foreach (glob( \Yii::getAlias('@auto_upload') . '/*.xml' ) as $file_path) {
              $file_name = basename( $file_path,".xml" );
              \Yii::info("Обработка файла - $file_path",'parser');
ea4ecf3d   Mihail   console csv parsing
74
  
99ab22f3   Mihail   fixed convert to ...
75
76
77
78
79
80
81
82
83
84
85
86
              $config = ['record_id' => $file_name,
                  'importer_id' => 1,
                  'parser_config' => [
                      'mode' => 'console']
              ];
              if( $this->parseFileConsole( $file_path, $config ) ){
                  unlink( \Yii::getAlias('@auto_upload') . '/' . $file_name . '.xml' );
                  \Yii::info("Загрузка файла - $file_path успешно завершена",'parser');
              } else{
                  \Yii::error( "Загрузка файла - $file_path завершена с ошибкой", 'parser' );
              }
          }
ea4ecf3d   Mihail   console csv parsing
87
88
      }
  
db543d22   Mihail   temp commit - wor...
89
90
      public function actionTest ()
      {
ef41533d   Mihail   temp commit - wor...
91
92
          Console::output('It is working ');
         \Yii::info('2','parser');
db543d22   Mihail   temp commit - wor...
93
94
  
      }
f0dbd829   Mihail   add PriceWriter a...
95
  }