%PDF- %PDF-
Direktori : /var/www/html/evablog/app/Http/Controllers/ |
Current File : /var/www/html/evablog/app/Http/Controllers/CategoryController.php |
<?php namespace App\Http\Controllers; use App\Models\Category; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Storage; use Spatie\Image\Image; class CategoryController extends Controller { /** * Show the application dashboard. * * @return \Illuminate\Http\Response */ public function index() { $categories = Category::query()->paginate(10); return view('categories', [ 'categories' => $categories ]); } public function show($category) { /** @var Category $category */ $category = Category::query()->find($category); if (!$category) { $category = new Category(); } return view('category', [ 'category' => $category, 'id' => $category->id ?: 'new', ]); } /** * @param Request $request * @param $id * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector */ public function createOrUpdate(Request $request, $id) { /** @var Category $category */ $category = Category::query()->find($id); $nameRule = 'required|string'; if ($category) { $nameRule = $nameRule . '|unique:categories,name,' . $id; } $rules = [ 'name' => $nameRule, 'media' => 'required|image', ]; $this->validate($request, $rules); DB::beginTransaction(); try { if ($category) { $category->update($request->all()); $category->media()->get()->each(function ($media) { /** @var Media $media */ Storage::disk('categories')->delete($media->name); $media->delete(); }); } else { $category = Category::query()->create($request->all()); } $file = $request->file('media'); $tmp = Storage::disk('tmp')->put('categories', $file); $destination = public_path("tmp/$tmp"); Image::load($destination)->width(720)->save($destination); $category->addMedia($destination)->toMediaCollection(Category::MEDIA_LIBRARY, Category::MEDIA_LIBRARY); Storage::disk('tmp')->delete($destination); DB::commit(); if ($id !== 'new') { return redirect(route('dashboard.categories')); } return redirect(route('dashboard.categories')); } catch (\Exception $exception) { DB::rollback(); throw $exception; return redirect(route('dashboard.categories.details', $category->id)); } } }