diff --git a/workflow/engine/src/ProcessMaker/Model/Delegation.php b/workflow/engine/src/ProcessMaker/Model/Delegation.php index 64babc6f0..6f5f91bed 100644 --- a/workflow/engine/src/ProcessMaker/Model/Delegation.php +++ b/workflow/engine/src/ProcessMaker/Model/Delegation.php @@ -6,6 +6,7 @@ use DateTime; use G; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\DB; +use ProcessMaker\BusinessModel\Cases\AbstractCases; use ProcessMaker\Core\System; use ProcessMaker\Model\Task; @@ -1808,4 +1809,45 @@ class Delegation extends Model $res = $query->first(); return $res->DEL_TITLE; } + + /** + * Return the pending task related to the appNumber + * + * @param int $appNumber + * + * @return array + */ + public static function getPendingTask(int $appNumber) + { + $query = Delegation::query()->select([ + 'TASK.TAS_TITLE', // Task + 'APP_DELEGATION.DEL_TITLE', // Thread title + 'APP_DELEGATION.DEL_THREAD_STATUS', // Thread status + 'APP_DELEGATION.USR_ID', // Current UserId + 'USERS.USR_USERNAME', // Current UserName + 'USERS.USR_FIRSTNAME', // Current User FirstName + 'USERS.USR_LASTNAME', // Current User LastName + 'APP_DELEGATION.DEL_TASK_DUE_DATE', // Due Date + 'APP_DELEGATION.APP_UID', // Case Uid for Open case + 'APP_DELEGATION.DEL_INDEX', // Del Index for Open case + ]); + // Join with task + $query->joinTask(); + // Join with task + $query->joinUser(); + // Get the open threads + $query->threadOpen(); + // Related to the specific case number + $query->case($appNumber); + // Get the results + $results = $query->get(); + $results->transform(function ($item) { + $abs = new AbstractCases(); + $item['TAS_COLOR'] = $abs->getTaskColor($item['DEL_TASK_DUE_DATE']); + $item['TAS_COLOR_LABEL'] = AbstractCases::TASK_COLORS[$item['TAS_COLOR']]; + return $item; + }); + + return $results; + } } diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Home.php b/workflow/engine/src/ProcessMaker/Services/Api/Home.php index 6543ba10b..037abb167 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Home.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Home.php @@ -13,6 +13,7 @@ use ProcessMaker\BusinessModel\Cases\Paused; use ProcessMaker\BusinessModel\Cases\Search; use ProcessMaker\BusinessModel\Cases\Supervising; use ProcessMaker\BusinessModel\Cases\Unassigned; +use ProcessMaker\Model\Delegation; use ProcessMaker\Model\User; use ProcessMaker\Services\Api; use RBAC; @@ -535,4 +536,25 @@ class Home extends Api // Return menu return $menuHome; } + + /** + * Get the search cases + * + * @url GET /:app_number/pending-tasks + * + * @param int $app_number + * + * @return array + * + * @throws Exception + * + * @access protected + * @class AccessControl {@permission PM_CASES} + */ + public function getPendingTasks(int $app_number) + { + $result = Delegation::getPendingTask($app_number); + + return $result; + } }