From f0eb425ec40c879617b8b942f99bc14d5c4b6e18 Mon Sep 17 00:00:00 2001 From: Marco Antonio Nina Date: Thu, 29 Aug 2013 09:01:53 -0400 Subject: [PATCH] BUG-11374 Process Supervisor unable to adhoc assign to self SOLVED - No se podia reasigna un caso a un supervisor. - Se agrega la funcionalidad para que el supervisor aparesca en el listado de reasignacion. - Solo el supervisor se pude reasignar a si mismo el caso y no hacia otros supervisores. --- .../methods/cases/proxyReassignUsersList.php | 76 ++++++++++++++++++- 1 file changed, 73 insertions(+), 3 deletions(-) diff --git a/workflow/engine/methods/cases/proxyReassignUsersList.php b/workflow/engine/methods/cases/proxyReassignUsersList.php index 640af47ca..d9965ae09 100755 --- a/workflow/engine/methods/cases/proxyReassignUsersList.php +++ b/workflow/engine/methods/cases/proxyReassignUsersList.php @@ -58,7 +58,7 @@ function array_sort ($array, $on, $order = SORT_ASC, $query = '') $appUid = isset( $_POST['application'] ) ? $_POST['application'] : ''; -// $processUid = isset($_POST['process']) ? $_POST['process'] : ''; +//$processUid = isset($_POST['process']) ? $_POST['process'] : ''; $TaskUid = isset( $_POST['task'] ) ? $_POST['task'] : ''; $sReassignFromUser = isset( $_POST['currentUser'] ) ? $_POST['currentUser'] : ''; @@ -71,12 +71,82 @@ $aUsersInvolved = Array(); $ConfEnv = $oConf->getFormats(); $rows = $oCases->getUsersToReassign($TaskUid, $sReassignFromUser); - -foreach($rows as $row) { +$flagSupervisors = false; +foreach ($rows as $row) { $sCaseUser = G::getFormatUserList( $ConfEnv['format'], $row ); $aUsersInvolved[] = array ('userUid' => $row['USR_UID'], 'userFullname' => $sCaseUser); + if ($row['USR_UID'] == $sReassignFromUser) { + $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, $sReassignFromUser); + $oCriteria->addAscendingOrderByColumn(UsersPeer::USR_FIRSTNAME); + $oDataset = ProcessUserPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $flagSupervisors = false; + + while ($aRow = $oDataset->getRow()) { + $supervisors = G::getFormatUserList( $ConfEnv['format'], $aRow ); + $aUsersInvolved[] = array ('userUid' => $aRow['USR_UID'], 'userFullname' => $supervisors); + $oDataset->next(); + $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, $sReassignFromUser); + + $oDataset = ProcessUserPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + + while ($aRow = $oDataset->getRow()) { + $supervisors = G::getFormatUserList( $ConfEnv['format'], $aRow ); + $aUsersInvolved[] = array ('userUid' => $aRow['USR_UID'], 'userFullname' => $supervisors); + $oDataset->next(); + } + } +} + + + // $oTmp = new stdClass(); // $oTmp->items = $aUsersInvolved; $result = array ();