public static bool CopiarPerfil(TRegistro_CadUsuario val, string LoginPerfil, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_CadUsuario qtb_user = new TCD_CadUsuario(); try { if (banco == null) { st_transacao = qtb_user.CriarBanco_Dados(true); } else { qtb_user.Banco_Dados = banco; } //Verificar se o login destino ja existe no sistema bool st_existe = qtb_user.BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = "a.login", vOperador = "=", vVL_Busca = "'" + val.Login.Trim() + "'" } }, "1") != null; //Gravar Login qtb_user.GravaUsuario(val); //Copiar acesso usuario if (st_existe) { qtb_user.executarSql("delete tb_div_acesso where login = '******'", null); } TCN_CadAcesso.Buscar(LoginPerfil, string.Empty, false, string.Empty, 0, string.Empty, qtb_user.Banco_Dados).ForEach(p => TCN_CadAcesso.GravarAcesso(new TRegistro_CadAcesso() { Altera = p.Altera, Exclui = p.Exclui, Id_menu = p.Id_menu, Inclui = p.Inclui, Login = val.Login }, qtb_user.Banco_Dados)); //Copiar grupo menu if (st_existe) { qtb_user.executarSql("delete TB_DIV_Usuario_X_Grupos where loginUSR = '******'", null); } TCN_CadUsuario_Grupo.Busca(string.Empty, LoginPerfil, qtb_user.Banco_Dados).ForEach(p => TCN_CadUsuario_Grupo.Gravar(new TRegistro_CadUsuario_Grupo() { LoginGrp = p.LoginGrp, LoginUsr = val.Login }, qtb_user.Banco_Dados)); //Copiar empresas if (st_existe) { qtb_user.executarSql("delete TB_DIV_Usuario_X_Empresa where login = '******'", null); } TCN_CadUsuario_Empresa.Busca(string.Empty, LoginPerfil, qtb_user.Banco_Dados).ForEach(p => TCN_CadUsuario_Empresa.Gravar(new TRegistro_CadUsuario_Empresa() { CD_Empresa = p.CD_Empresa, Login = val.Login }, qtb_user.Banco_Dados)); //Copiar terminal if (st_existe) { qtb_user.executarSql("delete TB_DIV_Usuario_X_Terminal where login = '******'", null); } TCN_CadUsuarioxTerminal.Busca(string.Empty, LoginPerfil, qtb_user.Banco_Dados).ForEach(p => TCN_CadUsuarioxTerminal.Gravar(new TRegistro_CadUsuarioxTerminal() { Cd_Terminal = p.Cd_Terminal, Login = val.Login }, qtb_user.Banco_Dados)); //Copiar tipo pesagem if (st_existe) { qtb_user.executarSql("delete TB_DIV_Usuario_X_TpPesagem where login = '******'", null); } TCN_CadUsuario_TipoPesagem.Busca(LoginPerfil, string.Empty, qtb_user.Banco_Dados).ForEach(p => TCN_CadUsuario_TipoPesagem.Gravar(new TRegistro_CadUsuario_TipoPesagem() { Login = val.Login, Tp_pesagem = p.Tp_pesagem }, qtb_user.Banco_Dados)); //Copiar tipo pedido if (st_existe) { qtb_user.executarSql("delete TB_DIV_Usuario_X_CFGPedido where login = '******'", null); } TCN_CadUsuario_CFGPedido.Busca(LoginPerfil, string.Empty, string.Empty, qtb_user.Banco_Dados).ForEach(p => TCN_CadUsuario_CFGPedido.Gravar(new TRegistro_CadUsuario_CFGPedido() { Cfg_pedido = p.Cfg_pedido, Login = val.Login }, qtb_user.Banco_Dados)); //Copiar tipo requisicao if (st_existe) { qtb_user.executarSql("delete TB_DIV_Usuario_X_TpRequisicao where login = '******'", null); } TCN_Usuario_TpRequisicao.Buscar(LoginPerfil, string.Empty, qtb_user.Banco_Dados).ForEach(p => TCN_Usuario_TpRequisicao.Gravar(new TRegistro_Usuario_TpRequisicao() { Id_tprequisicao = p.Id_tprequisicao, Login = val.Login }, qtb_user.Banco_Dados)); //Copiar tipo duplicata if (st_existe) { qtb_user.executarSql("delete TB_DIV_Usuario_X_TpDuplicata where login = '******'", null); } TCN_Usuario_TpDuplicata.Buscar(LoginPerfil, string.Empty, qtb_user.Banco_Dados).ForEach(p => TCN_Usuario_TpDuplicata.Gravar(new TRegistro_Usuario_TpDuplicata() { Login = val.Login, Tp_duplicata = p.Tp_duplicata }, qtb_user.Banco_Dados)); //Copiar conta gerencial if (st_existe) { qtb_user.executarSql("delete TB_DIV_Usuario_X_ContaGer where login = '******'", null); } TCN_Usuario_ContaGer.Buscar(LoginPerfil, string.Empty, qtb_user.Banco_Dados).ForEach(p => TCN_Usuario_ContaGer.Gravar(new TRegistro_Usuario_ContaGer() { Cd_contager = p.Cd_contager, Login = val.Login }, qtb_user.Banco_Dados)); //Copiar regra especial if (st_existe) { qtb_user.executarSql("delete TB_DIV_Usuario_X_RegraEspecial where login = '******'", null); } TCN_Usuario_RegraEspecial.Buscar(LoginPerfil, string.Empty, string.Empty, qtb_user.Banco_Dados).ForEach(p => TCN_Usuario_RegraEspecial.Gravar(new TRegistro_Usuario_RegraEspecial() { Login = val.Login, Ds_regra = p.Ds_regra }, qtb_user.Banco_Dados)); if (st_transacao) { qtb_user.Banco_Dados.Commit_Tran(); } return(st_existe); } catch (Exception ex) { if (st_transacao) { qtb_user.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro copiar perfil: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_user.deletarBanco_Dados(); } } }