diff --git a/workflow/engine/classes/class.case.php b/workflow/engine/classes/class.case.php index 0ee4cde86..4430aefca 100755 --- a/workflow/engine/classes/class.case.php +++ b/workflow/engine/classes/class.case.php @@ -6432,7 +6432,7 @@ class Cases } } - public function getUsersToReassign($TAS_UID, $USR_UID) + public function getUsersToReassign($TAS_UID, $USR_UID, $PRO_UID=null) { G::LoadClass('groups'); G::LoadClass('tasks'); @@ -6495,6 +6495,60 @@ class Cases $rows[] = $rs->getRow(); } + if ($PRO_UID != null) { + //Add supervisor + // Users + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(ProcessUserPeer::PU_UID); + $oCriteria->addSelectColumn(ProcessUserPeer::USR_UID); + $oCriteria->addSelectColumn(ProcessUserPeer::PRO_UID); + $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); + $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); + $oCriteria->addSelectColumn(UsersPeer::USR_USERNAME); + $oCriteria->addSelectColumn(UsersPeer::USR_EMAIL); + $oCriteria->addJoin(ProcessUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN); + $oCriteria->add(ProcessUserPeer::PU_TYPE, 'SUPERVISOR'); + $oCriteria->add(ProcessUserPeer::PRO_UID, $PRO_UID); + $oCriteria->add(ProcessUserPeer::USR_UID, $USR_UID); + $oCriteria->addAscendingOrderByColumn(UsersPeer::USR_FIRSTNAME); + $oDataset = ProcessUserPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $flagSupervisors = false; + + if ($oDataset->next()) { + $rows[] = $oDataset->getRow(); + $flagSupervisors = true; + } + + if (!$flagSupervisors) { + // Groups + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(ProcessUserPeer::PU_UID); + $oCriteria->addSelectColumn(ProcessUserPeer::USR_UID); + $oCriteria->addSelectColumn(ProcessUserPeer::PRO_UID); + + $oCriteria->addSelectColumn(UsersPeer::USR_UID); + $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); + $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); + $oCriteria->addSelectColumn(UsersPeer::USR_USERNAME); + $oCriteria->addSelectColumn(UsersPeer::USR_EMAIL); + + $oCriteria->addJoin(ProcessUserPeer::USR_UID, GroupUserPeer::GRP_UID, Criteria::LEFT_JOIN); + $oCriteria->addJoin(GroupUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN); + + $oCriteria->add(ProcessUserPeer::PU_TYPE, 'GROUP_SUPERVISOR'); + $oCriteria->add(ProcessUserPeer::PRO_UID, $PRO_UID); + $oCriteria->add(GroupUserPeer::USR_UID, $USR_UID); + + $oDataset = ProcessUserPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + + if ($oDataset->next()) { + $rows[] = $oDataset->getRow(); + } + } + } + return $rows; } diff --git a/workflow/engine/methods/cases/ajaxListener.php b/workflow/engine/methods/cases/ajaxListener.php index d1dd8fe44..bc66b38e3 100755 --- a/workflow/engine/methods/cases/ajaxListener.php +++ b/workflow/engine/methods/cases/ajaxListener.php @@ -506,8 +506,11 @@ class Ajax print G::json_encode( $response ); die(); } + G::LoadClass( 'tasks' ); + $task = new Task(); + $tasks = $task->load($_SESSION['TASK']); $case = new Cases(); - $result->data = $case->getUsersToReassign($_SESSION['TASK'], $_SESSION['USER_LOGGED']); + $result->data = $case->getUsersToReassign($_SESSION['TASK'], $_SESSION['USER_LOGGED'], $tasks['PRO_UID']); print G::json_encode($result); } diff --git a/workflow/engine/methods/cases/casesList_Ajax.php b/workflow/engine/methods/cases/casesList_Ajax.php index 7b63b9ec5..23ff93b49 100755 --- a/workflow/engine/methods/cases/casesList_Ajax.php +++ b/workflow/engine/methods/cases/casesList_Ajax.php @@ -193,7 +193,10 @@ if ($actionAjax == "processListExtJs") { if ($actionAjax == "getUsersToReassign") { $_SESSION['TASK'] = $_REQUEST['TAS_UID']; $case = new Cases(); - $result->data = $case->getUsersToReassign( $_SESSION['TASK'], $_SESSION['USER_LOGGED'] ); + G::LoadClass( 'tasks' ); + $task = new Task(); + $tasks = $task->load($_SESSION['TASK']); + $result->data = $case->getUsersToReassign( $_SESSION['TASK'], $_SESSION['USER_LOGGED'], $tasks['PRO_UID'] ); print G::json_encode( $result ); } if ($actionAjax == 'reassignCase') { diff --git a/workflow/engine/methods/cases/proxyReassignUsersList.php b/workflow/engine/methods/cases/proxyReassignUsersList.php index 66c8ac9c7..54e3bf112 100755 --- a/workflow/engine/methods/cases/proxyReassignUsersList.php +++ b/workflow/engine/methods/cases/proxyReassignUsersList.php @@ -70,83 +70,15 @@ $oConf = new Configurations(); $aUsersInvolved = Array(); $ConfEnv = $oConf->getFormats(); -$rows = $oCases->getUsersToReassign($TaskUid, $sReassignFromUser); -$flagSupervisors = false; +G::LoadClass( 'tasks' ); +$task = new Task(); +$tasks = $task->load($_SESSION['TASK']); +$rows = $oCases->getUsersToReassign($TaskUid, $_SESSION['USER_LOGGED'], $tasks['PRO_UID']); foreach ($rows as $row) { $sCaseUser = G::getFormatUserList( $ConfEnv['format'], $row ); $aUsersInvolved[] = array ('userUid' => $row['USR_UID'], 'userFullname' => $sCaseUser); - if ($row['USR_UID'] == $_SESSION['USER_LOGGED']) { - $flagSupervisors = true; - } } -if (!$flagSupervisors) { - G::LoadClass('application'); - $application = new Application(); - $appData = $application->Load($appUid); - - $aResp =array(); - $sProcessUID =$appData ['PRO_UID']; - - // Users - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(ProcessUserPeer::PU_UID); - $oCriteria->addSelectColumn(ProcessUserPeer::USR_UID); - $oCriteria->addSelectColumn(ProcessUserPeer::PRO_UID); - $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); - $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); - $oCriteria->addSelectColumn(UsersPeer::USR_USERNAME); - $oCriteria->addSelectColumn(UsersPeer::USR_EMAIL); - $oCriteria->addJoin(ProcessUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN); - $oCriteria->add(ProcessUserPeer::PU_TYPE, 'SUPERVISOR'); - $oCriteria->add(ProcessUserPeer::PRO_UID, $sProcessUID); - $oCriteria->add(ProcessUserPeer::USR_UID, $_SESSION['USER_LOGGED']); - $oCriteria->addAscendingOrderByColumn(UsersPeer::USR_FIRSTNAME); - $oDataset = ProcessUserPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $flagSupervisors = false; - - if ($oDataset->next()) { - $aRow = $oDataset->getRow(); - $supervisors = G::getFormatUserList( $ConfEnv['format'], $aRow ); - $aUsersInvolved[] = array ('userUid' => $aRow['USR_UID'], 'userFullname' => $supervisors); - $flagSupervisors = true; - } - - if (!$flagSupervisors) { - // Groups - $oCriteria = new Criteria('workflow'); - $oCriteria->addSelectColumn(ProcessUserPeer::PU_UID); - $oCriteria->addSelectColumn(ProcessUserPeer::USR_UID); - $oCriteria->addSelectColumn(ProcessUserPeer::PRO_UID); - - $oCriteria->addSelectColumn(UsersPeer::USR_UID); - $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); - $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); - $oCriteria->addSelectColumn(UsersPeer::USR_USERNAME); - $oCriteria->addSelectColumn(UsersPeer::USR_EMAIL); - - $oCriteria->addJoin(ProcessUserPeer::USR_UID, GroupUserPeer::GRP_UID, Criteria::LEFT_JOIN); - $oCriteria->addJoin(GroupUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN); - - $oCriteria->add(ProcessUserPeer::PU_TYPE, 'GROUP_SUPERVISOR'); - $oCriteria->add(ProcessUserPeer::PRO_UID, $sProcessUID); - $oCriteria->add(GroupUserPeer::USR_UID, $_SESSION['USER_LOGGED']); - - $oDataset = ProcessUserPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - - if ($oDataset->next()) { - $aRow = $oDataset->getRow(); - $supervisors = G::getFormatUserList( $ConfEnv['format'], $aRow ); - $aUsersInvolved[] = array ('userUid' => $aRow['USR_UID'], 'userFullname' => $supervisors); - } - - } -} - - - // $oTmp = new stdClass(); // $oTmp->items = $aUsersInvolved; $result = array ();