| @@ -6,8 +6,9 @@ | ||
| 6 | 6 | use FluentBoards\App\Models\Stage; |
| 7 | 7 | use FluentBoards\App\Models\Task; |
| 8 | 8 | use FluentBoards\App\Modules\MCP\Helpers\MCPHelper; |
| 9 | 9 | use FluentBoards\App\Services\Constant; |
| 10 | +use FluentBoards\App\Services\NotificationService; | |
| 10 | 11 | use FluentBoards\App\Services\PermissionManager; |
| 11 | 12 | use FluentBoards\App\Services\TaskService; |
| 12 | 13 | |
| 13 | 14 | /** |
| @@ -56,8 +57,10 @@ | ||
| 56 | 57 | 'due_date' => isset($params['due_date']) ? (array) $params['due_date'] : [], |
| 57 | 58 | ]; |
| 58 | 59 | |
| 59 | 60 | $paginated = (new TaskService())->getTableTasks($board->id, $args); |
| 61 | + // Every summary includes its stage; load once for the page instead of per task. | |
| 62 | + $paginated->getCollection()->load('stage'); | |
| 60 | 63 | |
| 61 | 64 | return [ |
| 62 | 65 | 'items' => MCPHelper::formatTaskList($paginated->items()), |
| 63 | 66 | 'pagination' => [ |
| @@ -267,8 +270,11 @@ | ||
| 267 | 270 | $task = $task->reopen(); |
| 268 | 271 | } |
| 269 | 272 | |
| 270 | 273 | do_action('fluent_boards/task_stage_updated', $task, $oldStageId); |
| 274 | + | |
| 275 | + $recipients = (new NotificationService())->filterAssigneeToSendEmail($task->id, Constant::BOARD_EMAIL_STAGE_CHANGE); | |
| 276 | + $service->sendMailAfterTaskModify('stage_change', $recipients, $task->id); | |
| 271 | 277 | } |
| 272 | 278 | |
| 273 | 279 | do_action('fluent_boards/task_updated', $task, 'position'); |
| 274 | 280 | MCPHelper::loadTaskDetails($task); |