From e70916ea977ea9384a983dc3f26f343ff07a0324 Mon Sep 17 00:00:00 2001 From: Luis Fernando Saisa Lopez Date: Fri, 20 Jun 2014 13:03:57 -0400 Subject: [PATCH] BUG 15195 "User appear more than once in the..." SOLVED - User appear more than once in the Process Supervisor window - Problema resuelto, cuando se elimina a un usuario por ADMIN>USERS>Users, este usuario puede se eliminado sin restricciones aunque el usuario este asignado como supervisor de un proceso lo cual no es correcto. Se hace una validacion que verifica si el usuario esta asignado como supervisor le saldra un mensaje de confirmacion que indica si deseea eliminar el usuario de todas maneras. Si la respuesta es Si, se eliminara de la lista de usuarios y de la lista de usuarios asignados como supervisores. --- workflow/engine/methods/users/users_Ajax.php | 39 ++++++++++++++++++-- workflow/engine/templates/users/usersList.js | 26 ++++++++++++- 2 files changed, 60 insertions(+), 5 deletions(-) diff --git a/workflow/engine/methods/users/users_Ajax.php b/workflow/engine/methods/users/users_Ajax.php index adb0d17c2..367464768 100644 --- a/workflow/engine/methods/users/users_Ajax.php +++ b/workflow/engine/methods/users/users_Ajax.php @@ -210,6 +210,14 @@ try { $criteria->add( DashletInstancePeer::DAS_INS_OWNER_UID, $UID ); $criteria->add( DashletInstancePeer::DAS_INS_OWNER_TYPE , 'USER'); DashletInstancePeer::doDelete( $criteria ); + + //Delete users as supervisor + $criteria = new Criteria("workflow"); + + $criteria->add(ProcessUserPeer::USR_UID, $UID, Criteria::EQUAL); + $criteria->add(ProcessUserPeer::PU_TYPE, "SUPERVISOR", Criteria::EQUAL); + + ProcessUserPeer::doDelete($criteria); break; case 'changeUserStatus': $response = new stdclass(); @@ -390,9 +398,9 @@ try { $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); $oCriteria->addSelectColumn(UsersPeer::USR_EMAIL); - + $oCriteria->addSelectColumn(UsersPeer::USR_ROLE); - + $oCriteria->addSelectColumn(UsersPeer::USR_DUE_DATE); $oCriteria->addSelectColumn(UsersPeer::USR_STATUS); $oCriteria->addSelectColumn(UsersPeer::USR_UX); @@ -440,7 +448,7 @@ try { $uRole = Array(); while ($oDataset->next()) { $row = $oDataset->getRow(); - + try { $uRole = $oRoles->loadByCode($row['USR_ROLE']); } catch (exception $oError) { @@ -456,7 +464,7 @@ try { $row['DEP_TITLE'] = isset($aDepart[$row['USR_UID']]) ? $aDepart[$row['USR_UID']] : ''; $row['USR_UX'] = isset($uxList[$row['USR_UX']]) ? $uxList[$row['USR_UX']] : $uxList['NORMAL']; $row['USR_AUTH_SOURCE'] = isset($aAuthSources[$row['USR_UID']]) ? $aAuthSources[$row['USR_UID']] : 'ProcessMaker (MYSQL)'; - + $rows[] = $row; } @@ -511,6 +519,29 @@ try { $misc['REPLACED_NAME'] = $replaced_by; echo '{success: true, userdata: ' . G::json_encode($data) . ', cases: ' . G::json_encode($aCount) . ', misc: ' . G::json_encode($misc) . '}'; break; + + case "verifyIfUserAssignedAsSupervisor": + $supervisorUserUid = $_POST["supervisorUserUid"]; + $message = "OK"; + + $criteria = new Criteria("workflow"); + + $criteria->addSelectColumn(ProcessUserPeer::PU_UID); + $criteria->add(ProcessUserPeer::USR_UID, $supervisorUserUid, Criteria::EQUAL); + $criteria->add(ProcessUserPeer::PU_TYPE, "SUPERVISOR", Criteria::EQUAL); + + $rsCriteria = ProcessUserPeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); + + if($rsCriteria->next() != 0) { + $message = "ERROR"; + } + + $response = array(); + $response["result"] = $message; + + echo G::json_encode($response); + break; } } catch (Exception $oException) { die($oException->getMessage()); diff --git a/workflow/engine/templates/users/usersList.js b/workflow/engine/templates/users/usersList.js index 42c65ec9f..6060efb18 100755 --- a/workflow/engine/templates/users/usersList.js +++ b/workflow/engine/templates/users/usersList.js @@ -494,6 +494,28 @@ DeleteUserAction = function(){ if (uid.data.USR_UID==user_admin){ Ext.Msg.alert(_('ID_USERS'), _('ID_CANNOT_DELETE_ADMIN_USER')); }else{ + var flagVerifyUserAssigSupervisor = 1; + + Ext.Ajax.request({ + url: "users_Ajax", + method: "POST", + params: { + "function": "verifyIfUserAssignedAsSupervisor", + supervisorUserUid: uid.data.USR_UID + }, + + success: function (response, opts) { + var dataRespuesta = Ext.util.JSON.decode(response.responseText); + + if (dataRespuesta.result == "OK") { + flagVerifyUserAssigSupervisor = 0; + } + }, + failure: function (response, opts){ + // + } + }); + viewport.getEl().mask(_('ID_PROCESSING')); Ext.Ajax.request({ url: 'users_Ajax', @@ -509,7 +531,9 @@ DeleteUserAction = function(){ } ); }else{ - Ext.Msg.confirm(_('ID_CONFIRM'), _('ID_MSG_CONFIRM_DELETE_USER'), + var msgConfirm = (flagVerifyUserAssigSupervisor == 1)? _("ID_MSG_CONFIRM_DELETE_USER_ASSINGED_SUPERVISOR") : _("ID_MSG_CONFIRM_DELETE_USER"); + + Ext.Msg.confirm(_('ID_CONFIRM'), msgConfirm, function(btn){ if (btn=='yes') DeleteUser(uid.data.USR_UID); }