Blame view

backend/models/UploadFileParsingForm.php 2.76 KB
58743b31   Mihail   init commit - bas...
1
  <?php
febcec0b   Mihail   final version par...
2
  namespace backend\models;
58743b31   Mihail   init commit - bas...
3
4
5
  
  use yii\base\Model;
  use yii\web\UploadedFile;
febcec0b   Mihail   final version par...
6
  use Yii;
7a80e74c   Mihail   add DynamicFormHe...
7
  use common\components\CustomVarDamp;
58743b31   Mihail   init commit - bas...
8
9
10
11
  
  /**
   * UploadForm is the model behind the upload form.
   */
5be26bf2   Mihail   edit upload form
12
  class UploadFileParsingForm extends Model
58743b31   Mihail   init commit - bas...
13
14
15
16
  {
      /**
       * @var UploadedFile file attribute
       */
2fb5a757   Mihail   add menu and chec...
17
      // атрибуты формы
58743b31   Mihail   init commit - bas...
18
      public $file;
d7f6bdbb   Mihail   add Importers fil...
19
      public $importer_id;
5c2732df   Mihail   add mail parser a...
20
      public $action;
165348a4   Mihail   draft commit
21
22
23
      public $delimiter;
      public $delete_price;
      public $delete_prefix;
2fb5a757   Mihail   add menu and chec...
24
25
26
27
  
      // служебные атрибуты
      public $file_path;
      public $success;
1fa22312   Mihail   add auto upload a...
28
      public $mode; //0 - режим ручной загрузки, 1 - режим автозагрузки
58743b31   Mihail   init commit - bas...
29
30
31
32
  
      /**
       * @return array the validation rules.
       */
1fa22312   Mihail   add auto upload a...
33
34
35
36
37
38
39
40
41
42
43
      public function __construct($config = [])
      {
          parent::__construct($config);
          if ( $this->mode ) {
              // автозагрузка, проставим сценарий
              $this->scenario = 'auto';
          }
  
      }
  
  
58743b31   Mihail   init commit - bas...
44
45
46
      public function rules()
      {
          return [
d7f6bdbb   Mihail   add Importers fil...
47
              ['importer_id', 'required', 'message' => 'Не указан поставщик!' ],
165348a4   Mihail   draft commit
48
49
              ['file', 'required', 'message' => 'Не выбран файл!' ],
              //@todo - not working this file validator!!! - fixed
67d432ac   Mihail   final upload form...
50
              [['file'], 'file'],// 'extensions' => ['csv', 'xml'] ],
165348a4   Mihail   draft commit
51
   //               'wrongMimeType' => 'Указан неподдерживаемый тип файла. Можно выбирать csv, xml файлы.' ],
d7f6bdbb   Mihail   add Importers fil...
52
              ['importer_id', 'integer','max' => 999999, 'min' => 0 ],
1fa22312   Mihail   add auto upload a...
53
              [['action','delete_prefix', 'delete_price', 'success'], 'boolean', 'except' => 'auto' ], // только для ручной загрузки
165348a4   Mihail   draft commit
54
              ['delimiter', 'string', 'max' => 1],
1fa22312   Mihail   add auto upload a...
55
              ['mode', 'safe'],
51514d7d   Mihail   add writing data ...
56
              ['delimiter', 'default', 'value' => ';'],
2fb5a757   Mihail   add menu and chec...
57
              [ 'success', 'default', 'value' => false]
5c2732df   Mihail   add mail parser a...
58
  
febcec0b   Mihail   final version par...
59
60
61
62
63
64
65
          ];
      }
  
      public function attributeLabels()
      {
          return [
              'file' => Yii::t('app', 'Источник'),
d7f6bdbb   Mihail   add Importers fil...
66
              'importer_id' => Yii::t('app', 'Поставщик'),
165348a4   Mihail   draft commit
67
              'delimiter' => Yii::t('app', 'Разделитель'),
58743b31   Mihail   init commit - bas...
68
69
          ];
      }
2509e17e   Administrator   JSON
70
  
2fb5a757   Mihail   add menu and chec...
71
      public function readFile(){
0c8b9dfc   Mihail   add error excepti...
72
  
2fb5a757   Mihail   add menu and chec...
73
          $data = Yii::$app->multiparser->parse( $this->file_path );
2509e17e   Administrator   JSON
74
75
76
          if( !is_array($data) ){
              $data = ['No results'];
          }
d7f6bdbb   Mihail   add Importers fil...
77
  
2509e17e   Administrator   JSON
78
79
          return $data;
      }
d7f6bdbb   Mihail   add Importers fil...
80
  
1fa22312   Mihail   add auto upload a...
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
      public function fields()
      {
          return [
  
              'importer_id',
              'delimiter',
              'delete_price',
              'delete_prefix',
              'file_path',
              // id записи таблицы ImportersFiles, получаем из имени загруженного файла
              'id' => function () {
                  return $this->file->getBaseName();
              },
          ];
      }
  
  
58743b31   Mihail   init commit - bas...
98
  }