title; $catchPhrase = $request->catch_phrase; $tags = $request->tags; $picture = $request->picture; $ingredients = $request->ingredients; $preparation = $request->preparation; $advice = $request->advice; $keywords = $request->keywords; $type = $request->type; $preparationTime = $request->preparation_time; $cookingTime = $request->cooking_time; $numberPeople = $request->number_people; $difficulty = $request->difficulty; /* TODO : Gérer les produits associés $associatedProduct1 = $request->associated_product1; $associatedProduct2 = $request->associated_product2; */ $consumptionTimes = $request->consumption_times; $status = 0; $notification = $request->notification === null ? 0 : 1; $request->validate([ 'title' => 'required|max:100', 'catch_phrase' => 'max:100', 'tags' => 'required|max:255', 'picture' => 'required|image|mimes:jpeg,png,jpg|max:2048|dimensions:width=683,height=434', 'ingredients' => 'required|max:4000', 'preparation' => 'required|max:4000', 'advice' => 'max:1000', 'keywords' => 'max:255', ]); $imageName = Str::slug($title) .'.'.$picture->extension(); $picture->move(public_path('images/recettes/' . date('Y') . '/' . date('m') . '/'), $imageName); $r = new Recipes(); $r->title = $title; $r->catch_phrase = $catchPhrase; $r->tags = $tags; $r->picture = date('Y') . '/' . date('m') . '/' . $imageName; $r->ingredients = $ingredients; $r->preparation = $preparation; $r->advice = $advice; $r->keywords = $keywords; $r->type = $type; $r->preparation_time = $preparationTime; $r->cooking_time = $cookingTime; $r->number_people = $numberPeople; $r->difficulty = $difficulty; /* TODO : Gérer les produits associés $r->associated_product1 = $associatedProduct1; $r->associated_product2 = $associatedProduct2; */ $r->consumption_times = $consumptionTimes; $r->status = $status; $r->notification = $notification; $r->save(); // TODO : Synchroniser les éléments avec la table Recipes_News /* $associatedNews = $request->associated_news; $r->news()->sync($associatedNews); */ return redirect()->route('bo.recipes.index'); } public function edit($id) { $r = Recipes::findOrFail($id); $c = ConsumptionTimes::all(); return view('bo.recipes.edit') ->with('r', $r) ->with('c', $c) ; } public function update(Request $request, $id) { $title = $request->title; $catchPhrase = $request->catch_phrase; $tags = $request->tags; $picture = $request->picture; $ingredients = $request->ingredients; $preparation = $request->preparation; $advice = $request->advice; $keywords = $request->keywords; $type = $request->type; $preparationTime = $request->preparation_time; $cookingTime = $request->cooking_time; $numberPeople = $request->number_people; $difficulty = $request->difficulty; /* TODO : Gérer les produits associés $associatedProduct1 = $request->associated_product1; $associatedProduct2 = $request->associated_product2; */ $consumptionTimes = $request->consumption_times; $status = $request->status === null ? 0 : 1; $notification = $request->notification === null ? 0 : 1; $request->validate([ 'title' => 'required|max:100', 'catch_phrase' => 'max:100', 'tags' => 'required|max:255', 'ingredients' => 'required|max:4000', 'preparation' => 'required|max:4000', 'advice' => 'max:1000', 'keywords' => 'max:255', ]); if ($picture !== null) { $request->validate([ 'picture' => 'required|image|mimes:jpeg,png,jpg|max:2048|dimensions:width=683,height=434', ]); } $r = Recipes::findOrFail($id); if ($picture !== null) { if (file_exists(public_path('images/recettes/') . $r->picture)) unlink(public_path('images/recettes/') . $r->picture); $imageName = Str::slug($title) .'.'.$picture->extension(); $picture->move(public_path('images/recettes/' . date('Y') . '/' . date('m') . '/'), $imageName); } $r->title = $title; $r->catch_phrase = $catchPhrase; $r->tags = $tags; if ($picture !== null) $r->picture = date('Y') . '/' . date('m') . '/' . $imageName; $r->ingredients = $ingredients; $r->preparation = $preparation; $r->advice = $advice; $r->keywords = $keywords; $r->type = $type; $r->preparation_time = $preparationTime; $r->cooking_time = $cookingTime; $r->number_people = $numberPeople; $r->difficulty = $difficulty; /* TODO : Gérer les produits associés $r->associated_product1 = $associatedProduct1; $r->associated_product2 = $associatedProduct2; */ $r->consumption_times = $consumptionTimes; $r->status = $status; $r->notification = $notification; $r->save(); // TODO : Synchroniser les éléments avec la table Recipes_News /* $associatedNews = $request->associated_news; $r->news()->sync($associatedNews); */ return redirect()->route('bo.recipes.edit', $r->id)->with('success', 'Enregistré !'); } public function destroy($id) { $r = Recipes::findOrFail($id); if (file_exists(public_path('images/recettes/') . $r->picture)); unlink(public_path('images/recettes/') . $r->picture); $r->delete(); // TODO : Supprimer les lignes de la table Recipes_News dont l'id est égal à $r->id; return redirect()->route('bo.recipes.index'); } public function highlights() { $r = Recipes::all(); return view('bo.recipes.highlights', compact('r')); } public function storeHighlights(Request $request) { $recipes = $request->recipes; if ($recipes !== null) { $oldHighlights = Recipes::select('id')->where('highlight', 1)->get(); foreach ($recipes as $recipe) { if (!$oldHighlights->contains($recipe)) { $r = Recipes::findOrFail($recipe); $r->highlight = 1; $r->save(); } } foreach ($oldHighlights as $oldHighlight) { if (!in_array($oldHighlight->id, $recipes)) { $oldHighlight->highlight = 0; $oldHighlight->save(); } } } else { Recipes::where('highlight', 1)->update(['highlight' => 0]); } return redirect()->route('bo.recipes.highlights')->with('success', 'Enregistré !'); } }