diff --git a/app/Http/Controllers/FamilyActionsController.php b/app/Http/Controllers/FamilyActionsController.php index b71e72d..c831583 100644 --- a/app/Http/Controllers/FamilyActionsController.php +++ b/app/Http/Controllers/FamilyActionsController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\Couple; use App\User; use Illuminate\Http\Request; @@ -10,15 +11,21 @@ class FamilyActionsController extends Controller public function setFather(Request $request, User $user) { $this->validate($request, [ - 'set_father' => 'required|string|max:255', + 'set_father_id' => 'nullable', + 'set_father' => 'required_without:set_father_id|max:255', ]); - $father = new User; - $father->name = $request->get('set_father'); - $father->nickname = $request->get('set_father'); - $father->gender_id = 1; + if ($request->get('set_father_id')) { + $user->father_id = $request->get('set_father_id'); + $user->save(); + } else { + $father = new User; + $father->name = $request->get('set_father'); + $father->nickname = $request->get('set_father'); + $father->gender_id = 1; - $user->setFather($father); + $user->setFather($father); + } return back(); } @@ -26,15 +33,21 @@ class FamilyActionsController extends Controller public function setMother(Request $request, User $user) { $this->validate($request, [ - 'set_mother' => 'required|string|max:255', + 'set_mother_id' => 'nullable', + 'set_mother' => 'required_without:set_mother_id|max:255', ]); - $mother = new User; - $mother->name = $request->get('set_mother'); - $mother->nickname = $request->get('set_mother'); - $mother->gender_id = 2; + if ($request->get('set_mother_id')) { + $user->mother_id = $request->get('set_mother_id'); + $user->save(); + } else { + $mother = new User; + $mother->name = $request->get('set_mother'); + $mother->nickname = $request->get('set_mother'); + $mother->gender_id = 2; - $user->setMother($mother); + $user->setMother($mother); + } return back(); } @@ -44,18 +57,31 @@ class FamilyActionsController extends Controller $this->validate($request, [ 'add_child_name' => 'required|string|max:255', 'add_child_gender_id' => 'required|in:1,2', + 'add_child_parent_id' => 'nullable|exists:couples,id', ]); $child = new User; $child->name = $request->get('add_child_name'); $child->nickname = $request->get('add_child_name'); $child->gender_id = $request->get('add_child_gender_id'); + $child->parent_id = $request->get('add_child_parent_id'); + + \DB::beginTransaction(); $child->save(); - if ($user->gender_id == 1) - $child->setFather($user); - else - $child->setMother($user); + if ($request->get('add_child_parent_id')) { + $couple = Couple::find($request->get('add_child_parent_id')); + $child->father_id = $couple->husband_id; + $child->mother_id = $couple->wife_id; + $child->save(); + } else { + if ($user->gender_id == 1) + $child->setFather($user); + else + $child->setMother($user); + } + + \DB::commit(); return back(); } diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 10f3148..f880473 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\User; use Illuminate\Http\Request; class HomeController extends Controller @@ -23,6 +24,21 @@ class HomeController extends Controller */ public function index() { - return view('home', ['currentUser' => auth()->user()]); + $user = auth()->user(); + + $usersMariageList = []; + foreach ($user->marriages as $spouse) { + $usersMariageList[$spouse->pivot->id] = $user->name.' & '.$spouse->name; + } + + $malePersonList = User::where('gender_id', 1)->pluck('nickname', 'id'); + $femalePersonList = User::where('gender_id', 2)->pluck('nickname', 'id'); + + return view('home', [ + 'currentUser' => $user, + 'usersMariageList' => $usersMariageList, + 'malePersonList' => $malePersonList, + 'femalePersonList' => $femalePersonList + ]); } } diff --git a/app/Http/Controllers/UsersController.php b/app/Http/Controllers/UsersController.php index c78daa9..a8e6760 100644 --- a/app/Http/Controllers/UsersController.php +++ b/app/Http/Controllers/UsersController.php @@ -46,7 +46,20 @@ class UsersController extends Controller */ public function show(User $user) { - return view('home', ['currentUser' => $user]); + $usersMariageList = []; + foreach ($user->marriages as $spouse) { + $usersMariageList[$spouse->pivot->id] = $user->name.' & '.$spouse->name; + } + + $malePersonList = User::where('gender_id', 1)->pluck('nickname', 'id'); + $femalePersonList = User::where('gender_id', 2)->pluck('nickname', 'id'); + + return view('home', [ + 'currentUser' => $user, + 'usersMariageList' => $usersMariageList, + 'malePersonList' => $malePersonList, + 'femalePersonList' => $femalePersonList + ]); } /** diff --git a/app/User.php b/app/User.php index e2696dc..7f71c01 100644 --- a/app/User.php +++ b/app/User.php @@ -98,7 +98,7 @@ class User extends Authenticatable public function wifes() { - return $this->belongsToMany(User::class, 'couples', 'husband_id', 'wife_id'); + return $this->belongsToMany(User::class, 'couples', 'husband_id', 'wife_id')->withPivot(['id'])->withTimestamps(); } public function addWife(User $wife) @@ -113,7 +113,7 @@ class User extends Authenticatable public function husbands() { - return $this->belongsToMany(User::class, 'couples', 'wife_id', 'husband_id'); + return $this->belongsToMany(User::class, 'couples', 'wife_id', 'husband_id')->withPivot(['id'])->withTimestamps(); } public function addHusband(User $husband) @@ -125,4 +125,12 @@ class User extends Authenticatable return false; } + + public function marriages() + { + if ($this->gender_id == 1) + return $this->belongsToMany(User::class, 'couples', 'husband_id', 'wife_id')->withPivot(['id'])->withTimestamps(); + + return $this->belongsToMany(User::class, 'couples', 'wife_id', 'husband_id')->withPivot(['id'])->withTimestamps(); + } } diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index 130ce1d..ce9bb00 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -3,7 +3,7 @@ @section('content')
| Isteri |
@if ($currentUser->wifes->isEmpty() == false)
-
Suami |
@if ($currentUser->husbands->isEmpty() == false)
- |
|
|---|---|---|---|
| Anak-Anak | -|||
-
|
- |||