Browse Source

Refactor UsersController

pull/16/head
Nafies Luthfi 8 years ago
parent
commit
d9790df36c
  1. 93
      app/Http/Controllers/UsersController.php
  2. 42
      app/Http/Requests/Users/UpdateRequest.php

93
app/Http/Controllers/UsersController.php

@ -7,6 +7,7 @@ use Storage;
use App\User; use App\User;
use App\Couple; use App\Couple;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Http\Requests\Users\UpdateRequest;
class UsersController extends Controller class UsersController extends Controller
{ {
@ -36,22 +37,15 @@ class UsersController extends Controller
* Display the specified User. * Display the specified User.
* *
* @param \App\User $user * @param \App\User $user
*
* @return \Illuminate\Http\Response * @return \Illuminate\Http\Response
*/ */
public function show(User $user) 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', [ return view('users.show', [
'user' => $user, 'user' => $user,
@ -66,6 +60,7 @@ class UsersController extends Controller
* Display the user's family chart. * Display the user's family chart.
* *
* @param \App\User $user * @param \App\User $user
*
* @return \Illuminate\Http\Response * @return \Illuminate\Http\Response
*/ */
public function chart(User $user) 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 * @return \Illuminate\Http\Response
*/ */
public function tree(User $user) public function tree(User $user)
@ -101,6 +98,7 @@ class UsersController extends Controller
* Show the form for editing the specified User. * Show the form for editing the specified User.
* *
* @param \App\User $user * @param \App\User $user
*
* @return \Illuminate\Http\Response * @return \Illuminate\Http\Response
*/ */
public function edit(User $user) public function edit(User $user)
@ -109,7 +107,7 @@ class UsersController extends Controller
$replacementUsers = []; $replacementUsers = [];
if (request('action') == 'delete') { 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')); return view('users.edit', compact('user', 'replacementUsers'));
@ -118,25 +116,14 @@ class UsersController extends Controller
/** /**
* Update the specified User in storage. * Update the specified User in storage.
* *
* @param \Illuminate\Http\Request $request
* @param \App\Http\Requests\Users\UpdateRequest $request
* @param \App\User $user * @param \App\User $user
*
* @return \Illuminate\Http\Response * @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->nickname = $request->nickname;
$user->name = $request->get('name'); $user->name = $request->get('name');
@ -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;
}
} }

42
app/Http/Requests/Users/UpdateRequest.php

@ -0,0 +1,42 @@
<?php
namespace App\Http\Requests\Users;
use Illuminate\Foundation\Http\FormRequest;
class UpdateRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return $this->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',
];
}
}
Loading…
Cancel
Save