From d1fc84fc3592c10a9ef3d6dfb5543b538f8d6334 Mon Sep 17 00:00:00 2001 From: Ahmed-Te7a Date: Tue, 19 Sep 2017 23:27:20 +0200 Subject: [PATCH 1/2] Refactor issueController index method --- app/Http/Controllers/Web/IssueController.php | 73 ++++++++------------ resources/views/issues/index.blade.php | 2 +- 2 files changed, 29 insertions(+), 46 deletions(-) diff --git a/app/Http/Controllers/Web/IssueController.php b/app/Http/Controllers/Web/IssueController.php index ddedf444..13b631f6 100644 --- a/app/Http/Controllers/Web/IssueController.php +++ b/app/Http/Controllers/Web/IssueController.php @@ -21,49 +21,7 @@ class IssueController extends Controller { public function index($slug) { - if ($slug) { - $sprint = Sprint::slug($slug) - ->with('issues.user') - ->with('issues.users') - ->with('issues.commits') - ->with('issues.statuses') - ->with('issues.status') - ->with('issues.comments') - ->with('issues.attachments') - ->with('issues.type') - ->with('issues.productBacklog') - ->with('issues.sprint') - ->with('issues.configEffort') - ->first(); - - //when viewing from sprint planning, issues need to be passed in an array indexed by their status, so they can be put in the appropriate kanban columns - $is = $sprint->issues; - $issues = array(); - foreach($is as $i) { - $issues[$i->config_status_id] = array(); - } - foreach($is as $i) { - $issues[$i->config_status_id][] = $i; - } - } else { - $sprint = null; - $issues = Auth::user()->issues() - ->with('user') - ->with('users') - ->with('commits') - ->with('statuses') - ->with('status') - ->with('comments') - ->with('attachments') - ->with('type') - ->with('productBacklog') - ->with('sprint') - ->with('configEffort') - ->get() - ->sortBy('position')->groupBy('config_status_id'); - } - - $configStatus = ConfigStatus::type('issues')->get(); + [$sprint,$issues] = $this->sprintWithIssues($slug); if (!is_null($sprint) && !count($sprint)) { return redirect()->route('sprints.index'); @@ -71,8 +29,33 @@ public function index($slug) return view('issues.index') ->with('sprint', $sprint) - ->with('issues', $issues) - ->with('configStatus', $configStatus); + ->with('issues', $issues->sortBy('position')->groupBy('config_issue_effort_id')) + ->with('configStatus', ConfigStatus::type('issues')->get()); + } + + private function sprintWithIssues($slug) + { + if ($slug) + { + $sprint = $this->eagerLoad(Sprint::slug($slug),'issues.')->first(); + + return [$sprint , $sprint->issues]; + } + + return [ null , $this->eagerLoad(Auth::user()->issues())->get()]; + } + + private function eagerLoad($query , $relation = '') + { + $eagerLoaders = collect(['user','users','commits','statuses', + 'comments','attachments','type', + 'productBacklog','sprint','configEffort']); + + $eagerLoaders->each(function($loader) use (&$query,$relation){ + $query = $query->with($relation . $loader); + }); + + return $query; } public function create($scope, $slug, $parent_id = null) diff --git a/resources/views/issues/index.blade.php b/resources/views/issues/index.blade.php index b1e4134d..a90ccc5d 100644 --- a/resources/views/issues/index.blade.php +++ b/resources/views/issues/index.blade.php @@ -53,7 +53,7 @@ class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modalLarge"> {{$status->title}} ( @if(isset($issues[$status->id])) - {{count($issues[$status->id])}} + {{$issues[$status->id]->count()}} @else 0 @endif From 98b4d8e821fb434a3b374123e0168ded1a652461 Mon Sep 17 00:00:00 2001 From: Ahmed-Te7a Date: Tue, 19 Sep 2017 23:30:19 +0200 Subject: [PATCH 2/2] Modify spaces --- app/Http/Controllers/Web/IssueController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/Web/IssueController.php b/app/Http/Controllers/Web/IssueController.php index 13b631f6..d9307713 100644 --- a/app/Http/Controllers/Web/IssueController.php +++ b/app/Http/Controllers/Web/IssueController.php @@ -48,8 +48,8 @@ private function sprintWithIssues($slug) private function eagerLoad($query , $relation = '') { $eagerLoaders = collect(['user','users','commits','statuses', - 'comments','attachments','type', - 'productBacklog','sprint','configEffort']); + 'comments','attachments','type', + 'productBacklog','sprint','configEffort']); $eagerLoaders->each(function($loader) use (&$query,$relation){ $query = $query->with($relation . $loader);