get(); return view('bo.recipes.create', compact('c', 'p', 'a')); } public function store(Request $request) { $title = $request->title; $slug = Str::slug($title); $catchPhrase = $request->catch_phrase; $seo_title = $request->seo_title; $seo_description = $request->seo_description; $tags = $request->tags; $picture = $request->picture; $ingredients = $request->ingredients; $preparation = $request->preparation; $advice = $request->advice; $keywords = $request->keywords; $type = $request->type; $videoLink = $request->video_link; $preparationTime = $request->preparation_time; $cookingTime = $request->cooking_time; $numberPeople = $request->number_people; $difficulty = $request->difficulty; $associatedProduct1 = $request->associated_product1; $associatedProduct2 = $request->associated_product2; $associatedP = []; if ($associatedProduct1) { $associatedP[] = intval($associatedProduct1); } if ($associatedProduct2) { $associatedP[] = intval($associatedProduct2); } $consumptionTimes = $request->consumption_times; $status = 0; $notification = $request->notification === null ? 0 : 1; $request->validate([ 'title' => 'required|max:100', 'seo_title' => 'required|max:255', 'seo_description' => 'required|max:255', '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', ]); if ($type == "1") { $request->validate([ 'video_link' => 'required|max:255', ]); } $imageName = $slug . '.' . $picture->extension(); $picture->move(public_path('uploads/images/recettes/' . date('Y') . '/' . date('m') . '/'), $imageName); $r = new Recipes(); $r->title = $title; $r->seo_title = $seo_title; $r->seo_description = $seo_description; $r->slug = $slug; $r->catch_phrase = $catchPhrase; $r->tags = $tags; $r->picture = 'uploads/images/recettes/' . date('Y') . '/' . date('m') . '/' . $imageName; $r->ingredients = $ingredients; $r->preparation = $preparation; $r->advice = $advice; $r->keywords = $keywords; $r->type = intval($type); if ($type == "1") { $r->video_link = $videoLink; } $r->preparation_time = $preparationTime; $r->cooking_time = $cookingTime; $r->number_people = $numberPeople; $r->difficulty = intval($difficulty); $r->products()->sync($associatedP); $r->consumption_times_id = $consumptionTimes; $r->status = $status; $r->notification = $notification; $r->save(); if ($notification === 1) { event(new NewNotification(NotificationType::recipe(), route('recipes.show', $slug), $r)); } $associatedNews = $request->associated_news; $r->articles()->sync($associatedNews); return redirect()->route('bo.recipes.index'); } public function edit(Recipes $r) { $c = ConsumptionTimes::all(); $p = Products::all(); $a = Articles::where('type', ArticleCategory::actu())->get(); $raIds = []; foreach ($r->articles as $recipe_article) { $raIds[] = $recipe_article->id; } return view('bo.recipes.edit', compact('c', 'r', 'a', 'p'))->with('raIds', $raIds); } public function update(Request $request, Recipes $r) { $title = $request->title; $slug = Str::slug($title); $catchPhrase = $request->catch_phrase; $seo_title = $request->seo_title; $seo_description = $request->seo_description; $tags = $request->tags; $picture = $request->picture; $ingredients = $request->ingredients; $preparation = $request->preparation; $advice = $request->advice; $keywords = $request->keywords; $type = $request->type; $videoLink = $request->video_link; $preparationTime = $request->preparation_time; $cookingTime = $request->cooking_time; $numberPeople = $request->number_people; $difficulty = $request->difficulty; $associatedProduct1 = $request->associated_product1; $associatedProduct2 = $request->associated_product2; $associatedP = []; if ($associatedProduct1) { $associatedP[] = intval($associatedProduct1); } if ($associatedProduct2) { $associatedP[] = intval($associatedProduct2); } $consumptionTimes = $request->consumption_times; $status = $request->status === null ? 0 : 1; $notification = $request->notification === null ? 0 : 1; $request->validate([ 'title' => 'required|max:100', 'seo_title' => 'required|max:255', 'seo_description' => 'required|max:255', 'catch_phrase' => 'max:100', 'tags' => 'required|max:255', 'ingredients' => 'required|max:4000', 'preparation' => 'required|max:4000', 'advice' => 'max:1000', 'keywords' => 'max:255', ]); if ($type == "1") { $request->validate([ 'video_link' => 'required|max:255', ]); } if ($picture !== null) { $request->validate([ 'picture' => 'required|image|mimes:jpeg,png,jpg|max:2048|dimensions:width=683,height=434', ]); } if ($picture !== null) { if (file_exists(public_path() . '/' . $r->picture)) { unlink(public_path() . '/' . $r->picture); } $imageName = $slug . '.' . $picture->extension(); $picture->move(public_path('uploads/images/recettes/' . date('Y') . '/' . date('m') . '/'), $imageName); } $r->title = $title; $r->slug = $slug; $r->seo_title = $seo_title; $r->seo_description = $seo_description; $r->catch_phrase = $catchPhrase; $r->tags = $tags; if ($picture !== null) { $r->picture = 'uploads/images/recettes/' . date('Y') . '/' . date('m') . '/' . $imageName; } $r->ingredients = $ingredients; $r->preparation = $preparation; $r->advice = $advice; $r->keywords = $keywords; $r->type = intval($type); if ($type == "1") { $r->video_link = $videoLink; } else { $r->video_link = null; } $r->preparation_time = $preparationTime; $r->cooking_time = $cookingTime; $r->number_people = $numberPeople; $r->difficulty = intval($difficulty); $r->products()->sync($associatedP); $r->consumption_times_id = $consumptionTimes; $r->status = $status; $r->notification = $notification; $r->save(); if ($notification === 1) { event(new NewNotification(NotificationType::recipe(), route('recipes.show', $slug), $r)); } $associatedNews = $request->associated_news; $r->articles()->sync($associatedNews); return redirect()->route('bo.recipes.edit', $r->id)->with('success', 'Enregistré !'); } public function destroy(Recipes $r) { if (file_exists(public_path() . '/' . $r->picture)) { unlink(public_path() . '/' . $r->picture); } $r->notifiable()->delete(); $r->delete(); 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é !'); } }