ProductController.php 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Jobs\Import\ImportCatalog;
  4. use App\Models\Product;
  5. use Illuminate\Http\RedirectResponse;
  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(Request $request)
  17. {
  18. $this->data['products'] = Product::query()->paginate()->withQueryString();
  19. return view('catalog.index', $this->data);
  20. }
  21. public function show()
  22. {
  23. }
  24. /**
  25. * @param Request $request
  26. * @return RedirectResponse
  27. */
  28. public function import(Request $request)
  29. {
  30. // validate data
  31. $request->validate([
  32. 'year' => 'required|integer|min:2000|max:' . (int)date('Y', strtotime('next year')),
  33. 'import_file' => 'file',
  34. ]);
  35. // load and save file
  36. $path = Str::random(2) . '/' . Str::uuid() . '.' .$request->file('import_file')->getClientOriginalExtension();
  37. Storage::disk('upload')->put($path, $request->file('import_file')->getContent());
  38. // dispatch job
  39. ImportCatalog::dispatch($path, $request->year, $request->user()->id);
  40. Log::info('ImportCatalog job created!');
  41. return redirect()->route('catalog.index')->with(['success' => 'Задача импорта успешно создана!']);
  42. }
  43. }