search; if ($search) { $this->searchQuery( $siteModels, $search, null, 'name', ); } $searchFields = trans('Nom'); /** Sort columns with a query */ $this->sortQuery($siteModels); /** Custom pagination */ $siteModels = $this->customPaginate($siteModels, $request->pagination); return view('bo.pages.sites.index', compact('siteModels', 'search', 'searchFields')); } /** * Show model action. * * @param \App\Models\Site $site * @return \Illuminate\Contracts\View\View */ public function show(Site $site): \Illuminate\Contracts\View\View { return view('bo.pages.sites.show', ['siteModel' => $site]); } /** * Show the form for creating a new resource. * * @param \App\Models\Site $site * @return \Illuminate\Contracts\View\View */ public function create(Site $site): \Illuminate\Contracts\View\View { $userModels = User::orderBy('name', 'ASC')->get(); return view('bo.pages.sites.create', [ 'siteModel' => $site, 'userModels' => $userModels ]); } /** * Store a newly created resource in storage. * * @param \App\Http\Requests\Bo\Sites\StoreSiteRequest $request * @return \Illuminate\Http\RedirectResponse */ public function store(StoreSiteRequest $request): \Illuminate\Http\RedirectResponse { return DB::transaction(function () use ($request) { $site = new Site(); $site->fill($request->validated()); $site->users()->attach(collect($request->validated('users'))->pluck('id')); if ($site->saveOrFail()) { return redirect() ->route('bo.sites.edit', $site) ->with('success', trans( 'crud.messages.has_been_created', ['model' => Str::singular(trans('models.classes.sites'))] )); } return redirect() ->back() ->with('error', trans( 'crud.messages.cannot_be_created', ['model' => Str::singular(trans('models.classes.sites'))] )); }); } /** * Show the form for editing the specified resource. * * @param \App\Models\Site $site * @return \Illuminate\Contracts\View\View */ public function edit(Site $site): \Illuminate\Contracts\View\View { $userModels = User::orderBy('name', 'ASC')->get(); return view('bo.pages.sites.edit', [ 'siteModel' => $site, 'userModels' => $userModels ]); } /** * Update the specified resource in storage. * * @param \App\Http\Requests\Bo\Sites\UpdateSiteRequest $request * @param \App\Models\Site $site * @return \Illuminate\Http\RedirectResponse */ public function update(UpdateSiteRequest $request, Site $site): \Illuminate\Http\RedirectResponse { return DB::transaction(function () use ($request, $site) { $site->fill($request->validated()); $site->users()->sync(collect($request->validated('users'))->pluck('id')); if ($site->saveOrFail()) { return redirect() ->route('bo.sites.edit', $site) ->with('success', trans( 'crud.messages.has_been_updated', ['model' => Str::singular(trans('models.classes.sites'))] )); } //end if return redirect() ->back() ->with('error', trans( 'crud.messages.cannot_be_updated', ['model' => Str::singular(trans('models.classes.sites'))] )); }); } /** * Remove the specified resource from storage. * * @param \App\Models\Site $site * @return \Illuminate\Http\RedirectResponse */ public function destroy(Site $site): \Illuminate\Http\RedirectResponse { return DB::transaction(function () use ($site) { if ($site->deleteOrFail()) { $site->users()->detach(); return redirect() ->route('bo.sites.index') ->with('success', trans( 'crud.messages.has_been_deleted', ['model' => Str::singular(trans('models.classes.sites'))] )); } return redirect() ->back() ->with('error', trans( ':crud.messages.cannot_be_deleted', ['model' => Str::singular(trans('models.classes.sites'))] )); }); } /** * Get a paginate resource. * * @param \Illuminate\Http\Request $request * @return Illuminate\Http\JsonResponse */ public function jsonPaginate(Request $request): \Illuminate\Http\JsonResponse { return DB::transaction(function () use ($request) { $model = $request->targetModel; $search = $request->search; $models = $model::where("name", "LIKE", "%{$search}%")->orderBy("name", "ASC"); return ToolboxHelper::jsonPaginate($this->customPaginate($models, $request->pagination)); }); } }