Browse Source

Refactor UsersController

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

103
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;
}
}

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