From c3ad75ab6d3e52346da83a2ebee37b3927086d83 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Thu, 26 Oct 2017 07:39:33 +0800 Subject: [PATCH] Refactor site option feature, remove option repo and request class --- app/Entities/Options/OptionsRepository.php | 38 ------- .../Controllers/References/OptionsController.php | 113 ++++++++++----------- app/Http/Requests/Options/CreateRequest.php | 31 ------ routes/web/references.php | 14 ++- 4 files changed, 58 insertions(+), 138 deletions(-) delete mode 100755 app/Entities/Options/OptionsRepository.php delete mode 100644 app/Http/Requests/Options/CreateRequest.php diff --git a/app/Entities/Options/OptionsRepository.php b/app/Entities/Options/OptionsRepository.php deleted file mode 100755 index 487986a..0000000 --- a/app/Entities/Options/OptionsRepository.php +++ /dev/null @@ -1,38 +0,0 @@ -getAll(); - foreach ($optionsData as $key => $value) { - $option = $options->where('key', $key)->first(); - $option->value = $value; - $option->save(); - } - - return 'saved'; - } -} \ No newline at end of file diff --git a/app/Http/Controllers/References/OptionsController.php b/app/Http/Controllers/References/OptionsController.php index 4d5d9ff..d25dee5 100755 --- a/app/Http/Controllers/References/OptionsController.php +++ b/app/Http/Controllers/References/OptionsController.php @@ -2,69 +2,60 @@ namespace App\Http\Controllers\References; -use App\Http\Requests\Options\CreateRequest; -use App\Http\Requests\Options\DeleteRequest; +use App\Entities\Options\Option; use App\Http\Controllers\Controller; -use App\Entities\Options\OptionsRepository; - use Illuminate\Http\Request; -class OptionsController extends Controller { - - private $repo; - - public function __construct(OptionsRepository $repo) - { - $this->repo = $repo; - } - - public function index(Request $req) - { - $editableOption = null; - $options = $this->repo->getAll(); - - if (in_array($req->get('action'), ['del','edit']) && $req->has('id')) - $editableOption = $this->repo->requireById($req->get('id')); - - return view('options.index',compact('options','editableOption')); - } - - public function create() - { - return view('options.create'); - } - - public function store(CreateRequest $req) - { - $option = $this->repo->create($req->except('_token')); - flash()->success(trans('option.created')); - return redirect()->route('options.index'); - } - - public function delete($optionId) - { - $option = $this->repo->requireById($optionId); - return view('options.delete', compact('option')); - } - - public function destroy(Request $req, $optionId) - { - if ($optionId == $req->get('option_id')) - { - $this->repo->delete($optionId); - flash()->success(trans('option.deleted')); - } - else - flash()->error(trans('option.undeleted')); - - return redirect()->route('options.index'); - } - - public function save(Request $req) - { - $this->repo->save($req->except(['_method','_token'])); - flash()->success(trans('option.updated')); - return redirect()->route('options.index'); - } +class OptionsController extends Controller +{ + public function index(Request $req) + { + $options = Option::all(); + $editableOption = null; + + if (in_array($req->get('action'), ['del', 'edit']) && $req->has('id')) { + $editableOption = Option::findOrFail($req->get('id')); + } + + return view('options.index', compact('options', 'editableOption')); + } + + public function store(Request $req) + { + $newOptionData = $req->validate([ + 'key' => 'required|max:255|alpha_dash', + 'value' => 'max:255', + ]); + + $option = Option::create($newOptionData); + + flash()->success(trans('option.created')); + return redirect()->route('options.index'); + } + + public function destroy(Request $req, $optionId) + { + if ($optionId == $req->get('option_id')) { + Option::findOrFail($optionId)->delete(); + flash()->success(trans('option.deleted')); + } else { + flash()->error(trans('option.undeleted')); + } + + return redirect()->route('options.index'); + } + + public function save(Request $req) + { + $options = Option::all(); + foreach ($req->except(['_method', '_token']) as $key => $value) { + $option = $options->where('key', $key)->first(); + $option->value = $value; + $option->save(); + } + + flash()->success(trans('option.updated')); + return redirect()->route('options.index'); + } } diff --git a/app/Http/Requests/Options/CreateRequest.php b/app/Http/Requests/Options/CreateRequest.php deleted file mode 100644 index 6496cb3..0000000 --- a/app/Http/Requests/Options/CreateRequest.php +++ /dev/null @@ -1,31 +0,0 @@ -user()->can('manage_options'); - } - - /** - * Get the validation rules that apply to the request. - * - * @return array - */ - public function rules() - { - return [ - 'key' => 'required|max:255|alpha_dash', - 'value' => 'max:255', - ]; - } -} diff --git a/routes/web/references.php b/routes/web/references.php index 8ae160c..8adaeb0 100644 --- a/routes/web/references.php +++ b/routes/web/references.php @@ -1,13 +1,11 @@ 'References','middleware'=>['web','role:admin']], function() { +Route::group(['namespace' => 'References', 'middleware' => ['web', 'role:admin']], function () { /** * Options Routes */ - Route::get('options', ['as'=>'options.index' , 'uses'=>'OptionsController@index']); - Route::get('options/create', ['as'=>'options.create' , 'uses'=>'OptionsController@create']); - Route::post('options/store', ['as'=>'options.store' , 'uses'=>'OptionsController@store']); - Route::patch('options/save', ['as'=>'options.save' , 'uses'=>'OptionsController@save']); - Route::get('options/{id}/delete', ['as'=>'options.delete' , 'uses'=>'OptionsController@delete']); - Route::delete('options/{optionId}/destroy', ['as'=>'options.destroy' , 'uses'=>'OptionsController@destroy']); -}); \ No newline at end of file + Route::get('options', ['as' => 'options.index', 'uses' => 'OptionsController@index']); + Route::post('options/store', ['as' => 'options.store', 'uses' => 'OptionsController@store']); + Route::patch('options/save', ['as' => 'options.save', 'uses' => 'OptionsController@save']); + Route::delete('options/{optionId}/destroy', ['as' => 'options.destroy', 'uses' => 'OptionsController@destroy']); +});