Fix todo due date also counting completed items
This commit is contained in:
@@ -39,7 +39,12 @@ public function index()
|
||||
|
||||
// Process items to add latest_todo_due_date and remove todos array
|
||||
$laneArray['items'] = collect($laneArray['items'])->map(function ($item) {
|
||||
$item['next_todo_due_date'] = $item['todos'][0]['due_date'] ?? null;
|
||||
// Find the first todo with status != 'COMPLETED'
|
||||
$nextTodo = collect($item['todos'])->first(function ($todo) {
|
||||
return strtolower($todo['status'] ?? '') !== 'completed';
|
||||
});
|
||||
|
||||
$item['next_todo_due_date'] = $nextTodo['due_date'] ?? null;
|
||||
unset($item['todos']); // Remove the todos array
|
||||
return $item;
|
||||
})->toArray();
|
||||
|
||||
@@ -19,14 +19,16 @@ public function index()
|
||||
$query->where('notable_type', 'App\Models\PipelineItem');
|
||||
}])
|
||||
->withCount(['todos' => function ($query) {
|
||||
$query->where('todoable_type', 'App\Models\PipelineItem');
|
||||
$query
|
||||
->where('todoable_type', 'App\Models\PipelineItem')
|
||||
->whereNotIn('status', ['completed', 'COMPLETED']);
|
||||
}])
|
||||
->orderBy('position')
|
||||
->get();
|
||||
|
||||
$pipelineItemsArray = $pipelineItems->map(function ($item) {
|
||||
$itemArray = $item->toArray();
|
||||
$itemArray['next_todo_due_date'] = $item->todos->first()?->due_date?->toISOString() ?? null;
|
||||
$itemArray['next_todo_due_date'] = $item->todos()->where('status', '!=', 'COMPLETED')->first()?->due_date?->toISOString() ?? null;
|
||||
unset($itemArray['todos']); // Remove the todos array
|
||||
return $itemArray;
|
||||
});
|
||||
@@ -43,7 +45,8 @@ public function single(int $id)
|
||||
::with(['notes' => function ($query) {
|
||||
$query->where('notable_type', 'App\Models\PipelineItem')->orderBy('created_at', 'desc');
|
||||
}])->with(['todos' => function ($query) {
|
||||
$query->where('todoable_type', 'App\Models\PipelineItem')->orderBy('due_date', 'asc');
|
||||
$query
|
||||
->where('todoable_type', 'App\Models\PipelineItem')->orderBy('due_date', 'asc');
|
||||
}])->orderBy('position')->findOrFail($id);
|
||||
|
||||
return ApiDataTransformer::snakeToCamel($pipelineItem->toArray());
|
||||
|
||||
Reference in New Issue
Block a user