search) { $actus = $this->searchQuery( $actus, $request->search, 'title', 'header', 'content', 'status' ); } $searchFields = trans('Titre, Entête, Contenu'); $actus = $this->sortQuery($actus, ['tags']); $actus = $actus->paginate(); return view('bo.actus.index', array_merge( \compact('actus', 'searchFields'), ['ignore' => ['tags']] )); } public function create(Actu $actu) { $tags = Tag::all(); return view('bo.actus.create', ['actu' => $actu, 'tags' => $tags]); } public function store(StoreActuRequest $request) { $actu = new Actu($request->validated()); $this->storeUploadedImage($request, $actu, 'picture'); $actu->saveOrFail(); if ($request->tags) { $actu->tags()->sync($request->tags); } else { $actu->tags()->sync(Tag::whereDefault(true)->pluck('id')->all()); } $actu->saveOrFail(); return redirect()->route('bo.actus.edit', $actu) ->with('success', 'Actu enregistrée'); } public function edit(Actu $actu) { $tags = Tag::all(); return view('bo.actus.edit', ['actu' => $actu, 'tags' => $tags]); } public function update(UpdateActuRequest $request, Actu $actu) { $actu->fill($request->validated()); if ($request->tags) { $actu->tags()->sync($request->tags); } else { $actu->tags()->sync(Tag::whereDefault(true)->pluck('id')->all()); } $this->storeUploadedImage($request, $actu, 'picture'); $actu->saveOrFail(); return redirect()->route('bo.actus.edit', $actu) ->with('success', 'Actu enregistrée'); } public function destroy(Actu $actu) { if (File::exists($actu->picture)) { File::delete($actu->picture); } if (!$actu->delete()) { return redirect()->route('bo.actus.edit', $actu) ->with('error', 'Le contenu n\'a pas pu être supprimé'); } return redirect()->route('bo.actus.index') ->with('warning', 'Le contenu a bien été supprimé'); } public function highlights() { $actus = Actu::where('status', true)->get(); return view('bo.actus.highlights', compact('actus')); } public function storeHighlights(StoreActusHighlights $request) { $actus = $request->actus; if ($actus !== null) { $oldHighlights = Actu::select('id')->where('front', 1)->get(); foreach ($actus as $actu) { if (!$oldHighlights->contains($actu)) { $r = Actu::findOrFail($actu); $r->front = true; $r->save(); } } foreach ($oldHighlights as $oldHighlight) { if (!in_array($oldHighlight->id, $actus)) { $oldHighlight->front = false; $oldHighlight->save(); } } } else { // ! Dont do mass update as it wont trigger model events $actus = Actu::where('front', true)->get(); foreach ($actus as $actu) { $actu->front = false; $actu->save(); } }//end if return redirect()->route('bo.actus.highlights')->with('success', 'Enregistré !'); } }