%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/evablog/app/Http/Controllers/
Upload File :
Create Path :
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));
        }
    }

}

Zerion Mini Shell 1.0