| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- <?php
- namespace App\Http\Controllers;
- use App\Jobs\Import\ImportJob;
- use App\Models\Import;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Log;
- use Illuminate\Support\Facades\Storage;
- use Illuminate\Support\Str;
- class ImportController extends Controller
- {
- protected array $data = [
- 'active' => 'import',
- 'title' => 'Импорт',
- 'id' => 'import',
- 'header' => [
- 'id' => 'ID',
- 'type' => 'Тип',
- 'status' => 'Статус',
- 'created_at' => 'Создано',
- 'updated_at' => 'Изменено',
- ],
- 'searchFields' => [
- 'id',
- ],
- ];
- /**
- * Display a listing of the resource.
- */
- public function index(Request $request)
- {
- session(['gp_import' => $request->all()]);
- $model = new Import;
- // fill filters
- $this->data['ranges'] = [];
- $this->createFilters($model, 'type', 'status');
- $this->createDateFilters($model, 'created_at', 'updated_at');
- $q = $model::query();
- $q->withoutGlobalScopes();
- $this->acceptFilters($q, $request);
- $this->acceptSearch($q, $request);
- $this->setSortAndOrderBy($model, $request);
- $q->orderBy($this->data['sortBy'], $this->data['orderBy']);
- $this->data['imports'] = $q->paginate(session('per_page', config('pagination.per_page')))->withQueryString();
- return view('import.index', $this->data);
- }
- public function store(Request $request)
- {
- // validate data
- $request->validate([
- 'type' => 'required|in:orders,reclamations',
- 'import_file' => 'required|file',
- ]);
- // load and save file
- $path = Str::random(2) . '/' . Str::uuid() . '.' .$request->file('import_file')->getClientOriginalExtension();
- Storage::disk('upload')->put($path, $request->file('import_file')->getContent());
- $import = Import::query()->create([
- 'type' => $request->type,
- 'status' => 'new',
- 'filename' => $path,
- ]);
- $import->refresh();
- ImportJob::dispatch($import, $request->user()->id);
- Log::info('Import job ' . $request->type . ' created!');
- return redirect()->route('import.index', session('gp_import'))->with(['success' => 'Задача импорта успешно создана!']);
- }
- public function show(Import $import)
- {
- $this->data['import'] = $import;
- return view('import.show', $this->data);
- }
- }
|