Merged in bugfix/PMCORE-940 (pull request #7442)
PMCORE-940 Approved-by: Paula Quispe <paula.quispe@processmaker.com> Approved-by: Julio Cesar Laura Avendaño <contact@julio-laura.com>
This commit is contained in:
@@ -7,6 +7,9 @@ use ProcessMaker\Model\Application;
|
|||||||
use ProcessMaker\Model\Delegation;
|
use ProcessMaker\Model\Delegation;
|
||||||
use ProcessMaker\Model\Process;
|
use ProcessMaker\Model\Process;
|
||||||
use ProcessMaker\Model\Step;
|
use ProcessMaker\Model\Step;
|
||||||
|
use ProcessMaker\Model\Task;
|
||||||
|
use ProcessMaker\Model\TaskUser;
|
||||||
|
use ProcessMaker\Model\User;
|
||||||
use Tests\TestCase;
|
use Tests\TestCase;
|
||||||
|
|
||||||
class CasesTest extends TestCase
|
class CasesTest extends TestCase
|
||||||
@@ -360,6 +363,49 @@ class CasesTest extends TestCase
|
|||||||
$this->assertCount(4, $res);
|
$this->assertCount(4, $res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test the getStartCases method
|
||||||
|
*
|
||||||
|
* @covers \Cases::getStartCases()
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function it_should_test_get_start_cases()
|
||||||
|
{
|
||||||
|
// Creating a process with initial tasks
|
||||||
|
$process = factory(Process::class)->create();
|
||||||
|
$user = factory(User::class)->create();
|
||||||
|
$normalTask = factory(Task::class)->create([
|
||||||
|
'PRO_UID' => $process->PRO_UID,
|
||||||
|
'PRO_ID' => $process->PRO_ID,
|
||||||
|
'TAS_START' => 'TRUE'
|
||||||
|
]);
|
||||||
|
$webEntryTask = factory(Task::class)->create([
|
||||||
|
'PRO_UID' => $process->PRO_UID,
|
||||||
|
'PRO_ID' => $process->PRO_ID,
|
||||||
|
'TAS_START' => 'TRUE',
|
||||||
|
'TAS_TYPE' => 'WEBENTRYEVENT'
|
||||||
|
]);
|
||||||
|
factory(TaskUser::class)->create([
|
||||||
|
'TAS_UID' => $normalTask->TAS_UID,
|
||||||
|
'USR_UID' => $user->USR_UID
|
||||||
|
]);
|
||||||
|
factory(TaskUser::class)->create([
|
||||||
|
'TAS_UID' => $webEntryTask->TAS_UID,
|
||||||
|
'USR_UID' => $user->USR_UID
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Instance class Cases
|
||||||
|
$cases = new Cases();
|
||||||
|
|
||||||
|
// Get all initial tasks
|
||||||
|
$startingTasks = $cases->getStartCases($user->USR_UID);
|
||||||
|
$this->assertCount(3, $startingTasks);
|
||||||
|
|
||||||
|
// Get initial tasks without dummy tasks
|
||||||
|
$startingTasks = $cases->getStartCases($user->USR_UID, true);
|
||||||
|
$this->assertCount(2, $startingTasks);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Call the tearDown method
|
* Call the tearDown method
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use ProcessMaker\BusinessModel\Task as BusinessModelTask;
|
||||||
use ProcessMaker\BusinessModel\User as BusinessModelUser;
|
use ProcessMaker\BusinessModel\User as BusinessModelUser;
|
||||||
use ProcessMaker\BusinessModel\WebEntryEvent;
|
use ProcessMaker\BusinessModel\WebEntryEvent;
|
||||||
use ProcessMaker\Cases\CasesTrait;
|
use ProcessMaker\Cases\CasesTrait;
|
||||||
@@ -109,14 +110,16 @@ class Cases
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get user starting tasks
|
* Get user's starting tasks
|
||||||
* @param string $sUIDUser
|
*
|
||||||
* @return $rows
|
* @param string $uidUser
|
||||||
|
* @param bool $withoutDummyTasks
|
||||||
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function getStartCases($sUIDUser = '')
|
public function getStartCases($uidUser = '', $withoutDummyTasks = false)
|
||||||
{
|
{
|
||||||
$rows[] = array('uid' => 'char', 'value' => 'char');
|
$rows = [['uid' => 'char', 'value' => 'char']];
|
||||||
$tasks = array();
|
$tasks = [];
|
||||||
|
|
||||||
$c = new Criteria();
|
$c = new Criteria();
|
||||||
$c->clearSelectColumns();
|
$c->clearSelectColumns();
|
||||||
@@ -126,7 +129,7 @@ class Cases
|
|||||||
$c->addJoin(TaskPeer::TAS_UID, TaskUserPeer::TAS_UID, Criteria::LEFT_JOIN);
|
$c->addJoin(TaskPeer::TAS_UID, TaskUserPeer::TAS_UID, Criteria::LEFT_JOIN);
|
||||||
$c->add(ProcessPeer::PRO_STATUS, 'ACTIVE');
|
$c->add(ProcessPeer::PRO_STATUS, 'ACTIVE');
|
||||||
$c->add(TaskPeer::TAS_START, 'TRUE');
|
$c->add(TaskPeer::TAS_START, 'TRUE');
|
||||||
$c->add(TaskUserPeer::USR_UID, $sUIDUser);
|
$c->add(TaskUserPeer::USR_UID, $uidUser);
|
||||||
$c->add(TaskUserPeer::TU_TYPE, 1);
|
$c->add(TaskUserPeer::TU_TYPE, 1);
|
||||||
$rs = TaskPeer::doSelectRS($c);
|
$rs = TaskPeer::doSelectRS($c);
|
||||||
$rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
$rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||||
@@ -141,7 +144,7 @@ class Cases
|
|||||||
|
|
||||||
//check groups
|
//check groups
|
||||||
$group = new Groups();
|
$group = new Groups();
|
||||||
$aGroups = $group->getActiveGroupsForAnUser($sUIDUser);
|
$groups = $group->getActiveGroupsForAnUser($uidUser);
|
||||||
|
|
||||||
$c = new Criteria();
|
$c = new Criteria();
|
||||||
$c->clearSelectColumns();
|
$c->clearSelectColumns();
|
||||||
@@ -151,7 +154,7 @@ class Cases
|
|||||||
$c->addJoin(TaskPeer::TAS_UID, TaskUserPeer::TAS_UID, Criteria::LEFT_JOIN);
|
$c->addJoin(TaskPeer::TAS_UID, TaskUserPeer::TAS_UID, Criteria::LEFT_JOIN);
|
||||||
$c->add(ProcessPeer::PRO_STATUS, 'ACTIVE');
|
$c->add(ProcessPeer::PRO_STATUS, 'ACTIVE');
|
||||||
$c->add(TaskPeer::TAS_START, 'TRUE');
|
$c->add(TaskPeer::TAS_START, 'TRUE');
|
||||||
$c->add(TaskUserPeer::USR_UID, $aGroups, Criteria::IN);
|
$c->add(TaskUserPeer::USR_UID, $groups, Criteria::IN);
|
||||||
$c->add(TaskUserPeer::TU_TYPE, 1);
|
$c->add(TaskUserPeer::TU_TYPE, 1);
|
||||||
$rs = TaskPeer::doSelectRS($c);
|
$rs = TaskPeer::doSelectRS($c);
|
||||||
$rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
$rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||||
@@ -171,17 +174,21 @@ class Cases
|
|||||||
$c->addSelectColumn(ProcessPeer::PRO_TITLE);
|
$c->addSelectColumn(ProcessPeer::PRO_TITLE);
|
||||||
$c->addJoin(TaskPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN);
|
$c->addJoin(TaskPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN);
|
||||||
$c->add(TaskPeer::TAS_UID, $tasks, Criteria::IN);
|
$c->add(TaskPeer::TAS_UID, $tasks, Criteria::IN);
|
||||||
|
// Include or not the dummy tasks
|
||||||
|
if ($withoutDummyTasks) {
|
||||||
|
$c->add(TaskPeer::TAS_TYPE, BusinessModelTask::getDummyTypes(), Criteria::NOT_IN);
|
||||||
|
}
|
||||||
$c->addAscendingOrderByColumn(ProcessPeer::PRO_TITLE);
|
$c->addAscendingOrderByColumn(ProcessPeer::PRO_TITLE);
|
||||||
$c->addAscendingOrderByColumn(TaskPeer::TAS_TITLE);
|
$c->addAscendingOrderByColumn(TaskPeer::TAS_TITLE);
|
||||||
$rs = TaskPeer::doSelectRS($c);
|
$rs = TaskPeer::doSelectRS($c);
|
||||||
$rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
$rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||||
$rs->next();
|
$rs->next();
|
||||||
while ($row = $rs->getRow()) {
|
while ($row = $rs->getRow()) {
|
||||||
$rows[] = array(
|
$rows[] = [
|
||||||
'uid' => $row['TAS_UID'],
|
'uid' => $row['TAS_UID'],
|
||||||
'value' => $row['PRO_TITLE'] . ' (' . $row['TAS_TITLE'] . ')',
|
'value' => $row['PRO_TITLE'] . ' (' . $row['TAS_TITLE'] . ')',
|
||||||
'pro_uid' => $row['PRO_UID']
|
'pro_uid' => $row['PRO_UID']
|
||||||
);
|
];
|
||||||
$rs->next();
|
$rs->next();
|
||||||
$row = $rs->getRow();
|
$row = $rs->getRow();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,8 +2,15 @@
|
|||||||
|
|
||||||
namespace ProcessMaker\BusinessModel;
|
namespace ProcessMaker\BusinessModel;
|
||||||
|
|
||||||
use \G;
|
use Cases;
|
||||||
|
use Criteria;
|
||||||
|
use Exception;
|
||||||
|
use G;
|
||||||
|
use GroupUserPeer;
|
||||||
use ProcessMaker\Core\System;
|
use ProcessMaker\Core\System;
|
||||||
|
use ResultSet;
|
||||||
|
use TaskPeer;
|
||||||
|
use TaskUserPeer;
|
||||||
|
|
||||||
class ProjectUser
|
class ProjectUser
|
||||||
{
|
{
|
||||||
@@ -90,71 +97,75 @@ class ProjectUser
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return starting task
|
* Return starting tasks
|
||||||
*
|
*
|
||||||
* @param string $sProcessUID {@min 32} {@max 32}
|
* @param string $processUid
|
||||||
*
|
*
|
||||||
* return array
|
* @return array
|
||||||
|
*
|
||||||
|
* @throws Exception
|
||||||
*
|
*
|
||||||
* @access public
|
* @access public
|
||||||
*/
|
*/
|
||||||
public function getProjectStartingTasks($sProcessUID)
|
public function getProjectStartingTasks($processUid)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
Validator::proUid($sProcessUID, '$prj_uid');
|
Validator::proUid($processUid, '$prj_uid');
|
||||||
$aUsers = array();
|
$users = [];
|
||||||
$usersIds = array();
|
$usersIds = [];
|
||||||
|
|
||||||
$oCriteria = new \Criteria('workflow');
|
$criteria = new Criteria('workflow');
|
||||||
$oCriteria->addSelectColumn(\TaskUserPeer::USR_UID);
|
$criteria->addSelectColumn(TaskUserPeer::USR_UID);
|
||||||
$oCriteria->addJoin(\TaskPeer::TAS_UID, \TaskUserPeer::TAS_UID, \Criteria::LEFT_JOIN);
|
$criteria->addJoin(TaskPeer::TAS_UID, TaskUserPeer::TAS_UID, Criteria::LEFT_JOIN);
|
||||||
$oCriteria->add(\TaskPeer::PRO_UID, $sProcessUID);
|
$criteria->add(TaskPeer::PRO_UID, $processUid);
|
||||||
$oCriteria->add(\TaskUserPeer::TU_TYPE, 1);
|
$criteria->add(TaskUserPeer::TU_TYPE, 1);
|
||||||
$oCriteria->add(\TaskUserPeer::TU_RELATION, 1);
|
$criteria->add(TaskUserPeer::TU_RELATION, 1);
|
||||||
$oDataset = \TaskUserPeer::doSelectRS($oCriteria);
|
$dataSet = TaskUserPeer::doSelectRS($criteria);
|
||||||
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
$dataSet->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||||
while ($oDataset->next()) {
|
while ($dataSet->next()) {
|
||||||
$aRow = $oDataset->getRow();
|
$row = $dataSet->getRow();
|
||||||
if (!in_array($aRow['USR_UID'], $usersIds)) {
|
if (!in_array($row['USR_UID'], $usersIds)) {
|
||||||
$usersIds[] = $aRow['USR_UID'];
|
$usersIds[] = $row['USR_UID'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$oCriteria = new \Criteria('workflow');
|
$criteria = new Criteria('workflow');
|
||||||
$oCriteria->addSelectColumn(\GroupUserPeer::USR_UID);
|
$criteria->addSelectColumn(GroupUserPeer::USR_UID);
|
||||||
$oCriteria->addJoin(\TaskPeer::TAS_UID, \TaskUserPeer::TAS_UID, \Criteria::LEFT_JOIN);
|
$criteria->addJoin(TaskPeer::TAS_UID, TaskUserPeer::TAS_UID, Criteria::LEFT_JOIN);
|
||||||
$oCriteria->addJoin(\TaskUserPeer::USR_UID, \GroupUserPeer::GRP_UID, \Criteria::LEFT_JOIN);
|
$criteria->addJoin(TaskUserPeer::USR_UID, GroupUserPeer::GRP_UID, Criteria::LEFT_JOIN);
|
||||||
$oCriteria->add(\TaskPeer::PRO_UID, $sProcessUID);
|
$criteria->add(TaskPeer::PRO_UID, $processUid);
|
||||||
$oCriteria->add(\TaskUserPeer::TU_TYPE, 1);
|
$criteria->add(TaskUserPeer::TU_TYPE, 1);
|
||||||
$oCriteria->add(\TaskUserPeer::TU_RELATION, 2);
|
$criteria->add(TaskUserPeer::TU_RELATION, 2);
|
||||||
$oDataset = \TaskUserPeer::doSelectRS($oCriteria);
|
$dataSet = TaskUserPeer::doSelectRS($criteria);
|
||||||
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
$dataSet->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||||
while ($oDataset->next()) {
|
while ($dataSet->next()) {
|
||||||
$aRow = $oDataset->getRow();
|
$row = $dataSet->getRow();
|
||||||
if (!in_array($aRow['USR_UID'], $usersIds)) {
|
if (!in_array($row['USR_UID'], $usersIds)) {
|
||||||
$usersIds[] = $aRow['USR_UID'];
|
$usersIds[] = $row['USR_UID'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach($usersIds as $value) {
|
foreach($usersIds as $value) {
|
||||||
$oCase = new \Cases();
|
$cases = new Cases();
|
||||||
$startTasks = $oCase->getStartCases( $value );
|
$startTasks = $cases->getStartCases($value, true);
|
||||||
foreach ($startTasks as $task) {
|
foreach ($startTasks as $task) {
|
||||||
if ((isset( $task['pro_uid'] )) && ($task['pro_uid'] == $sProcessUID) ) {
|
if ((isset($task['pro_uid'])) && ($task['pro_uid'] == $processUid)) {
|
||||||
$taskValue = explode( '(', $task['value'] );
|
$taskValue = explode('(', $task['value']);
|
||||||
$tasksLastIndex = count( $taskValue ) - 1;
|
$tasksLastIndex = count($taskValue) - 1;
|
||||||
$taskValue = explode( ')', $taskValue[$tasksLastIndex] );
|
$taskValue = explode(')', $taskValue[$tasksLastIndex]);
|
||||||
$aUsers[] = array('act_name' => $taskValue[0],
|
$users[] = [
|
||||||
'act_uid' => $task['uid']);
|
'act_name' => $taskValue[0],
|
||||||
|
'act_uid' => $task['uid']
|
||||||
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$new = array();
|
$new = [];
|
||||||
$exclude = array("");
|
$exclude = [""];
|
||||||
for ($i = 0; $i<=count($aUsers)-1; $i++) {
|
for ($i = 0; $i <= count($users) - 1; $i++) {
|
||||||
if (!in_array(trim($aUsers[$i]["act_uid"]) ,$exclude)) {
|
if (!in_array(trim($users[$i]["act_uid"]) ,$exclude)) {
|
||||||
$new[] = $aUsers[$i];
|
$new[] = $users[$i];
|
||||||
$exclude[] = trim($aUsers[$i]["act_uid"]);
|
$exclude[] = trim($users[$i]["act_uid"]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $new;
|
return $new;
|
||||||
|
|||||||
Reference in New Issue
Block a user