search) { $this->searchQuery( $concepts, $request->search, null, 'seo_title', 'name', 'title', 'subtitle', ); } $this->sortQuery($concepts); $searchFields = trans('Name'); $conceptModels = $concepts->paginate(10); return view('bo.pages.concepts.index', compact('conceptModels', 'searchFields')); } /** * Show the form for creating a new resource. * * @return \Illuminate\Contracts\View\View|\Illuminate\Http\RedirectResponse */ public function create(): \Illuminate\Contracts\View\View|\Illuminate\Http\RedirectResponse { if (Concept::count() === 8) { return back() ->with( 'error', trans( 'You already created 8 :models. Please delete or edit an existing one.', ['models' => Str::of(trans('models.classes.concept'))->plural()] ) ); } return view('bo.pages.concepts.create'); } /** * Store a newly created resource in storage. * * @param \App\Http\Requests\Bo\Concepts\StoreConceptRequest $request * @return \Illuminate\Http\RedirectResponse */ public function store(StoreConceptRequest $request): \Illuminate\Http\RedirectResponse { return DB::transaction(function () use ($request) { $concept = new Concept(); $concept->data = Concept::getEmptyData(); $concept->fill(array_replace_recursive( \json_decode(\json_encode($concept->toArray()), true), $request->validated() )); if ($concept->saveOrFail()) { return redirect() ->route('bo.concepts.edit', $concept) ->with('success', trans( 'crud.messages.has_been_created', ['model' => trans('models.classes.concept')] )); } return redirect() ->back() ->with('error', trans( 'crud.messages.cannot_be_created', ['model' => trans('models.classes.concept')] )); }); } /** * Show the form for editing the specified resource. * * @param \App\Models\Concept $concept * @return \Illuminate\Contracts\View\View */ public function edit(Concept $concept): \Illuminate\Contracts\View\View { return view('bo.pages.concepts.edit', [ 'conceptModel' => $concept ]); } /** * Update the specified resource in storage. * * @param \App\Http\Requests\Bo\Concepts\UpdateConceptRequest $request * @param \App\Models\Concept $concept * @return \Illuminate\Http\RedirectResponse */ public function update(UpdateConceptRequest $request, Concept $concept): \Illuminate\Http\RedirectResponse { return DB::transaction(function () use ($request, $concept) { $concept->fill(array_replace_recursive( \json_decode(\json_encode($concept->toArray()), true), $request->validated() )); if ($concept->saveOrFail()) { return redirect() ->route('bo.concepts.edit', $concept) ->with('success', trans( 'crud.messages.has_been_updated', ['model' => trans('models.classes.concept')] )); } return redirect() ->back() ->with('error', trans( 'crud.messages.cannot_be_updated', ['model' => trans('models.classes.concept')] )); }); } /** * Remove the specified resource from storage. * * @param \App\Models\Concept $concept * @return \Illuminate\Http\RedirectResponse */ public function destroy(Concept $concept): \Illuminate\Http\RedirectResponse { if ($concept->deleteOrFail()) { return redirect() ->route('bo.concepts.index') ->with('success', trans( 'crud.messages.has_been_deleted', ['model' => trans('models.classes.concept')] )); } return redirect() ->back() ->with('error', trans( ':crud.messages.cannot_be_deleted', ['model' => trans('models.classes.concept')] )); } }