ldc-boutique-cnc/app/Http/Controllers/Bo/RangesController.php
2022-08-25 12:26:43 +02:00

133 lines
4.2 KiB
PHP

<?php
namespace App\Http\Controllers\Bo;
use App\Http\Controllers\Controller;
use App\Models\OldSlug;
use App\Models\Product;
use App\Models\Range;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
class RangesController extends Controller
{
public function index()
{
$ranges = Range::all();
return view('bo.ranges.index', compact('ranges'));
}
public function create()
{
return view('bo.ranges.create');
}
public function store(Request $request)
{
$name = $request->name;
$slug = Str::slug($name);
$description = $request->description;
$picture = $request->picture;
$status = $request->status === null ? 0 : 1;
$request->validate([
'name' => 'required|string|max:255',
'description' => 'required',
'picture' => 'image|mimes:jpeg,png,jpg|max:2048|dimensions:max-width=' .
config('theme.range_image_maxwidth') . ',max-height=' .
config('theme.range_image_maxheight'),
]);
$range = new Range();
$range->name = $name;
$range->slug = $slug;
$range->description = $description;
$range->status = $status;
$range->save();
if ($picture !== null) {
$imageName = $range->id . '_' . $slug . '_' . Str::random(5) . '.' . $picture->extension();
$picture->move(public_path('images/gammes'), $imageName);
$range->picture = $imageName;
$range->save();
}
return redirect()->route('bo.ranges.index');
}
public function edit($id)
{
$range = Range::findOrFail($id);
return view('bo.ranges.edit', compact('range'));
}
public function update(Request $request, $id)
{
$name = $request->name;
$slug = Str::slug($name);
$description = $request->description;
$picture = $request->picture;
$status = $request->status === null ? 0 : 1;
$request->validate([
'name' => 'required|string|max:255',
'description' => 'required',
'picture' => 'image|mimes:jpeg,png,jpg|max:2048|dimensions:max-width=' .
config('theme.range_image_maxwidth') . ',max-height=' .
config('theme.range_image_maxheight'),
]);
$range = Range::findOrFail($id);
if ($picture !== null) {
if ($range->picture !== null && file_exists(public_path('images/gammes/') . $range->picture)) {
unlink(public_path('images/gammes/') . $range->picture);
}
$imageName = $range->id . '_' . $slug . '_' . Str::random(5) . '.' . $picture->extension();
$picture->move(public_path('images/gammes'), $imageName);
}
$range->name = $name;
if ($range->slug != $slug) {
$exist = OldSlug::where('slug', $range->slug)->first();
if ($exist === null) {
$oldSlug = new OldSlug();
$oldSlug->range_id = $range->id;
$oldSlug->slug = $range->slug;
$oldSlug->save();
}
}
$range->slug = $slug;
$range->description = $description;
if ($picture !== null) {
$range->picture = $imageName;
}
$range->status = $status;
$range->save();
return redirect()->route('bo.ranges.edit', $range->id)->with('success', 'Modifications enregistrés !');
}
public function destroy($id)
{
$range = Range::findOrFail($id);
$product = Product::where('range_id', $range->id)->count();
if ($product !== 0) {
return redirect()->back()->withErrors("Suppression impossible : \"" . $range->name . "\" contient encore des produits.");
}
if ($range->picture !== null) {
if (file_exists(public_path('images/gammes/') . $range->picture)) {
unlink(public_path('images/gammes/') . $range->picture);
}
}
OldSlug::where('range_id', $range->id)->delete();
$range->delete();
return redirect()->route('bo.ranges.index');
}
}