Commit 25473a0db06ae4031db811073307897dc7982423
1 parent
558a5e9e
add parser trait - refactor depends controllers
Showing
15 changed files
with
710 additions
and
603 deletions
Show diff stats
.idea/test-1.artwebua.in.ua.iml
@@ -6,5 +6,15 @@ | @@ -6,5 +6,15 @@ | ||
6 | </content> | 6 | </content> |
7 | <orderEntry type="inheritedJdk" /> | 7 | <orderEntry type="inheritedJdk" /> |
8 | <orderEntry type="sourceFolder" forTests="false" /> | 8 | <orderEntry type="sourceFolder" forTests="false" /> |
9 | + <orderEntry type="module-library"> | ||
10 | + <library name="PHARS"> | ||
11 | + <CLASSES> | ||
12 | + <root url="phar://$MODULE_DIR$/vendor/mihaildev/yii2-elfinder/volume/aws.phar" /> | ||
13 | + </CLASSES> | ||
14 | + <SOURCES> | ||
15 | + <root url="phar://$MODULE_DIR$/vendor/mihaildev/yii2-elfinder/volume/aws.phar" /> | ||
16 | + </SOURCES> | ||
17 | + </library> | ||
18 | + </orderEntry> | ||
9 | </component> | 19 | </component> |
10 | </module> | 20 | </module> |
11 | \ No newline at end of file | 21 | \ No newline at end of file |
.idea/workspace.xml
@@ -2,7 +2,6 @@ | @@ -2,7 +2,6 @@ | ||
2 | <project version="4"> | 2 | <project version="4"> |
3 | <component name="ChangeListManager"> | 3 | <component name="ChangeListManager"> |
4 | <list default="true" id="f6bb8ef4-b6f5-4c59-9053-25989736ae66" name="Default" comment=""> | 4 | <list default="true" id="f6bb8ef4-b6f5-4c59-9053-25989736ae66" name="Default" comment=""> |
5 | - <change type="DELETED" beforePath="C:\xampp\htdocs\ital\backend\models\Importer.php" afterPath="" /> | ||
6 | <change type="DELETED" beforePath="C:\xampp\htdocs\ital\storage\parser_data\auto\5648.csv" afterPath="" /> | 5 | <change type="DELETED" beforePath="C:\xampp\htdocs\ital\storage\parser_data\auto\5648.csv" afterPath="" /> |
7 | <change type="DELETED" beforePath="C:\xampp\htdocs\ital\storage\parser_data\manual\Групы VW.xlsx" afterPath="" /> | 6 | <change type="DELETED" beforePath="C:\xampp\htdocs\ital\storage\parser_data\manual\Групы VW.xlsx" afterPath="" /> |
8 | <change type="DELETED" beforePath="C:\xampp\htdocs\ital\storage\parser_data\temp\5648.csv" afterPath="" /> | 7 | <change type="DELETED" beforePath="C:\xampp\htdocs\ital\storage\parser_data\temp\5648.csv" afterPath="" /> |
@@ -21,22 +20,17 @@ | @@ -21,22 +20,17 @@ | ||
21 | <change type="DELETED" beforePath="C:\xampp\htdocs\ital\storage\parser_data\temp\xlsx\kud0hb7or3133ull44s061thg2\xl\worksheets\sheet1.xml" afterPath="" /> | 20 | <change type="DELETED" beforePath="C:\xampp\htdocs\ital\storage\parser_data\temp\xlsx\kud0hb7or3133ull44s061thg2\xl\worksheets\sheet1.xml" afterPath="" /> |
22 | <change type="DELETED" beforePath="C:\xampp\htdocs\ital\storage\parser_data\temp\xlsx\kud0hb7or3133ull44s061thg2\xl\worksheets\sheet2.xml" afterPath="" /> | 21 | <change type="DELETED" beforePath="C:\xampp\htdocs\ital\storage\parser_data\temp\xlsx\kud0hb7or3133ull44s061thg2\xl\worksheets\sheet2.xml" afterPath="" /> |
23 | <change type="DELETED" beforePath="C:\xampp\htdocs\ital\storage\parser_data\temp\xlsx\kud0hb7or3133ull44s061thg2\xl\worksheets\sheet3.xml" afterPath="" /> | 22 | <change type="DELETED" beforePath="C:\xampp\htdocs\ital\storage\parser_data\temp\xlsx\kud0hb7or3133ull44s061thg2\xl\worksheets\sheet3.xml" afterPath="" /> |
24 | - <change type="MOVED" beforePath="C:\xampp\htdocs\ital\.gitignore" afterPath="$PROJECT_DIR$/storage/.gitignore" /> | ||
25 | - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tests/unit/BaseConverterTest.php" afterPath="$PROJECT_DIR$/tests/unit/BaseConverterTest.php" /> | ||
26 | - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tests/unit/CrossesParsingTest.php" afterPath="$PROJECT_DIR$/tests/unit/CrossesParsingTest.php" /> | 23 | + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/backend/components/base/BaseController.php" afterPath="$PROJECT_DIR$/backend/components/base/BaseController.php" /> |
27 | <change type="MODIFICATION" beforePath="$PROJECT_DIR$/backend/controllers/CrossingUploadController.php" afterPath="$PROJECT_DIR$/backend/controllers/CrossingUploadController.php" /> | 24 | <change type="MODIFICATION" beforePath="$PROJECT_DIR$/backend/controllers/CrossingUploadController.php" afterPath="$PROJECT_DIR$/backend/controllers/CrossingUploadController.php" /> |
28 | - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/common/components/parsers/CustomConverter.php" afterPath="$PROJECT_DIR$/common/components/parsers/CustomConverter.php" /> | ||
29 | - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/common/components/parsers/CustomCsvParser.php" afterPath="$PROJECT_DIR$/common/components/parsers/CustomCsvParser.php" /> | ||
30 | - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/backend/models/Importers.php" afterPath="$PROJECT_DIR$/backend/models/Importers.php" /> | 25 | + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/common/models/MarginsGroups.php" afterPath="$PROJECT_DIR$/common/models/MarginsGroups.php" /> |
31 | <change type="MODIFICATION" beforePath="$PROJECT_DIR$/backend/controllers/ParserController.php" afterPath="$PROJECT_DIR$/backend/controllers/ParserController.php" /> | 26 | <change type="MODIFICATION" beforePath="$PROJECT_DIR$/backend/controllers/ParserController.php" afterPath="$PROJECT_DIR$/backend/controllers/ParserController.php" /> |
32 | <change type="MODIFICATION" beforePath="$PROJECT_DIR$/backend/controllers/RgGrupController.php" afterPath="$PROJECT_DIR$/backend/controllers/RgGrupController.php" /> | 27 | <change type="MODIFICATION" beforePath="$PROJECT_DIR$/backend/controllers/RgGrupController.php" afterPath="$PROJECT_DIR$/backend/controllers/RgGrupController.php" /> |
33 | - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/composer.json" afterPath="$PROJECT_DIR$/composer.json" /> | ||
34 | - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/composer.lock" afterPath="$PROJECT_DIR$/composer.lock" /> | ||
35 | - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/common/components/parsers/config.php" afterPath="$PROJECT_DIR$/common/components/parsers/config.php" /> | ||
36 | - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/common/config/main.php" afterPath="$PROJECT_DIR$/common/config/main.php" /> | ||
37 | - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/backend/views/crossing-upload/results.php" afterPath="$PROJECT_DIR$/backend/views/crossing-upload/results.php" /> | ||
38 | - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/backend/views/parser/results.php" afterPath="$PROJECT_DIR$/backend/views/parser/results.php" /> | 28 | + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/backend/views/parser/error.php" afterPath="$PROJECT_DIR$/backend/views/parser/error.php" /> |
29 | + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/backend/views/crossing-upload/index.php" afterPath="$PROJECT_DIR$/backend/views/crossing-upload/index.php" /> | ||
30 | + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/backend/views/rg-grup/index.php" afterPath="$PROJECT_DIR$/backend/views/rg-grup/index.php" /> | ||
39 | <change type="MODIFICATION" beforePath="$PROJECT_DIR$/backend/views/rg-grup/results.php" afterPath="$PROJECT_DIR$/backend/views/rg-grup/results.php" /> | 31 | <change type="MODIFICATION" beforePath="$PROJECT_DIR$/backend/views/rg-grup/results.php" afterPath="$PROJECT_DIR$/backend/views/rg-grup/results.php" /> |
32 | + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/test-1.artwebua.in.ua.iml" afterPath="$PROJECT_DIR$/.idea/test-1.artwebua.in.ua.iml" /> | ||
33 | + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" /> | ||
40 | </list> | 34 | </list> |
41 | <ignored path="test-1.artwebua.in.ua.iws" /> | 35 | <ignored path="test-1.artwebua.in.ua.iws" /> |
42 | <ignored path=".idea/workspace.xml" /> | 36 | <ignored path=".idea/workspace.xml" /> |
@@ -177,24 +171,28 @@ | @@ -177,24 +171,28 @@ | ||
177 | </component> | 171 | </component> |
178 | <component name="FileEditorManager"> | 172 | <component name="FileEditorManager"> |
179 | <leaf> | 173 | <leaf> |
180 | - <file leaf-file-name="CrossesParsingTest.php" pinned="false" current-in-tab="false"> | ||
181 | - <entry file="file://$PROJECT_DIR$/tests/unit/CrossesParsingTest.php"> | 174 | + <file leaf-file-name="CrossingUploadController.php" pinned="false" current-in-tab="false"> |
175 | + <entry file="file://$PROJECT_DIR$/backend/controllers/CrossingUploadController.php"> | ||
182 | <provider selected="true" editor-type-id="text-editor"> | 176 | <provider selected="true" editor-type-id="text-editor"> |
183 | - <state vertical-scroll-proportion="-20.222221" vertical-offset="273" max-vertical-offset="1113"> | ||
184 | - <caret line="39" column="0" selection-start-line="39" selection-start-column="0" selection-end-line="39" selection-end-column="0" /> | 177 | + <state vertical-scroll-proportion="-37.333332" vertical-offset="1134" max-vertical-offset="4746"> |
178 | + <caret line="102" column="0" selection-start-line="102" selection-start-column="0" selection-end-line="102" selection-end-column="0" /> | ||
185 | <folding> | 179 | <folding> |
186 | - <element signature="e#28#68#0#PHP" expanded="true" /> | 180 | + <element signature="e#6#91#0#PHP" expanded="true" /> |
181 | + <element signature="e#125#168#0#PHP" expanded="true" /> | ||
187 | </folding> | 182 | </folding> |
188 | </state> | 183 | </state> |
189 | </provider> | 184 | </provider> |
190 | </entry> | 185 | </entry> |
191 | </file> | 186 | </file> |
192 | - <file leaf-file-name=".gitignore" pinned="false" current-in-tab="true"> | ||
193 | - <entry file="file://$PROJECT_DIR$/storage/.gitignore"> | 187 | + <file leaf-file-name="RgGrupController.php" pinned="false" current-in-tab="false"> |
188 | + <entry file="file://$PROJECT_DIR$/backend/controllers/RgGrupController.php"> | ||
194 | <provider selected="true" editor-type-id="text-editor"> | 189 | <provider selected="true" editor-type-id="text-editor"> |
195 | - <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="535"> | ||
196 | - <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> | ||
197 | - <folding /> | 190 | + <state vertical-scroll-proportion="-109.59259" vertical-offset="527" max-vertical-offset="4053"> |
191 | + <caret line="190" column="5" selection-start-line="190" selection-start-column="5" selection-end-line="190" selection-end-column="5" /> | ||
192 | + <folding> | ||
193 | + <element signature="e#125#168#0#PHP" expanded="true" /> | ||
194 | + <element signature="e#787#1322#0#PHP" expanded="false" /> | ||
195 | + </folding> | ||
198 | </state> | 196 | </state> |
199 | </provider> | 197 | </provider> |
200 | </entry> | 198 | </entry> |
@@ -202,20 +200,84 @@ | @@ -202,20 +200,84 @@ | ||
202 | <file leaf-file-name="CustomArrayHelper.php" pinned="false" current-in-tab="false"> | 200 | <file leaf-file-name="CustomArrayHelper.php" pinned="false" current-in-tab="false"> |
203 | <entry file="file://$PROJECT_DIR$/common/components/CustomArrayHelper.php"> | 201 | <entry file="file://$PROJECT_DIR$/common/components/CustomArrayHelper.php"> |
204 | <provider selected="true" editor-type-id="text-editor"> | 202 | <provider selected="true" editor-type-id="text-editor"> |
205 | - <state vertical-scroll-proportion="-10.777778" vertical-offset="108" max-vertical-offset="1596"> | ||
206 | - <caret line="24" column="48" selection-start-line="24" selection-start-column="48" selection-end-line="24" selection-end-column="48" /> | 203 | + <state vertical-scroll-proportion="-9.62963" vertical-offset="286" max-vertical-offset="1596"> |
204 | + <caret line="31" column="36" selection-start-line="31" selection-start-column="36" selection-end-line="31" selection-end-column="36" /> | ||
207 | <folding /> | 205 | <folding /> |
208 | </state> | 206 | </state> |
209 | </provider> | 207 | </provider> |
210 | </entry> | 208 | </entry> |
211 | </file> | 209 | </file> |
212 | - <file leaf-file-name="CrossingUploadController.php" pinned="false" current-in-tab="false"> | ||
213 | - <entry file="file://$PROJECT_DIR$/backend/controllers/CrossingUploadController.php"> | 210 | + <file leaf-file-name="Margins.php" pinned="false" current-in-tab="false"> |
211 | + <entry file="file://$PROJECT_DIR$/common/models/Margins.php"> | ||
212 | + <provider selected="true" editor-type-id="text-editor"> | ||
213 | + <state vertical-scroll-proportion="-10.407408" vertical-offset="832" max-vertical-offset="1512"> | ||
214 | + <caret line="53" column="8" selection-start-line="53" selection-start-column="8" selection-end-line="53" selection-end-column="51" /> | ||
215 | + <folding /> | ||
216 | + </state> | ||
217 | + </provider> | ||
218 | + </entry> | ||
219 | + </file> | ||
220 | + <file leaf-file-name="ParserTrait.php" pinned="false" current-in-tab="false"> | ||
221 | + <entry file="file://$PROJECT_DIR$/backend/components/traits/ParserTrait.php"> | ||
214 | <provider selected="true" editor-type-id="text-editor"> | 222 | <provider selected="true" editor-type-id="text-editor"> |
215 | - <state vertical-scroll-proportion="-9.37037" vertical-offset="2519" max-vertical-offset="4935"> | ||
216 | - <caret line="137" column="78" selection-start-line="137" selection-start-column="11" selection-end-line="137" selection-end-column="78" /> | 223 | + <state vertical-scroll-proportion="-42.77778" vertical-offset="126" max-vertical-offset="1848"> |
224 | + <caret line="66" column="46" selection-start-line="66" selection-start-column="31" selection-end-line="66" selection-end-column="46" /> | ||
217 | <folding> | 225 | <folding> |
218 | - <element signature="e#125#168#0#PHP" expanded="true" /> | 226 | + <element signature="e#129#177#0#PHP" expanded="true" /> |
227 | + </folding> | ||
228 | + </state> | ||
229 | + </provider> | ||
230 | + </entry> | ||
231 | + </file> | ||
232 | + <file leaf-file-name="index.php" pinned="false" current-in-tab="false"> | ||
233 | + <entry file="file://$PROJECT_DIR$/backend/views/rg-grup/index.php"> | ||
234 | + <provider selected="true" editor-type-id="text-editor"> | ||
235 | + <state vertical-scroll-proportion="-18.666666" vertical-offset="0" max-vertical-offset="756"> | ||
236 | + <caret line="27" column="32" selection-start-line="27" selection-start-column="32" selection-end-line="27" selection-end-column="32" /> | ||
237 | + <folding /> | ||
238 | + </state> | ||
239 | + </provider> | ||
240 | + </entry> | ||
241 | + </file> | ||
242 | + <file leaf-file-name="results.php" pinned="false" current-in-tab="false"> | ||
243 | + <entry file="file://$PROJECT_DIR$/backend/views/rg-grup/results.php"> | ||
244 | + <provider selected="true" editor-type-id="text-editor"> | ||
245 | + <state vertical-scroll-proportion="-22.555555" vertical-offset="0" max-vertical-offset="777"> | ||
246 | + <caret line="29" column="23" selection-start-line="29" selection-start-column="23" selection-end-line="29" selection-end-column="23" /> | ||
247 | + <folding> | ||
248 | + <element signature="e#7#28#0#PHP" expanded="true" /> | ||
249 | + </folding> | ||
250 | + </state> | ||
251 | + </provider> | ||
252 | + </entry> | ||
253 | + </file> | ||
254 | + <file leaf-file-name="server-files.php" pinned="false" current-in-tab="false"> | ||
255 | + <entry file="file://$PROJECT_DIR$/backend/views/parser/server-files.php"> | ||
256 | + <provider selected="true" editor-type-id="text-editor"> | ||
257 | + <state vertical-scroll-proportion="-22.777779" vertical-offset="288" max-vertical-offset="1155"> | ||
258 | + <caret line="49" column="108" selection-start-line="49" selection-start-column="8" selection-end-line="49" selection-end-column="108" /> | ||
259 | + <folding /> | ||
260 | + </state> | ||
261 | + </provider> | ||
262 | + </entry> | ||
263 | + </file> | ||
264 | + <file leaf-file-name="MarginsGroups.php" pinned="false" current-in-tab="false"> | ||
265 | + <entry file="file://$PROJECT_DIR$/common/models/MarginsGroups.php"> | ||
266 | + <provider selected="true" editor-type-id="text-editor"> | ||
267 | + <state vertical-scroll-proportion="15.62963" vertical-offset="758" max-vertical-offset="2520"> | ||
268 | + <caret line="17" column="19" selection-start-line="17" selection-start-column="6" selection-end-line="17" selection-end-column="19" /> | ||
269 | + <folding /> | ||
270 | + </state> | ||
271 | + </provider> | ||
272 | + </entry> | ||
273 | + </file> | ||
274 | + <file leaf-file-name="ParserController.php" pinned="false" current-in-tab="true"> | ||
275 | + <entry file="file://$PROJECT_DIR$/backend/controllers/ParserController.php"> | ||
276 | + <provider selected="true" editor-type-id="text-editor"> | ||
277 | + <state vertical-scroll-proportion="0.021428572" vertical-offset="1494" max-vertical-offset="6468"> | ||
278 | + <caret line="72" column="54" selection-start-line="72" selection-start-column="54" selection-end-line="72" selection-end-column="54" /> | ||
279 | + <folding> | ||
280 | + <element signature="e#38#65#0#PHP" expanded="true" /> | ||
219 | </folding> | 281 | </folding> |
220 | </state> | 282 | </state> |
221 | </provider> | 283 | </provider> |
@@ -230,16 +292,6 @@ | @@ -230,16 +292,6 @@ | ||
230 | <component name="IdeDocumentHistory"> | 292 | <component name="IdeDocumentHistory"> |
231 | <option name="CHANGED_PATHS"> | 293 | <option name="CHANGED_PATHS"> |
232 | <list> | 294 | <list> |
233 | - <option value="$PROJECT_DIR$/vendor/artweb/yii2-multiparser/lib/CsvParser.php" /> | ||
234 | - <option value="$PROJECT_DIR$/vendor/artweb/yii2-multiparser/lib/ParserHandler.php" /> | ||
235 | - <option value="db-console:/b6fc378e/7bd5422a-47c2-471e-873f-532e6b000acc/" /> | ||
236 | - <option value="$PROJECT_DIR$/backend/assets/CartAsset.php" /> | ||
237 | - <option value="$PROJECT_DIR$/backend/views/check-price/index.php" /> | ||
238 | - <option value="$PROJECT_DIR$/backend/views/cart/index.php" /> | ||
239 | - <option value="$PROJECT_DIR$/common/models/CartBillsSearch.php" /> | ||
240 | - <option value="$PROJECT_DIR$/backend/web/css/AdminLTE.css" /> | ||
241 | - <option value="$PROJECT_DIR$/common/models/Cart.php" /> | ||
242 | - <option value="$PROJECT_DIR$/backend/views/cart/view.php" /> | ||
243 | <option value="$PROJECT_DIR$/backend/controllers/CartController.php" /> | 295 | <option value="$PROJECT_DIR$/backend/controllers/CartController.php" /> |
244 | <option value="$PROJECT_DIR$/backend/web/js/cart.js" /> | 296 | <option value="$PROJECT_DIR$/backend/web/js/cart.js" /> |
245 | <option value="$PROJECT_DIR$/backend/controllers/CurrencyController.php" /> | 297 | <option value="$PROJECT_DIR$/backend/controllers/CurrencyController.php" /> |
@@ -253,9 +305,7 @@ | @@ -253,9 +305,7 @@ | ||
253 | <option value="$PROJECT_DIR$/common/models/Currency.php" /> | 305 | <option value="$PROJECT_DIR$/common/models/Currency.php" /> |
254 | <option value="$PROJECT_DIR$/vendor/artweb/yii2-multiparser/lib/ParserValidator.php" /> | 306 | <option value="$PROJECT_DIR$/vendor/artweb/yii2-multiparser/lib/ParserValidator.php" /> |
255 | <option value="$PROJECT_DIR$/backend/views/currency/index.php" /> | 307 | <option value="$PROJECT_DIR$/backend/views/currency/index.php" /> |
256 | - <option value="$PROJECT_DIR$/backend/components/base/BaseController.php" /> | ||
257 | <option value="$PROJECT_DIR$/backend/views/templates/parser_massage.php" /> | 308 | <option value="$PROJECT_DIR$/backend/views/templates/parser_massage.php" /> |
258 | - <option value="$PROJECT_DIR$/backend/views/crossing-upload/index.php" /> | ||
259 | <option value="$PROJECT_DIR$/common/components/ModelArrayValidator.php" /> | 309 | <option value="$PROJECT_DIR$/common/components/ModelArrayValidator.php" /> |
260 | <option value="$PROJECT_DIR$/backend/models/Details.php" /> | 310 | <option value="$PROJECT_DIR$/backend/models/Details.php" /> |
261 | <option value="$PROJECT_DIR$/backend/models/DetailsCrosses.php" /> | 311 | <option value="$PROJECT_DIR$/backend/models/DetailsCrosses.php" /> |
@@ -263,24 +313,36 @@ | @@ -263,24 +313,36 @@ | ||
263 | <option value="$PROJECT_DIR$/vendor/artweb/yii2-multiparser/lib/TableParser.php" /> | 313 | <option value="$PROJECT_DIR$/vendor/artweb/yii2-multiparser/lib/TableParser.php" /> |
264 | <option value="$PROJECT_DIR$/console/controllers/ParserController.php" /> | 314 | <option value="$PROJECT_DIR$/console/controllers/ParserController.php" /> |
265 | <option value="$PROJECT_DIR$/console/runtime/logs/parser.log" /> | 315 | <option value="$PROJECT_DIR$/console/runtime/logs/parser.log" /> |
266 | - <option value="$PROJECT_DIR$/backend/views/rg-grup/index.php" /> | ||
267 | <option value="$PROJECT_DIR$/common/components/PriceWriter.php" /> | 316 | <option value="$PROJECT_DIR$/common/components/PriceWriter.php" /> |
268 | - <option value="$PROJECT_DIR$/common/models/MarginsGroups.php" /> | ||
269 | <option value="$PROJECT_DIR$/backend/views/parser/index.php" /> | 317 | <option value="$PROJECT_DIR$/backend/views/parser/index.php" /> |
270 | <option value="$PROJECT_DIR$/backend/models/Importers.php" /> | 318 | <option value="$PROJECT_DIR$/backend/models/Importers.php" /> |
271 | <option value="$PROJECT_DIR$/common/components/parsers/Converter.php" /> | 319 | <option value="$PROJECT_DIR$/common/components/parsers/Converter.php" /> |
272 | <option value="$PROJECT_DIR$/common/components/parsers/config.php" /> | 320 | <option value="$PROJECT_DIR$/common/components/parsers/config.php" /> |
273 | - <option value="$PROJECT_DIR$/backend/controllers/CrossingUploadController.php" /> | ||
274 | - <option value="$PROJECT_DIR$/backend/controllers/ParserController.php" /> | ||
275 | - <option value="$PROJECT_DIR$/backend/controllers/RgGrupController.php" /> | ||
276 | - <option value="$PROJECT_DIR$/backend/views/crossing-upload/results.php" /> | ||
277 | <option value="$PROJECT_DIR$/backend/views/parser/results.php" /> | 321 | <option value="$PROJECT_DIR$/backend/views/parser/results.php" /> |
278 | - <option value="$PROJECT_DIR$/backend/views/rg-grup/results.php" /> | ||
279 | <option value="$PROJECT_DIR$/common/components/parsers/CustomConverter.php" /> | 322 | <option value="$PROJECT_DIR$/common/components/parsers/CustomConverter.php" /> |
280 | <option value="$PROJECT_DIR$/common/components/parsers/CustomCsvParser.php" /> | 323 | <option value="$PROJECT_DIR$/common/components/parsers/CustomCsvParser.php" /> |
281 | <option value="$PROJECT_DIR$/common/config/main.php" /> | 324 | <option value="$PROJECT_DIR$/common/config/main.php" /> |
282 | <option value="$PROJECT_DIR$/tests/unit/BaseConverterTest.php" /> | 325 | <option value="$PROJECT_DIR$/tests/unit/BaseConverterTest.php" /> |
283 | <option value="$PROJECT_DIR$/tests/unit/CrossesParsingTest.php" /> | 326 | <option value="$PROJECT_DIR$/tests/unit/CrossesParsingTest.php" /> |
327 | + <option value="$PROJECT_DIR$/backend/web/index.php" /> | ||
328 | + <option value="$PROJECT_DIR$/backend/views/crossing-upload/index.php" /> | ||
329 | + <option value="$PROJECT_DIR$/backend/views/crossing-upload/results.php" /> | ||
330 | + <option value="$PROJECT_DIR$/backend/config/main.php" /> | ||
331 | + <option value="$PROJECT_DIR$/backend/views/crossing-upload/error.php" /> | ||
332 | + <option value="$PROJECT_DIR$/common/components/exceptions/CrossParsingException.php" /> | ||
333 | + <option value="$PROJECT_DIR$/common/components/exceptions/RgParsingException.php" /> | ||
334 | + <option value="$PROJECT_DIR$/common/components/exceptions/PriceParsingException.php" /> | ||
335 | + <option value="$PROJECT_DIR$/backend/components/traits_/ParserTrait.php" /> | ||
336 | + <option value="$PROJECT_DIR$/backend/components/base/BaseController.php" /> | ||
337 | + <option value="$PROJECT_DIR$/backend/views/parser/error.php" /> | ||
338 | + <option value="$PROJECT_DIR$/backend/views/rg-grup/index.php" /> | ||
339 | + <option value="$PROJECT_DIR$/backend/views/rg-grup/results.php" /> | ||
340 | + <option value="$PROJECT_DIR$/common/models/MarginsGroups.php" /> | ||
341 | + <option value="$PROJECT_DIR$/backend/components/traits/ParserTrait.php" /> | ||
342 | + <option value="$PROJECT_DIR$/backend/controllers/CrossingUploadController.php" /> | ||
343 | + <option value="$PROJECT_DIR$/common/models/Margins.php" /> | ||
344 | + <option value="$PROJECT_DIR$/backend/controllers/RgGrupController.php" /> | ||
345 | + <option value="$PROJECT_DIR$/backend/controllers/ParserController.php" /> | ||
284 | </list> | 346 | </list> |
285 | </option> | 347 | </option> |
286 | </component> | 348 | </component> |
@@ -333,6 +395,80 @@ | @@ -333,6 +395,80 @@ | ||
333 | <sortByType /> | 395 | <sortByType /> |
334 | </navigator> | 396 | </navigator> |
335 | <panes> | 397 | <panes> |
398 | + <pane id="ProjectPane"> | ||
399 | + <subPane> | ||
400 | + <PATH> | ||
401 | + <PATH_ELEMENT> | ||
402 | + <option name="myItemId" value="test-1.artwebua.in.ua" /> | ||
403 | + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> | ||
404 | + </PATH_ELEMENT> | ||
405 | + </PATH> | ||
406 | + <PATH> | ||
407 | + <PATH_ELEMENT> | ||
408 | + <option name="myItemId" value="test-1.artwebua.in.ua" /> | ||
409 | + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> | ||
410 | + </PATH_ELEMENT> | ||
411 | + <PATH_ELEMENT> | ||
412 | + <option name="myItemId" value="ital" /> | ||
413 | + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||
414 | + </PATH_ELEMENT> | ||
415 | + </PATH> | ||
416 | + <PATH> | ||
417 | + <PATH_ELEMENT> | ||
418 | + <option name="myItemId" value="test-1.artwebua.in.ua" /> | ||
419 | + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> | ||
420 | + </PATH_ELEMENT> | ||
421 | + <PATH_ELEMENT> | ||
422 | + <option name="myItemId" value="ital" /> | ||
423 | + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||
424 | + </PATH_ELEMENT> | ||
425 | + <PATH_ELEMENT> | ||
426 | + <option name="myItemId" value="backend" /> | ||
427 | + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||
428 | + </PATH_ELEMENT> | ||
429 | + </PATH> | ||
430 | + <PATH> | ||
431 | + <PATH_ELEMENT> | ||
432 | + <option name="myItemId" value="test-1.artwebua.in.ua" /> | ||
433 | + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> | ||
434 | + </PATH_ELEMENT> | ||
435 | + <PATH_ELEMENT> | ||
436 | + <option name="myItemId" value="ital" /> | ||
437 | + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||
438 | + </PATH_ELEMENT> | ||
439 | + <PATH_ELEMENT> | ||
440 | + <option name="myItemId" value="backend" /> | ||
441 | + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||
442 | + </PATH_ELEMENT> | ||
443 | + <PATH_ELEMENT> | ||
444 | + <option name="myItemId" value="views" /> | ||
445 | + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||
446 | + </PATH_ELEMENT> | ||
447 | + </PATH> | ||
448 | + <PATH> | ||
449 | + <PATH_ELEMENT> | ||
450 | + <option name="myItemId" value="test-1.artwebua.in.ua" /> | ||
451 | + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> | ||
452 | + </PATH_ELEMENT> | ||
453 | + <PATH_ELEMENT> | ||
454 | + <option name="myItemId" value="ital" /> | ||
455 | + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||
456 | + </PATH_ELEMENT> | ||
457 | + <PATH_ELEMENT> | ||
458 | + <option name="myItemId" value="backend" /> | ||
459 | + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||
460 | + </PATH_ELEMENT> | ||
461 | + <PATH_ELEMENT> | ||
462 | + <option name="myItemId" value="views" /> | ||
463 | + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||
464 | + </PATH_ELEMENT> | ||
465 | + <PATH_ELEMENT> | ||
466 | + <option name="myItemId" value="crossing-upload" /> | ||
467 | + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||
468 | + </PATH_ELEMENT> | ||
469 | + </PATH> | ||
470 | + </subPane> | ||
471 | + </pane> | ||
336 | <pane id="Scope"> | 472 | <pane id="Scope"> |
337 | <subPane subId="Default"> | 473 | <subPane subId="Default"> |
338 | <PATH> | 474 | <PATH> |
@@ -464,126 +600,6 @@ | @@ -464,126 +600,6 @@ | ||
464 | </PATH> | 600 | </PATH> |
465 | </subPane> | 601 | </subPane> |
466 | </pane> | 602 | </pane> |
467 | - <pane id="ProjectPane"> | ||
468 | - <subPane> | ||
469 | - <PATH> | ||
470 | - <PATH_ELEMENT> | ||
471 | - <option name="myItemId" value="test-1.artwebua.in.ua" /> | ||
472 | - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> | ||
473 | - </PATH_ELEMENT> | ||
474 | - </PATH> | ||
475 | - <PATH> | ||
476 | - <PATH_ELEMENT> | ||
477 | - <option name="myItemId" value="test-1.artwebua.in.ua" /> | ||
478 | - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> | ||
479 | - </PATH_ELEMENT> | ||
480 | - <PATH_ELEMENT> | ||
481 | - <option name="myItemId" value="ital" /> | ||
482 | - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||
483 | - </PATH_ELEMENT> | ||
484 | - </PATH> | ||
485 | - <PATH> | ||
486 | - <PATH_ELEMENT> | ||
487 | - <option name="myItemId" value="test-1.artwebua.in.ua" /> | ||
488 | - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> | ||
489 | - </PATH_ELEMENT> | ||
490 | - <PATH_ELEMENT> | ||
491 | - <option name="myItemId" value="ital" /> | ||
492 | - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||
493 | - </PATH_ELEMENT> | ||
494 | - <PATH_ELEMENT> | ||
495 | - <option name="myItemId" value="storage" /> | ||
496 | - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||
497 | - </PATH_ELEMENT> | ||
498 | - </PATH> | ||
499 | - <PATH> | ||
500 | - <PATH_ELEMENT> | ||
501 | - <option name="myItemId" value="test-1.artwebua.in.ua" /> | ||
502 | - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> | ||
503 | - </PATH_ELEMENT> | ||
504 | - <PATH_ELEMENT> | ||
505 | - <option name="myItemId" value="ital" /> | ||
506 | - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||
507 | - </PATH_ELEMENT> | ||
508 | - <PATH_ELEMENT> | ||
509 | - <option name="myItemId" value="console" /> | ||
510 | - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||
511 | - </PATH_ELEMENT> | ||
512 | - </PATH> | ||
513 | - <PATH> | ||
514 | - <PATH_ELEMENT> | ||
515 | - <option name="myItemId" value="test-1.artwebua.in.ua" /> | ||
516 | - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> | ||
517 | - </PATH_ELEMENT> | ||
518 | - <PATH_ELEMENT> | ||
519 | - <option name="myItemId" value="ital" /> | ||
520 | - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||
521 | - </PATH_ELEMENT> | ||
522 | - <PATH_ELEMENT> | ||
523 | - <option name="myItemId" value="console" /> | ||
524 | - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||
525 | - </PATH_ELEMENT> | ||
526 | - <PATH_ELEMENT> | ||
527 | - <option name="myItemId" value="runtime" /> | ||
528 | - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||
529 | - </PATH_ELEMENT> | ||
530 | - </PATH> | ||
531 | - <PATH> | ||
532 | - <PATH_ELEMENT> | ||
533 | - <option name="myItemId" value="test-1.artwebua.in.ua" /> | ||
534 | - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> | ||
535 | - </PATH_ELEMENT> | ||
536 | - <PATH_ELEMENT> | ||
537 | - <option name="myItemId" value="ital" /> | ||
538 | - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||
539 | - </PATH_ELEMENT> | ||
540 | - <PATH_ELEMENT> | ||
541 | - <option name="myItemId" value="console" /> | ||
542 | - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||
543 | - </PATH_ELEMENT> | ||
544 | - <PATH_ELEMENT> | ||
545 | - <option name="myItemId" value="runtime" /> | ||
546 | - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||
547 | - </PATH_ELEMENT> | ||
548 | - <PATH_ELEMENT> | ||
549 | - <option name="myItemId" value="logs" /> | ||
550 | - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||
551 | - </PATH_ELEMENT> | ||
552 | - </PATH> | ||
553 | - <PATH> | ||
554 | - <PATH_ELEMENT> | ||
555 | - <option name="myItemId" value="test-1.artwebua.in.ua" /> | ||
556 | - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> | ||
557 | - </PATH_ELEMENT> | ||
558 | - <PATH_ELEMENT> | ||
559 | - <option name="myItemId" value="ital" /> | ||
560 | - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||
561 | - </PATH_ELEMENT> | ||
562 | - <PATH_ELEMENT> | ||
563 | - <option name="myItemId" value="console" /> | ||
564 | - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||
565 | - </PATH_ELEMENT> | ||
566 | - <PATH_ELEMENT> | ||
567 | - <option name="myItemId" value="controllers" /> | ||
568 | - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||
569 | - </PATH_ELEMENT> | ||
570 | - </PATH> | ||
571 | - <PATH> | ||
572 | - <PATH_ELEMENT> | ||
573 | - <option name="myItemId" value="test-1.artwebua.in.ua" /> | ||
574 | - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> | ||
575 | - </PATH_ELEMENT> | ||
576 | - <PATH_ELEMENT> | ||
577 | - <option name="myItemId" value="ital" /> | ||
578 | - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||
579 | - </PATH_ELEMENT> | ||
580 | - <PATH_ELEMENT> | ||
581 | - <option name="myItemId" value="backend" /> | ||
582 | - <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||
583 | - </PATH_ELEMENT> | ||
584 | - </PATH> | ||
585 | - </subPane> | ||
586 | - </pane> | ||
587 | </panes> | 603 | </panes> |
588 | </component> | 604 | </component> |
589 | <component name="PropertiesComponent"> | 605 | <component name="PropertiesComponent"> |
@@ -621,11 +637,11 @@ | @@ -621,11 +637,11 @@ | ||
621 | </component> | 637 | </component> |
622 | <component name="RecentsManager"> | 638 | <component name="RecentsManager"> |
623 | <key name="CopyFile.RECENT_KEYS"> | 639 | <key name="CopyFile.RECENT_KEYS"> |
640 | + <recent name="C:\xampp\htdocs\ital\common\components\exceptions" /> | ||
641 | + <recent name="C:\xampp\htdocs\ital\backend\views\crossing-upload" /> | ||
624 | <recent name="C:\xampp\htdocs\ital" /> | 642 | <recent name="C:\xampp\htdocs\ital" /> |
625 | <recent name="C:\xampp\htdocs\ital\backend\web\js" /> | 643 | <recent name="C:\xampp\htdocs\ital\backend\web\js" /> |
626 | <recent name="C:\xampp\htdocs\ital\backend\assets" /> | 644 | <recent name="C:\xampp\htdocs\ital\backend\assets" /> |
627 | - <recent name="C:\xampp\htdocs\ital\backend\views\crossing-upload" /> | ||
628 | - <recent name="C:\xampp\htdocs\ital\backend\views\rg-grup" /> | ||
629 | </key> | 645 | </key> |
630 | <key name="MoveFile.RECENT_KEYS"> | 646 | <key name="MoveFile.RECENT_KEYS"> |
631 | <recent name="C:\xampp\htdocs\ital\storage" /> | 647 | <recent name="C:\xampp\htdocs\ital\storage" /> |
@@ -646,22 +662,19 @@ | @@ -646,22 +662,19 @@ | ||
646 | <configuration default="true" type="PhpLocalRunConfigurationType" factoryName="PHP Console"> | 662 | <configuration default="true" type="PhpLocalRunConfigurationType" factoryName="PHP Console"> |
647 | <method /> | 663 | <method /> |
648 | </configuration> | 664 | </configuration> |
665 | + <configuration default="true" type="JavascriptDebugType" factoryName="JavaScript Debug"> | ||
666 | + <method /> | ||
667 | + </configuration> | ||
649 | <configuration default="true" type="com.intellij.database.run.ConsoleRunConfigurationType" factoryName="Query Language Console"> | 668 | <configuration default="true" type="com.intellij.database.run.ConsoleRunConfigurationType" factoryName="Query Language Console"> |
650 | <option name="VM_PARAMETERS" value="" /> | 669 | <option name="VM_PARAMETERS" value="" /> |
651 | <option name="USER_CFG_CLASS" /> | 670 | <option name="USER_CFG_CLASS" /> |
652 | <option name="CONTEXT_PROVIDER" /> | 671 | <option name="CONTEXT_PROVIDER" /> |
653 | <method /> | 672 | <method /> |
654 | </configuration> | 673 | </configuration> |
655 | - <configuration default="true" type="JavascriptDebugType" factoryName="JavaScript Debug"> | ||
656 | - <method /> | ||
657 | - </configuration> | ||
658 | <configuration default="true" type="PhpBehatConfigurationType" factoryName="Behat"> | 674 | <configuration default="true" type="PhpBehatConfigurationType" factoryName="Behat"> |
659 | <BehatRunner /> | 675 | <BehatRunner /> |
660 | <method /> | 676 | <method /> |
661 | </configuration> | 677 | </configuration> |
662 | - <configuration default="true" type="PhpUnitRemoteRunConfigurationType" factoryName="PHPUnit on Server" server_id="a3f1bddc-84d9-4a6b-8a9d-6de886ff3d82" server_name="italauto"> | ||
663 | - <method /> | ||
664 | - </configuration> | ||
665 | <configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js"> | 678 | <configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js"> |
666 | <node-options /> | 679 | <node-options /> |
667 | <gulpfile /> | 680 | <gulpfile /> |
@@ -671,6 +684,9 @@ | @@ -671,6 +684,9 @@ | ||
671 | <envs /> | 684 | <envs /> |
672 | <method /> | 685 | <method /> |
673 | </configuration> | 686 | </configuration> |
687 | + <configuration default="true" type="PhpUnitRemoteRunConfigurationType" factoryName="PHPUnit on Server" server_id="a3f1bddc-84d9-4a6b-8a9d-6de886ff3d82" server_name="italauto"> | ||
688 | + <method /> | ||
689 | + </configuration> | ||
674 | <configuration default="false" name="ital_server" type="PhpWebAppRunConfigurationType" factoryName="PHP Web Application" browser="98ca6316-2f89-46d9-a9e5-fa9e2b0625b3" server_name="ital_server" start_url="http://test-1.artweb.com.ua/admin/"> | 690 | <configuration default="false" name="ital_server" type="PhpWebAppRunConfigurationType" factoryName="PHP Web Application" browser="98ca6316-2f89-46d9-a9e5-fa9e2b0625b3" server_name="ital_server" start_url="http://test-1.artweb.com.ua/admin/"> |
675 | <RunnerSettings RunnerId="PhpRunner" /> | 691 | <RunnerSettings RunnerId="PhpRunner" /> |
676 | <RunnerSettings RunnerId="PhpWebAppDebugRunner" /> | 692 | <RunnerSettings RunnerId="PhpWebAppDebugRunner" /> |
@@ -745,9 +761,9 @@ | @@ -745,9 +761,9 @@ | ||
745 | <layout> | 761 | <layout> |
746 | <window_info id="File Transfer" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32960895" sideWeight="0.5" order="12" side_tool="false" content_ui="tabs" /> | 762 | <window_info id="File Transfer" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32960895" sideWeight="0.5" order="12" side_tool="false" content_ui="tabs" /> |
747 | <window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32849163" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" /> | 763 | <window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32849163" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" /> |
748 | - <window_info id="Terminal" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.34301677" sideWeight="0.5" order="14" side_tool="false" content_ui="tabs" /> | ||
749 | - <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.21936275" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" /> | 764 | + <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.34301677" sideWeight="0.5" order="14" side_tool="false" content_ui="tabs" /> |
750 | <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.29944134" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> | 765 | <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.29944134" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> |
766 | + <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.21936275" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" /> | ||
751 | <window_info id="Remote Host" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3290441" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> | 767 | <window_info id="Remote Host" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3290441" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> |
752 | <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.30726257" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> | 768 | <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.30726257" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> |
753 | <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3206704" sideWeight="0.5" order="10" side_tool="true" content_ui="tabs" /> | 769 | <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3206704" sideWeight="0.5" order="10" side_tool="true" content_ui="tabs" /> |
@@ -756,7 +772,7 @@ | @@ -756,7 +772,7 @@ | ||
756 | <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3206704" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" /> | 772 | <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3206704" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" /> |
757 | <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25306374" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> | 773 | <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25306374" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> |
758 | <window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" /> | 774 | <window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" /> |
759 | - <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.30759802" sideWeight="0.49944505" order="0" side_tool="false" content_ui="combo" /> | 775 | + <window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.30392158" sideWeight="0.49944505" order="0" side_tool="false" content_ui="combo" /> |
760 | <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> | 776 | <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> |
761 | <window_info id="Database Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.2547486" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> | 777 | <window_info id="Database Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.2547486" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> |
762 | <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" /> | 778 | <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" /> |
@@ -764,8 +780,8 @@ | @@ -764,8 +780,8 @@ | ||
764 | <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> | 780 | <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> |
765 | <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="13" side_tool="false" content_ui="tabs" /> | 781 | <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="13" side_tool="false" content_ui="tabs" /> |
766 | <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> | 782 | <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> |
767 | - <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" /> | ||
768 | <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" /> | 783 | <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" /> |
784 | + <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" /> | ||
769 | <window_info id="Command Line Tools Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32960895" sideWeight="0.5" order="15" side_tool="false" content_ui="tabs" /> | 785 | <window_info id="Command Line Tools Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32960895" sideWeight="0.5" order="15" side_tool="false" content_ui="tabs" /> |
770 | </layout> | 786 | </layout> |
771 | <layout-to-restore> | 787 | <layout-to-restore> |
@@ -787,9 +803,9 @@ | @@ -787,9 +803,9 @@ | ||
787 | <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> | 803 | <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> |
788 | <window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="12" side_tool="false" content_ui="tabs" /> | 804 | <window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="12" side_tool="false" content_ui="tabs" /> |
789 | <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.25" sideWeight="0.49944505" order="0" side_tool="false" content_ui="combo" /> | 805 | <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.25" sideWeight="0.49944505" order="0" side_tool="false" content_ui="combo" /> |
790 | - <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" /> | ||
791 | - <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" /> | ||
792 | <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> | 806 | <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> |
807 | + <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" /> | ||
808 | + <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" /> | ||
793 | </layout-to-restore> | 809 | </layout-to-restore> |
794 | </component> | 810 | </component> |
795 | <component name="Vcs.Log.UiProperties"> | 811 | <component name="Vcs.Log.UiProperties"> |
@@ -812,426 +828,428 @@ | @@ -812,426 +828,428 @@ | ||
812 | </component> | 828 | </component> |
813 | <component name="XDebuggerManager"> | 829 | <component name="XDebuggerManager"> |
814 | <breakpoint-manager> | 830 | <breakpoint-manager> |
831 | + <breakpoints> | ||
832 | + <line-breakpoint type="php"> | ||
833 | + <url>file://$PROJECT_DIR$/backend/controllers/RgGrupController.php</url> | ||
834 | + <line>148</line> | ||
835 | + <option name="timeStamp" value="231" /> | ||
836 | + </line-breakpoint> | ||
837 | + </breakpoints> | ||
815 | <breakpoints-dialog> | 838 | <breakpoints-dialog> |
816 | <breakpoints-dialog /> | 839 | <breakpoints-dialog /> |
817 | </breakpoints-dialog> | 840 | </breakpoints-dialog> |
818 | - <option name="time" value="224" /> | 841 | + <option name="time" value="239" /> |
819 | </breakpoint-manager> | 842 | </breakpoint-manager> |
820 | <watches-manager> | 843 | <watches-manager> |
821 | <configuration name="index.php"> | 844 | <configuration name="index.php"> |
822 | - <watch expression="$model->rules()" language="PHP" /> | ||
823 | - <watch expression="array_keys($arr_attributes)" language="PHP" /> | 845 | + <watch expression="$arr" language="PHP" /> |
846 | + </configuration> | ||
847 | + <configuration name="PhpWebAppRunConfigurationType"> | ||
848 | + <watch expression="$model->getErrors()" language="PHP" /> | ||
824 | </configuration> | 849 | </configuration> |
825 | </watches-manager> | 850 | </watches-manager> |
826 | </component> | 851 | </component> |
827 | <component name="editorHistoryManager"> | 852 | <component name="editorHistoryManager"> |
828 | - <entry file="file://$PROJECT_DIR$/vendor/yiisoft/yii2/assets/yii.validation.js"> | 853 | + <entry file="file://$PROJECT_DIR$/common/components/ModelArrayValidator.php"> |
829 | <provider selected="true" editor-type-id="text-editor"> | 854 | <provider selected="true" editor-type-id="text-editor"> |
830 | - <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="8085"> | ||
831 | - <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> | 855 | + <state vertical-scroll-proportion="-59.88889" vertical-offset="840" max-vertical-offset="3066"> |
856 | + <caret line="122" column="32" selection-start-line="122" selection-start-column="32" selection-end-line="122" selection-end-column="32" /> | ||
857 | + <folding /> | ||
832 | </state> | 858 | </state> |
833 | </provider> | 859 | </provider> |
834 | </entry> | 860 | </entry> |
835 | - <entry file="file://$PROJECT_DIR$/vendor/yiisoft/yii2/validators/FilterValidator.php"> | 861 | + <entry file="file://$PROJECT_DIR$/backend/models/DetailsCrosses.php"> |
836 | <provider selected="true" editor-type-id="text-editor"> | 862 | <provider selected="true" editor-type-id="text-editor"> |
837 | - <state vertical-scroll-proportion="-13.222222" vertical-offset="1071" max-vertical-offset="2037"> | ||
838 | - <caret line="72" column="9" selection-start-line="70" selection-start-column="7" selection-end-line="72" selection-end-column="9" /> | 863 | + <state vertical-scroll-proportion="0.0" vertical-offset="610" max-vertical-offset="2058"> |
864 | + <caret line="38" column="54" selection-start-line="38" selection-start-column="35" selection-end-line="38" selection-end-column="54" /> | ||
865 | + <folding /> | ||
839 | </state> | 866 | </state> |
840 | </provider> | 867 | </provider> |
841 | </entry> | 868 | </entry> |
842 | - <entry file="file://$PROJECT_DIR$/vendor/yiisoft/yii2/validators/NumberValidator.php"> | 869 | + <entry file="file://$PROJECT_DIR$/backend/models/Details.php"> |
843 | <provider selected="true" editor-type-id="text-editor"> | 870 | <provider selected="true" editor-type-id="text-editor"> |
844 | - <state vertical-scroll-proportion="-7.037037" vertical-offset="839" max-vertical-offset="3339"> | ||
845 | - <caret line="55" column="79" selection-start-line="55" selection-start-column="3" selection-end-line="55" selection-end-column="79" /> | 871 | + <state vertical-scroll-proportion="1.375" vertical-offset="0" max-vertical-offset="3339"> |
872 | + <caret line="57" column="115" selection-start-line="57" selection-start-column="93" selection-end-line="57" selection-end-column="115" /> | ||
873 | + <folding /> | ||
846 | </state> | 874 | </state> |
847 | </provider> | 875 | </provider> |
848 | </entry> | 876 | </entry> |
849 | - <entry file="file://$PROJECT_DIR$/common/components/CommaNumberValidator.php"> | 877 | + <entry file="file://$PROJECT_DIR$/vendor/yiisoft/yii2/messages/ru/yii.php"> |
850 | <provider selected="true" editor-type-id="text-editor"> | 878 | <provider selected="true" editor-type-id="text-editor"> |
851 | - <state vertical-scroll-proportion="-14.962963" vertical-offset="79" max-vertical-offset="1281"> | ||
852 | - <caret line="28" column="30" selection-start-line="28" selection-start-column="12" selection-end-line="28" selection-end-column="30" /> | 879 | + <state vertical-scroll-proportion="3.5185184" vertical-offset="1082" max-vertical-offset="3150"> |
880 | + <caret line="63" column="134" selection-start-line="63" selection-start-column="134" selection-end-line="63" selection-end-column="134" /> | ||
853 | </state> | 881 | </state> |
854 | </provider> | 882 | </provider> |
855 | </entry> | 883 | </entry> |
856 | - <entry file="file://$PROJECT_DIR$/common/models/Currency.php"> | 884 | + <entry file="file://$PROJECT_DIR$/vendor/yiisoft/yii2/validators/FileValidator.php"> |
857 | <provider selected="true" editor-type-id="text-editor"> | 885 | <provider selected="true" editor-type-id="text-editor"> |
858 | - <state vertical-scroll-proportion="-11.666667" vertical-offset="357" max-vertical-offset="1512"> | ||
859 | - <caret line="32" column="73" selection-start-line="32" selection-start-column="62" selection-end-line="32" selection-end-column="73" /> | 886 | + <state vertical-scroll-proportion="252.77777" vertical-offset="6825" max-vertical-offset="8862"> |
887 | + <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> | ||
860 | </state> | 888 | </state> |
861 | </provider> | 889 | </provider> |
862 | </entry> | 890 | </entry> |
863 | - <entry file="file://$PROJECT_DIR$/common/models/CartBillsSearch.php"> | 891 | + <entry file="file://$PROJECT_DIR$/backend/models/UploadFileParsingForm.php"> |
864 | <provider selected="true" editor-type-id="text-editor"> | 892 | <provider selected="true" editor-type-id="text-editor"> |
865 | - <state vertical-scroll-proportion="7.7777777" vertical-offset="1071" max-vertical-offset="1911"> | ||
866 | - <caret line="45" column="39" selection-start-line="45" selection-start-column="39" selection-end-line="45" selection-end-column="39" /> | 893 | + <state vertical-scroll-proportion="-14.0" vertical-offset="567" max-vertical-offset="2163"> |
894 | + <caret line="49" column="37" selection-start-line="49" selection-start-column="37" selection-end-line="49" selection-end-column="37" /> | ||
895 | + <folding /> | ||
867 | </state> | 896 | </state> |
868 | </provider> | 897 | </provider> |
869 | </entry> | 898 | </entry> |
870 | - <entry file="file://$PROJECT_DIR$/backend/components/base/BaseActiveRecord.php"> | 899 | + <entry file="file://$PROJECT_DIR$/vendor/yiisoft/yii2/log/Logger.php"> |
871 | <provider selected="true" editor-type-id="text-editor"> | 900 | <provider selected="true" editor-type-id="text-editor"> |
872 | - <state vertical-scroll-proportion="0.0" vertical-offset="378" max-vertical-offset="588"> | ||
873 | - <caret line="23" column="9" selection-start-line="21" selection-start-column="8" selection-end-line="23" selection-end-column="9" /> | ||
874 | - <folding /> | 901 | + <state vertical-scroll-proportion="0.33274338" vertical-offset="3361" max-vertical-offset="6636"> |
902 | + <caret line="174" column="0" selection-start-line="174" selection-start-column="0" selection-end-line="174" selection-end-column="0" /> | ||
875 | </state> | 903 | </state> |
876 | </provider> | 904 | </provider> |
877 | </entry> | 905 | </entry> |
878 | - <entry file="file://$PROJECT_DIR$/backend/views/currency/index.php"> | 906 | + <entry file="file://$PROJECT_DIR$/vendor/yiisoft/yii2/web/Session.php"> |
879 | <provider selected="true" editor-type-id="text-editor"> | 907 | <provider selected="true" editor-type-id="text-editor"> |
880 | - <state vertical-scroll-proportion="0.775" vertical-offset="0" max-vertical-offset="840"> | ||
881 | - <caret line="32" column="0" selection-start-line="32" selection-start-column="0" selection-end-line="32" selection-end-column="0" /> | 908 | + <state vertical-scroll-proportion="0.33274338" vertical-offset="3319" max-vertical-offset="18270"> |
909 | + <caret line="172" column="0" selection-start-line="172" selection-start-column="0" selection-end-line="172" selection-end-column="0" /> | ||
882 | </state> | 910 | </state> |
883 | </provider> | 911 | </provider> |
884 | </entry> | 912 | </entry> |
885 | - <entry file="file://$PROJECT_DIR$/backend/models/ImportersFiles.php"> | 913 | + <entry file="file://$PROJECT_DIR$/vendor/yiisoft/yii2/db/BaseActiveRecord.php"> |
886 | <provider selected="true" editor-type-id="text-editor"> | 914 | <provider selected="true" editor-type-id="text-editor"> |
887 | - <state vertical-scroll-proportion="-10.703704" vertical-offset="47" max-vertical-offset="1470"> | ||
888 | - <caret line="17" column="6" selection-start-line="17" selection-start-column="6" selection-end-line="17" selection-end-column="6" /> | ||
889 | - <folding /> | 915 | + <state vertical-scroll-proportion="-6.185185" vertical-offset="4831" max-vertical-offset="33033"> |
916 | + <caret line="250" column="0" selection-start-line="250" selection-start-column="0" selection-end-line="250" selection-end-column="0" /> | ||
890 | </state> | 917 | </state> |
891 | </provider> | 918 | </provider> |
892 | </entry> | 919 | </entry> |
893 | - <entry file="file://$PROJECT_DIR$/vendor/yiisoft/yii2/base/View.php"> | 920 | + <entry file="file://$PROJECT_DIR$/console/controllers/ParserController.php"> |
894 | <provider selected="true" editor-type-id="text-editor"> | 921 | <provider selected="true" editor-type-id="text-editor"> |
895 | - <state vertical-scroll-proportion="-6.5185184" vertical-offset="6502" max-vertical-offset="10395"> | ||
896 | - <caret line="326" column="0" selection-start-line="326" selection-start-column="0" selection-end-line="326" selection-end-column="0" /> | 922 | + <state vertical-scroll-proportion="-6.962963" vertical-offset="967" max-vertical-offset="5397"> |
923 | + <caret line="64" column="0" selection-start-line="64" selection-start-column="0" selection-end-line="64" selection-end-column="0" /> | ||
897 | </state> | 924 | </state> |
898 | </provider> | 925 | </provider> |
899 | </entry> | 926 | </entry> |
900 | - <entry file="file://$PROJECT_DIR$/backend/views/templates/parser_massage.php"> | 927 | + <entry file="file://$PROJECT_DIR$/backend/models/Importers.php"> |
901 | <provider selected="true" editor-type-id="text-editor"> | 928 | <provider selected="true" editor-type-id="text-editor"> |
902 | - <state vertical-scroll-proportion="-10.888889" vertical-offset="0" max-vertical-offset="420"> | ||
903 | - <caret line="14" column="0" selection-start-line="14" selection-start-column="0" selection-end-line="14" selection-end-column="0" /> | 929 | + <state vertical-scroll-proportion="-7.703704" vertical-offset="1766" max-vertical-offset="3213"> |
930 | + <caret line="96" column="0" selection-start-line="96" selection-start-column="0" selection-end-line="96" selection-end-column="0" /> | ||
931 | + <folding /> | ||
904 | </state> | 932 | </state> |
905 | </provider> | 933 | </provider> |
906 | </entry> | 934 | </entry> |
907 | - <entry file="file://$PROJECT_DIR$/backend/views/crossing-upload/index.php"> | 935 | + <entry file="file://$PROJECT_DIR$/console/runtime/logs/parser.log"> |
908 | <provider selected="true" editor-type-id="text-editor"> | 936 | <provider selected="true" editor-type-id="text-editor"> |
909 | - <state vertical-scroll-proportion="-13.962963" vertical-offset="169" max-vertical-offset="672"> | ||
910 | - <caret line="28" column="0" selection-start-line="28" selection-start-column="0" selection-end-line="28" selection-end-column="0" /> | 937 | + <state vertical-scroll-proportion="0.79928315" vertical-offset="5946" max-vertical-offset="6783"> |
938 | + <caret line="288" column="61" selection-start-line="288" selection-start-column="61" selection-end-line="288" selection-end-column="61" /> | ||
911 | </state> | 939 | </state> |
912 | </provider> | 940 | </provider> |
941 | + <provider editor-type-id="com.intellij.database.editor.CsvTableFileEditorProvider"> | ||
942 | + <state /> | ||
943 | + </provider> | ||
913 | </entry> | 944 | </entry> |
914 | - <entry file="file://$PROJECT_DIR$/backend/components/base/BaseController.php"> | 945 | + <entry file="file://$PROJECT_DIR$/common/components/parsers/Converter.php"> |
915 | <provider selected="true" editor-type-id="text-editor"> | 946 | <provider selected="true" editor-type-id="text-editor"> |
916 | - <state vertical-scroll-proportion="-108.85185" vertical-offset="1534" max-vertical-offset="5187"> | ||
917 | - <caret line="224" column="29" selection-start-line="224" selection-start-column="29" selection-end-line="224" selection-end-column="29" /> | ||
918 | - <folding /> | 947 | + <state vertical-scroll-proportion="-2.3333333" vertical-offset="0" max-vertical-offset="3780"> |
948 | + <caret line="8" column="36" selection-start-line="8" selection-start-column="36" selection-end-line="8" selection-end-column="36" /> | ||
919 | </state> | 949 | </state> |
920 | </provider> | 950 | </provider> |
921 | </entry> | 951 | </entry> |
922 | - <entry file="file://$PROJECT_DIR$/backend/web/css/AdminLTE.css"> | 952 | + <entry file="file://$PROJECT_DIR$/common/components/parsers/config.php"> |
923 | <provider selected="true" editor-type-id="text-editor"> | 953 | <provider selected="true" editor-type-id="text-editor"> |
924 | - <state vertical-scroll-proportion="0.3633218" vertical-offset="63" max-vertical-offset="89124"> | ||
925 | - <caret line="18" column="5" selection-start-line="18" selection-start-column="5" selection-end-line="18" selection-end-column="5" /> | 954 | + <state vertical-scroll-proportion="-7.7777777" vertical-offset="1239" max-vertical-offset="2079"> |
955 | + <caret line="69" column="45" selection-start-line="69" selection-start-column="45" selection-end-line="69" selection-end-column="45" /> | ||
926 | </state> | 956 | </state> |
927 | </provider> | 957 | </provider> |
928 | </entry> | 958 | </entry> |
929 | - <entry file="file://$PROJECT_DIR$/common/components/ModelArrayValidator.php"> | 959 | + <entry file="file://$PROJECT_DIR$/backend/views/parser/results.php"> |
930 | <provider selected="true" editor-type-id="text-editor"> | 960 | <provider selected="true" editor-type-id="text-editor"> |
931 | - <state vertical-scroll-proportion="-59.88889" vertical-offset="840" max-vertical-offset="3066"> | ||
932 | - <caret line="122" column="32" selection-start-line="122" selection-start-column="32" selection-end-line="122" selection-end-column="32" /> | ||
933 | - <folding /> | 961 | + <state vertical-scroll-proportion="-2.3333333" vertical-offset="0" max-vertical-offset="777"> |
962 | + <caret line="3" column="4" selection-start-line="3" selection-start-column="4" selection-end-line="3" selection-end-column="4" /> | ||
934 | </state> | 963 | </state> |
935 | </provider> | 964 | </provider> |
936 | </entry> | 965 | </entry> |
937 | - <entry file="file://$PROJECT_DIR$/backend/models/DetailsCrosses.php"> | 966 | + <entry file="file://$PROJECT_DIR$/common/components/parsers/CsvParser.php"> |
938 | <provider selected="true" editor-type-id="text-editor"> | 967 | <provider selected="true" editor-type-id="text-editor"> |
939 | - <state vertical-scroll-proportion="0.0" vertical-offset="610" max-vertical-offset="2058"> | ||
940 | - <caret line="38" column="54" selection-start-line="38" selection-start-column="35" selection-end-line="38" selection-end-column="54" /> | ||
941 | - <folding /> | 968 | + <state vertical-scroll-proportion="-4.6666665" vertical-offset="0" max-vertical-offset="1701"> |
969 | + <caret line="8" column="12" selection-start-line="8" selection-start-column="12" selection-end-line="8" selection-end-column="12" /> | ||
942 | </state> | 970 | </state> |
943 | </provider> | 971 | </provider> |
944 | </entry> | 972 | </entry> |
945 | - <entry file="file://$PROJECT_DIR$/backend/models/Details.php"> | 973 | + <entry file="file://$PROJECT_DIR$/common/components/parsers/CustomConverter.php"> |
946 | <provider selected="true" editor-type-id="text-editor"> | 974 | <provider selected="true" editor-type-id="text-editor"> |
947 | - <state vertical-scroll-proportion="1.375" vertical-offset="0" max-vertical-offset="3339"> | ||
948 | - <caret line="57" column="115" selection-start-line="57" selection-start-column="93" selection-end-line="57" selection-end-column="115" /> | ||
949 | - <folding /> | 975 | + <state vertical-scroll-proportion="-3.1111112" vertical-offset="0" max-vertical-offset="3066"> |
976 | + <caret line="4" column="4" selection-start-line="4" selection-start-column="4" selection-end-line="4" selection-end-column="4" /> | ||
950 | </state> | 977 | </state> |
951 | </provider> | 978 | </provider> |
952 | </entry> | 979 | </entry> |
953 | - <entry file="file://$PROJECT_DIR$/backend/views/rg-grup/index.php"> | 980 | + <entry file="file://$PROJECT_DIR$/common/components/parsers/CustomCsvParser.php"> |
954 | <provider selected="true" editor-type-id="text-editor"> | 981 | <provider selected="true" editor-type-id="text-editor"> |
955 | - <state vertical-scroll-proportion="0.0" vertical-offset="189" max-vertical-offset="714"> | ||
956 | - <caret line="12" column="124" selection-start-line="12" selection-start-column="124" selection-end-line="12" selection-end-column="124" /> | ||
957 | - <folding /> | 982 | + <state vertical-scroll-proportion="-3.8888888" vertical-offset="0" max-vertical-offset="420"> |
983 | + <caret line="10" column="32" selection-start-line="10" selection-start-column="32" selection-end-line="10" selection-end-column="32" /> | ||
958 | </state> | 984 | </state> |
959 | </provider> | 985 | </provider> |
960 | </entry> | 986 | </entry> |
961 | - <entry file="file://$PROJECT_DIR$/common/components/PriceWriter.php"> | 987 | + <entry file="file://$PROJECT_DIR$/common/components/parsers/XlsxParser.php"> |
962 | <provider selected="true" editor-type-id="text-editor"> | 988 | <provider selected="true" editor-type-id="text-editor"> |
963 | - <state vertical-scroll-proportion="0.0" vertical-offset="1008" max-vertical-offset="5628"> | ||
964 | - <caret line="53" column="24" selection-start-line="53" selection-start-column="24" selection-end-line="53" selection-end-column="24" /> | ||
965 | - <folding> | ||
966 | - <element signature="e#122#150#0#PHP" expanded="false" /> | ||
967 | - </folding> | 989 | + <state vertical-scroll-proportion="-7.3703704" vertical-offset="11" max-vertical-offset="6531"> |
990 | + <caret line="15" column="12" selection-start-line="15" selection-start-column="12" selection-end-line="15" selection-end-column="12" /> | ||
968 | </state> | 991 | </state> |
969 | </provider> | 992 | </provider> |
970 | </entry> | 993 | </entry> |
971 | - <entry file="file://$PROJECT_DIR$/common/models/MarginsGroups.php"> | 994 | + <entry file="file://$PROJECT_DIR$/common/config/main.php"> |
972 | <provider selected="true" editor-type-id="text-editor"> | 995 | <provider selected="true" editor-type-id="text-editor"> |
973 | - <state vertical-scroll-proportion="-10.703704" vertical-offset="593" max-vertical-offset="2520"> | ||
974 | - <caret line="43" column="18" selection-start-line="43" selection-start-column="18" selection-end-line="43" selection-end-column="18" /> | ||
975 | - <folding /> | 996 | + <state vertical-scroll-proportion="-10.296296" vertical-offset="163" max-vertical-offset="735"> |
997 | + <caret line="21" column="24" selection-start-line="21" selection-start-column="24" selection-end-line="21" selection-end-column="24" /> | ||
976 | </state> | 998 | </state> |
977 | </provider> | 999 | </provider> |
978 | </entry> | 1000 | </entry> |
979 | - <entry file="file://$PROJECT_DIR$/vendor/yiisoft/yii2/messages/ru/yii.php"> | 1001 | + <entry file="file://$PROJECT_DIR$/tests/unit/BaseConverterTest.php"> |
980 | <provider selected="true" editor-type-id="text-editor"> | 1002 | <provider selected="true" editor-type-id="text-editor"> |
981 | - <state vertical-scroll-proportion="3.5185184" vertical-offset="1082" max-vertical-offset="3150"> | ||
982 | - <caret line="63" column="134" selection-start-line="63" selection-start-column="134" selection-end-line="63" selection-end-column="134" /> | ||
983 | - <folding /> | 1003 | + <state vertical-scroll-proportion="-3.8888888" vertical-offset="0" max-vertical-offset="1533"> |
1004 | + <caret line="5" column="4" selection-start-line="5" selection-start-column="4" selection-end-line="5" selection-end-column="4" /> | ||
984 | </state> | 1005 | </state> |
985 | </provider> | 1006 | </provider> |
986 | </entry> | 1007 | </entry> |
987 | - <entry file="file://$PROJECT_DIR$/vendor/yiisoft/yii2/validators/FileValidator.php"> | 1008 | + <entry file="file://$PROJECT_DIR$/storage/.gitignore"> |
988 | <provider selected="true" editor-type-id="text-editor"> | 1009 | <provider selected="true" editor-type-id="text-editor"> |
989 | - <state vertical-scroll-proportion="252.77777" vertical-offset="6825" max-vertical-offset="8862"> | 1010 | + <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="867"> |
990 | <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> | 1011 | <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> |
1012 | + </state> | ||
1013 | + </provider> | ||
1014 | + </entry> | ||
1015 | + <entry file="file://$PROJECT_DIR$/backend/web/index.php"> | ||
1016 | + <provider selected="true" editor-type-id="text-editor"> | ||
1017 | + <state vertical-scroll-proportion="0.075" vertical-offset="0" max-vertical-offset="840"> | ||
1018 | + <caret line="3" column="0" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" /> | ||
991 | <folding /> | 1019 | <folding /> |
992 | </state> | 1020 | </state> |
993 | </provider> | 1021 | </provider> |
994 | </entry> | 1022 | </entry> |
995 | - <entry file="file://$PROJECT_DIR$/backend/models/UploadFileParsingForm.php"> | 1023 | + <entry file="file://$PROJECT_DIR$/vendor/yiisoft/yii2/base/UserException.php"> |
996 | <provider selected="true" editor-type-id="text-editor"> | 1024 | <provider selected="true" editor-type-id="text-editor"> |
997 | - <state vertical-scroll-proportion="-14.0" vertical-offset="567" max-vertical-offset="2163"> | ||
998 | - <caret line="49" column="37" selection-start-line="49" selection-start-column="37" selection-end-line="49" selection-end-column="37" /> | 1025 | + <state vertical-scroll-proportion="-9.333333" vertical-offset="0" max-vertical-offset="441"> |
1026 | + <caret line="16" column="19" selection-start-line="16" selection-start-column="6" selection-end-line="16" selection-end-column="19" /> | ||
999 | <folding /> | 1027 | <folding /> |
1000 | </state> | 1028 | </state> |
1001 | </provider> | 1029 | </provider> |
1002 | </entry> | 1030 | </entry> |
1003 | - <entry file="file://$PROJECT_DIR$/.htaccess"> | 1031 | + <entry file="file://$PROJECT_DIR$/tests/unit/CrossesParsingTest.php"> |
1004 | <provider selected="true" editor-type-id="text-editor"> | 1032 | <provider selected="true" editor-type-id="text-editor"> |
1005 | - <state vertical-scroll-proportion="0.0" vertical-offset="750" max-vertical-offset="1617"> | ||
1006 | - <caret line="70" column="18" selection-start-line="70" selection-start-column="14" selection-end-line="70" selection-end-column="18" /> | ||
1007 | - <folding> | ||
1008 | - <marker date="1448632293559" expanded="true" signature="-1:-1" placeholder="<IfModule mod_rewrite.c>" /> | ||
1009 | - <marker date="1448632293559" expanded="true" signature="-1:-1" placeholder="<IfModule mod_rewrite.c>" /> | ||
1010 | - <marker date="1448632293559" expanded="true" signature="-1:-1" placeholder="<IfModule mod_php5.c>" /> | ||
1011 | - </folding> | 1033 | + <state vertical-scroll-proportion="1.0778761" vertical-offset="210" max-vertical-offset="1113"> |
1034 | + <caret line="39" column="0" selection-start-line="39" selection-start-column="0" selection-end-line="39" selection-end-column="0" /> | ||
1012 | </state> | 1035 | </state> |
1013 | </provider> | 1036 | </provider> |
1014 | </entry> | 1037 | </entry> |
1015 | - <entry file="file://$PROJECT_DIR$/backend/views/parser/index.php"> | 1038 | + <entry file="file://$PROJECT_DIR$/vendor/yiisoft/yii2/web/ErrorHandler.php"> |
1016 | <provider selected="true" editor-type-id="text-editor"> | 1039 | <provider selected="true" editor-type-id="text-editor"> |
1017 | - <state vertical-scroll-proportion="-14.0" vertical-offset="0" max-vertical-offset="1239"> | ||
1018 | - <caret line="21" column="9" selection-start-line="21" selection-start-column="9" selection-end-line="21" selection-end-column="9" /> | 1040 | + <state vertical-scroll-proportion="0.33208954" vertical-offset="1355" max-vertical-offset="9093"> |
1041 | + <caret line="81" column="0" selection-start-line="81" selection-start-column="0" selection-end-line="81" selection-end-column="0" /> | ||
1019 | <folding /> | 1042 | <folding /> |
1020 | </state> | 1043 | </state> |
1021 | </provider> | 1044 | </provider> |
1022 | </entry> | 1045 | </entry> |
1023 | - <entry file="file://$PROJECT_DIR$/backend/views/parser/server-files.php"> | 1046 | + <entry file="file://$PROJECT_DIR$/backend/views/crossing-upload/index.php"> |
1024 | <provider selected="true" editor-type-id="text-editor"> | 1047 | <provider selected="true" editor-type-id="text-editor"> |
1025 | - <state vertical-scroll-proportion="-21.777779" vertical-offset="315" max-vertical-offset="1155"> | ||
1026 | - <caret line="49" column="67" selection-start-line="49" selection-start-column="67" selection-end-line="49" selection-end-column="67" /> | ||
1027 | - <folding /> | 1048 | + <state vertical-scroll-proportion="0.8548673" vertical-offset="0" max-vertical-offset="693"> |
1049 | + <caret line="25" column="10" selection-start-line="25" selection-start-column="10" selection-end-line="25" selection-end-column="10" /> | ||
1028 | </state> | 1050 | </state> |
1029 | </provider> | 1051 | </provider> |
1030 | </entry> | 1052 | </entry> |
1031 | - <entry file="file://$PROJECT_DIR$/vendor/yiisoft/yii2/log/Logger.php"> | 1053 | + <entry file="file://$PROJECT_DIR$/backend/views/crossing-upload/results.php"> |
1032 | <provider selected="true" editor-type-id="text-editor"> | 1054 | <provider selected="true" editor-type-id="text-editor"> |
1033 | - <state vertical-scroll-proportion="0.33274338" vertical-offset="3361" max-vertical-offset="6636"> | ||
1034 | - <caret line="174" column="0" selection-start-line="174" selection-start-column="0" selection-end-line="174" selection-end-column="0" /> | ||
1035 | - <folding /> | 1055 | + <state vertical-scroll-proportion="1.1522124" vertical-offset="0" max-vertical-offset="777"> |
1056 | + <caret line="31" column="6" selection-start-line="31" selection-start-column="6" selection-end-line="31" selection-end-column="6" /> | ||
1036 | </state> | 1057 | </state> |
1037 | </provider> | 1058 | </provider> |
1038 | </entry> | 1059 | </entry> |
1039 | - <entry file="file://$PROJECT_DIR$/vendor/yiisoft/yii2/web/Session.php"> | 1060 | + <entry file="file://$PROJECT_DIR$/common/components/exceptions/RgParsingException.php"> |
1040 | <provider selected="true" editor-type-id="text-editor"> | 1061 | <provider selected="true" editor-type-id="text-editor"> |
1041 | - <state vertical-scroll-proportion="0.33274338" vertical-offset="3319" max-vertical-offset="18270"> | ||
1042 | - <caret line="172" column="0" selection-start-line="172" selection-start-column="0" selection-end-line="172" selection-end-column="0" /> | 1062 | + <state vertical-scroll-proportion="0.2" vertical-offset="0" max-vertical-offset="840"> |
1063 | + <caret line="13" column="24" selection-start-line="13" selection-start-column="24" selection-end-line="13" selection-end-column="24" /> | ||
1043 | <folding /> | 1064 | <folding /> |
1044 | </state> | 1065 | </state> |
1045 | </provider> | 1066 | </provider> |
1046 | </entry> | 1067 | </entry> |
1047 | - <entry file="file://$PROJECT_DIR$/vendor/yiisoft/yii2/base/Controller.php"> | 1068 | + <entry file="file://$PROJECT_DIR$/common/components/exceptions/CrossParsingException.php"> |
1048 | <provider selected="true" editor-type-id="text-editor"> | 1069 | <provider selected="true" editor-type-id="text-editor"> |
1049 | - <state vertical-scroll-proportion="-7.296296" vertical-offset="2911" max-vertical-offset="10437"> | ||
1050 | - <caret line="152" column="0" selection-start-line="152" selection-start-column="0" selection-end-line="152" selection-end-column="0" /> | 1070 | + <state vertical-scroll-proportion="0.225" vertical-offset="0" max-vertical-offset="840"> |
1071 | + <caret line="14" column="0" selection-start-line="14" selection-start-column="0" selection-end-line="14" selection-end-column="0" /> | ||
1051 | <folding /> | 1072 | <folding /> |
1052 | </state> | 1073 | </state> |
1053 | </provider> | 1074 | </provider> |
1054 | </entry> | 1075 | </entry> |
1055 | - <entry file="file://$PROJECT_DIR$/vendor/yiisoft/yii2/base/ErrorHandler.php"> | 1076 | + <entry file="file://$PROJECT_DIR$/common/components/exceptions/PriceParsingException.php"> |
1056 | <provider selected="true" editor-type-id="text-editor"> | 1077 | <provider selected="true" editor-type-id="text-editor"> |
1057 | - <state vertical-scroll-proportion="-7.296296" vertical-offset="1525" max-vertical-offset="6867"> | ||
1058 | - <caret line="88" column="0" selection-start-line="88" selection-start-column="0" selection-end-line="88" selection-end-column="0" /> | 1078 | + <state vertical-scroll-proportion="0.25" vertical-offset="0" max-vertical-offset="840"> |
1079 | + <caret line="15" column="1" selection-start-line="15" selection-start-column="1" selection-end-line="15" selection-end-column="1" /> | ||
1059 | <folding /> | 1080 | <folding /> |
1060 | </state> | 1081 | </state> |
1061 | </provider> | 1082 | </provider> |
1062 | </entry> | 1083 | </entry> |
1063 | - <entry file="file://$PROJECT_DIR$/vendor/yiisoft/yii2/db/BaseActiveRecord.php"> | 1084 | + <entry file="file://$PROJECT_DIR$/.htaccess"> |
1064 | <provider selected="true" editor-type-id="text-editor"> | 1085 | <provider selected="true" editor-type-id="text-editor"> |
1065 | - <state vertical-scroll-proportion="-6.185185" vertical-offset="4831" max-vertical-offset="33033"> | ||
1066 | - <caret line="250" column="0" selection-start-line="250" selection-start-column="0" selection-end-line="250" selection-end-column="0" /> | 1086 | + <state vertical-scroll-proportion="0.8304498" vertical-offset="750" max-vertical-offset="1617"> |
1087 | + <caret line="70" column="31" selection-start-line="69" selection-start-column="3" selection-end-line="70" selection-end-column="31" /> | ||
1067 | <folding /> | 1088 | <folding /> |
1068 | </state> | 1089 | </state> |
1069 | </provider> | 1090 | </provider> |
1070 | </entry> | 1091 | </entry> |
1071 | - <entry file="file://$PROJECT_DIR$/console/controllers/ParserController.php"> | 1092 | + <entry file="file://$PROJECT_DIR$/backend/components/base/BaseController.php"> |
1072 | <provider selected="true" editor-type-id="text-editor"> | 1093 | <provider selected="true" editor-type-id="text-editor"> |
1073 | - <state vertical-scroll-proportion="-6.962963" vertical-offset="967" max-vertical-offset="5397"> | ||
1074 | - <caret line="64" column="0" selection-start-line="64" selection-start-column="0" selection-end-line="64" selection-end-column="0" /> | 1094 | + <state vertical-scroll-proportion="0.875" vertical-offset="3654" max-vertical-offset="4536"> |
1095 | + <caret line="218" column="0" selection-start-line="218" selection-start-column="0" selection-end-line="218" selection-end-column="0" /> | ||
1075 | <folding /> | 1096 | <folding /> |
1076 | </state> | 1097 | </state> |
1077 | </provider> | 1098 | </provider> |
1078 | </entry> | 1099 | </entry> |
1079 | - <entry file="file://$PROJECT_DIR$/backend/models/Importers.php"> | 1100 | + <entry file="file://$PROJECT_DIR$/common/components/PriceWriter.php"> |
1080 | <provider selected="true" editor-type-id="text-editor"> | 1101 | <provider selected="true" editor-type-id="text-editor"> |
1081 | - <state vertical-scroll-proportion="-7.703704" vertical-offset="1766" max-vertical-offset="3213"> | ||
1082 | - <caret line="96" column="0" selection-start-line="96" selection-start-column="0" selection-end-line="96" selection-end-column="0" /> | 1102 | + <state vertical-scroll-proportion="-4.6" vertical-offset="4746" max-vertical-offset="5586"> |
1103 | + <caret line="51" column="13" selection-start-line="51" selection-start-column="13" selection-end-line="51" selection-end-column="13" /> | ||
1083 | <folding /> | 1104 | <folding /> |
1084 | </state> | 1105 | </state> |
1085 | </provider> | 1106 | </provider> |
1086 | </entry> | 1107 | </entry> |
1087 | - <entry file="file://$PROJECT_DIR$/console/runtime/logs/parser.log"> | 1108 | + <entry file="file://$PROJECT_DIR$/backend/config/main.php"> |
1088 | <provider selected="true" editor-type-id="text-editor"> | 1109 | <provider selected="true" editor-type-id="text-editor"> |
1089 | - <state vertical-scroll-proportion="0.79928315" vertical-offset="5946" max-vertical-offset="6783"> | ||
1090 | - <caret line="288" column="61" selection-start-line="288" selection-start-column="61" selection-end-line="288" selection-end-column="61" /> | 1110 | + <state vertical-scroll-proportion="0.475" vertical-offset="210" max-vertical-offset="1050"> |
1111 | + <caret line="29" column="44" selection-start-line="29" selection-start-column="44" selection-end-line="29" selection-end-column="44" /> | ||
1091 | <folding /> | 1112 | <folding /> |
1092 | </state> | 1113 | </state> |
1093 | </provider> | 1114 | </provider> |
1094 | - <provider editor-type-id="com.intellij.database.editor.CsvTableFileEditorProvider"> | ||
1095 | - <state /> | ||
1096 | - </provider> | ||
1097 | </entry> | 1115 | </entry> |
1098 | - <entry file="file://$PROJECT_DIR$/common/components/parsers/Converter.php"> | 1116 | + <entry file="file://$PROJECT_DIR$/backend/components/base/BaseActiveRecord.php"> |
1099 | <provider selected="true" editor-type-id="text-editor"> | 1117 | <provider selected="true" editor-type-id="text-editor"> |
1100 | - <state vertical-scroll-proportion="-2.3333333" vertical-offset="0" max-vertical-offset="3780"> | ||
1101 | - <caret line="8" column="36" selection-start-line="8" selection-start-column="36" selection-end-line="8" selection-end-column="36" /> | 1118 | + <state vertical-scroll-proportion="0.25" vertical-offset="0" max-vertical-offset="840"> |
1119 | + <caret line="15" column="46" selection-start-line="15" selection-start-column="21" selection-end-line="15" selection-end-column="46" /> | ||
1102 | <folding /> | 1120 | <folding /> |
1103 | </state> | 1121 | </state> |
1104 | </provider> | 1122 | </provider> |
1105 | </entry> | 1123 | </entry> |
1106 | - <entry file="file://$PROJECT_DIR$/common/components/parsers/config.php"> | 1124 | + <entry file="file://$PROJECT_DIR$/vendor/yiisoft/yii2/base/ErrorHandler.php"> |
1107 | <provider selected="true" editor-type-id="text-editor"> | 1125 | <provider selected="true" editor-type-id="text-editor"> |
1108 | - <state vertical-scroll-proportion="-7.7777777" vertical-offset="1239" max-vertical-offset="2079"> | ||
1109 | - <caret line="69" column="45" selection-start-line="69" selection-start-column="45" selection-end-line="69" selection-end-column="45" /> | 1126 | + <state vertical-scroll-proportion="0.6845238" vertical-offset="2155" max-vertical-offset="6867"> |
1127 | + <caret line="136" column="20" selection-start-line="136" selection-start-column="20" selection-end-line="136" selection-end-column="20" /> | ||
1110 | <folding /> | 1128 | <folding /> |
1111 | </state> | 1129 | </state> |
1112 | </provider> | 1130 | </provider> |
1113 | </entry> | 1131 | </entry> |
1114 | - <entry file="file://$PROJECT_DIR$/backend/controllers/ParserController.php"> | 1132 | + <entry file="file://$PROJECT_DIR$/vendor/yiisoft/yii2/base/Controller.php"> |
1115 | <provider selected="true" editor-type-id="text-editor"> | 1133 | <provider selected="true" editor-type-id="text-editor"> |
1116 | - <state vertical-scroll-proportion="-7.037037" vertical-offset="167" max-vertical-offset="6762"> | ||
1117 | - <caret line="17" column="4" selection-start-line="17" selection-start-column="4" selection-end-line="17" selection-end-column="4" /> | 1134 | + <state vertical-scroll-proportion="-7.296296" vertical-offset="7489" max-vertical-offset="10437"> |
1135 | + <caret line="370" column="0" selection-start-line="370" selection-start-column="0" selection-end-line="370" selection-end-column="0" /> | ||
1118 | <folding /> | 1136 | <folding /> |
1119 | </state> | 1137 | </state> |
1120 | </provider> | 1138 | </provider> |
1121 | </entry> | 1139 | </entry> |
1122 | - <entry file="file://$PROJECT_DIR$/backend/controllers/RgGrupController.php"> | 1140 | + <entry file="file://$PROJECT_DIR$/backend/views/parser/error.php"> |
1123 | <provider selected="true" editor-type-id="text-editor"> | 1141 | <provider selected="true" editor-type-id="text-editor"> |
1124 | - <state vertical-scroll-proportion="-7.3703704" vertical-offset="137" max-vertical-offset="4704"> | ||
1125 | - <caret line="21" column="4" selection-start-line="21" selection-start-column="4" selection-end-line="21" selection-end-column="4" /> | 1142 | + <state vertical-scroll-proportion="-18.666666" vertical-offset="0" max-vertical-offset="819"> |
1143 | + <caret line="24" column="10" selection-start-line="24" selection-start-column="10" selection-end-line="24" selection-end-column="10" /> | ||
1126 | <folding /> | 1144 | <folding /> |
1127 | </state> | 1145 | </state> |
1128 | </provider> | 1146 | </provider> |
1129 | </entry> | 1147 | </entry> |
1130 | - <entry file="file://$PROJECT_DIR$/backend/views/crossing-upload/results.php"> | 1148 | + <entry file="file://$PROJECT_DIR$/common/components/parsers/ConverterInterface.php"> |
1131 | <provider selected="true" editor-type-id="text-editor"> | 1149 | <provider selected="true" editor-type-id="text-editor"> |
1132 | - <state vertical-scroll-proportion="-2.3333333" vertical-offset="0" max-vertical-offset="777"> | ||
1133 | - <caret line="3" column="4" selection-start-line="3" selection-start-column="4" selection-end-line="3" selection-end-column="4" /> | 1150 | + <state vertical-scroll-proportion="0.2937063" vertical-offset="0" max-vertical-offset="572"> |
1151 | + <caret line="13" column="51" selection-start-line="13" selection-start-column="51" selection-end-line="13" selection-end-column="51" /> | ||
1134 | <folding /> | 1152 | <folding /> |
1135 | </state> | 1153 | </state> |
1136 | </provider> | 1154 | </provider> |
1137 | </entry> | 1155 | </entry> |
1138 | - <entry file="file://$PROJECT_DIR$/backend/views/parser/results.php"> | 1156 | + <entry file="file://$PROJECT_DIR$/backend/views/parser/index.php"> |
1139 | <provider selected="true" editor-type-id="text-editor"> | 1157 | <provider selected="true" editor-type-id="text-editor"> |
1140 | - <state vertical-scroll-proportion="-2.3333333" vertical-offset="0" max-vertical-offset="777"> | ||
1141 | - <caret line="3" column="4" selection-start-line="3" selection-start-column="4" selection-end-line="3" selection-end-column="4" /> | 1158 | + <state vertical-scroll-proportion="-0.22222222" vertical-offset="372" max-vertical-offset="1239"> |
1159 | + <caret line="21" column="9" selection-start-line="21" selection-start-column="9" selection-end-line="21" selection-end-column="9" /> | ||
1142 | <folding /> | 1160 | <folding /> |
1143 | </state> | 1161 | </state> |
1144 | </provider> | 1162 | </provider> |
1145 | </entry> | 1163 | </entry> |
1146 | - <entry file="file://$PROJECT_DIR$/backend/views/rg-grup/results.php"> | 1164 | + <entry file="file://$PROJECT_DIR$/backend/views/parser/server-files.php"> |
1147 | <provider selected="true" editor-type-id="text-editor"> | 1165 | <provider selected="true" editor-type-id="text-editor"> |
1148 | - <state vertical-scroll-proportion="-2.3333333" vertical-offset="0" max-vertical-offset="777"> | ||
1149 | - <caret line="3" column="4" selection-start-line="3" selection-start-column="4" selection-end-line="3" selection-end-column="4" /> | 1166 | + <state vertical-scroll-proportion="-22.777779" vertical-offset="288" max-vertical-offset="1155"> |
1167 | + <caret line="49" column="108" selection-start-line="49" selection-start-column="8" selection-end-line="49" selection-end-column="108" /> | ||
1150 | <folding /> | 1168 | <folding /> |
1151 | </state> | 1169 | </state> |
1152 | </provider> | 1170 | </provider> |
1153 | </entry> | 1171 | </entry> |
1154 | - <entry file="file://$PROJECT_DIR$/common/components/parsers/CsvParser.php"> | 1172 | + <entry file="file://$PROJECT_DIR$/backend/views/rg-grup/index.php"> |
1155 | <provider selected="true" editor-type-id="text-editor"> | 1173 | <provider selected="true" editor-type-id="text-editor"> |
1156 | - <state vertical-scroll-proportion="-4.6666665" vertical-offset="0" max-vertical-offset="1701"> | ||
1157 | - <caret line="8" column="12" selection-start-line="8" selection-start-column="12" selection-end-line="8" selection-end-column="12" /> | 1174 | + <state vertical-scroll-proportion="-18.666666" vertical-offset="0" max-vertical-offset="756"> |
1175 | + <caret line="27" column="32" selection-start-line="27" selection-start-column="32" selection-end-line="27" selection-end-column="32" /> | ||
1158 | <folding /> | 1176 | <folding /> |
1159 | </state> | 1177 | </state> |
1160 | </provider> | 1178 | </provider> |
1161 | </entry> | 1179 | </entry> |
1162 | - <entry file="file://$PROJECT_DIR$/common/components/parsers/CustomConverter.php"> | 1180 | + <entry file="file://$PROJECT_DIR$/backend/views/rg-grup/results.php"> |
1163 | <provider selected="true" editor-type-id="text-editor"> | 1181 | <provider selected="true" editor-type-id="text-editor"> |
1164 | - <state vertical-scroll-proportion="-3.1111112" vertical-offset="0" max-vertical-offset="3066"> | ||
1165 | - <caret line="4" column="4" selection-start-line="4" selection-start-column="4" selection-end-line="4" selection-end-column="4" /> | ||
1166 | - <folding /> | 1182 | + <state vertical-scroll-proportion="-22.555555" vertical-offset="0" max-vertical-offset="777"> |
1183 | + <caret line="29" column="23" selection-start-line="29" selection-start-column="23" selection-end-line="29" selection-end-column="23" /> | ||
1184 | + <folding> | ||
1185 | + <element signature="e#7#28#0#PHP" expanded="true" /> | ||
1186 | + </folding> | ||
1167 | </state> | 1187 | </state> |
1168 | </provider> | 1188 | </provider> |
1169 | </entry> | 1189 | </entry> |
1170 | - <entry file="file://$PROJECT_DIR$/common/components/parsers/CustomCsvParser.php"> | 1190 | + <entry file="file://$PROJECT_DIR$/backend/components/traits/ParserTrait.php"> |
1171 | <provider selected="true" editor-type-id="text-editor"> | 1191 | <provider selected="true" editor-type-id="text-editor"> |
1172 | - <state vertical-scroll-proportion="-3.8888888" vertical-offset="0" max-vertical-offset="420"> | ||
1173 | - <caret line="10" column="32" selection-start-line="10" selection-start-column="32" selection-end-line="10" selection-end-column="32" /> | ||
1174 | - <folding /> | 1192 | + <state vertical-scroll-proportion="-42.77778" vertical-offset="126" max-vertical-offset="1848"> |
1193 | + <caret line="66" column="46" selection-start-line="66" selection-start-column="31" selection-end-line="66" selection-end-column="46" /> | ||
1194 | + <folding> | ||
1195 | + <element signature="e#129#177#0#PHP" expanded="true" /> | ||
1196 | + </folding> | ||
1175 | </state> | 1197 | </state> |
1176 | </provider> | 1198 | </provider> |
1177 | </entry> | 1199 | </entry> |
1178 | - <entry file="file://$PROJECT_DIR$/common/components/parsers/XlsxParser.php"> | 1200 | + <entry file="file://$PROJECT_DIR$/common/components/CustomArrayHelper.php"> |
1179 | <provider selected="true" editor-type-id="text-editor"> | 1201 | <provider selected="true" editor-type-id="text-editor"> |
1180 | - <state vertical-scroll-proportion="-7.3703704" vertical-offset="11" max-vertical-offset="6531"> | ||
1181 | - <caret line="15" column="12" selection-start-line="15" selection-start-column="12" selection-end-line="15" selection-end-column="12" /> | 1202 | + <state vertical-scroll-proportion="-9.62963" vertical-offset="286" max-vertical-offset="1596"> |
1203 | + <caret line="31" column="36" selection-start-line="31" selection-start-column="36" selection-end-line="31" selection-end-column="36" /> | ||
1182 | <folding /> | 1204 | <folding /> |
1183 | </state> | 1205 | </state> |
1184 | </provider> | 1206 | </provider> |
1185 | </entry> | 1207 | </entry> |
1186 | - <entry file="file://$PROJECT_DIR$/common/config/main.php"> | 1208 | + <entry file="file://$PROJECT_DIR$/common/models/MarginsGroups.php"> |
1187 | <provider selected="true" editor-type-id="text-editor"> | 1209 | <provider selected="true" editor-type-id="text-editor"> |
1188 | - <state vertical-scroll-proportion="-10.296296" vertical-offset="163" max-vertical-offset="735"> | ||
1189 | - <caret line="21" column="24" selection-start-line="21" selection-start-column="24" selection-end-line="21" selection-end-column="24" /> | 1210 | + <state vertical-scroll-proportion="15.62963" vertical-offset="758" max-vertical-offset="2520"> |
1211 | + <caret line="17" column="19" selection-start-line="17" selection-start-column="6" selection-end-line="17" selection-end-column="19" /> | ||
1190 | <folding /> | 1212 | <folding /> |
1191 | </state> | 1213 | </state> |
1192 | </provider> | 1214 | </provider> |
1193 | </entry> | 1215 | </entry> |
1194 | - <entry file="file://$PROJECT_DIR$/tests/unit/BaseConverterTest.php"> | 1216 | + <entry file="file://$PROJECT_DIR$/common/models/Margins.php"> |
1195 | <provider selected="true" editor-type-id="text-editor"> | 1217 | <provider selected="true" editor-type-id="text-editor"> |
1196 | - <state vertical-scroll-proportion="-3.8888888" vertical-offset="0" max-vertical-offset="1533"> | ||
1197 | - <caret line="5" column="4" selection-start-line="5" selection-start-column="4" selection-end-line="5" selection-end-column="4" /> | 1218 | + <state vertical-scroll-proportion="-10.407408" vertical-offset="832" max-vertical-offset="1512"> |
1219 | + <caret line="53" column="8" selection-start-line="53" selection-start-column="8" selection-end-line="53" selection-end-column="51" /> | ||
1198 | <folding /> | 1220 | <folding /> |
1199 | </state> | 1221 | </state> |
1200 | </provider> | 1222 | </provider> |
1201 | </entry> | 1223 | </entry> |
1202 | - <entry file="file://$PROJECT_DIR$/backend/controllers/CrossingUploadController.php"> | 1224 | + <entry file="file://$PROJECT_DIR$/backend/controllers/RgGrupController.php"> |
1203 | <provider selected="true" editor-type-id="text-editor"> | 1225 | <provider selected="true" editor-type-id="text-editor"> |
1204 | - <state vertical-scroll-proportion="-9.37037" vertical-offset="2519" max-vertical-offset="4935"> | ||
1205 | - <caret line="137" column="78" selection-start-line="137" selection-start-column="11" selection-end-line="137" selection-end-column="78" /> | 1226 | + <state vertical-scroll-proportion="-109.59259" vertical-offset="527" max-vertical-offset="4053"> |
1227 | + <caret line="190" column="5" selection-start-line="190" selection-start-column="5" selection-end-line="190" selection-end-column="5" /> | ||
1206 | <folding> | 1228 | <folding> |
1207 | <element signature="e#125#168#0#PHP" expanded="true" /> | 1229 | <element signature="e#125#168#0#PHP" expanded="true" /> |
1230 | + <element signature="e#787#1322#0#PHP" expanded="false" /> | ||
1208 | </folding> | 1231 | </folding> |
1209 | </state> | 1232 | </state> |
1210 | </provider> | 1233 | </provider> |
1211 | </entry> | 1234 | </entry> |
1212 | - <entry file="file://$PROJECT_DIR$/common/components/CustomArrayHelper.php"> | ||
1213 | - <provider selected="true" editor-type-id="text-editor"> | ||
1214 | - <state vertical-scroll-proportion="-10.777778" vertical-offset="108" max-vertical-offset="1596"> | ||
1215 | - <caret line="24" column="48" selection-start-line="24" selection-start-column="48" selection-end-line="24" selection-end-column="48" /> | ||
1216 | - <folding /> | ||
1217 | - </state> | ||
1218 | - </provider> | ||
1219 | - </entry> | ||
1220 | - <entry file="file://$PROJECT_DIR$/tests/unit/CrossesParsingTest.php"> | 1235 | + <entry file="file://$PROJECT_DIR$/backend/controllers/CrossingUploadController.php"> |
1221 | <provider selected="true" editor-type-id="text-editor"> | 1236 | <provider selected="true" editor-type-id="text-editor"> |
1222 | - <state vertical-scroll-proportion="-20.222221" vertical-offset="273" max-vertical-offset="1113"> | ||
1223 | - <caret line="39" column="0" selection-start-line="39" selection-start-column="0" selection-end-line="39" selection-end-column="0" /> | 1237 | + <state vertical-scroll-proportion="-37.333332" vertical-offset="1134" max-vertical-offset="4746"> |
1238 | + <caret line="102" column="0" selection-start-line="102" selection-start-column="0" selection-end-line="102" selection-end-column="0" /> | ||
1224 | <folding> | 1239 | <folding> |
1225 | - <element signature="e#28#68#0#PHP" expanded="true" /> | 1240 | + <element signature="e#6#91#0#PHP" expanded="true" /> |
1241 | + <element signature="e#125#168#0#PHP" expanded="true" /> | ||
1226 | </folding> | 1242 | </folding> |
1227 | </state> | 1243 | </state> |
1228 | </provider> | 1244 | </provider> |
1229 | </entry> | 1245 | </entry> |
1230 | - <entry file="file://$PROJECT_DIR$/storage/.gitignore"> | 1246 | + <entry file="file://$PROJECT_DIR$/backend/controllers/ParserController.php"> |
1231 | <provider selected="true" editor-type-id="text-editor"> | 1247 | <provider selected="true" editor-type-id="text-editor"> |
1232 | - <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="867"> | ||
1233 | - <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> | ||
1234 | - <folding /> | 1248 | + <state vertical-scroll-proportion="0.021428572" vertical-offset="1494" max-vertical-offset="6468"> |
1249 | + <caret line="72" column="54" selection-start-line="72" selection-start-column="54" selection-end-line="72" selection-end-column="54" /> | ||
1250 | + <folding> | ||
1251 | + <element signature="e#38#65#0#PHP" expanded="true" /> | ||
1252 | + </folding> | ||
1235 | </state> | 1253 | </state> |
1236 | </provider> | 1254 | </provider> |
1237 | </entry> | 1255 | </entry> |
backend/components/base/BaseController.php
@@ -216,36 +216,5 @@ class BaseController extends Controller { | @@ -216,36 +216,5 @@ class BaseController extends Controller { | ||
216 | } | 216 | } |
217 | } | 217 | } |
218 | 218 | ||
219 | - /** | ||
220 | - * @param $mode - int: 0 - fetch from cache, - 1 - put in cache, <2 - delete from cache | ||
221 | - * @param $data - array | ||
222 | - * @param $configuration - array | ||
223 | - * @throws \ErrorException | ||
224 | - */ | ||
225 | - protected function parserCacheHandler( $mode, &$data = [], &$configuration = [] ){ | ||
226 | - switch ( $mode ) { | ||
227 | - case 0: | ||
228 | - if (Yii::$app->getCache()->get('parser_data') && Yii::$app->getCache()->get('parser_configuration')) { | ||
229 | - $data = json_decode(Yii::$app->getCache()->get('parser_data'), true); | ||
230 | - $configuration = unserialize(Yii::$app->getCache()->get('parser_configuration')); | ||
231 | - } else { | ||
232 | - throw new \ErrorException('Ошибка кеша'); | ||
233 | - } | ||
234 | - break; | ||
235 | - | ||
236 | - case 1: | ||
237 | - Yii::$app->getCache()->set('parser_data', json_encode($data), 1800); | ||
238 | - // сохраняем в кеш модель - в ней настройки для дальнейшей обработки данных | ||
239 | - Yii::$app->getCache()->set('parser_configuration', serialize($configuration), 1800); | ||
240 | - break; | ||
241 | - | ||
242 | - default: | ||
243 | - if( Yii::$app->getCache()->exists('parser_data') ) | ||
244 | - Yii::$app->getCache()->delete('parser_data'); | ||
245 | - | ||
246 | - if( Yii::$app->getCache()->exists('parser_configuration') ) | ||
247 | - Yii::$app->getCache()->delete('parser_configuration'); | ||
248 | - } | ||
249 | 219 | ||
250 | - } | ||
251 | } | 220 | } |
252 | \ No newline at end of file | 221 | \ No newline at end of file |
1 | +<?php | ||
2 | +/** | ||
3 | + * Created by PhpStorm. | ||
4 | + * User: Tsurkanov | ||
5 | + * Date: 01.12.2015 | ||
6 | + * Time: 9:42 | ||
7 | + */ | ||
8 | +namespace backend\components\traits; | ||
9 | + | ||
10 | +use common\components\parsers\DynamicFormHelper; | ||
11 | +use Yii; | ||
12 | +use yii\base\ErrorException; | ||
13 | +use yii\data\ArrayDataProvider; | ||
14 | + | ||
15 | +trait ParserTrait | ||
16 | +{ | ||
17 | + | ||
18 | + /** | ||
19 | + * @param $mode - int: 0 - fetch from cache, - 1 - put in cache, <2 - delete from cache | ||
20 | + * @param $data - array | ||
21 | + * @param $configuration - array | ||
22 | + * @throws \ErrorException | ||
23 | + */ | ||
24 | + public function parserCacheHandler($mode, &$data = [], &$configuration = []) | ||
25 | + { | ||
26 | + switch ($mode) { | ||
27 | + case 0: | ||
28 | + if (Yii::$app->getCache()->get('parser_data') && Yii::$app->getCache()->get('parser_configuration')) { | ||
29 | + $data = json_decode(Yii::$app->getCache()->get('parser_data'), true); | ||
30 | + $configuration = unserialize(Yii::$app->getCache()->get('parser_configuration')); | ||
31 | + } else { | ||
32 | + throw new \ErrorException('Ошибка кеша'); | ||
33 | + } | ||
34 | + break; | ||
35 | + | ||
36 | + case 1: | ||
37 | + Yii::$app->getCache()->set('parser_data', json_encode($data), 1800); | ||
38 | + // сохраняем в кеш модель - в ней настройки для дальнейшей обработки данных | ||
39 | + Yii::$app->getCache()->set('parser_configuration', serialize($configuration), 1800); | ||
40 | + break; | ||
41 | + | ||
42 | + default: | ||
43 | + if (Yii::$app->getCache()->exists('parser_data')) | ||
44 | + Yii::$app->getCache()->delete('parser_data'); | ||
45 | + | ||
46 | + if (Yii::$app->getCache()->exists('parser_configuration')) | ||
47 | + Yii::$app->getCache()->delete('parser_configuration'); | ||
48 | + } | ||
49 | + | ||
50 | + } | ||
51 | + | ||
52 | + public function renderResultView($data) | ||
53 | + { | ||
54 | + $provider = new ArrayDataProvider([ | ||
55 | + 'allModels' => $data, | ||
56 | + 'pagination' => [ | ||
57 | + 'pageSize' => 10, | ||
58 | + ], | ||
59 | + ]); | ||
60 | + | ||
61 | + // создадим модель на столько реквизитов сколько колонок в отпарсенном файле | ||
62 | + $last_index = end(array_flip($data[0])); | ||
63 | + $header_counts = $last_index + 1; | ||
64 | + $header_model = DynamicFormHelper::CreateDynamicModel($header_counts); | ||
65 | + | ||
66 | + // соберем массив данных из которых будет пользователь выбирать значения в конструкторе (выпадающий список) | ||
67 | + $basicColumns = $this->getBasicColumns(); | ||
68 | + | ||
69 | + return $this->render('results', | ||
70 | + ['model' => $data, | ||
71 | + 'header_model' => $header_model, | ||
72 | + // список колонок для выбора | ||
73 | + 'basic_column' => $basicColumns, | ||
74 | + 'dataProvider' => $provider]); | ||
75 | + | ||
76 | + } | ||
77 | + | ||
78 | + public function throwStringErrorException( $model , $exception, $errors_str = '' ) | ||
79 | + { | ||
80 | + foreach ( $model->getErrors() as $error ) | ||
81 | + { | ||
82 | + $errors_str .= ' ' . implode( array_values( $error ) ); | ||
83 | + } | ||
84 | + | ||
85 | + throw new $exception( $errors_str ); | ||
86 | + } | ||
87 | + | ||
88 | + } | ||
0 | \ No newline at end of file | 89 | \ No newline at end of file |
backend/controllers/CrossingUploadController.php
@@ -10,6 +10,8 @@ namespace backend\controllers; | @@ -10,6 +10,8 @@ namespace backend\controllers; | ||
10 | 10 | ||
11 | use backend\components\base\BaseController; | 11 | use backend\components\base\BaseController; |
12 | use common\components\CustomArrayHelper; | 12 | use common\components\CustomArrayHelper; |
13 | +use common\components\exceptions\CrossParsingException; | ||
14 | +use yii\base\Exception; | ||
13 | use yii\data\ArrayDataProvider; | 15 | use yii\data\ArrayDataProvider; |
14 | use yii\filters\VerbFilter; | 16 | use yii\filters\VerbFilter; |
15 | use yii\filters\AccessControl; | 17 | use yii\filters\AccessControl; |
@@ -19,12 +21,13 @@ use common\components\parsers\DynamicFormHelper; | @@ -19,12 +21,13 @@ use common\components\parsers\DynamicFormHelper; | ||
19 | use yii\web\UploadedFile; | 21 | use yii\web\UploadedFile; |
20 | use common\components\ModelArrayValidator; | 22 | use common\components\ModelArrayValidator; |
21 | use \Yii; | 23 | use \Yii; |
24 | +use backend\components\traits\ParserTrait; | ||
22 | 25 | ||
23 | class CrossingUploadController extends BaseController | 26 | class CrossingUploadController extends BaseController |
24 | { | 27 | { |
28 | + use ParserTrait; | ||
25 | public $layout = "/column"; | 29 | public $layout = "/column"; |
26 | 30 | ||
27 | - | ||
28 | /** | 31 | /** |
29 | * @inheritdoc | 32 | * @inheritdoc |
30 | */ | 33 | */ |
@@ -35,7 +38,7 @@ class CrossingUploadController extends BaseController | @@ -35,7 +38,7 @@ class CrossingUploadController extends BaseController | ||
35 | 'class' => AccessControl::className(), | 38 | 'class' => AccessControl::className(), |
36 | 'rules' => [ | 39 | 'rules' => [ |
37 | [ | 40 | [ |
38 | - 'actions' => ['result', 'index', 'write'], | 41 | + 'actions' => ['result', 'index', 'write', 'error'], |
39 | 'allow' => true, | 42 | 'allow' => true, |
40 | 'roles' => ['@'], | 43 | 'roles' => ['@'], |
41 | ], | 44 | ], |
@@ -50,18 +53,6 @@ class CrossingUploadController extends BaseController | @@ -50,18 +53,6 @@ class CrossingUploadController extends BaseController | ||
50 | ]; | 53 | ]; |
51 | } | 54 | } |
52 | 55 | ||
53 | - /** | ||
54 | - * @inheritdoc | ||
55 | - */ | ||
56 | - public function actions() | ||
57 | - { | ||
58 | - return [ | ||
59 | - 'error' => [ | ||
60 | - 'class' => 'yii\web\ErrorAction', | ||
61 | - ], | ||
62 | - ]; | ||
63 | - } | ||
64 | - | ||
65 | 56 | ||
66 | public function actionIndex() | 57 | public function actionIndex() |
67 | { | 58 | { |
@@ -69,63 +60,56 @@ class CrossingUploadController extends BaseController | @@ -69,63 +60,56 @@ class CrossingUploadController extends BaseController | ||
69 | return $this->render('index', ['model' => $model]); | 60 | return $this->render('index', ['model' => $model]); |
70 | } | 61 | } |
71 | 62 | ||
63 | + | ||
72 | public function actionResult() | 64 | public function actionResult() |
73 | { | 65 | { |
74 | $model = new UploadFileCrossingForm(); | 66 | $model = new UploadFileCrossingForm(); |
75 | $data = []; | 67 | $data = []; |
76 | - if ($model->load(Yii::$app->request->post())) { | 68 | + if ( $model->load(Yii::$app->request->post()) ) { |
77 | $model->file = UploadedFile::getInstance($model, 'file'); | 69 | $model->file = UploadedFile::getInstance($model, 'file'); |
78 | - if ($model->validate()) { | 70 | + |
71 | + if ( $model->validate() ) { | ||
79 | $file_name = $model->file->name; | 72 | $file_name = $model->file->name; |
80 | $model->file_path = Yii::getAlias('@temp_upload') . '/' . $file_name; | 73 | $model->file_path = Yii::getAlias('@temp_upload') . '/' . $file_name; |
81 | $model->file->saveAs($model->file_path); | 74 | $model->file->saveAs($model->file_path); |
82 | //запускаем парсинг | 75 | //запускаем парсинг |
83 | $data = $model->readFile(); | 76 | $data = $model->readFile(); |
84 | // сохраняем в кеш отпарсенные даные | 77 | // сохраняем в кеш отпарсенные даные |
85 | - $this->parserCacheHandler( 1, $data, $model ); | ||
86 | - } else if (Yii::$app->getCache()->get('parser_data')) { | ||
87 | - $data = json_decode(Yii::$app->getCache()->get('parser_data'), true); | 78 | + $this->parserCacheHandler( 1, $data, $model ); |
79 | + } else { | ||
80 | + // не прошла валидация формы загрузки файлов | ||
81 | + $errors_str = "Ошибка загрузки файла. "; | ||
82 | + $this->throwStringErrorException( $model , new CrossParsingException( $errors_str ) ); | ||
88 | } | 83 | } |
89 | - $provider = new ArrayDataProvider([ | ||
90 | - 'allModels' => $data, | ||
91 | - 'pagination' => [ | ||
92 | - 'pageSize' => 10, | ||
93 | - ], | ||
94 | - ]); | ||
95 | - | ||
96 | - // создадим модель на столько реквизитов сколько колонок в отпарсенном файле | ||
97 | - $last_index = end(array_flip($data[0])); | ||
98 | - $header_counts = $last_index + 1; | ||
99 | - $header_model = DynamicFormHelper::CreateDynamicModel($header_counts); | ||
100 | - | ||
101 | - // соберем массив данных из которых будет пользователь выбирать значения в конструкторе (выпадающий список) | ||
102 | - $basicColumns = $this->getBasicColumns(); | ||
103 | - | ||
104 | - return $this->render('results', | ||
105 | - ['model' => $data, | ||
106 | - 'header_model' => $header_model, | ||
107 | - // список колонок для выбора | ||
108 | - 'basic_column' => $basicColumns, | ||
109 | - 'dataProvider' => $provider]); | 84 | + |
85 | + } else if ( Yii::$app->getCache()->get('parser_data') ) { | ||
86 | + | ||
87 | + $data = json_decode( Yii::$app->getCache()->get('parser_data'), true ); | ||
88 | + | ||
110 | } | 89 | } |
90 | + // сборка динамической модели и её рендеринг | ||
91 | + return $this->renderResultView( $data ); | ||
111 | } | 92 | } |
112 | 93 | ||
113 | public function actionWrite() | 94 | public function actionWrite() |
114 | { | 95 | { |
96 | + set_time_limit(600); | ||
115 | //получим колонки которые выбрал пользователь | 97 | //получим колонки которые выбрал пользователь |
116 | $arr_attributes = Yii::$app->request->post()['DynamicModel']; | 98 | $arr_attributes = Yii::$app->request->post()['DynamicModel']; |
117 | //соберем модель по полученным данным | 99 | //соберем модель по полученным данным |
118 | $model = DynamicFormHelper::CreateDynamicModel($arr_attributes); | 100 | $model = DynamicFormHelper::CreateDynamicModel($arr_attributes); |
119 | $crosses_model = new DetailsCrosses(); | 101 | $crosses_model = new DetailsCrosses(); |
102 | + $arr_keys = array_keys($this->getBasicColumns()); | ||
103 | + | ||
120 | //добавим правила валидации (колонки должны быть те что в модели) | 104 | //добавим правила валидации (колонки должны быть те что в модели) |
121 | foreach ($arr_attributes as $key => $value) { | 105 | foreach ($arr_attributes as $key => $value) { |
122 | - $model->addRule($key, 'in', [ 'range' => array_keys( $this->getBasicColumns() ) ]); | 106 | + $model->addRule($key, 'in', ['range' => $arr_keys]); |
123 | } | 107 | } |
124 | // установим режим проверки обязательных полей | 108 | // установим режим проверки обязательных полей |
125 | $crosses_model->setScenario('form_upload_validation'); | 109 | $crosses_model->setScenario('form_upload_validation'); |
126 | - $model_validator = new ModelArrayValidator( $crosses_model ); | 110 | + $model_validator = new ModelArrayValidator($crosses_model); |
127 | // провалидируем выбранные колонки | 111 | // провалидируем выбранные колонки |
128 | - if ( $model->validate() && $model_validator->validateRow( array_flip( $arr_attributes ) ) ) { | 112 | + if ( $model->validate() && $model_validator->validateRow( array_flip( $arr_attributes ) ) ) { |
129 | 113 | ||
130 | // валидация успешна у нас есть соответсвие колонок, преобразуем в массив данное соответсвие для дальнейшей работы | 114 | // валидация успешна у нас есть соответсвие колонок, преобразуем в массив данное соответсвие для дальнейшей работы |
131 | $arr = $model->toArray(); | 115 | $arr = $model->toArray(); |
@@ -135,7 +119,7 @@ class CrossingUploadController extends BaseController | @@ -135,7 +119,7 @@ class CrossingUploadController extends BaseController | ||
135 | 119 | ||
136 | // соотнесем отпарсенные данные с соответствием полученным от пользователя | 120 | // соотнесем отпарсенные данные с соответствием полученным от пользователя |
137 | // для этого преобразуем массив отпарсенных данных - назначим ключи согласно соответствию | 121 | // для этого преобразуем массив отпарсенных данных - назначим ключи согласно соответствию |
138 | - $data = CustomArrayHelper::createAssocArray($data, $arr, 'attr_'); | 122 | + $data = CustomArrayHelper::createAssocArray( $data, $arr, 'attr_' ); |
139 | 123 | ||
140 | // запустим конвертер над над данными | 124 | // запустим конвертер над над данными |
141 | $data = $this->convertDataByConfiguration( $data, $configuration ); | 125 | $data = $this->convertDataByConfiguration( $data, $configuration ); |
@@ -144,31 +128,33 @@ class CrossingUploadController extends BaseController | @@ -144,31 +128,33 @@ class CrossingUploadController extends BaseController | ||
144 | $crosses_model->setScenario('default'); | 128 | $crosses_model->setScenario('default'); |
145 | $data = $model_validator->validate( $data ); | 129 | $data = $model_validator->validate( $data ); |
146 | $msg = $model_validator->getMassage(); | 130 | $msg = $model_validator->getMassage(); |
147 | - $type_msg = $model_validator->hasError() ? 'warning' : 'success'; | 131 | + $type_msg = $model_validator->hasError() ? 'warning' : 'success'; |
148 | $model_validator->close(); | 132 | $model_validator->close(); |
149 | 133 | ||
150 | - $data = $this->reverseCrosses( $data ); | 134 | + $data = $this->reverseCrosses($data); |
135 | + | ||
136 | + try { | ||
137 | + if ($crosses_model->ManualInsertWithIgnore( $data )) { | ||
151 | 138 | ||
152 | - if ( $crosses_model->ManualInsertWithIgnore( $data ) ) { | 139 | + // очистим кеш |
140 | + $this->parserCacheHandler(2); | ||
153 | 141 | ||
154 | - // очистим кеш | ||
155 | - $this->parserCacheHandler( 2 ); | 142 | + if (file_exists($configuration['file_path'])) |
143 | + unlink($configuration['file_path']); | ||
156 | 144 | ||
157 | - if ( file_exists($configuration['file_path']) ) | ||
158 | - unlink( $configuration['file_path'] ); | 145 | + Yii::$app->session->setFlash($type_msg, $msg); |
146 | + return $this->render('index', ['model' => $configuration]); | ||
159 | 147 | ||
160 | - Yii::$app->session->setFlash( $type_msg, $msg ); | ||
161 | - return $this->render('index', ['model' => $configuration]); | 148 | + } |
149 | + } catch (Exception $e) { | ||
162 | 150 | ||
151 | + new CrossParsingException( $e->getMessage() ); | ||
163 | } | 152 | } |
164 | 153 | ||
165 | } else { | 154 | } else { |
166 | // не прошла валидация формы загрузки файлов | 155 | // не прошла валидация формы загрузки файлов |
167 | $errors_str = "Ошибка валидации формы загрузки файлов. "; | 156 | $errors_str = "Ошибка валидации формы загрузки файлов. "; |
168 | - foreach ($crosses_model->getErrors() as $error) { | ||
169 | - $errors_str .= implode(array_values($error)); | ||
170 | - } | ||
171 | - throw new \ErrorException($errors_str); | 157 | + $this->throwStringErrorException( $crosses_model , 'common\components\exceptions\CrossParsingException', $errors_str ); |
172 | } | 158 | } |
173 | } | 159 | } |
174 | 160 | ||
@@ -183,7 +169,8 @@ class CrossingUploadController extends BaseController | @@ -183,7 +169,8 @@ class CrossingUploadController extends BaseController | ||
183 | 169 | ||
184 | } | 170 | } |
185 | 171 | ||
186 | - protected function convertDataByConfiguration( $data, $configuration ){ | 172 | + protected function convertDataByConfiguration($data, $configuration) |
173 | + { | ||
187 | 174 | ||
188 | // доп. опции для парсера - удаление префикса в артикулах | 175 | // доп. опции для парсера - удаление префикса в артикулах |
189 | $options['mode'] = 'crosses'; | 176 | $options['mode'] = 'crosses'; |
@@ -195,38 +182,38 @@ class CrossingUploadController extends BaseController | @@ -195,38 +182,38 @@ class CrossingUploadController extends BaseController | ||
195 | $fields[] = 'CROSS_ARTICLE'; | 182 | $fields[] = 'CROSS_ARTICLE'; |
196 | } | 183 | } |
197 | if ($fields) { | 184 | if ($fields) { |
198 | - $options ['converter_conf']['configuration'] = ["article" => $fields, | 185 | + $options ['converter_conf']['configuration'] = ["article" => $fields, |
199 | "string" => ['ARTICLE', 'CROSS_ARTICLE'],]; | 186 | "string" => ['ARTICLE', 'CROSS_ARTICLE'],]; |
200 | } else { | 187 | } else { |
201 | - $options ['converter_conf']['configuration'] = ["string" => ['ARTICLE', 'CROSS_ARTICLE'],]; | 188 | + $options ['converter_conf']['configuration'] = ["string" => ['ARTICLE', 'CROSS_ARTICLE'],]; |
202 | } | 189 | } |
203 | 190 | ||
204 | // получим базовую конфигурацию и объеденим её с той что образовалась после выбора пользователем настроек | 191 | // получим базовую конфигурацию и объеденим её с той что образовалась после выбора пользователем настроек |
205 | - $basic_options = Yii::$app->multiparser->getConfiguration( 'csv', 'crosses' ); | ||
206 | - $options = array_merge_recursive( $options, $basic_options ); | 192 | + $basic_options = Yii::$app->multiparser->getConfiguration('csv', 'crosses'); |
193 | + $options = array_merge_recursive($options, $basic_options); | ||
207 | 194 | ||
208 | - foreach ( $data as &$row ) { | ||
209 | - $row = Yii::$app->converter->convertByConfiguration( $row, $options['converter_conf'] ); | 195 | + foreach ($data as &$row) { |
196 | + $row = Yii::$app->converter->convertByConfiguration($row, $options['converter_conf']); | ||
210 | } | 197 | } |
211 | 198 | ||
212 | return $data; | 199 | return $data; |
213 | 200 | ||
214 | } | 201 | } |
215 | 202 | ||
216 | - protected function reverseCrosses ( $data ) | 203 | + protected function reverseCrosses($data) |
217 | { | 204 | { |
218 | // для доп массива обратных строк | 205 | // для доп массива обратных строк |
219 | - $i = count( $data ) - 1; | 206 | + $i = count($data) - 1; |
220 | $reverse_data = []; | 207 | $reverse_data = []; |
221 | - foreach ( $data as &$row ) { | 208 | + foreach ($data as &$row) { |
222 | // нужно добавить обратную строку по кроссам | 209 | // нужно добавить обратную строку по кроссам |
223 | - $reverse_data[ $i ]['ARTICLE'] = $row['CROSS_ARTICLE']; | ||
224 | - $reverse_data[ $i ]['CROSS_ARTICLE'] = $row['ARTICLE']; | ||
225 | - $reverse_data[ $i ]['BRAND'] = $row['CROSS_BRAND']; | ||
226 | - $reverse_data[ $i ]['CROSS_BRAND'] = $row['BRAND']; | 210 | + $reverse_data[$i]['ARTICLE'] = $row['CROSS_ARTICLE']; |
211 | + $reverse_data[$i]['CROSS_ARTICLE'] = $row['ARTICLE']; | ||
212 | + $reverse_data[$i]['BRAND'] = $row['CROSS_BRAND']; | ||
213 | + $reverse_data[$i]['CROSS_BRAND'] = $row['BRAND']; | ||
227 | $i++; | 214 | $i++; |
228 | } | 215 | } |
229 | - $data = array_merge( $data, $reverse_data ); | 216 | + $data = array_merge($data, $reverse_data); |
230 | 217 | ||
231 | return $data; | 218 | return $data; |
232 | } | 219 | } |
backend/controllers/ParserController.php
@@ -2,9 +2,9 @@ | @@ -2,9 +2,9 @@ | ||
2 | namespace backend\controllers; | 2 | namespace backend\controllers; |
3 | 3 | ||
4 | use backend\models\Details; | 4 | use backend\models\Details; |
5 | -use common\components\archives\ArchiveCreator; | ||
6 | -use common\components\mail\ImapMailReader; | ||
7 | -use common\components\mail\MailAttachmentsSaver; | 5 | +use common\components\exceptions\CrossParsingException; |
6 | +use common\components\exceptions\PriceParsingException; | ||
7 | +use common\components\exceptions\RgParsingException; | ||
8 | use common\components\ModelArrayValidator; | 8 | use common\components\ModelArrayValidator; |
9 | use common\components\parsers\MailParser; | 9 | use common\components\parsers\MailParser; |
10 | use Yii; | 10 | use Yii; |
@@ -20,14 +20,15 @@ use backend\models\ImportersFiles; | @@ -20,14 +20,15 @@ use backend\models\ImportersFiles; | ||
20 | use backend\models\Importers; | 20 | use backend\models\Importers; |
21 | use yii\base\ErrorException; | 21 | use yii\base\ErrorException; |
22 | use common\components\PriceWriter; | 22 | use common\components\PriceWriter; |
23 | -use common\components\CustomVarDamp; | ||
24 | use common\components\CustomArrayHelper; | 23 | use common\components\CustomArrayHelper; |
24 | +use backend\components\traits\ParserTrait; | ||
25 | 25 | ||
26 | /** | 26 | /** |
27 | * Parser controller | 27 | * Parser controller |
28 | */ | 28 | */ |
29 | class ParserController extends BaseController | 29 | class ParserController extends BaseController |
30 | { | 30 | { |
31 | + use ParserTrait; | ||
31 | public $layout = "/column"; | 32 | public $layout = "/column"; |
32 | 33 | ||
33 | /** | 34 | /** |
@@ -55,7 +56,6 @@ class ParserController extends BaseController | @@ -55,7 +56,6 @@ class ParserController extends BaseController | ||
55 | } | 56 | } |
56 | 57 | ||
57 | 58 | ||
58 | - | ||
59 | public function actionIndex($mode = 0) | 59 | public function actionIndex($mode = 0) |
60 | { | 60 | { |
61 | $model = new UploadFileParsingForm(); | 61 | $model = new UploadFileParsingForm(); |
@@ -67,8 +67,19 @@ class ParserController extends BaseController | @@ -67,8 +67,19 @@ class ParserController extends BaseController | ||
67 | public function actionError() | 67 | public function actionError() |
68 | { | 68 | { |
69 | $exception = Yii::$app->errorHandler->exception; | 69 | $exception = Yii::$app->errorHandler->exception; |
70 | - if ($exception !== null) { | ||
71 | - return $this->render('error', ['message' => $exception->getMessage()]); | 70 | + $action_name = ''; |
71 | + | ||
72 | + if ( $exception instanceof CrossParsingException ) { | ||
73 | + $action_name = ['crossing-upload/result']; | ||
74 | + }elseif ( $exception instanceof PriceParsingException ) { | ||
75 | + $action_name = ['results']; | ||
76 | + }elseif ( $exception instanceof RgParsingException ) { | ||
77 | + $action_name = ['rg-grup/results']; | ||
78 | + } | ||
79 | + | ||
80 | + if ( $exception !== null ) { | ||
81 | + $msg = $exception->getMessage(); | ||
82 | + return $this->render( 'error', [ 'message' => $msg, 'action_name' => $action_name ] ); | ||
72 | } | 83 | } |
73 | } | 84 | } |
74 | 85 | ||
@@ -89,44 +100,19 @@ class ParserController extends BaseController | @@ -89,44 +100,19 @@ class ParserController extends BaseController | ||
89 | $model->success = true; | 100 | $model->success = true; |
90 | return $this->render('index', ['model' => $model]); | 101 | return $this->render('index', ['model' => $model]); |
91 | } | 102 | } |
92 | - | ||
93 | // === ручная загрузка =========== | 103 | // === ручная загрузка =========== |
94 | //запускаем парсинг | 104 | //запускаем парсинг |
95 | $data = $this->parseDataFromFile( $files_model, $model ); | 105 | $data = $this->parseDataFromFile( $files_model, $model ); |
96 | 106 | ||
97 | } else { | 107 | } else { |
98 | // не прошла валидация форма загрузки файлов | 108 | // не прошла валидация форма загрузки файлов |
99 | - $errors_str = ''; | ||
100 | - foreach ($model->getErrors() as $error) { | ||
101 | - $errors_str .= implode( array_values($error) ); | ||
102 | - } | ||
103 | - throw new ErrorException( $errors_str ); | 109 | + $this->throwStringErrorException( $model , 'common\components\exceptions\PriceParsingException' ); |
104 | } | 110 | } |
105 | // листаем пагинатором, или повторно вызываем - считываем из кеша отпрасенные данные | 111 | // листаем пагинатором, или повторно вызываем - считываем из кеша отпрасенные данные |
106 | } else if ( Yii::$app->getCache()->get('parser_data') ) { | 112 | } else if ( Yii::$app->getCache()->get('parser_data') ) { |
107 | - | ||
108 | $data = json_decode(Yii::$app->getCache()->get('parser_data'), true); | 113 | $data = json_decode(Yii::$app->getCache()->get('parser_data'), true); |
109 | - | ||
110 | } | 114 | } |
111 | - | ||
112 | - $provider = new ArrayDataProvider([ | ||
113 | - 'allModels' => $data, | ||
114 | - 'pagination' => [ | ||
115 | - 'pageSize' => 10, | ||
116 | - ], | ||
117 | - ]); | ||
118 | - | ||
119 | - $last_index = end( array_flip( $data[0] ) ); | ||
120 | - $header_counts = $last_index + 1; | ||
121 | - //формируем заголовок для пользователя, где он сможет выбрать соответсвие полей (выпадающий список) | ||
122 | - $header_model = DynamicFormHelper::CreateDynamicModel( $header_counts ); | ||
123 | - | ||
124 | - return $this->render('results', | ||
125 | - ['model' => $data, | ||
126 | - 'header_model' => $header_model, | ||
127 | - // список колонок для выбора | ||
128 | - 'basic_column' => Yii::$app->multiparser->getConfiguration('csv', 'basic_column'), | ||
129 | - 'dataProvider' => $provider]); | 115 | + return $this->renderResultView( $data ); |
130 | } | 116 | } |
131 | 117 | ||
132 | public function actionWrite() | 118 | public function actionWrite() |
@@ -170,19 +156,14 @@ class ParserController extends BaseController | @@ -170,19 +156,14 @@ class ParserController extends BaseController | ||
170 | unlink($configuration['file_path']); | 156 | unlink($configuration['file_path']); |
171 | $validated_type_msg = $writer->hasValidationError() ? 'warning' : 'success'; | 157 | $validated_type_msg = $writer->hasValidationError() ? 'warning' : 'success'; |
172 | Yii::$app->session->setFlash( $validated_type_msg, $writer->getValidatedMsg() ); | 158 | Yii::$app->session->setFlash( $validated_type_msg, $writer->getValidatedMsg() ); |
173 | - return $this->render('index', ['model' => $configuration]); | 159 | + return $this->render('index', ['model' => $configuration]); |
174 | 160 | ||
175 | }; | 161 | }; |
176 | 162 | ||
177 | } else { | 163 | } else { |
178 | // не прошла валидация формы загрузки файлов | 164 | // не прошла валидация формы загрузки файлов |
179 | $errors_str = "Ошибка валидации формы загрузки файлов. "; | 165 | $errors_str = "Ошибка валидации формы загрузки файлов. "; |
180 | - | ||
181 | - foreach ( $details_model->getErrors() as $error ) { | ||
182 | - $errors_str .= implode(array_values($error)); | ||
183 | - } | ||
184 | - | ||
185 | - throw new \ErrorException($errors_str); | 166 | + $this->throwStringErrorException( $details_model , 'common\components\exceptions\PriceParsingException', $errors_str ); |
186 | } | 167 | } |
187 | 168 | ||
188 | } | 169 | } |
@@ -313,4 +294,9 @@ class ParserController extends BaseController | @@ -313,4 +294,9 @@ class ParserController extends BaseController | ||
313 | return $data; | 294 | return $data; |
314 | } | 295 | } |
315 | 296 | ||
297 | + protected function getBasicColumns() | ||
298 | + { | ||
299 | + return Yii::$app->multiparser->getConfiguration('csv', 'basic_column'); | ||
300 | + | ||
301 | + } | ||
316 | } | 302 | } |
backend/controllers/RgGrupController.php
@@ -10,7 +10,7 @@ namespace backend\controllers; | @@ -10,7 +10,7 @@ namespace backend\controllers; | ||
10 | 10 | ||
11 | use backend\components\base\BaseController; | 11 | use backend\components\base\BaseController; |
12 | use backend\models\UploadFileRgForm; | 12 | use backend\models\UploadFileRgForm; |
13 | -use common\components\CustomVarDamp; | 13 | +use common\components\exceptions\RgParsingException; |
14 | use common\components\ModelArrayValidator; | 14 | use common\components\ModelArrayValidator; |
15 | use common\components\parsers\MailAttachmentsSaver; | 15 | use common\components\parsers\MailAttachmentsSaver; |
16 | use common\models\Margins; | 16 | use common\models\Margins; |
@@ -21,9 +21,11 @@ use yii\web\UploadedFile; | @@ -21,9 +21,11 @@ use yii\web\UploadedFile; | ||
21 | use yii\data\ArrayDataProvider; | 21 | use yii\data\ArrayDataProvider; |
22 | use common\components\parsers\DynamicFormHelper; | 22 | use common\components\parsers\DynamicFormHelper; |
23 | use common\components\CustomArrayHelper; | 23 | use common\components\CustomArrayHelper; |
24 | +use backend\components\traits\ParserTrait; | ||
24 | 25 | ||
25 | class RgGrupController extends BaseController | 26 | class RgGrupController extends BaseController |
26 | { | 27 | { |
28 | + use ParserTrait; | ||
27 | public $layout = "/column"; | 29 | public $layout = "/column"; |
28 | 30 | ||
29 | /** | 31 | /** |
@@ -66,25 +68,15 @@ class RgGrupController extends BaseController | @@ -66,25 +68,15 @@ class RgGrupController extends BaseController | ||
66 | $model->file = UploadedFile::getInstance($model, 'file'); | 68 | $model->file = UploadedFile::getInstance($model, 'file'); |
67 | // первый проход - валидируем, сохраняем файл, ложим в кеш отпарсенные данные и параметры модели (потом при записи в базу данных они пригодятся) | 69 | // первый проход - валидируем, сохраняем файл, ложим в кеш отпарсенные данные и параметры модели (потом при записи в базу данных они пригодятся) |
68 | if ($model->validate()) { | 70 | if ($model->validate()) { |
69 | - | ||
70 | $model->file_path = Yii::getAlias('@manual_upload') . '/' . $model->file->name; | 71 | $model->file_path = Yii::getAlias('@manual_upload') . '/' . $model->file->name; |
71 | $model->file->saveAs($model->file_path); | 72 | $model->file->saveAs($model->file_path); |
72 | - | ||
73 | //запускаем парсинг | 73 | //запускаем парсинг |
74 | $data = $model->readFile(); | 74 | $data = $model->readFile(); |
75 | // сохраняем в кеш отпарсенные даные | 75 | // сохраняем в кеш отпарсенные даные |
76 | - Yii::$app->getCache()->set('parser_data', json_encode($data), 1800); | ||
77 | - // сохраняем в кеш модель - в ней настройки для дальнейшей обработки данных | ||
78 | - Yii::$app->getCache()->set('parser_configuration', serialize($model), 1800); | ||
79 | - | ||
80 | - | 76 | + $this->parserCacheHandler(1, $data, $model); |
81 | } else { | 77 | } else { |
82 | // не прошла валидация форма загрузки файлов | 78 | // не прошла валидация форма загрузки файлов |
83 | - $errors_str = ''; | ||
84 | - foreach ($model->getErrors() as $error) { | ||
85 | - $errors_str .= implode(array_values($error)); | ||
86 | - } | ||
87 | - throw new \ErrorException($errors_str); | 79 | + $this->throwStringErrorException($model, 'common\components\exceptions\RgParsingException'); |
88 | } | 80 | } |
89 | // листаем пагинатором, или повторно вызываем - считываем из кеша отпрасенные данные | 81 | // листаем пагинатором, или повторно вызываем - считываем из кеша отпрасенные данные |
90 | } else if (Yii::$app->getCache()->get('parser_data')) { | 82 | } else if (Yii::$app->getCache()->get('parser_data')) { |
@@ -92,26 +84,8 @@ class RgGrupController extends BaseController | @@ -92,26 +84,8 @@ class RgGrupController extends BaseController | ||
92 | $data = json_decode(Yii::$app->getCache()->get('parser_data'), true); | 84 | $data = json_decode(Yii::$app->getCache()->get('parser_data'), true); |
93 | 85 | ||
94 | } | 86 | } |
95 | - $provider = new ArrayDataProvider([ | ||
96 | - 'allModels' => $data, | ||
97 | - 'pagination' => [ | ||
98 | - 'pageSize' => 10, | ||
99 | - ], | ||
100 | - ]); | ||
101 | - // создадим модель на столько реквизитов сколько колонок в отпарсенном файле | ||
102 | - $last_index = end(array_flip($data[0])); | ||
103 | - $header_counts = $last_index + 1; | ||
104 | - $header_model = DynamicFormHelper::CreateDynamicModel($header_counts); | ||
105 | - | ||
106 | - // соберем массив данных из которых будет пользователь выбирать значения в конструкторе (выпадающий список) | ||
107 | - $header_array = Margins::getHeader(); | ||
108 | - | ||
109 | - return $this->render('results', | ||
110 | - ['model' => $data, | ||
111 | - 'header_model' => $header_model, | ||
112 | - // список колонок для выбора | ||
113 | - 'basic_column' => $header_array, | ||
114 | - 'dataProvider' => $provider]); | 87 | + // сборка динамической модели и её рендеринг |
88 | + return $this->renderResultView($data); | ||
115 | } | 89 | } |
116 | 90 | ||
117 | public function actionWrite() | 91 | public function actionWrite() |
@@ -127,20 +101,15 @@ class RgGrupController extends BaseController | @@ -127,20 +101,15 @@ class RgGrupController extends BaseController | ||
127 | } | 101 | } |
128 | // установим режим проверки обязательных полей | 102 | // установим режим проверки обязательных полей |
129 | $margin_model->setScenario('form_upload_validation'); | 103 | $margin_model->setScenario('form_upload_validation'); |
130 | - $model_validator = new ModelArrayValidator( $margin_model ); | 104 | + $model_validator = new ModelArrayValidator($margin_model); |
131 | // провалидируем выбранные колонки | 105 | // провалидируем выбранные колонки |
132 | - if ( $model->validate() && $model_validator->validateRow( array_flip( $arr_attributes ) )) { | 106 | + if ($model->validate() && $model_validator->validateRow($this->getAttributesForValidate($arr_attributes))) { |
133 | 107 | ||
134 | // валидация успешна у нас есть соответсвие колонок, преобразуем в массив данное соответсвие для дальнейшей работы | 108 | // валидация успешна у нас есть соответсвие колонок, преобразуем в массив данное соответсвие для дальнейшей работы |
135 | $arr = $model->toArray(); | 109 | $arr = $model->toArray(); |
136 | 110 | ||
137 | // получим данные из кеша | 111 | // получим данные из кеша |
138 | - if (Yii::$app->getCache()->get('parser_data') && Yii::$app->getCache()->get('parser_configuration')) { | ||
139 | - $data = json_decode(Yii::$app->getCache()->get('parser_data'), true); | ||
140 | - $configuration = unserialize(Yii::$app->getCache()->get('parser_configuration')); | ||
141 | - } else { | ||
142 | - throw new \ErrorException('Ошибка кеша'); | ||
143 | - } | 112 | + $this->parserCacheHandler(0, $data, $configuration); |
144 | 113 | ||
145 | array_walk($arr, function (&$val) { | 114 | array_walk($arr, function (&$val) { |
146 | $val = '!' . $val; | 115 | $val = '!' . $val; |
@@ -151,63 +120,85 @@ class RgGrupController extends BaseController | @@ -151,63 +120,85 @@ class RgGrupController extends BaseController | ||
151 | $data = CustomArrayHelper::createAssocArray($data, $arr, 'attr_'); | 120 | $data = CustomArrayHelper::createAssocArray($data, $arr, 'attr_'); |
152 | 121 | ||
153 | // в первой строке у нас заголовки - уберем | 122 | // в первой строке у нас заголовки - уберем |
154 | - unset( $data[0] ); | 123 | + unset($data[0]); |
155 | // подготовим данные для записи в таблицу w_margins_groups | 124 | // подготовим данные для записи в таблицу w_margins_groups |
156 | - $arr_values = []; | ||
157 | - $group = ''; | ||
158 | - $importer_id = $configuration['importer_id']; | ||
159 | - foreach ($data as $row_data) { | ||
160 | - | ||
161 | - if (isset($row_data['!group'])) { | ||
162 | - $group = $row_data['!group']; | ||
163 | - unset($row_data['!group']); | ||
164 | - } | ||
165 | - if (isset($row_data['!_null'])) { | ||
166 | - unset($row_data['!_null']); | ||
167 | - } | ||
168 | - | ||
169 | - foreach ($row_data as $key => $value) { | ||
170 | - if ($group) | ||
171 | - $row['group'] = trim($group); | 125 | + $data = $this->convertDataByConfiguration($data, $configuration); |
172 | 126 | ||
173 | - $row['importer_id'] = trim($importer_id); | ||
174 | - $row['margin_id'] = ltrim($key, '!'); | ||
175 | - $row['koef'] = \Yii::$app->converter->convertTo('float', $value, ['precision' => 6]); | ||
176 | - | ||
177 | - $arr_values[] = $row; | ||
178 | - } | ||
179 | - } | ||
180 | - unset($data); | ||
181 | // валидируем отпарсенные данные моделью в которую будем записывать | 127 | // валидируем отпарсенные данные моделью в которую будем записывать |
182 | $margin_model->setScenario('default'); | 128 | $margin_model->setScenario('default'); |
183 | - $arr_values = $model_validator->validate( $arr_values ); | 129 | + $data = $model_validator->validate($data); |
184 | $msg = $model_validator->getMassage(); | 130 | $msg = $model_validator->getMassage(); |
185 | - $type_msg = $model_validator->hasError() ? 'warning' : 'success'; | 131 | + $type_msg = $model_validator->hasError() ? 'warning' : 'success'; |
186 | $model_validator->close(); | 132 | $model_validator->close(); |
187 | // сохраним подготовленные данные | 133 | // сохраним подготовленные данные |
188 | - if ( !empty( $arr_values ) ) { | ||
189 | - MarginsGroups::ManualInsertWithUpdate( $arr_values, [ 'group','importer_id','margin_id' ] ); | ||
190 | - // все прошло успешно - очищаем кеш | ||
191 | - Yii::$app->getCache()->delete('parser_data'); | ||
192 | - Yii::$app->getCache()->delete('parser_configuration'); | ||
193 | - | ||
194 | - if (file_exists($configuration['file_path'])) | ||
195 | - unlink($configuration['file_path']); | ||
196 | - } | 134 | + if (!empty($data)) { |
135 | + if (MarginsGroups::ManualInsertWithUpdate($data, ['group', 'importer_id', 'margin_id'])) { | ||
136 | + // все прошло успешно - очищаем кеш | ||
137 | + $this->parserCacheHandler(2); | ||
197 | 138 | ||
139 | + if (file_exists($configuration['file_path'])) | ||
140 | + unlink($configuration['file_path']); | ||
141 | + } | ||
198 | 142 | ||
199 | - Yii::$app->session->setFlash( $type_msg, $msg ); | 143 | + } |
144 | + Yii::$app->session->setFlash($type_msg, $msg); | ||
200 | return $this->render('index', ['model' => $configuration]); | 145 | return $this->render('index', ['model' => $configuration]); |
201 | 146 | ||
202 | } else { | 147 | } else { |
203 | // не прошла валидация формы загрузки файлов | 148 | // не прошла валидация формы загрузки файлов |
204 | $errors_str = "Ошибка валидации формы загрузки файлов. "; | 149 | $errors_str = "Ошибка валидации формы загрузки файлов. "; |
205 | - foreach ($margin_model->getErrors() as $error) { | ||
206 | - $errors_str .= implode(array_values($error)); | 150 | + $this->throwStringErrorException($margin_model, 'common\components\exceptions\RgParsingException', $errors_str); |
151 | + } | ||
152 | + } | ||
153 | + | ||
154 | + protected function convertDataByConfiguration($data, $configuration) | ||
155 | + { | ||
156 | + $arr_values = []; | ||
157 | + $group = ''; | ||
158 | + $importer_id = $configuration['importer_id']; | ||
159 | + foreach ($data as $row_data) { | ||
160 | + | ||
161 | + if (isset($row_data['!group'])) { | ||
162 | + $group = $row_data['!group']; | ||
163 | + unset($row_data['!group']); | ||
164 | + } | ||
165 | + if (isset($row_data['!_null'])) { | ||
166 | + unset($row_data['!_null']); | ||
167 | + } | ||
168 | + | ||
169 | + foreach ($row_data as $key => $value) { | ||
170 | + if ($group) | ||
171 | + $row['group'] = trim($group); | ||
172 | + | ||
173 | + $row['importer_id'] = trim($importer_id); | ||
174 | + $row['margin_id'] = ltrim($key, '!'); | ||
175 | + $row['koef'] = \Yii::$app->converter->convertTo('float', $value, ['precision' => 6]); | ||
176 | + | ||
177 | + $arr_values[] = $row; | ||
207 | } | 178 | } |
208 | - throw new \ErrorException($errors_str); | ||
209 | } | 179 | } |
180 | + return $arr_values; | ||
181 | + } | ||
182 | + | ||
183 | + protected function getBasicColumns() | ||
184 | + { | ||
185 | + return Margins::getHeader(); | ||
186 | + } | ||
187 | + | ||
188 | + // подготавливает массив для валидирования моделью - MarginsGroups | ||
189 | + // для этого меняем выбранные значения именем поля - margin_id | ||
190 | + protected function getAttributesForValidate($arr) | ||
191 | + { | ||
192 | + $base_columns_arr = Margins::find()->select('id')->asArray()->all(); | ||
193 | + $base_columns_arr = array_column($base_columns_arr,'id'); | ||
194 | + | ||
195 | + array_walk( $arr, function (&$value, $key, $base_columns_arr) { | ||
196 | + if (in_array( $value, $base_columns_arr )){ | ||
197 | + $value = 'margin_id'; | ||
198 | + } | ||
199 | + }, $base_columns_arr ); | ||
210 | 200 | ||
201 | + return array_flip( $arr ); | ||
211 | } | 202 | } |
212 | 203 | ||
213 | // public function actionMail() | 204 | // public function actionMail() |
backend/views/crossing-upload/index.php
@@ -14,9 +14,10 @@ use yii\helpers\ArrayHelper; | @@ -14,9 +14,10 @@ use yii\helpers\ArrayHelper; | ||
14 | <?= $form->field($model, 'delete_prefix1')->checkbox() ?> | 14 | <?= $form->field($model, 'delete_prefix1')->checkbox() ?> |
15 | <?= $form->field($model, 'delete_prefix2')->checkbox() ?> | 15 | <?= $form->field($model, 'delete_prefix2')->checkbox() ?> |
16 | <?= $form->field($model, 'file')->fileInput()->label(false) ?> | 16 | <?= $form->field($model, 'file')->fileInput()->label(false) ?> |
17 | + <?= Html::tag('p','допустимый формат - csv') ?> | ||
17 | 18 | ||
18 | <div class="form-group"> | 19 | <div class="form-group"> |
19 | - <?= Html::submitButton(Yii::t( 'app', 'Прочитать' ), ['class' => 'btn btn-primary']) ?> | 20 | + <?= Html::submitButton(Yii::t( 'app', 'Выполнить' ), ['class' => 'btn btn-primary']) ?> |
20 | </div> | 21 | </div> |
21 | 22 | ||
22 | <?php ActiveForm::end(); | 23 | <?php ActiveForm::end(); |
backend/views/parser/error.php
@@ -7,14 +7,21 @@ | @@ -7,14 +7,21 @@ | ||
7 | 7 | ||
8 | use yii\helpers\Html; | 8 | use yii\helpers\Html; |
9 | 9 | ||
10 | -$this->title = $name; | 10 | +$this->title = 'Ошибка'; |
11 | ?> | 11 | ?> |
12 | <div class="site-error"> | 12 | <div class="site-error"> |
13 | 13 | ||
14 | <h1><?= Html::encode($this->title) ?></h1> | 14 | <h1><?= Html::encode($this->title) ?></h1> |
15 | 15 | ||
16 | <div class="alert alert-danger"> | 16 | <div class="alert alert-danger"> |
17 | - <?= nl2br(Html::encode($message)) ?> | 17 | + <?php |
18 | + echo nl2br(Html::encode($message)); | ||
19 | + if ( $action_name ) { | ||
20 | + echo "<br/>"; | ||
21 | + echo "<br/>"; | ||
22 | + echo Html::a('Вернуться', $action_name, ['class' => 'btn btn-info', 'name' => 'Return',]); | ||
23 | + } | ||
24 | + ?> | ||
18 | </div> | 25 | </div> |
19 | 26 | ||
20 | <p> | 27 | <p> |
backend/views/rg-grup/index.php
@@ -4,7 +4,7 @@ use yii\helpers\Html; | @@ -4,7 +4,7 @@ use yii\helpers\Html; | ||
4 | use backend\models\Importers; | 4 | use backend\models\Importers; |
5 | use yii\helpers\ArrayHelper; | 5 | use yii\helpers\ArrayHelper; |
6 | 6 | ||
7 | -$button_label = 'Прочитать'; | 7 | +$button_label = 'Выполнить'; |
8 | 8 | ||
9 | 9 | ||
10 | ?> | 10 | ?> |
@@ -21,6 +21,8 @@ $button_label = 'Прочитать'; | @@ -21,6 +21,8 @@ $button_label = 'Прочитать'; | ||
21 | <?= $form->field($model, 'file')->fileInput()->label(false) ?> | 21 | <?= $form->field($model, 'file')->fileInput()->label(false) ?> |
22 | <div class="form-group"> | 22 | <div class="form-group"> |
23 | <?= Html::submitButton(Yii::t( 'app', $button_label ), ['class' => 'btn btn-primary']) ?> | 23 | <?= Html::submitButton(Yii::t( 'app', $button_label ), ['class' => 'btn btn-primary']) ?> |
24 | + <?= Html::tag( 'p', 'допустимый формат xlsx') ?> | ||
25 | + | ||
24 | </div> | 26 | </div> |
25 | 27 | ||
26 | <?php ActiveForm::end(); | 28 | <?php ActiveForm::end(); |
backend/views/rg-grup/results.php
@@ -27,6 +27,6 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -27,6 +27,6 @@ $this->params['breadcrumbs'][] = $this->title; | ||
27 | </div> | 27 | </div> |
28 | 28 | ||
29 | <?php ActiveForm::end() ?> | 29 | <?php ActiveForm::end() ?> |
30 | - <?= Html::a('Вернуться', ['rg-grup/index'], ['class' => 'btn btn-primary', 'name' => 'Return',]) ?> | 30 | + <?= Html::a('Отмена', ['rg-grup/index'], ['class' => 'btn btn-primary', 'name' => 'Return',]) ?> |
31 | 31 | ||
32 | </div> | 32 | </div> |
33 | \ No newline at end of file | 33 | \ No newline at end of file |
common/components/exceptions/CrossParsingException.php
0 → 100644
1 | +<?php | ||
2 | +/** | ||
3 | + * Created by PhpStorm. | ||
4 | + * User: Tsurkanov | ||
5 | + * Date: 30.11.2015 | ||
6 | + * Time: 17:36 | ||
7 | + */ | ||
8 | + | ||
9 | +namespace common\components\exceptions; | ||
10 | + | ||
11 | + | ||
12 | +use yii\base\UserException; | ||
13 | + | ||
14 | +class CrossParsingException extends UserException { | ||
15 | + | ||
16 | +} | ||
0 | \ No newline at end of file | 17 | \ No newline at end of file |
common/components/exceptions/PriceParsingException.php
0 → 100644
1 | +<?php | ||
2 | +/** | ||
3 | + * Created by PhpStorm. | ||
4 | + * User: Tsurkanov | ||
5 | + * Date: 30.11.2015 | ||
6 | + * Time: 17:36 | ||
7 | + */ | ||
8 | + | ||
9 | +namespace common\components\exceptions; | ||
10 | + | ||
11 | + | ||
12 | +use yii\base\UserException; | ||
13 | + | ||
14 | +class PriceParsingException extends UserException { | ||
15 | + | ||
16 | +} | ||
0 | \ No newline at end of file | 17 | \ No newline at end of file |
common/components/exceptions/RgParsingException.php
0 → 100644
1 | +<?php | ||
2 | +/** | ||
3 | + * Created by PhpStorm. | ||
4 | + * User: Tsurkanov | ||
5 | + * Date: 30.11.2015 | ||
6 | + * Time: 17:36 | ||
7 | + */ | ||
8 | + | ||
9 | +namespace common\components\exceptions; | ||
10 | + | ||
11 | + | ||
12 | +use yii\base\UserException; | ||
13 | + | ||
14 | +class RgParsingException extends UserException { | ||
15 | + | ||
16 | +} | ||
0 | \ No newline at end of file | 17 | \ No newline at end of file |
common/models/MarginsGroups.php
@@ -31,8 +31,9 @@ class MarginsGroups extends \yii\db\ActiveRecord | @@ -31,8 +31,9 @@ class MarginsGroups extends \yii\db\ActiveRecord | ||
31 | public function rules() | 31 | public function rules() |
32 | { | 32 | { |
33 | return [ | 33 | return [ |
34 | - [['importer_id', 'margin_id', 'koef'], 'required', 'on' => 'default'], | ||
35 | - ['group', 'required', 'on' => ['default','form_upload_validation']], | 34 | + [['group','importer_id', 'margin_id', 'koef'], 'required', 'on' => 'default'], |
35 | + [['margin_id'], 'required', 'on' => 'form_upload_validation', 'message' => 'Должен быть указан хотя бы один тип цен.'], | ||
36 | + [['group'], 'required', 'on' => 'form_upload_validation', 'message' => 'Группа RG - обязательное поле.'], | ||
36 | [['importer_id', 'margin_id'], 'integer' , 'on' => 'default'], | 37 | [['importer_id', 'margin_id'], 'integer' , 'on' => 'default'], |
37 | [['koef'], 'number' , 'on' => 'default'], | 38 | [['koef'], 'number' , 'on' => 'default'], |
38 | [['timestamp'], 'safe' , 'on' => 'default'], | 39 | [['timestamp'], 'safe' , 'on' => 'default'], |
@@ -83,7 +84,6 @@ class MarginsGroups extends \yii\db\ActiveRecord | @@ -83,7 +84,6 @@ class MarginsGroups extends \yii\db\ActiveRecord | ||
83 | //@todo - вынести все ручные инсерты в отдельный класс | 84 | //@todo - вынести все ручные инсерты в отдельный класс |
84 | public static function ManualInsertWithUpdate($data, $keys) | 85 | public static function ManualInsertWithUpdate($data, $keys) |
85 | { | 86 | { |
86 | - // \common\components\CustomVarDamp::dumpAndDie($data); | ||
87 | $table_name = self::tableName(); | 87 | $table_name = self::tableName(); |
88 | $keys_arr = array_keys($data[0]); | 88 | $keys_arr = array_keys($data[0]); |
89 | // найдем те поля которые не являются ключами. Их нужно будет при дубляже апдейтить | 89 | // найдем те поля которые не являются ключами. Их нужно будет при дубляже апдейтить |
@@ -107,9 +107,9 @@ class MarginsGroups extends \yii\db\ActiveRecord | @@ -107,9 +107,9 @@ class MarginsGroups extends \yii\db\ActiveRecord | ||
107 | 107 | ||
108 | // добавим фрагмент с апдейтом при дубляже | 108 | // добавим фрагмент с апдейтом при дубляже |
109 | $query = "{$query_insert} {$query_update}"; | 109 | $query = "{$query_insert} {$query_update}"; |
110 | - // \common\components\CustomVarDamp::dumpAndDie($query); | ||
111 | Yii::$app->db->createCommand($query)->execute(); | 110 | Yii::$app->db->createCommand($query)->execute(); |
112 | 111 | ||
113 | } | 112 | } |
113 | + return true; | ||
114 | } | 114 | } |
115 | } | 115 | } |