merge([ 'group' => optional(Group::whereType('trading')->where('is_default', true)->first())->id ]); } $subgroupsWithTradings = Subgroup::with(['tradings' => function ($query) { $query ->where('group_id', request('group')) ->where('locale', app()->getLocale()); }]) ->where('group_id', request('group')) ->where('locale', app()->getLocale()) ->simplePaginate(50); $groups = Group::whereType('trading')->get(); $filters = array_filter(request()->all([ 'group', ])); if (array_key_exists('category', $filters)) { $filters['category'] = intval($filters['category']); } if (array_key_exists('group', $filters)) { $filters['group'] = intval($filters['group']); } return Inertia::render('Tradings', [ 'text' => settings('text')[app()->getLocale()], 'filters' => $filters, 'subgroupsWithTradings' => SubgroupResource::collection($subgroupsWithTradings), 'groups' => fn () => $groups, ]); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function import() { request()->validate([ 'group' => ['exists:groups,id'], 'file' => ['required', 'mimes:xlsx'], ]); if (!$group = Group::find(request('group'))) { $group = Group::create([ 'title' => 'New group', 'type' => 'export', 'is_default' => true ]); } DB::beginTransaction(); try { $group->tradings()->whereLocale(app()->getLocale())->delete(); $group->subgroups()->whereLocale(app()->getLocale())->delete(); } catch (\Throwable $th) { Log::info($th); DB::rollback(); return redirect()->route('tradings'); } DB::commit(); try { $id = now()->unix(); session(['import' => $id]); $file = request()->file('file')->storeAs('uploads', $filename = $group->filename); $group->update(['file' => $filename]); Excel::queueImport(new TradingsImport($id, $group, app()->getLocale()), $file); } catch (\Throwable $th) { info('error here'); info($th->getMessage()); } return redirect()->route('tradings'); } public function status() { $id = session('import'); return response([ 'started' => filled(cache("start_date_$id")), 'finished' => filled(cache("end_date_$id")), 'current_row' => (int) cache("current_row_$id"), 'total_rows' => (int) cache("total_rows_$id"), ]); } }