Blame view

console/controllers/ParserController.php 4.17 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
  
48b58a13   Mihail   finish with xml a...
11
12
  class ParserController extends Controller
  {
ef41533d   Mihail   temp commit - wor...
13
  
48b58a13   Mihail   finish with xml a...
14
      public function actionParseCsv()
f0dbd829   Mihail   add PriceWriter a...
15
      {
48b58a13   Mihail   finish with xml a...
16
17
18
19
          \Yii::info('Начало загрузки файлов прайсов csv', 'parser');
          foreach (glob(\Yii::getAlias('@auto_upload') . '/*.csv') as $file_path) {
              $file_name = basename($file_path, ".csv");
              \Yii::info("Обработка файла - $file_path", 'parser');
ea4ecf3d   Mihail   console csv parsing
20
              $importer_id = ImportersFiles::findOne(['id' => $file_name])->importer_id;
48b58a13   Mihail   finish with xml a...
21
              $keys = Importers::findOne(['id' => $importer_id])->keys;
ef41533d   Mihail   temp commit - wor...
22
  
ea4ecf3d   Mihail   console csv parsing
23
24
25
26
27
              $config = ['record_id' => $file_name,
                  'importer_id' => $importer_id,
                  'parser_config' => ['keys' => $keys,
                      'mode' => 'console']
              ];
48b58a13   Mihail   finish with xml a...
28
29
30
31
32
              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');
ea4ecf3d   Mihail   console csv parsing
33
              }
48b58a13   Mihail   finish with xml a...
34
35
              //при любом завершении скрипта файл с очереди автозагрузки нужно удалить
              unlink(\Yii::getAlias('@auto_upload') . '/' . $file_name . '.csv');
ea4ecf3d   Mihail   console csv parsing
36
          }
ef41533d   Mihail   temp commit - wor...
37
  
f0dbd829   Mihail   add PriceWriter a...
38
      }
ef41533d   Mihail   temp commit - wor...
39
  
f0dbd829   Mihail   add PriceWriter a...
40
  
1fe29bbe   Mihail   fixed parser and ...
41
      protected function parseFileConsole( $file_path, $configuration ){
ef41533d   Mihail   temp commit - wor...
42
43
  
          if( !file_exists( $file_path ) )
ea4ecf3d   Mihail   console csv parsing
44
              throw new ErrorException("$file_path - файл не найден!");
ef41533d   Mihail   temp commit - wor...
45
  
1fe29bbe   Mihail   fixed parser and ...
46
47
48
49
          $parser_config = [];
          if ( isset( $configuration['parser_config'] ) ) {
              $parser_config = $configuration['parser_config'];
          }
ef41533d   Mihail   temp commit - wor...
50
          $data = \Yii::$app->multiparser->parse( $file_path, $parser_config );
ea4ecf3d   Mihail   console csv parsing
51
52
53
54
          if (! $data) {
              // @todo переделать, что бы ошибка автоматически останавливала сценарий
              return false;
          }
f0dbd829   Mihail   add PriceWriter a...
55
  
1fe29bbe   Mihail   fixed parser and ...
56
57
58
59
          $writer = new PriceWriter();
          $writer->configuration = $configuration;
          $writer->data = $data;
          $writer->mode = 1; //console-режим
ea4ecf3d   Mihail   console csv parsing
60
  
1fe29bbe   Mihail   fixed parser and ...
61
          if ( $writer->writeDataToDB() ){
ea4ecf3d   Mihail   console csv parsing
62
  
1fe29bbe   Mihail   fixed parser and ...
63
64
              return true;
          }
f0dbd829   Mihail   add PriceWriter a...
65
  
1fe29bbe   Mihail   fixed parser and ...
66
          return false;
f0dbd829   Mihail   add PriceWriter a...
67
      }
db543d22   Mihail   temp commit - wor...
68
  
ea4ecf3d   Mihail   console csv parsing
69
70
      public function actionParseXml ()
      {
48b58a13   Mihail   finish with xml a...
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
           \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');
  
              $files_model = new ImportersFiles();
              // id поставщика всегда = 1 - Склад
              $files_model->importer_id = 1;
              try {
                  $files_model->save();
              } catch (ErrorException  $e) {
                  throw $e;
              }
              // получим id только что записанной записи
              $record_id = $files_model->find()
                  ->where(['importer_id' => $files_model->importer_id])
                  ->orderBy(['id' => SORT_DESC])
                  ->one()
                  ->id;
  
              $config = ['record_id' => $record_id,
                  'importer_id' => 1,
                  'parser_config' => [
                      'mode' => 'console']
              ];
ea4ecf3d   Mihail   console csv parsing
96
  
48b58a13   Mihail   finish with xml a...
97
98
99
100
101
102
103
              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
104
105
      }
  
48b58a13   Mihail   finish with xml a...
106
      public function actionTest()
db543d22   Mihail   temp commit - wor...
107
      {
ef41533d   Mihail   temp commit - wor...
108
          Console::output('It is working ');
48b58a13   Mihail   finish with xml a...
109
          \Yii::info('2', 'parser');
db543d22   Mihail   temp commit - wor...
110
111
  
      }
f0dbd829   Mihail   add PriceWriter a...
112
  }