public function updateUserTransaction($registerRowData, $userRow) { $userLocality = new Model_UserLocality(); $aclModel = new Model_Acl(); $userRoleModel = new Model_UserRole(); $registerUserData = $registerRowData['user']; $userLocalityRowData = $registerRowData['userLocality']; $roleRowData = $registerRowData['userRole']; if (isset($registerUserData['set_login_cpf']) and $registerUserData['set_login_cpf'] == '1') { $registerUserData['login'] = $registerUserData['cpf']; } // start transaction externo Zend_Registry::get('db')->beginTransaction(); try { if (isset($roleRowData['role_id'])) { if (empty($roleRowData['role_id'])) { $errorRole = array('status' => false, 'messageError' => 'Escolha o Perfil.'); throw new Vtx_UserException($errorRole['messageError']); } $roleRow = $aclModel->getRoleById($roleRowData['role_id']); } // 1.1 Update User - usuário do sistema $updateUser = $this->updateUser($userRow, $registerUserData); if (!$updateUser['status']) { throw new Vtx_UserException($updateUser['messageError']); } // 2.1 Update Relação UserLocality if (isset($userLocalityRowData['regional_id'])) { if ($roleRow->getIsSystemAdmin() == 0) { // verificar se a role não é isSystemAdmin() if (empty($userLocalityRowData['regional_id'])) { $errorRegional = array('status' => false, 'messageError' => 'Escolha a Regional.'); throw new Vtx_UserException($errorRegional['messageError']); } } else { $userLocalityRowData['regional_id'] = null; } $userLocalityRow = $userLocality->getUserLocalityByUserId($userRow->getId()); $registerUserLocalityData['regional_id'] = $userLocalityRowData['regional_id']; $updateUserLocality = $userLocality->updateUserLocality($userLocalityRow, $registerUserLocalityData); if (!$updateUserLocality['status']) { throw new Vtx_UserException($updateUserLocality['messageError']); } } // Envia email com login/senha para o novo usuário. if (APPLICATION_ENV != 'development') { $dataMail['email'] = $registerUserData['email']; $dataMail['first_name'] = $registerUserData['first_name']; $dataMail['login'] = $registerUserData['login']; if (isset($registerUserData['keypass'])) { $dataMail['password'] = $registerUserData['keypass']; } $this->sendMailUser($dataMail, 'update'); } // 3.1 Update User Role $userRoleRow = $userRoleModel->getUserRoleByUserId($userRow->getId()); $aclModel->updateUserRole($userRoleRow, $roleRowData['role_id']); // end transaction externo Zend_Registry::get('db')->commit(); return array('status' => true); } catch (Vtx_UserException $e) { Zend_Registry::get('db')->rollBack(); return array('status' => false, 'messageError' => $e->getMessage()); } catch (Exception $e) { Zend_Registry::get('db')->rollBack(); throw new Exception($e); } }