diff --git a/app/Http/Controllers/Web/IssueController.php b/app/Http/Controllers/Web/IssueController.php
index ddedf444..d9307713 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