From 9692f6b001bb27cae2c68acfe73f4d71ab500b9c Mon Sep 17 00:00:00 2001 From: Aan Choesni Herlingga <aanchoesni@unesa.ac.id> Date: Thu, 26 Dec 2019 11:09:40 +0700 Subject: [PATCH] Storage Repository update --- app/Http/Controllers/Webprofile/Backend/SliderController.php | 6 +++--- app/Repositories/StorageRepository.php | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ app/Repositories/Webprofile/SliderRepository.php | 93 ++++----------------------------------------------------------------------------------------- database/migrations/2019_11_12_114437_create_sliders_table.php | 2 +- resources/views/webprofile/backend/sliders/create.blade.php | 2 +- resources/views/webprofile/backend/sliders/edit.blade.php | 2 +- 6 files changed, 134 insertions(+), 95 deletions(-) create mode 100644 app/Repositories/StorageRepository.php diff --git a/app/Http/Controllers/Webprofile/Backend/SliderController.php b/app/Http/Controllers/Webprofile/Backend/SliderController.php index 3745367..65e6570 100644 --- a/app/Http/Controllers/Webprofile/Backend/SliderController.php +++ b/app/Http/Controllers/Webprofile/Backend/SliderController.php @@ -48,7 +48,7 @@ class SliderController extends Controller */ public function store(Request $request) { - $this->repo->store($request); + $this->repo->store($request, 'slider'); return redirect()->route('sliders.index'); } @@ -91,7 +91,7 @@ class SliderController extends Controller public function update(Request $request, $id) { $slider = $this->repo->findId($id); - $edit = $this->repo->update($request, $slider); + $edit = $this->repo->update($request, $slider, 'slider'); return redirect()->route('sliders.index'); } @@ -105,7 +105,7 @@ class SliderController extends Controller public function destroy($id) { $data = $this->repo->findId($id); - $this->repo->destroy($data); + $this->repo->destroy($data, 'slider'); return response()->json(['done']); } diff --git a/app/Repositories/StorageRepository.php b/app/Repositories/StorageRepository.php new file mode 100644 index 0000000..512bc16 --- /dev/null +++ b/app/Repositories/StorageRepository.php @@ -0,0 +1,124 @@ +<?php + +namespace App\Repositories; + +use Illuminate\Support\Str; +use Storage; + +abstract class StorageRepository +{ + protected $model; + + abstract public function get(); + + /** + * Display specified resource. + * + * @param varchar $with + * @param uuid $id + * @return \Illuminate\Http\Response + */ + public function findId($id = null, $with = null) + { + return $this->model + ->when($with, function ($query) use ($with) { + return $query->with($with); + }) + ->when($id, function ($query) use ($id) { + return $query->where('id', $id); + }) + ->first(); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store($request, $tipe) + { + $setting = webprofilesetting(); + + $data = $request->except('_token'); + $data['id'] = Str::uuid()->toString(); + + if ($request->hasFile($tipe)) { + $cover = $request->file($tipe); + $extension = $cover->guessClientExtension(); + $filename = $data['id'] . '.' . $extension; + if ($setting['external_storage'] == 1) { + Storage::disk('storage')->put($setting['directory'] . '/' . $tipe . '/' . $filename, file_get_contents($cover->getRealPath())); + } else { + Storage::disk('local')->put('public/' . $tipe . '/' . $filename, file_get_contents($cover->getRealPath())); + } + $data[$tipe] = $filename; + } + + $request['userid_created'] = auth()->user()->id; + return $this->model->create($data); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param Model $model + * @return \Illuminate\Http\Response + */ + public function update($request, $model, $tipe) + { + $setting = webprofilesetting(); + + $data = $request->except('_token'); + + if ($request->hasFile($tipe)) { + $cover = $request->file($tipe); + $extension = $cover->guessClientExtension(); + $filename = $model->id . '.' . $extension; + + if ($setting['external_storage'] == 1) { + Storage::disk('storage')->put($setting['directory'] . '/' . $tipe . '/' . $filename, file_get_contents($cover->getRealPath())); + } else { + Storage::disk('local')->put('public/' . $tipe . '/' . $filename, file_get_contents($cover->getRealPath())); + } + + $data[$tipe] = $filename; + } + + $data['userid_updated'] = auth()->user()->id; + return $model->update($data); + } + + /** + * Show the specified resource in storage. + * + * @param uuid $id + * @return \Illuminate\Http\Response + */ + public function show($id) + { + return $this->model->where('user_id', $id)->first(); + } + + /** + * Remove the specified resource from storage. + * + * @param Model $model + * @return \Illuminate\Http\Response + */ + public function destroy($model, $tipe) + { + $setting = webprofilesetting(); + + if ($model->images) { + if ($setting['external_storage'] == 1) { + Storage::disk('storage')->delete($setting['directory'] . '/' . $tipe . '/' . $model->images); + } else { + Storage::disk('local')->delete('public/' . $tipe . '/' . $model->images); + } + } + + $model->delete($model->id); + } +} diff --git a/app/Repositories/Webprofile/SliderRepository.php b/app/Repositories/Webprofile/SliderRepository.php index 5971168..673694d 100644 --- a/app/Repositories/Webprofile/SliderRepository.php +++ b/app/Repositories/Webprofile/SliderRepository.php @@ -3,12 +3,12 @@ namespace App\Repositories\Webprofile; use App\Models\Webprofile\Slider; -use App\Repositories\Repository; +use App\Repositories\StorageRepository; use Illuminate\Support\Str; use DataTables; use Storage; -class SliderRepository extends Repository +class SliderRepository extends StorageRepository { protected $model; @@ -32,91 +32,6 @@ class SliderRepository extends Repository ->get(); } - /** - * Custom Store a newly created resource in Slider. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response - */ - public function store($request) - { - $setting = webprofilesetting(); - - $data = $request->except('_token'); - $data['id'] = Str::uuid()->toString(); - - if ($request->hasFile('images')) { - $cover = $request->file('images'); - $extension = $cover->guessClientExtension(); - $filename = $data['id'] . '.' . $extension; - if ($setting['external_storage'] == 1) { - Storage::disk('storage')->put($setting['directory'] . '/slider/' . $filename, file_get_contents($cover->getRealPath())); - } else { - Storage::disk('local')->put('public/slider/' . $filename, file_get_contents($cover->getRealPath())); - } - $data['images'] = $filename; - } - - $request['userid_created'] = auth()->user()->id; - return $this->model->create($data); - } - - /** - * Custom Update a resource in Slider. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response - */ - public function update($request, $sModel) - { - $setting = webprofilesetting(); - - $data = $request->except('_token'); - - if ($request->hasFile('images')) { - $cover = $request->file('images'); - $extension = $cover->guessClientExtension(); - $filename = $sModel->id . '.' . $extension; - - if ($setting['external_storage'] == 1) { - Storage::disk('storage')->put($setting['directory'] . '/slider/' . $filename, file_get_contents($cover->getRealPath())); - } else { - Storage::disk('local')->put('public/slider/' . $filename, file_get_contents($cover->getRealPath())); - } - - $data['images'] = $filename; - } - - $data['userid_updated'] = auth()->user()->id; - return $sModel->update($data); - } - - /** - * Remove the specified resource from storage. - * - * @param \App\Models\Slider $slider - * @return \Illuminate\Http\Response - */ - public function destroy($sModel) - { - $setting = webprofilesetting(); - - try { - if ($sModel->images) { - if ($setting['external_storage'] == 1) { - Storage::disk('storage')->delete($setting['directory'] . '/slider/' . $sModel->images); - } else { - Storage::disk('local')->delete('public/slider/' . $sModel->images); - } - } - $sModel->delete($sModel->id); - - return redirect()->route('sliders.index'); - } catch (\Exception $id) { - return redirect()->route('sliders.index'); - } - } - public function datatable($data) { $setting = webprofilesetting(); @@ -134,9 +49,9 @@ class SliderRepository extends Repository }) ->addColumn('slider', function ($row) use ($setting) { if ($setting['external_storage'] == 1) { - $str = '<img src="'. $setting['url_static'] . '/' . $setting['directory'] . '/slider/' . $row->images . '" height="100" width="auto">'; + $str = '<img src="'. $setting['url_static'] . '/' . $setting['directory'] . '/slider/' . $row->slider . '" height="100" width="auto">'; } else { - $str = '<img src="'. url('/storage/slider/' . $row->images) . '" height="100" width="auto">'; + $str = '<img src="'. url('/storage/slider/' . $row->slider) . '" height="100" width="auto">'; } return $str; diff --git a/database/migrations/2019_11_12_114437_create_sliders_table.php b/database/migrations/2019_11_12_114437_create_sliders_table.php index 3fe3a1b..29e3f56 100644 --- a/database/migrations/2019_11_12_114437_create_sliders_table.php +++ b/database/migrations/2019_11_12_114437_create_sliders_table.php @@ -16,7 +16,7 @@ class CreateSlidersTable extends Migration Schema::create('swp_sliders', function (Blueprint $table) { $table->string('id', 36)->primary(); $table->string('title'); - $table->string('images')->nullable(); + $table->string('slider')->nullable(); $table->text('content')->nullable(); $table->boolean('is_active')->nullable(); $table->string('userid_created', 36)->nullable(); diff --git a/resources/views/webprofile/backend/sliders/create.blade.php b/resources/views/webprofile/backend/sliders/create.blade.php index 0974a3b..5fcdebe 100644 --- a/resources/views/webprofile/backend/sliders/create.blade.php +++ b/resources/views/webprofile/backend/sliders/create.blade.php @@ -36,7 +36,7 @@ <img id="uploadPreview" style="width: 500px; height: 100%;" src="{{URL::to('https://statik.unesa.ac.id/perpus_konten_statik/uploads/slider/slider.png')}}"/><br> </div> <div class="form-group"> - {{ Form::file('images', ['class'=>'fileinput btn-danger', 'id'=>'uploadImage', 'data-filename-placement'=>'inside', 'title'=>trans('label.upload'), 'onchange'=>'PreviewImage();', 'accept'=>'image/jpeg,image/png']) }} + {{ Form::file('slider', ['class'=>'fileinput btn-danger', 'id'=>'uploadImage', 'data-filename-placement'=>'inside', 'title'=>trans('label.upload'), 'onchange'=>'PreviewImage();', 'accept'=>'image/jpeg,image/png']) }} </div> </center> </div> diff --git a/resources/views/webprofile/backend/sliders/edit.blade.php b/resources/views/webprofile/backend/sliders/edit.blade.php index c2f4839..5b29908 100644 --- a/resources/views/webprofile/backend/sliders/edit.blade.php +++ b/resources/views/webprofile/backend/sliders/edit.blade.php @@ -46,7 +46,7 @@ @endif </div> <div class="form-group"> - {{ Form::file('images', array('class'=>'fileinput btn-danger', 'id'=>'uploadImage', 'data-filename-placement'=>'inside', 'title'=>'Upload', 'onchange'=>'PreviewImage();', 'accept'=>'image/jpeg,image/png')) }} + {{ Form::file('slider', array('class'=>'fileinput btn-danger', 'id'=>'uploadImage', 'data-filename-placement'=>'inside', 'title'=>'Upload', 'onchange'=>'PreviewImage();', 'accept'=>'image/jpeg,image/png')) }} </div> </center> </div> -- libgit2 0.26.0