public function import(Request $request)
 {
     $filePath = Session::pull('dataTransferResult.FilesPath');
     $createdProductCategories = [];
     $createdProductLines = [];
     Excel::selectSheets('Категории')->load($filePath . '/products.xlsx', function ($reader) use($filePath, $createdProductCategories, $createdProductLines) {
         foreach ($reader->toArray() as $row) {
             if ($row['nomer'] == null) {
                 continue;
             }
             $productCategory = ProductCategory::findOrNew($row['nomer']);
             if ($row['nomer'] > ProductCategory::max('id')) {
                 $imagePattern = '/img/product-category-' . $row['nomer'];
                 $findResults = File::glob($filePath . $imagePattern . '*');
                 $imageOriginalPath = $findResults[0];
                 $imageExt = File::extension($imageOriginalPath);
                 $imagePath = $filePath . $imagePattern . '.' . $imageExt;
                 $newImagePath = 'img/uploads/' . str_random(32) . '.' . $imageExt;
                 File::move($imagePath, public_path() . '/' . $newImagePath);
                 $productCategory->id = $row['nomer'];
                 $productCategory->title = $row['nazvanie'];
                 $productCategory->image = $newImagePath;
                 $createdProductCategories[$row['nomer']] = $productCategory;
                 $productCategory->save();
             }
         }
         Excel::selectSheets('Линейки продукции')->load($filePath . '/products.xlsx', function ($reader) use($filePath, $createdProductCategories, $createdProductLines) {
             foreach ($reader->toArray() as $row) {
                 if ($row['nomer'] == null) {
                     continue;
                 }
                 if ($row['nomer'] > ProductLine::max('id')) {
                     $imagePattern = '/img/product-line-' . $row['nomer'];
                     $findResults = File::glob($filePath . $imagePattern . '*');
                     $imageOriginalPath = $findResults[0];
                     $imageExt = File::extension($imageOriginalPath);
                     $imagePath = $filePath . $imagePattern . '.' . $imageExt;
                     $newImagePath = 'img/uploads/' . str_random(32) . '.' . $imageExt;
                     File::move($imagePath, public_path() . '/' . $newImagePath);
                     $createdProductLines[$row['nomer']] = ProductLine::create(['id' => $row['nomer'], 'product_category_id' => $row['kategoriya'], 'title' => $row['nazvanie'], 'image' => $newImagePath]);
                 }
             }
             Excel::selectSheets('Продукция')->load($filePath . '/products.xlsx', function ($reader) use($filePath, $createdProductCategories, $createdProductLines) {
                 foreach ($reader->toArray() as $row) {
                     if ($row['nomer'] == null) {
                         continue;
                     }
                     $imagePattern = '/img/product-' . $row['nomer'];
                     $findResults = File::glob($filePath . $imagePattern . '*');
                     $imageOriginalPath = $findResults[0];
                     $imageExt = File::extension($imageOriginalPath);
                     $imagePath = $filePath . $imagePattern . '.' . $imageExt;
                     $newImagePath = 'img/uploads/' . str_random(32) . '.' . $imageExt;
                     File::move($imagePath, public_path() . '/' . $newImagePath);
                     $productCategoryId = $row['kategoriya'] == null ? null : $row['kategoriya'];
                     $productLineId = $row['lineyka_produktsii'] == null ? null : $row['lineyka_produktsii'];
                     $product = new Product(['title' => $row['nazvanie'], 'image' => $newImagePath, 'rating' => $row['reyting']]);
                     if ($productCategoryId != null) {
                         if (array_key_exists(intval($row['kategoriya']), $createdProductCategories)) {
                             $product->productCategory()->associate($createdProductCategories[$row['kategoriya']]);
                         } else {
                             $product->productCategory()->associate(ProductCategory::find($productCategoryId));
                         }
                     }
                     if ($productLineId != null) {
                         if (array_key_exists(intval($row['lineyka_produktsii']), $createdProductLines)) {
                             $product->productLine()->associate($createdProductLines[$row['lineyka_produktsii']]);
                         } else {
                             $product->productLine()->associate(ProductLine::find([$row['lineyka_produktsii']]));
                         }
                     }
                     $product->save();
                     $imagePattern = '/img/product-' . $row['nomer'] . '-color-';
                     $findResults = File::glob($filePath . $imagePattern . '*');
                     foreach ($findResults as $findResult) {
                         $newImagePath = 'img/uploads/' . str_random(32) . '.' . $imageExt;
                         $colorCode = substr($findResult, strpos($findResult, 'color') + 6, strpos($findResult, '.') - strpos($findResult, 'color') - 6);
                         File::move($findResult, public_path() . '/' . $newImagePath);
                         $productColor = new ProductColor(['image' => $newImagePath]);
                         $colorNumber = substr($findResult, strpos($findResult, 'color') + 6, strpos($findResult, '.') - strpos($findResult, 'color') - 6);
                         $imagePattern = '/img/product-' . $row['nomer'] . '-image-' . $colorNumber;
                         $findProductColorImageResults = File::glob($filePath . $imagePattern . '*');
                         $productImagePath = '';
                         if (count($findProductColorImageResults) != 0) {
                             $imageOriginalPath = $findProductColorImageResults[0];
                             $productImagePath = 'img/uploads/' . str_random(32) . '.' . $imageExt;
                             File::move($imageOriginalPath, public_path() . '/' . $productImagePath);
                         }
                         $productColor->product_image = $productImagePath;
                         $productColor->product_id = $product->id;
                         $productColor->code = $colorCode;
                         $product->productColors()->save($productColor);
                     }
                 }
                 File::cleanDirectory(public_path() . '/resources/uploads/');
             });
         });
     });
     return redirect()->route('admin.dataTransfer.index');
 }