%PDF- %PDF-
Direktori : /var/www/html/digiprint/app/Http/Controllers/ |
Current File : /var/www/html/digiprint/app/Http/Controllers/TechnologiesController.php |
<?php namespace Digiprint\Http\Controllers; use Carbon\Carbon; use Digiprint\Models\Media; use Digiprint\Models\Technology; use Digiprint\Providers\MorphableName; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class TechnologiesController extends Controller { /** * Create a new controller instance. * */ public function ShowAll() { $technologies = Technology::query() ->get(); return view('technology')->with([ 'technologies' => $technologies, ]); } public function __construct() { $this->middleware('auth'); } /** * Show the application dashboard. * * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function index() { $technologies = Technology::query() ->get(); return view('dashboard.technologies')->with([ 'technologies' => $technologies, ]); } public function show($id) { $technology = Technology::query() ->find($id); if (!$technology) { $technology = new Technology(); } return view('dashboard.technologiesDetails', [ 'technology' => $technology, 'id' => $id, ]); } /** * @param \Illuminate\Http\Request $request * @param $id * * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector */ public function createOrUpdate(Request $request, $id) { /** @var Technology $technology */ $technology = Technology::query() ->find($id); $this->validate($request, [ 'name' => 'required|string', 'description' => 'required|string', 'order' => 'required|integer', 'file' => $technology ? 'nullable' : 'required' . '|image', ]); DB::beginTransaction(); try { if ($technology) { $technology->update($request->all()); } else { $technology = Technology::query() ->create($request->all()); } if ($file = $request->file('file')) { $media = $technology->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' => $technology->id, 'model_type' => MorphableName::forClass(Technology::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.technologies')); } return redirect(route('dashboard.technologies.details', $technology->id)); } catch (\Exception $exception) { DB::rollback(); return redirect(route('dashboard.technologies.details', $technology->id)); } } public function gallery($id) { $technology = Technology::query() ->find($id); return view('dashboard.technologiesGallery', [ 'technology' => $technology, ]); } 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); $technology = Technology::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' => $technology->id, 'model_type' => MorphableName::forClass(Technology::class), 'file_name' => $fileName, 'real_file_name' => $photo->getClientOriginalName(), 'media_type' => Media::MEDIA_TYPE_IMAGE_GALLERY, ]); } return redirect(route('dashboard.technologies.gallery', $technology->id)); } public function deleteGallery(Request $request, $id, $galleryId) { try { /** @var Technology $technology */ $technology = Technology::query() ->find($id); $media = $technology->media() ->where('id', $galleryId) ->first(); \File::delete(public_path('uploads/') . $media->file_name); $media->delete(); return redirect(route('dashboard.technologies.gallery', $technology->id)); } catch (\Exception $exception) { return redirect(route('dashboard.technologies')); } } }