diff --git a/tests/unit/workflow/engine/src/ProcessMaker/Model/DelegationTest.php b/tests/unit/workflow/engine/src/ProcessMaker/Model/DelegationTest.php index f16721a2d..e5776daee 100644 --- a/tests/unit/workflow/engine/src/ProcessMaker/Model/DelegationTest.php +++ b/tests/unit/workflow/engine/src/ProcessMaker/Model/DelegationTest.php @@ -1,4 +1,5 @@ create(); factory(Process::class)->create(); $application = factory(Application::class)->create([ - 'APP_NUMBER' => 2001, 'APP_STATUS_ID' => 1, 'APP_STATUS' => 'DRAFT' ]); @@ -118,6 +128,7 @@ class DelegationTest extends TestCase /** * This checks to make sure filter by status is working properly * Review status filter by a specific status, such as To Do + * * @test */ public function it_should_return_status_todo_of_data() @@ -125,7 +136,6 @@ class DelegationTest extends TestCase factory(User::class, 100)->create(); factory(Process::class)->create(); $application = factory(Application::class)->create([ - 'APP_NUMBER' => 2001, 'APP_STATUS_ID' => 2, 'APP_STATUS' => 'TO_DO' ]); @@ -147,6 +157,7 @@ class DelegationTest extends TestCase /** * This checks to make sure filter by status is working properly * Review status filter by a specific status, such as Completed + * * @test */ public function it_should_return_status_completed_of_data() @@ -154,7 +165,6 @@ class DelegationTest extends TestCase factory(User::class, 100)->create(); factory(Process::class)->create(); $application = factory(Application::class)->create([ - 'APP_NUMBER' => 2001, 'APP_STATUS_ID' => 3, 'APP_STATUS' => 'COMPLETED', ]); @@ -178,6 +188,7 @@ class DelegationTest extends TestCase /** * This checks to make sure filter by status is working properly * Review status filter by a specific status, such as Cancelled + * * @test */ public function it_should_return_status_cancelled_of_data() @@ -185,7 +196,6 @@ class DelegationTest extends TestCase factory(User::class, 100)->create(); factory(Process::class)->create(); $application = factory(Application::class)->create([ - 'APP_NUMBER' => 2001, 'APP_STATUS_ID' => 4, 'APP_STATUS' => 'CANCELLED' ]); @@ -208,6 +218,7 @@ class DelegationTest extends TestCase /** * This ensures searching for a valid user works + * * @test */ public function it_should_return_one_result_for_specified_user() @@ -231,6 +242,7 @@ class DelegationTest extends TestCase /** * This ensures searching by case number and review the order + * * @test */ public function it_should_search_by_case_id_and_order_of_data() @@ -306,6 +318,7 @@ class DelegationTest extends TestCase /** * This ensures searching by case title and review the page + * * @test */ public function it_should_search_by_case_title_and_pages_of_data_app_number_matches_case_title() @@ -388,6 +401,7 @@ class DelegationTest extends TestCase /** * This ensures searching by task title and review the page + * * @test */ public function it_should_search_by_task_title_and_pages_of_data() @@ -395,14 +409,12 @@ class DelegationTest extends TestCase factory(User::class, 100)->create(); factory(Process::class)->create(); $task = factory(Task::class)->create([ - 'TAS_ID' => 1, 'TAS_TITLE' => 'Request task' ]); factory(Delegation::class, 5)->create([ 'TAS_ID' => $task->TAS_ID ]); $task = factory(Task::class)->create([ - 'TAS_ID' => 2, 'TAS_TITLE' => 'Account task' ]); factory(Delegation::class, 5)->create([ @@ -436,6 +448,7 @@ class DelegationTest extends TestCase /** * This ensures searching by case title and review the page + * * @test */ public function it_should_search_by_case_title_and_pages_of_data_app_number_no_matches_case_title() @@ -511,6 +524,7 @@ class DelegationTest extends TestCase /** * This ensures ordering ascending and descending works by case number APP_NUMBER + * * @test */ public function it_should_sort_by_case_id() @@ -543,6 +557,7 @@ class DelegationTest extends TestCase /** * This ensures ordering ascending and descending works by case title APP_TITLE + * * @test */ public function it_should_sort_by_case_title() @@ -550,14 +565,12 @@ class DelegationTest extends TestCase factory(User::class, 100)->create(); factory(Process::class)->create(); $application = factory(Application::class)->create([ - 'APP_NUMBER' => 2001, 'APP_TITLE' => 'Request by Thomas' ]); factory(Delegation::class)->create([ 'APP_NUMBER' => $application->APP_NUMBER ]); $application = factory(Application::class)->create([ - 'APP_NUMBER' => 30002, 'APP_TITLE' => 'Request by Ariel' ]); factory(Delegation::class)->create([ @@ -577,6 +590,7 @@ class DelegationTest extends TestCase /** * This ensures ordering ascending and descending works by case title APP_PRO_TITLE + * * @test */ public function it_should_sort_by_process() @@ -620,6 +634,7 @@ class DelegationTest extends TestCase /** * This ensures ordering ascending and descending works by task title APP_TAS_TITLE + * * @test */ public function it_should_sort_by_task_title() @@ -627,14 +642,12 @@ class DelegationTest extends TestCase factory(User::class, 100)->create(); factory(Process::class)->create(); $task = factory(Task::class)->create([ - 'TAS_ID' => 1000, 'TAS_TITLE' => 'Initiate Request' ]); factory(Delegation::class)->create([ 'TAS_ID' => $task->TAS_ID ]); $task = factory(Task::class)->create([ - 'TAS_ID' => 4000, 'TAS_TITLE' => 'Waiting for AP Manager Validation' ]); factory(Delegation::class)->create([ @@ -654,6 +667,7 @@ class DelegationTest extends TestCase /** * This ensures ordering ascending and descending works by current user + * * @test */ public function it_should_sort_by_user() @@ -694,11 +708,12 @@ class DelegationTest extends TestCase /** * This ensures ordering ordering ascending and descending works by last modified APP_UPDATE_DATE + * * @test */ public function it_should_sort_by_last_modified() { - factory(User::class,100)->create(); + factory(User::class, 100)->create(); factory(Process::class)->create(); $application = factory(Application::class)->create([ 'APP_UPDATE_DATE' => '2019-01-02 00:00:00' @@ -746,11 +761,12 @@ class DelegationTest extends TestCase /** * This ensures ordering ascending and descending works by due date DEL_TASK_DUE_DATE + * * @test */ public function it_should_sort_by_due_date() { - factory(User::class,100)->create(); + factory(User::class, 100)->create(); factory(Process::class)->create(); factory(Delegation::class, 10)->create([ 'DEL_TASK_DUE_DATE' => '2019-01-02 00:00:00' @@ -789,11 +805,12 @@ class DelegationTest extends TestCase /** * This ensures ordering ascending and descending works by status APP_STATUS + * * @test */ public function it_should_sort_by_status() { - factory(User::class,100)->create(); + factory(User::class, 100)->create(); factory(Process::class)->create(); $application = factory(Application::class)->create([ 'APP_STATUS' => 'DRAFT' @@ -842,6 +859,7 @@ class DelegationTest extends TestCase /** * This checks to make sure filter by category is working properly + * * @test */ public function it_should_return_data_filtered_by_process_category() @@ -881,6 +899,7 @@ class DelegationTest extends TestCase /** * This ensure the result is right when you search between two given dates + * * @test */ public function it_should_return_right_data_between_two_dates() @@ -903,6 +922,7 @@ class DelegationTest extends TestCase /** * This ensure the result is right when you search from a given date + * * @test */ public function it_should_return_right_data_when_you_send_only_dateFrom_parameter() @@ -924,6 +944,7 @@ class DelegationTest extends TestCase /** * This ensure the result is right when you search to a given date + * * @test */ public function it_should_return_right_data_when_you_send_only_dateTo_parameter() @@ -945,6 +966,7 @@ class DelegationTest extends TestCase /** * This ensures return the correct data by sequential + * * @test */ public function it_should_return_by_sequential_tasks_pages_of_data() @@ -993,6 +1015,7 @@ class DelegationTest extends TestCase /** * This ensures return the correct data by parallel task all threads CLOSED + * * @test */ public function it_should_return_by_parallel_tasks_threads_closed() @@ -1026,6 +1049,7 @@ class DelegationTest extends TestCase /** * This ensures return the correct data by parallel task all threads OPEN + * * @test */ public function it_should_return_by_parallel_tasks_threads_open() @@ -1045,6 +1069,7 @@ class DelegationTest extends TestCase /** * Review when the status is empty + * * @test */ public function it_should_return_status_empty() @@ -1064,6 +1089,7 @@ class DelegationTest extends TestCase /** * Review when filter when the process and category does not have a relation + * * @test */ public function it_should_return_process_and_category_does_not_have_a_relation() @@ -1087,15 +1113,18 @@ class DelegationTest extends TestCase 'PRO_ID' => $processNoCategory->id ]); //Search the cases related to the category and process does not have relation - $results = Delegation::search(null, 0, 25, null, $processWithCat->id, null, null, null, $category[1]->CATEGORY_UID); + $results = Delegation::search(null, 0, 25, null, $processWithCat->id, null, null, null, + $category[1]->CATEGORY_UID); $this->assertCount(0, $results['data']); //Search the cases related to the category and process does not have relation - $results = Delegation::search(null, 0, 25, null, $processNoCategory->id, null, null, null, $category[0]->CATEGORY_UID); + $results = Delegation::search(null, 0, 25, null, $processNoCategory->id, null, null, null, + $category[0]->CATEGORY_UID); $this->assertCount(0, $results['data']); } /** * Review when filter when the process and category does have a relation + * * @test */ public function it_should_return_process_and_category_does_have_a_relation() @@ -1119,7 +1148,8 @@ class DelegationTest extends TestCase 'PRO_ID' => $process->id, ]); //Search the cases when the category and process does have relation with a category - $results = Delegation::search(null, 0, 25, null, $processWithCat->id, null, null, null, $category->CATEGORY_UID); + $results = Delegation::search(null, 0, 25, null, $processWithCat->id, null, null, null, + $category->CATEGORY_UID); $this->assertCount(1, $results['data']); //Search the cases when the category and process does have relation with category empty $results = Delegation::search(null, 0, 25, null, $process->id, null, null, null, ''); @@ -1128,6 +1158,7 @@ class DelegationTest extends TestCase /** * Check if return participation information + * * @test */ public function it_should_return_participation_info() @@ -1158,6 +1189,7 @@ class DelegationTest extends TestCase /** * Check if return an empty participation information + * * @test */ public function it_should_return_empty_participation_info() @@ -1171,7 +1203,8 @@ class DelegationTest extends TestCase /** * This checks the counters is working properly in self-service user assigned - * @covers Delegation::countSelfService + * + * @covers ::countSelfService() * @test */ public function it_should_count_cases_by_user_with_self_service_user_assigned() @@ -1205,9 +1238,10 @@ class DelegationTest extends TestCase } /** - * This checks the counters is working properly in self-service-value-based when the variable has a value related with the USR_UID - * When the value assigned in the variable @@ARRAY_OF_USERS = [USR_UID] - * @covers Delegation::countSelfService + * This checks the counters is working properly in self-service-value-based when the variable has a value related + * with the USR_UID When the value assigned in the variable @@ARRAY_OF_USERS = [USR_UID] + * + * @covers ::countSelfService() * @test */ public function it_should_count_cases_by_user_with_self_service_value_based_usr_uid() @@ -1251,7 +1285,8 @@ class DelegationTest extends TestCase /** * This checks the counters is working properly in self-service and self-service value based - * @covers Delegation::countSelfService + * + * @covers ::countSelfService() * @test */ public function it_should_count_cases_by_user_with_self_service_mixed_with_self_service_value_based() @@ -1314,7 +1349,8 @@ class DelegationTest extends TestCase /** * This checks the counters is working properly in self-service group assigned - * @covers Delegation::countSelfService + * + * @covers ::countSelfService() * @test */ public function it_should_count_cases_by_user_with_self_service_group_assigned() @@ -1356,9 +1392,10 @@ class DelegationTest extends TestCase } /** - * This checks the counters is working properly in self-service-value-based when the variable has a value related with the GRP_UID - * When the value assigned in the variable @@ARRAY_OF_USERS = [GRP_UID] - * @covers Delegation::countSelfService + * This checks the counters is working properly in self-service-value-based when the variable has a value related + * with the GRP_UID When the value assigned in the variable @@ARRAY_OF_USERS = [GRP_UID] + * + * @covers ::countSelfService() * @test */ public function it_should_count_cases_by_user_with_self_service_value_based_grp_uid() @@ -1415,7 +1452,8 @@ class DelegationTest extends TestCase /** * This checks the counters is working properly in self-service user and group assigned in parallel task - * @covers Delegation::countSelfService + * + * @covers ::countSelfService() * @test */ public function it_should_count_cases_by_user_with_self_service_user_and_group_assigned_parallel_task() @@ -1514,9 +1552,10 @@ class DelegationTest extends TestCase } /** - * This checks the counters is working properly in self-service-value-based with GRP_UID and USR_UID in parallel task - * When the value assigned in the variable @@ARRAY_OF_USERS = [GRP_UID, USR_UID] - * @covers Delegation::countSelfService + * This checks the counters is working properly in self-service-value-based with GRP_UID and USR_UID in parallel + * task When the value assigned in the variable @@ARRAY_OF_USERS = [GRP_UID, USR_UID] + * + * @covers ::countSelfService() * @test */ public function it_should_count_cases_by_user_with_self_service_value_based_usr_uid_and_grp_uid() @@ -1585,7 +1624,7 @@ class DelegationTest extends TestCase /** * This check if return the USR_UID assigned in the thread OPEN * - * @covers Delegation::getCurrentUser + * @covers ::getCurrentUser() * @test */ public function it_should_return_current_user_for_thread_open() @@ -1618,7 +1657,7 @@ class DelegationTest extends TestCase /** * This check if return the USR_UID assigned in the thread CLOSED * - * @covers Delegation::getCurrentUser + * @covers ::getCurrentUser() * @test */ public function it_should_return_current_user_for_thread_closed() @@ -1651,7 +1690,7 @@ class DelegationTest extends TestCase /** * This check if return empty when the data does not exits * - * @covers Delegation::getCurrentUser + * @covers ::getCurrentUser() * @test */ public function it_should_return_empty_when_row_does_not_exist() @@ -1687,7 +1726,7 @@ class DelegationTest extends TestCase /** * This checks if return the open thread * - * @covers Delegation::getOpenThreads + * @covers ::getOpenThreads() * @test */ public function it_should_return_thread_open() @@ -1714,7 +1753,7 @@ class DelegationTest extends TestCase /** * This checks if return empty when the thread is CLOSED * - * @covers Delegation::getOpenThreads + * @covers ::getOpenThreads() * @test */ public function it_should_return_empty_when_thread_is_closed() @@ -1738,7 +1777,7 @@ class DelegationTest extends TestCase /** * This checks if return empty when the data is not null * - * @covers Delegation::getOpenThreads + * @covers ::getOpenThreads() * @test */ public function it_should_return_empty_when_thread_finish_date_is_not_null() @@ -1760,4 +1799,49 @@ class DelegationTest extends TestCase $result = Delegation::getOpenThreads($application->APP_NUMBER, $task->TAS_UID); $this->assertEmpty($result); } + + /** + * This checks if return the participation when the user does have participation + * + * @covers \ProcessMaker\Model\Delegation::participation() + * @test + */ + public function it_when_the_user_does_have_participation() + { + factory(Process::class)->create(); + //Create user + $user = factory(User::class)->create(); + $application = factory(Application::class)->create(); + //Create a delegation + factory(Delegation::class)->create([ + 'APP_NUMBER' => $application->APP_NUMBER, + 'APP_UID' => $application->APP_UID, + 'USR_ID' => $user->USR_ID, + 'USR_UID' => $user->USR_UID + ]); + $result = Delegation::participation($application->APP_UID, $user->USR_UID); + $this->assertTrue($result); + + } + + /** + * This checks if return the participation of the user when the user does not have participation + * + * @covers \ProcessMaker\Model\Delegation::participation() + * @test + */ + public function it_when_the_user_does_not_have_participation() + { + factory(Process::class)->create(); + //Create user + $user = factory(User::class)->create(); + $application = factory(Application::class)->create(); + //Create a delegation + factory(Delegation::class)->create([ + 'APP_NUMBER' => $application->APP_NUMBER, + 'APP_UID' => $application->APP_UID + ]); + $result = Delegation::participation($application->APP_UID, $user->USR_UID); + $this->assertFalse($result); + } } \ No newline at end of file diff --git a/workflow/engine/methods/cases/cases_Resume.php b/workflow/engine/methods/cases/cases_Resume.php index cc37baf88..6dfb4c2cc 100644 --- a/workflow/engine/methods/cases/cases_Resume.php +++ b/workflow/engine/methods/cases/cases_Resume.php @@ -1,49 +1,56 @@ userCanAccess('PM_CASES')) { - case - 2: + case -2: G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_SYSTEM', 'error', 'labels'); G::header('location: ../login/login'); die(); break; - case - 1: + case -1: G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels'); G::header('location: ../login/login'); die(); break; } -/* GET , POST & $_SESSION Vars */ - -/* Menues */ +/** Menu's */ $_SESSION['bNoShowSteps'] = true; $G_MAIN_MENU = 'processmaker'; $G_SUB_MENU = 'caseOptions'; $G_ID_MENU_SELECTED = 'CASES'; $G_ID_SUB_MENU_SELECTED = '_'; -/* Prepare page before to show */ -$oCase = new Cases(); -//Check the authorization -$objCase = new \ProcessMaker\BusinessModel\Cases(); -$aUserCanAccess = $objCase->userAuthorization( +/** Prepare page before to show */ +// Check the authorization +$objCase = new BmCases(); +$userCanAccess = $objCase->userAuthorization( $_SESSION['USER_LOGGED'], $_SESSION['PROCESS'], $_GET['APP_UID'], - array('PM_ALLCASES'), - array('SUMMARY_FORM' => 'VIEW') + ['PM_ALLCASES'], + ['SUMMARY_FORM' => 'VIEW'] ); +$cases = new Cases(); if (isset($_SESSION['ACTION']) && ($_SESSION['ACTION'] == 'jump')) { - $Fields = $oCase->loadCase($_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['ACTION']); + $Fields = $cases->loadCase($_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['ACTION']); $process = new Process(); $processData = $process->load($Fields['PRO_UID']); if (isset($processData['PRO_DYNAFORMS']['PROCESS']) && $processData['PRO_DYNAFORMS']['PROCESS'] != '' && - $aUserCanAccess['objectPermissions']['SUMMARY_FORM'] + $userCanAccess['objectPermissions']['SUMMARY_FORM'] ) { $_REQUEST['APP_UID'] = $Fields['APP_UID']; $_REQUEST['DEL_INDEX'] = $Fields['DEL_INDEX']; @@ -52,35 +59,30 @@ if (isset($_SESSION['ACTION']) && ($_SESSION['ACTION'] == 'jump')) { exit(); } } else { - $Fields = $oCase->loadCase($_SESSION['APPLICATION'], $_SESSION['INDEX']); + $Fields = $cases->loadCase($_SESSION['APPLICATION'], $_SESSION['INDEX']); } -if (!$aUserCanAccess['participated'] && !$aUserCanAccess['supervisor'] && !$aUserCanAccess['rolesPermissions']['PM_ALLCASES'] && !$aUserCanAccess['objectPermissions']['SUMMARY_FORM']) { - $aMessage['MESSAGE'] = G::LoadTranslation('ID_NO_PERMISSION_NO_PARTICIPATED'); +if ( + !$userCanAccess['participated'] && + !$userCanAccess['supervisor'] && + !$userCanAccess['rolesPermissions']['PM_ALLCASES'] && + !$userCanAccess['objectPermissions']['SUMMARY_FORM'] +) { + $message = []; + $message['MESSAGE'] = G::LoadTranslation('ID_NO_PERMISSION_NO_PARTICIPATED'); $G_PUBLISH = new Publisher(); - $G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showMessage', '', $aMessage); + $G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showMessage', '', $message); G::RenderPage('publishBlank', 'blank'); die(); } -if (isset($aRow['APP_TYPE'])) { - switch ($aRow['APP_TYPE']) { - case 'PAUSE': - $Fields['STATUS'] = ucfirst(strtolower(G::LoadTranslation('ID_PAUSED'))); - break; - case 'CANCEL': - $Fields['STATUS'] = ucfirst(strtolower(G::LoadTranslation('ID_CANCELLED'))); - break; - } -} $actions = 'false'; if (isset($_GET['action']) && $_GET['action'] == 'paused') { $actions = 'true'; } - /* Render page */ +/** Render page */ $oHeadPublisher = headPublisher::getSingleton(); - $oHeadPublisher->addScriptCode(" if (typeof parent != 'undefined') { if (parent.showCaseNavigatorPanel) { @@ -103,11 +105,11 @@ $oHeadPublisher->addScriptCode(' require_once 'classes/model/Process.php'; $objProc = new Process(); -$aProc = $objProc->load($Fields['PRO_UID']); -$Fields['PRO_TITLE'] = $aProc['PRO_TITLE']; +$processFields = $objProc->load($Fields['PRO_UID']); +$Fields['PRO_TITLE'] = $processFields['PRO_TITLE']; $objTask = new Task(); -if (!isset($Fields['TAS_UID']) || $Fields['TAS_UID'] == '') { +if (!isset($Fields['TAS_UID']) || empty($Fields['TAS_UID'])) { $Fields['TAS_UID'] = $Fields['APP_DATA']['TASK']; } @@ -118,12 +120,12 @@ $tasksInParallel = array_filter($tasksInParallel, function ($value) { $nTasksInParallel = count($tasksInParallel); if ($nTasksInParallel > 1) { - $aTask = $objTask->load($tasksInParallel[$nTasksInParallel - 1]); + $taskInfo = $objTask->load($tasksInParallel[$nTasksInParallel - 1]); } else { - $aTask = $objTask->load($Fields['TAS_UID']); + $taskInfo = $objTask->load($Fields['TAS_UID']); } -$Fields['TAS_TITLE'] = $aTask['TAS_TITLE']; +$Fields['TAS_TITLE'] = $taskInfo['TAS_TITLE']; $Fields = DateTime::convertUtcToTimeZone($Fields); $objUser = new Users(); @@ -153,9 +155,9 @@ if ($Fields['APP_STATUS'] != 'COMPLETED') { } } $FieldsPar['DEL_DELEGATE_DATE'] = DateTime::convertUtcToTimeZone($row['DEL_DELEGATE_DATE']); - $FieldsPar['DEL_INIT_DATE'] = DateTime::convertUtcToTimeZone($row['DEL_INIT_DATE']); + $FieldsPar['DEL_INIT_DATE'] = DateTime::convertUtcToTimeZone($row['DEL_INIT_DATE']); $FieldsPar['DEL_TASK_DUE_DATE'] = DateTime::convertUtcToTimeZone($row['DEL_TASK_DUE_DATE']); - $FieldsPar['DEL_FINISH_DATE'] = DateTime::convertUtcToTimeZone($row['DEL_FINISH_DATE']); + $FieldsPar['DEL_FINISH_DATE'] = DateTime::convertUtcToTimeZone($row['DEL_FINISH_DATE']); $G_PUBLISH->AddContent('xmlform', 'xmlform', 'cases/cases_Resume_Current_Task.xml', '', $FieldsPar); } } diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php index 47c429ad2..65438effb 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php @@ -11,6 +11,7 @@ use AppDelegationPeer; use AppDocument; use AppDocumentPeer; use AppHistoryPeer; +use Application; use ApplicationPeer; use Applications; use AppNotesPeer; @@ -45,7 +46,6 @@ use ProcessMaker\Services\OAuth2\Server; use ProcessMaker\Util\DateTime as UtilDateTime; use ProcessMaker\Validation\ExceptionRestApi; use ProcessMaker\Validation\Validator as FileValidator; - use ProcessPeer; use ProcessUser; use ProcessUserPeer; @@ -3317,6 +3317,7 @@ class Cases * @param array $objectPermissions, the permissions that we need to review * @param boolean $objectSupervisor, if we need to get all the objects supervisor * @param string $tasUid + * * @return array */ public function userAuthorization( @@ -3330,23 +3331,21 @@ class Cases ) { $arrayAccess = []; - //User has participated - $participated = new ListParticipatedLast(); - $listParticipated = $participated->loadList($usrUid, [], null, $appUid); - $arrayAccess['participated'] = (count($listParticipated) == 0) ? false : true; + // User has participated + $arrayAccess['participated'] = Delegation::participation($appUid, $usrUid); - //User is supervisor + // User is supervisor $supervisor = new BmProcessSupervisor(); $isSupervisor = $supervisor->isUserProcessSupervisor($proUid, $usrUid); $arrayAccess['supervisor'] = ($isSupervisor) ? true : false; - //If the user is supervisor we will to return the object assigned + // If the user is supervisor we will to return the object assigned if ($isSupervisor && $objectSupervisor) { $ps = new BmProcessSupervisor(); $arrayAccess['objectSupervisor'] = $ps->getObjectSupervisor($proUid); } - //Roles Permissions + // Roles Permissions if (count($rolesPermissions) > 0) { global $RBAC; foreach ($rolesPermissions as $value) { @@ -3354,7 +3353,7 @@ class Cases } } - //Object Permissions + // Object Permissions if (count($objectPermissions) > 0) { $case = new ClassesCases(); foreach ($objectPermissions as $key => $value) { diff --git a/workflow/engine/src/ProcessMaker/Model/Delegation.php b/workflow/engine/src/ProcessMaker/Model/Delegation.php index 7b36f8124..75dce3c24 100644 --- a/workflow/engine/src/ProcessMaker/Model/Delegation.php +++ b/workflow/engine/src/ProcessMaker/Model/Delegation.php @@ -563,4 +563,22 @@ class Delegation extends Model return $arrayOpenThreads; } + + /** + * Return if the user has participation in the case + * + * @param string $appUid, Case key + * @param string $userUid, User key + * + * @return boolean + */ + public static function participation($appUid, $userUid) + { + $query = Delegation::query()->select(); + $query->where('APP_UID', $appUid); + $query->where('USR_UID', $userUid); + $query->limit(1); + + return ($query->count() > 0); + } }