From b6c9b767028a291489cd72944170f8ab014235ea Mon Sep 17 00:00:00 2001 From: Jhon Date: Tue, 14 Jan 2025 17:12:12 -0400 Subject: [PATCH] Adds number of user assignments on user assignment grid Signed-off-by: Jhon --- .../userSelect/UserSelectGridCellProvider.php | 23 ++++++++++++++++++- .../userSelect/UserSelectGridHandler.php | 18 +++++++++++++-- locale/en/common.po | 3 +++ locale/es/common.po | 3 +++ locale/pt_BR/common.po | 3 +++ 5 files changed, 47 insertions(+), 3 deletions(-) diff --git a/controllers/grid/users/userSelect/UserSelectGridCellProvider.php b/controllers/grid/users/userSelect/UserSelectGridCellProvider.php index b5d7b9d3aa6..e0033f638e2 100644 --- a/controllers/grid/users/userSelect/UserSelectGridCellProvider.php +++ b/controllers/grid/users/userSelect/UserSelectGridCellProvider.php @@ -16,11 +16,16 @@ namespace PKP\controllers\grid\users\userSelect; +use APP\facades\Repo; +use APP\submission\Submission; use PKP\controllers\grid\DataObjectGridCellProvider; use PKP\controllers\grid\GridColumn; class UserSelectGridCellProvider extends DataObjectGridCellProvider { + /** @var int ID of the current context */ + public $_contextId; + /** @var int User ID of already-selected user */ public $_userId; @@ -29,8 +34,9 @@ class UserSelectGridCellProvider extends DataObjectGridCellProvider * * @param int $userId ID of preselected user. */ - public function __construct($userId = null) + public function __construct($contextId, $userId = null) { + $this->_contextId = $contextId; $this->_userId = $userId; } @@ -56,7 +62,22 @@ public function getTemplateVarsFromRowColumn($row, $column) case 'name': // User's name return ['label' => $element->getFullName()]; + + case 'assignments': //User's assignments count + $countUserAssignments = $this->getCountUserAssignments($element->getId()); + return ['label' => $countUserAssignments]; } assert(false); } + + private function getCountUserAssignments($userId) + { + $countAssignedSubmissions = Repo::submission()->getCollector() + ->filterByContextIds([$this->_contextId]) + ->filterByStatus([Submission::STATUS_QUEUED]) + ->assignedTo([$userId]) + ->getCount(); + + return $countAssignedSubmissions; + } } diff --git a/controllers/grid/users/userSelect/UserSelectGridHandler.php b/controllers/grid/users/userSelect/UserSelectGridHandler.php index c0687e28fde..315baf773e7 100644 --- a/controllers/grid/users/userSelect/UserSelectGridHandler.php +++ b/controllers/grid/users/userSelect/UserSelectGridHandler.php @@ -66,10 +66,11 @@ public function initialize($request, $args = null) { parent::initialize($request, $args); + $contextId = $request->getContext()->getId(); $stageId = $this->getAuthorizedContextObject(Application::ASSOC_TYPE_WORKFLOW_STAGE); $userGroups = Repo::userGroup()->getUserGroupsByStage( - $request->getContext()->getId(), + $contextId, $stageId ); @@ -85,7 +86,7 @@ public function initialize($request, $args = null) $this->setTitle('editor.submission.findAndSelectUser'); // Columns - $cellProvider = new UserSelectGridCellProvider(); + $cellProvider = new UserSelectGridCellProvider($contextId); $this->addColumn( new GridColumn( 'select', @@ -108,6 +109,19 @@ public function initialize($request, $args = null) ] ) ); + $this->addColumn( + new GridColumn( + 'assignments', + 'common.assignments', + null, + null, + $cellProvider, + [ + 'alignment' => GridColumn::COLUMN_ALIGNMENT_LEFT, + 'width' => 30 + ] + ) + ); } diff --git a/locale/en/common.po b/locale/en/common.po index 3c41a27aeba..2305bf89e09 100644 --- a/locale/en/common.po +++ b/locale/en/common.po @@ -189,6 +189,9 @@ msgstr "Assigned" msgid "common.assigned.date" msgstr "Assigned: {$dateAssigned}" +msgid "common.assignments" +msgstr "Assignments" + msgid "common.available" msgstr "Available" diff --git a/locale/es/common.po b/locale/es/common.po index 8c68522c07d..266d7fbb037 100644 --- a/locale/es/common.po +++ b/locale/es/common.po @@ -193,6 +193,9 @@ msgstr "Asignado" msgid "common.assigned.date" msgstr "Asignado: {$dateAssigned}" +msgid "common.assignments" +msgstr "Asignaciones" + msgid "common.available" msgstr "Disponible" diff --git a/locale/pt_BR/common.po b/locale/pt_BR/common.po index 6e09921cf3c..79574b122ed 100644 --- a/locale/pt_BR/common.po +++ b/locale/pt_BR/common.po @@ -192,6 +192,9 @@ msgstr "Designado" msgid "common.assigned.date" msgstr "Designado em: {$dateAssigned}" +msgid "common.assignments" +msgstr "Designações" + msgid "common.available" msgstr "Disponível"