ldc-legaulois/app/Http/Controllers/Bo/RecipesController.php

186 lines
6.3 KiB
PHP

<?php
namespace App\Http\Controllers\Bo;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use App\Models\Recipes;
use App\Models\ConsumptionTimes;
class RecipesController extends Controller
{
public function index()
{
$r = Recipes::all();
// TODO : Récupérer les gammes pour l'affichage dans le tableau
return view('bo.recipes.index', compact('r'));
}
public function create()
{
$c = ConsumptionTimes::all();
// TODO : Ajouter la liste des produits et des actualités pour le liens en bdd
return view('bo.recipes.create', compact('c'));
}
public function store(Request $request)
{
$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 = 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'), $imageName);
$r = new Recipes();
$r->title = $title;
$r->catch_phrase = $catchPhrase;
$r->tags = $tags;
$r->picture = $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();
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'), $imageName);
}
$r->title = $title;
$r->catch_phrase = $catchPhrase;
$r->tags = $tags;
if ($picture !== null)
$r->picture = $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();
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');
}
}