PMCORE-4063
This commit is contained in:
@@ -9,6 +9,8 @@ use ProcessMaker\Model\AppDelay;
|
|||||||
use ProcessMaker\Model\Application;
|
use ProcessMaker\Model\Application;
|
||||||
use ProcessMaker\Model\Delegation;
|
use ProcessMaker\Model\Delegation;
|
||||||
use ProcessMaker\Model\Documents;
|
use ProcessMaker\Model\Documents;
|
||||||
|
use ProcessMaker\Model\GroupUser;
|
||||||
|
use ProcessMaker\Model\Groupwf;
|
||||||
use ProcessMaker\Model\ListUnassigned;
|
use ProcessMaker\Model\ListUnassigned;
|
||||||
use ProcessMaker\Model\Process;
|
use ProcessMaker\Model\Process;
|
||||||
use ProcessMaker\Model\ProcessUser;
|
use ProcessMaker\Model\ProcessUser;
|
||||||
@@ -483,4 +485,43 @@ class CasesTest extends TestCase
|
|||||||
// Asserts
|
// Asserts
|
||||||
$this->assertNotTrue($result);
|
$this->assertNotTrue($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* It tests get users to reassign
|
||||||
|
*
|
||||||
|
* @covers \ProcessMaker\BusinessModel\Cases::usersToReassign()
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function it_should_test_users_to_reassign()
|
||||||
|
{
|
||||||
|
$process = Process::factory()->create();
|
||||||
|
$task = Task::factory()->create([
|
||||||
|
'PRO_UID' => $process->PRO_UID,
|
||||||
|
'TAS_ASSIGN_TYPE' => 'SELF_SERVICE',
|
||||||
|
'TAS_GROUP_VARIABLE' => '@@arrayOfusers'
|
||||||
|
]);
|
||||||
|
$users = User::factory(3)->create();
|
||||||
|
$groupwf = Groupwf::factory()->create();
|
||||||
|
|
||||||
|
GroupUser::factory()->create([
|
||||||
|
'GRP_UID' => $groupwf->GRP_UID,
|
||||||
|
'GRP_ID' => $groupwf->GRP_ID,
|
||||||
|
'USR_UID' => $users[1]->USR_UID
|
||||||
|
]);
|
||||||
|
GroupUser::factory()->create([
|
||||||
|
'GRP_UID' => $groupwf->GRP_UID,
|
||||||
|
'GRP_ID' => $groupwf->GRP_ID,
|
||||||
|
'USR_UID' => $users[2]->USR_UID
|
||||||
|
]);
|
||||||
|
|
||||||
|
$application = Application::factory()->create([
|
||||||
|
'PRO_UID' => $process->PRO_UID,
|
||||||
|
'APP_DATA' => serialize(['arrayOfusers' => [$groupwf->GRP_UID, $users[0]->USR_UID]])
|
||||||
|
]);
|
||||||
|
|
||||||
|
$cases = new Cases();
|
||||||
|
$result = $cases->usersToReassign($users[0]['USR_UID'], $task->TAS_UID, $application->APP_UID);
|
||||||
|
// Asserts
|
||||||
|
$this->assertCount(3, $result['data']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,9 +53,12 @@ use ProcessMaker\Model\AppNotes as Notes;
|
|||||||
use ProcessMaker\Model\AppTimeoutAction;
|
use ProcessMaker\Model\AppTimeoutAction;
|
||||||
use ProcessMaker\Model\Delegation;
|
use ProcessMaker\Model\Delegation;
|
||||||
use ProcessMaker\Model\Documents;
|
use ProcessMaker\Model\Documents;
|
||||||
|
use ProcessMaker\Model\Groupwf;
|
||||||
|
use ProcessMaker\Model\GroupUser;
|
||||||
use ProcessMaker\Model\ListUnassigned;
|
use ProcessMaker\Model\ListUnassigned;
|
||||||
use ProcessMaker\Model\Triggers;
|
use ProcessMaker\Model\Triggers;
|
||||||
use ProcessMaker\Model\ProcessUser;
|
use ProcessMaker\Model\ProcessUser;
|
||||||
|
use ProcessMaker\Model\Task;
|
||||||
use ProcessMaker\Model\User;
|
use ProcessMaker\Model\User;
|
||||||
use ProcessMaker\Plugins\PluginRegistry;
|
use ProcessMaker\Plugins\PluginRegistry;
|
||||||
use ProcessMaker\Services\Api;
|
use ProcessMaker\Services\Api;
|
||||||
@@ -2761,6 +2764,75 @@ class Cases
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Users to reassign
|
||||||
|
*
|
||||||
|
* @param string $userUid Unique id of User (User logged)
|
||||||
|
* @param string $taskUid Unique id of Task
|
||||||
|
* @param string $appUid Unique id of Application
|
||||||
|
*
|
||||||
|
* @return array Return Users to reassign
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public function usersToReassign(
|
||||||
|
$userUid,
|
||||||
|
$taskUid,
|
||||||
|
$appUid
|
||||||
|
) {
|
||||||
|
$task = Task::where('TAS_UID', '=', $taskUid)->first();
|
||||||
|
$type = $task->TAS_ASSIGN_TYPE;
|
||||||
|
$variable = $task->TAS_GROUP_VARIABLE;
|
||||||
|
$result = [];
|
||||||
|
|
||||||
|
if ($type === 'SELF_SERVICE' && $variable !== '') {
|
||||||
|
$variable = substr($variable, 2);
|
||||||
|
$case = new ClassesCases();
|
||||||
|
$app = new ModelApplication();
|
||||||
|
$fields = $app::where('APP_UID', '=', $appUid)->first();
|
||||||
|
$data = $case::unserializeData($fields->APP_DATA);
|
||||||
|
|
||||||
|
$row = [];
|
||||||
|
$groups = new GroupUser();
|
||||||
|
$groupwf = new Groupwf();
|
||||||
|
|
||||||
|
if (!empty($data[$variable])) {
|
||||||
|
foreach ($data[$variable] as $uid) {
|
||||||
|
$group = $groupwf::where('GRP_UID', '=', $uid)->first();
|
||||||
|
if (!empty($group)) {
|
||||||
|
$users = $groups::where('GRP_UID', '=', $uid)->get()->toArray();
|
||||||
|
foreach ($users as $data) {
|
||||||
|
$row[] = $data['USR_UID'];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$row[] = $uid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$user = new User();
|
||||||
|
$users = [];
|
||||||
|
foreach ($row as $data) {
|
||||||
|
$obj = $user::where('USR_UID', '=', $data)->Active()->first();
|
||||||
|
if (!is_null($obj) && $obj->USR_USERNAME !== "") {
|
||||||
|
$users[] = $obj;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($users as $user) {
|
||||||
|
$result[] = [
|
||||||
|
"USR_UID" => $user->USR_UID,
|
||||||
|
"USR_USERNAME" => $user->USR_USERNAME,
|
||||||
|
"USR_FIRSTNAME" => $user->USR_FIRSTNAME,
|
||||||
|
"USR_LASTNAME"=> $user->USR_LASTNAME
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$result = $this->getUsersToReassign($userUid, $taskUid)['data'];
|
||||||
|
}
|
||||||
|
return ['data' => $result];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Users to reassign
|
* Get Users to reassign
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1093,6 +1093,33 @@ class Cases extends Api
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get users to reassign or assign
|
||||||
|
*
|
||||||
|
* @url GET /:task_uid/:app_uid/userstoreassign
|
||||||
|
*
|
||||||
|
* @param string $task_uid
|
||||||
|
* @param string $app_uid
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
* @throws RestException
|
||||||
|
*
|
||||||
|
* @access protected
|
||||||
|
* @class AccessControl {@permission PM_CASES}
|
||||||
|
*/
|
||||||
|
public function usersToReasign($task_uid, $app_uid)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$usr_uid = $this->getUserId();
|
||||||
|
$cases = new BmCases();
|
||||||
|
return $cases->usersToReassign($usr_uid, $task_uid, $app_uid);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute trigger in a case.
|
* Execute trigger in a case.
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user