%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/digiprint/app/Http/Controllers/
Upload File :
Create Path :
Current File : /var/www/html/digiprint/app/Http/Controllers/CategoriesController.php

<?php

namespace Digiprint\Http\Controllers;

use Carbon\Carbon;
use Digiprint\Models\Category;
use Digiprint\Models\Media;
use Digiprint\Providers\MorphableName;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class CategoriesController extends Controller
{
    /**
     * Create a new controller instance.
     *
     */
    public function __construct()
    {
        $this->middleware('auth');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    public function index()
    {
        $categories = Category::query()
                              ->get();
        return view('dashboard.categories')->with([
            'categories' => $categories,
        ]);
    }

    public function show($id)
    {
        $category = Category::query()
                            ->find($id);
        if (!$category) {
            $category = new Category();
        }
        return view('dashboard.categoriesDetails', [
            'category'   => $category,
            'id'         => $id,
            'categories' => Category::query()->whereNull('parent_id')->get(),
        ]);
    }

    /**
     * @param \Illuminate\Http\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);
        $rules = [
            'name'              => 'required|string',
            'order'             => 'required|integer',
            'short_description' => 'required|string',
            'description'       => 'required|string',
            'parent_id'         => 'nullable|integer|exists:categories,id',
            'file'              => $category
                ? 'nullable'
                : 'required' . '|image',
        ];
        if ($category && $category->id) {
            $rules['slug'] = 'required|string|unique:categories,slug,' . $category->id;
        } else {
            $rules['slug'] = 'required|string|unique:categories,slug';
        }
        $this->validate($request, $rules);
        DB::beginTransaction();
        try {
            if ($category) {
                $category->update($request->all());
            } else {
                $category = Category::query()
                                    ->create($request->all());
            }
            if ($parent_id = $request->get('parent_id')) {
                $parentCategory = Category::query()
                                          ->find($parent_id);
                $category->parent()
                         ->associate($parentCategory);
                $category->save();
            }
            if ($file = $request->file('file')) {
                $media = $category->media()
                                  ->where('media_type', Media::MEDIA_TYPE_IMAGE_CATEGORY)
                                  ->first();
                if ($media) {
                    \File::delete(public_path('uploads') . '/' . $media->file_name);
                    $media->delete();
                }
                $fileName = head(explode('.', $file->getClientOriginalName())) . Carbon::now()
                                                                                       ->formatLocalized('%d%m%Y%H%M%S') . '.' . last(explode('/', $file->getClientMimeType()));
                $file->move('uploads', $fileName);
                Media::query()
                     ->create([
                         'model_id'       => $category->id,
                         'model_type'     => MorphableName::forClass(Category::class),
                         'file_name'      => $fileName,
                         'real_file_name' => $file->getClientOriginalName(),
                         'media_type'     => Media::MEDIA_TYPE_IMAGE_CATEGORY,
                     ]);
            }
            DB::commit();
            if ($id !== 'new') {
                return redirect(route('dashboard.categories'));
            }
            return redirect(route('dashboard.categories.details', $category->id));
        } catch (\Exception $exception) {
            DB::rollback();
            return redirect(route('dashboard.categories.details', $category->id));
        }
    }

    public function gallery($id)
    {
        $category = Category::query()
                            ->find($id);
        return view('dashboard.categoriesGallery', [
            'category' => $category,
        ]);
    }

    public function uploadGallery(Request $request, $id)
    {
        $rules = [
            'photos' => 'array',
        ];

        for ($i = 0; $i < count($request->file('photos')); $i++) {
            $rules["photos.{$i}"] = 'image';
        }

        $this->validate($request, $rules);
        $category = Category::query()
                            ->find($id);

        $photos = $request->file('photos');
        foreach ($photos as $photo) {

            $fileName = head(explode('.', $photo->getClientOriginalName())) . Carbon::now()
                                                                                    ->formatLocalized('%d%m%Y%H%M%S') . '.' . last(explode('/', $photo->getClientMimeType()));
            $photo->move('uploads', $fileName);
            Media::query()
                 ->create([
                     'model_id'       => $category->id,
                     'model_type'     => MorphableName::forClass(Category::class),
                     'file_name'      => $fileName,
                     'real_file_name' => $photo->getClientOriginalName(),
                     'media_type'     => Media::MEDIA_TYPE_IMAGE_GALLERY,
                 ]);
        }
        return redirect(route('dashboard.categories.gallery', $category->id));
    }

    public function deleteGallery(Request $request, $id, $galleryId)
    {
        try {
            /** @var Category $category */
            $category = Category::query()
                                ->find($id);
            $media = $category->media()
                              ->where('id', $galleryId)
                              ->first();
            \File::delete(public_path('uploads/') . $media->file_name);
            $media->delete();
            return redirect(route('dashboard.categories.gallery', $category->id));
        } catch (\Exception $exception) {
            return redirect(route('dashboard.categories'));
        }
    }

}

Zerion Mini Shell 1.0