%PDF- %PDF-
Direktori : /var/www/html/digiprint/app/Http/Controllers/ |
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')); } } }