From d9790df36c5ac3a382f71f1fef1cf7ebcece19ce Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Fri, 1 Jun 2018 21:42:05 +0800 Subject: [PATCH] Refactor UsersController --- app/Http/Controllers/UsersController.php | 103 ++++++++++++++++++++---------- app/Http/Requests/Users/UpdateRequest.php | 42 ++++++++++++ 2 files changed, 110 insertions(+), 35 deletions(-) create mode 100644 app/Http/Requests/Users/UpdateRequest.php diff --git a/app/Http/Controllers/UsersController.php b/app/Http/Controllers/UsersController.php index 6bc5b69..7ade80f 100644 --- a/app/Http/Controllers/UsersController.php +++ b/app/Http/Controllers/UsersController.php @@ -7,6 +7,7 @@ use Storage; use App\User; use App\Couple; use Illuminate\Http\Request; +use App\Http\Requests\Users\UpdateRequest; class UsersController extends Controller { @@ -35,23 +36,16 @@ class UsersController extends Controller /** * Display the specified User. * - * @param \App\User $user + * @param \App\User $user + * * @return \Illuminate\Http\Response */ public function show(User $user) { - $usersMariageList = []; - foreach ($user->couples as $spouse) { - $usersMariageList[$spouse->pivot->id] = $user->name.' & '.$spouse->name; - } - - $allMariageList = []; - foreach (Couple::with('husband', 'wife')->get() as $couple) { - $allMariageList[$couple->id] = $couple->husband->name.' & '.$couple->wife->name; - } - - $malePersonList = User::where('gender_id', 1)->pluck('nickname', 'id'); - $femalePersonList = User::where('gender_id', 2)->pluck('nickname', 'id'); + $usersMariageList = $this->getUserMariageList($user); + $allMariageList = $this->getAllMariageList(); + $malePersonList = $this->getPersonList(1); + $femalePersonList = $this->getPersonList(2); return view('users.show', [ 'user' => $user, @@ -65,7 +59,8 @@ class UsersController extends Controller /** * Display the user's family chart. * - * @param \App\User $user + * @param \App\User $user + * * @return \Illuminate\Http\Response */ public function chart(User $user) @@ -88,8 +83,10 @@ class UsersController extends Controller } /** - * Show user family tree - * @param User $user + * Show user family tree. + * + * @param \App\User $user + * * @return \Illuminate\Http\Response */ public function tree(User $user) @@ -100,7 +97,8 @@ class UsersController extends Controller /** * Show the form for editing the specified User. * - * @param \App\User $user + * @param \App\User $user + * * @return \Illuminate\Http\Response */ public function edit(User $user) @@ -109,7 +107,7 @@ class UsersController extends Controller $replacementUsers = []; if (request('action') == 'delete') { - $replacementUsers = User::where('gender_id', $user->gender_id)->pluck('nickname', 'id'); + $replacementUsers = $this->getPersonList($user->gender_id); } return view('users.edit', compact('user', 'replacementUsers')); @@ -118,25 +116,14 @@ class UsersController extends Controller /** * Update the specified User in storage. * - * @param \Illuminate\Http\Request $request - * @param \App\User $user + * @param \App\Http\Requests\Users\UpdateRequest $request + * @param \App\User $user + * * @return \Illuminate\Http\Response */ - public function update(Request $request, User $user) + public function update(UpdateRequest $request, User $user) { - $this->validate($request, [ - 'nickname' => 'required|string|max:255', - 'name' => 'required|string|max:255', - 'gender_id' => 'required|numeric', - 'dob' => 'nullable|date|date_format:Y-m-d', - 'dod' => 'nullable|date|date_format:Y-m-d', - 'yod' => 'nullable|date_format:Y', - 'phone' => 'nullable|string|max:255', - 'address' => 'nullable|string|max:255', - 'city' => 'nullable|string|max:255', - 'email' => 'nullable|string|max:255', - 'password' => 'nullable|min:6|max:15', - ]); + $request->validated(); $user->nickname = $request->nickname; $user->name = $request->get('name'); @@ -168,7 +155,7 @@ class UsersController extends Controller * Remove the specified User from storage. * * @param \Illuminate\Http\Request $request - * @param \App\User $user + * @param \App\User $user * * @return \Illuminate\Http\Response */ @@ -262,4 +249,50 @@ class UsersController extends Controller ]); } } + + /** + * Get User list based on gender. + * + * @param int $genderId + * + * @return \Illuminate\Support\Collection + */ + private function getPersonList(int $genderId) + { + return User::where('gender_id', $genderId)->pluck('nickname', 'id'); + } + + /** + * Get marriage list of a user. + * + * @param \App\User $user + * + * @return array + */ + private function getUserMariageList(User $user) + { + $usersMariageList = []; + + foreach ($user->couples as $spouse) { + $usersMariageList[$spouse->pivot->id] = $user->name.' & '.$spouse->name; + } + + return $usersMariageList; + } + + /** + * Get all marriage list. + * + * @return array + */ + private function getAllMariageList() + { + $allMariageList = []; + + foreach (Couple::with('husband', 'wife')->get() as $couple) { + $allMariageList[$couple->id] = $couple->husband->name.' & '.$couple->wife->name; + } + + return $allMariageList; + } } diff --git a/app/Http/Requests/Users/UpdateRequest.php b/app/Http/Requests/Users/UpdateRequest.php new file mode 100644 index 0000000..6120915 --- /dev/null +++ b/app/Http/Requests/Users/UpdateRequest.php @@ -0,0 +1,42 @@ +user()->can( + 'edit', $this->route('user') + ); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'nickname' => 'required|string|max:255', + 'name' => 'required|string|max:255', + 'gender_id' => 'required|numeric', + 'dob' => 'nullable|date|date_format:Y-m-d', + 'dod' => 'nullable|date|date_format:Y-m-d', + 'yod' => 'nullable|date_format:Y', + 'phone' => 'nullable|string|max:255', + 'address' => 'nullable|string|max:255', + 'city' => 'nullable|string|max:255', + 'email' => 'nullable|string|max:255', + 'password' => 'nullable|min:6|max:15', + ]; + } +}