ProductController.php 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Jobs\Import\ImportCatalog;
  4. use App\Models\Product;
  5. use Exception;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Support\Facades\Log;
  8. use Illuminate\Support\Facades\Storage;
  9. use Illuminate\Support\Str;
  10. class ProductController extends Controller
  11. {
  12. protected array $data = [
  13. 'active' => 'catalog',
  14. 'title' => 'Каталог',
  15. ];
  16. public function index()
  17. {
  18. $this->data['products'] = Product::query()->paginate();
  19. return view('catalog.index', $this->data);
  20. }
  21. public function show()
  22. {
  23. }
  24. public function import(Request $request)
  25. {
  26. // validate data
  27. $request->validate([
  28. 'year' => 'required|integer|min:2000|max:' . (int)date('Y', strtotime('next year')),
  29. 'import_file' => 'file',
  30. ]);
  31. // load and save file
  32. $path = Str::random(2) . '/' . Str::uuid() . '.' .$request->file('import_file')->getClientOriginalExtension();
  33. Storage::disk('upload')->put($path, $request->file('import_file')->getContent());
  34. // dispatch job
  35. ImportCatalog::dispatch($path, $request->year, $request->user()->id);
  36. Log::info('ImportCatalog job created!');
  37. return redirect()->route('catalog.index')->with(['success' => 'Задача импорта успешно создана!']);
  38. }
  39. }