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\Http\Response */ public function create() { if (Concept::count() === 8) { return back() ->with( 'error', trans( 'You already created 8 :models. Please delete or edit an existing one.', ['models' => trans('models.classes.concepts')] ) ); } $conceptData = Concept::getEmptyData(); return view('bo.pages.concepts.create', compact('conceptData')); } /** * Store a newly created resource in storage. * * @param \App\Http\Requests\Bo\Concepts\StoreConceptRequest $request * @return \Illuminate\Http\Response */ public function store(StoreConceptRequest $request) { 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( ':model has been created', ['model' => Str::singular(trans('models.classes.concepts'))] )); } return redirect() ->back() ->with('error', trans( ':model cannot be created', ['model' => Str::singular(trans('models.classes.concepts'))] )); }); } /** * Show the form for editing the specified resource. * * @param \App\Models\Concept $concept * @return \Illuminate\Http\Response */ public function edit(Concept $concept) { 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\Response */ public function update(UpdateConceptRequest $request, Concept $concept) { 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( 'Modification(s) from :model saved', ['model' => Str::singular(trans('models.classes.concepts'))] )); } return redirect() ->back() ->with('error', trans( 'Modification(s) from :model cannot be saved', ['model' => Str::singular(trans('models.classes.concepts'))] )); }); } /** * Remove the specified resource from storage. * * @param \App\Models\Concept $concept * @return \Illuminate\Http\Response */ public function destroy(Concept $concept) { if ($concept->deleteOrFail()) { return redirect() ->route('bo.concepts.index') ->with('success', trans( ':model has been deleted', ['model' => Str::singular(trans('models.classes.concepts'))] )); } return redirect() ->back() ->with('error', trans( ':model cannot be deleted', ['model' => Str::singular(trans('models.classes.concepts'))] )); } }