2edfb901
Mihail
add PriceWriter a...
|
1
|
<?php
|
2d10c44d
Mihail
temp commit - wor...
|
2
3
|
namespace console\controllers;
|
d3cf6647
Mihail
add multiply pric...
|
4
|
use common\components\CustomVarDamp;
|
7f6a9301
Mihail
add mails classes
|
5
6
|
use common\components\mail\ImapMailReader;
use common\components\mail\MailAttachmentsSaver;
|
2edfb901
Mihail
add PriceWriter a...
|
7
|
use yii\console\Controller;
|
93e39994
Mihail
fixed parser and ...
|
8
9
10
|
use yii\helpers\Console;
use common\components\PriceWriter;
use backend\models\ImportersFiles;
|
34d480b7
Mihail
temp commit - wor...
|
11
12
|
use backend\models\Importers;
use yii\base\ErrorException;
|
2edfb901
Mihail
add PriceWriter a...
|
13
|
|
0bec979b
Mihail
finish with xml a...
|
14
15
|
class ParserController extends Controller
{
|
0bec979b
Mihail
finish with xml a...
|
16
|
public function actionParseCsv()
|
2edfb901
Mihail
add PriceWriter a...
|
17
|
{
|
0bec979b
Mihail
finish with xml a...
|
18
19
20
21
|
\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');
|
df629228
Mihail
console csv parsing
|
22
|
$importer_id = ImportersFiles::findOne(['id' => $file_name])->importer_id;
|
d3cf6647
Mihail
add multiply pric...
|
23
24
25
26
27
28
29
30
31
|
$current_importer = Importers::findOne(['id' => $importer_id]);
$keys = $current_importer->keys;
$mult_array = $current_importer->multiply;
// получим настройки ценообразования и передадим их отдельно в конвертер
$sign = '';
$multiplier = '';
extract( $mult_array );
|
34d480b7
Mihail
temp commit - wor...
|
32
|
|
df629228
Mihail
console csv parsing
|
33
34
35
|
$config = ['record_id' => $file_name,
'importer_id' => $importer_id,
'parser_config' => ['keys' => $keys,
|
d3cf6647
Mihail
add multiply pric...
|
36
|
'converter_conf' =>
|
ffd4b834
Mihail
add articul filte...
|
37
|
[ 'sign' => $sign, 'multiplier' => $multiplier, 'importer_id' => $importer_id ],
|
df629228
Mihail
console csv parsing
|
38
39
|
'mode' => 'console']
];
|
0bec979b
Mihail
finish with xml a...
|
40
41
42
43
44
|
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');
|
df629228
Mihail
console csv parsing
|
45
|
}
|
0bec979b
Mihail
finish with xml a...
|
46
47
|
//при любом завершении скрипта файл с очереди автозагрузки нужно удалить
unlink(\Yii::getAlias('@auto_upload') . '/' . $file_name . '.csv');
|
df629228
Mihail
console csv parsing
|
48
|
}
|
34d480b7
Mihail
temp commit - wor...
|
49
|
|
2edfb901
Mihail
add PriceWriter a...
|
50
|
}
|
34d480b7
Mihail
temp commit - wor...
|
51
|
|
2edfb901
Mihail
add PriceWriter a...
|
52
|
|
93e39994
Mihail
fixed parser and ...
|
53
|
protected function parseFileConsole( $file_path, $configuration ){
|
34d480b7
Mihail
temp commit - wor...
|
54
55
|
if( !file_exists( $file_path ) )
|
df629228
Mihail
console csv parsing
|
56
|
throw new ErrorException("$file_path - файл не найден!");
|
34d480b7
Mihail
temp commit - wor...
|
57
|
|
93e39994
Mihail
fixed parser and ...
|
58
59
60
61
|
$parser_config = [];
if ( isset( $configuration['parser_config'] ) ) {
$parser_config = $configuration['parser_config'];
}
|
34d480b7
Mihail
temp commit - wor...
|
62
|
$data = \Yii::$app->multiparser->parse( $file_path, $parser_config );
|
d3cf6647
Mihail
add multiply pric...
|
63
|
if ( ! $data ) {
|
3c4b566f
Mihail
add XlsxParser
|
64
|
throw new ErrorException("Ошибка обработки файла прайса!");
|
df629228
Mihail
console csv parsing
|
65
|
}
|
2edfb901
Mihail
add PriceWriter a...
|
66
|
|
93e39994
Mihail
fixed parser and ...
|
67
68
69
70
|
$writer = new PriceWriter();
$writer->configuration = $configuration;
$writer->data = $data;
$writer->mode = 1; //console-режим
|
df629228
Mihail
console csv parsing
|
71
|
|
93e39994
Mihail
fixed parser and ...
|
72
|
if ( $writer->writeDataToDB() ){
|
df629228
Mihail
console csv parsing
|
73
|
|
93e39994
Mihail
fixed parser and ...
|
74
75
|
return true;
}
|
2edfb901
Mihail
add PriceWriter a...
|
76
|
|
93e39994
Mihail
fixed parser and ...
|
77
|
return false;
|
2edfb901
Mihail
add PriceWriter a...
|
78
|
}
|
2d10c44d
Mihail
temp commit - wor...
|
79
|
|
df629228
Mihail
console csv parsing
|
80
81
|
public function actionParseXml ()
{
|
0bec979b
Mihail
finish with xml a...
|
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
\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']
];
|
df629228
Mihail
console csv parsing
|
107
|
|
0bec979b
Mihail
finish with xml a...
|
108
|
if ($this->parseFileConsole($file_path, $config)) {
|
3c4b566f
Mihail
add XlsxParser
|
109
|
//unlink(\Yii::getAlias('@auto_upload') . '/' . $file_name . '.xml');
|
0bec979b
Mihail
finish with xml a...
|
110
111
112
113
114
|
\Yii::info("Загрузка файла - $file_path успешно завершена", 'parser');
} else {
\Yii::error("Загрузка файла - $file_path завершена с ошибкой", 'parser');
}
}
|
df629228
Mihail
console csv parsing
|
115
116
|
}
|
0bec979b
Mihail
finish with xml a...
|
117
|
public function actionTest()
|
2d10c44d
Mihail
temp commit - wor...
|
118
|
{
|
34d480b7
Mihail
temp commit - wor...
|
119
|
Console::output('It is working ');
|
0bec979b
Mihail
finish with xml a...
|
120
|
\Yii::info('2', 'parser');
|
2d10c44d
Mihail
temp commit - wor...
|
121
122
|
}
|
7f6a9301
Mihail
add mails classes
|
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
public function actionSaveMailAttachments()
{
\Yii::info('Начало сохранения файлов почты', 'mail');
$mail_reader = new ImapMailReader( '{imap.gmail.com:993/imap/ssl/novalidate-cert}', 'tsurkanovm@gmail.com', 'Wtvr@2000' );
$mailboxes = $mail_reader->getListMailboxes();
foreach ($mailboxes as $custom_label) {
$words = explode(" ",str_replace(array($mail_reader->getHostname(),"!"),"",imap_utf7_decode($custom_label)));
$importer_id = (int)preg_replace("/[^A-Z0-9]+/","",strtoupper($words[0]));
$mail_reader->reOpen($custom_label);
$saver = new MailAttachmentsSaver( $mail_reader, 'UNSEEN' );
$saver->file_name_parefix = $importer_id . '~!~';
$saver->saveAttachmentsTo(\Yii::getAlias('@temp_upload'));
// $files_model = new ImportersFiles();
// $files_model->importer_id = $importer_id;
}
}
|
2edfb901
Mihail
add PriceWriter a...
|
145
|
}
|