Пример #1
0
        public static DespesaPessoal ObterDespesasParaO(Funcionario funcionario, Conta conta,NovoOrcamentoPessoal orcamento)
        {
            if (funcionario.Demitido)
                return ObterDespesaDeFuncionarioDemitido(conta, funcionario,orcamento);

            return funcionario.Aumentado ? ObterDespesaDeFuncionarioAumentado(conta, funcionario,orcamento) : ObterDespesaDeFuncionarioSemAumento(conta,orcamento);
        }
Пример #2
0
 public FGTSComAumento(double percentualDeAumento, int mesDoAumento, Conta conta, NovoOrcamentoPessoal orcamento)
 {
     this.percentualDeAumento = percentualDeAumento;
     this.mesDoAumento = mesDoAumento;
     base.Conta = conta;
     this.Orcamento = orcamento;
 }
 public EspecificacaoCargaValidaEstruturaOrcamentaria(List<EstruturaOrcamentariaExcel> estruturasOrcamentariasExcel,
    EstruturaOrcamentariaExcel estruturaOrcamentariaExcel, Conta conta)
 {
     EstruturasOrcamentariasExcel = estruturasOrcamentariasExcel;
     EstruturaOrcamentariaExcel = estruturaOrcamentariaExcel;
     Conta = conta;
 }
Пример #4
0
        static void Main(string[] args)
        {

            ChannelFactory<IServicoMSMQ>
              servico = new ChannelFactory<IServicoMSMQ>(
          "clienteServicoMSMQ");

            //servico.Credentials.SupportInteractive = true;
            //servico.Credentials.Windows.ClientCredential.UserName = "******";
            //servico.Credentials.Windows.ClientCredential.Password = "******";

            IServicoMSMQ endpt = servico.CreateChannel();



            Conta c1 = new Conta { Numero = 1, Titular = "msmq1", Saldo = 0 };
            Conta c2 = new Conta { Numero = 1111, Titular = "msmq2", Saldo = 0 };

            using (TransactionScope ts = new TransactionScope())
            {
                endpt.alterarConta(c1);// Se a fila é transaccional, o alinhamento é automático
                endpt.alterarConta(c2);
                ts.Complete();
            }
            
        }
        private void AdicionarDespesas(GrupoDeContaDTO grupoDeContaDTO, Conta conta, CentroDeCusto centroDeCusto, ContaDespesaPessoalDTO despesaConta)
        {
            for (var i = 1; i < 13; i++)
            {
                var mes = i;

                IEnumerable<Parcela> parcelas = null;

                parcelas = grupoDeContaDTO.GrupoConta == "Benefícios"
                               ? ObterParcelasDeDespesasNaoRelacionadasAoFuncionarioAoCentroDeCusto(conta, centroDeCusto, mes)
                               : ObterParcelasDeDespesasRelacionadasAoFuncionario(conta, centroDeCusto, mes);

                if (parcelas.Any())
                {
                    double valor = 0;
                    foreach (var parcela in parcelas.Where(p=> p != null && p.Valor != null))
                    {
                        valor += parcela.Valor;
                    }

                    //var valor = parcelas.AsParallel().Sum(a => a.Valor);

                    despesaConta.Despesas.Add(new DespesaPessoalDTO { Mes = i, Valor = valor });
                }
            }
        }
Пример #6
0
        void AdicionaConta(Conta conta)
        {
            contas.Add (conta);
            comboContas.Items.Add (conta);

            dicionario.Add (conta.Titular.Nome, conta);
        }
Пример #7
0
        static void Main(string[] args)
        {
            Conta[] contas = new Conta[5];

            contas[0] = new ContaPoupanca(10, DateTime.Now, "Junior");
            contas[1] = new ContaCorrente(1, 500, DateTime.Now, "Joana");
            contas[2] = new ContaCorrente(2, 500, DateTime.Now, "AAAA");
            contas[3] = new ContaPoupanca(300, DateTime.Now, "Ana");
            contas[4] = new ContaPoupanca(100, DateTime.Now, "dsauh");

            contas[2].Sacar(10);
            contas[2].Depositar(20);

            foreach (Conta c in contas)
            {
                if (c is ContaPoupanca)
                {
                    ContaPoupanca cp = (ContaPoupanca)c;
                    Console.WriteLine(cp.DataAniversario.ToShortDateString());
                }
                Console.WriteLine(c);
            }

            Console.ReadLine();
        }
        public static void StrategyCalcInvestimentos()
        {
            IInvestimento conservador = new Conservador();
            IInvestimento moderado = new Moderado();
            IInvestimento arrojado = new Arrojado();

            Conta conta= new Conta("Sebastiao",2000d);
            Conta conta2 = new Conta("Daniela",1000d);
           
            CalculadorDeInvestimentos calculador = new CalculadorDeInvestimentos();

            //investimentos avulsos utilizando cada tipo de investimento
            conta.Deposita(calculador.Investir(conta, conservador).ValorGerado);
            conta.Deposita(calculador.Investir(conta, arrojado).ValorGerado);
            conta.Deposita(calculador.Investir(conta, moderado).ValorGerado);


            Console.WriteLine("First turn " + conta.Saldo.ToString("#####.00"));

            //teste de uma segunda roda de de investimentos
            conta2.Deposita(calculador.Investir(conta2, conservador).Investir(conta2, moderado).Investir(conta2, arrojado).ValorGerado);

            Console.WriteLine("Second turn " + conta2.Saldo.ToString("#####.00"));

            Console.ReadKey();
        }
Пример #9
0
        public void AdicionaConta(Conta conta)
        {
            contas.Add(conta);

            comboContas.Items.Add(conta);
            destinoDaTrans.Items.Add(conta);
        }
        public string MontaRetorno(Conta conta, Requisicao requisicao)
        {
            if (requisicao.Formato == (Enum.Enums.Formato.XML))
            {
               return String.Format(
                    @"
                    <Conta>
                        < Nome >
                           {0}
                        </ Nome >
                        < Valor >
                           {1}
                        </ Valor>
                    </ Conta > 
                     ", conta.Nome, conta.Saldo);
            }
            else if (this.Proximo != null)
            {
                return Proximo.MontaRetorno(conta, requisicao);
            }
            else
            {
                throw new Exception("Não foi passado o formato a ser tratado");
            }

            
        }
Пример #11
0
        public void AdicionaConta(Conta conta)
        {
            this.contas.Add(conta);
            comboContas.Items.Add(conta);

            this.dicionario.Add(conta.Titular.Nome, conta);
        }
Пример #12
0
        public void TestMethode_calcular_recisao_deve_retornar_excecao()
        {
            Conta conta = new Conta("TestMethod", new TipoConta { Id = 1 });

            Recisao recisao = new Recisao(2, conta, new NovoOrcamentoPessoal(new Setor("Nome"), new CentroDeCusto("novo"), 2014));

            recisao.Calcular(default(double), 1, 0, 0);
        }
Пример #13
0
        public FgtsRecisao(int mesDeRecisao, Conta conta, NovoOrcamentoPessoal orcamento)
        {
            Contract.Requires(mesDeRecisao > default(int), "Mês de demissão não foi informado ");

            _mesDeDemissao = mesDeRecisao;
            Conta = conta;
            this.Orcamento = orcamento;
        }
Пример #14
0
        public void EfetuaSaqueTest()
        {
            Conta target = new Conta(300);
            double valor = 100;
            target.EfetuaSaque(valor);

            Assert.AreEqual(200, target.InformaSaldo());
        }
Пример #15
0
        public void EfetuaDepositoTest()
        {
            Conta target = new Conta(300);
            double valor = 100;
            target.EfetuaDeposito(valor);

            Assert.AreEqual(400, target.InformaSaldo());
        }
Пример #16
0
        public void Adicionar_Credito_Negativo_Em_Conta()
        {
            // Arrange
            Conta conta = new Conta();

            // Act
            conta.Credito.Acrescentar(-10);
        }
Пример #17
0
        public void InformaSaldoTest()
        {
            Conta target = new Conta(300);
            double expected = 300;
            double actual;
            actual = target.InformaSaldo();

            Assert.AreEqual(expected, actual);
        }
Пример #18
0
        public void Remover_Credito_A_Mais_Em_Conta()
        {
            // Arrange
            Conta conta = new Conta();
            conta.Credito.Acrescentar(10);

            // Act
            conta.Credito.Remover(20);
        }
        private void CalcularBeneficios(Conta conta, NovoOrcamentoPessoal orcamento)
        {
            var headCount = CentroDeCusto.Funcionarios.Where(c => c.Departamento.Id == Departamento.Id).ToList().Count;

            foreach (var funcionario in CentroDeCusto.Funcionarios.Where(f => f.Departamento.Id == Departamento.Id))
            {
                Beneficios beneficio = new Beneficios(conta, orcamento);
                beneficio.Calcular(headCount, funcionario);
            }
        }
Пример #20
0
        public void adicionar_uma_conta_incrementa_a_colecao_de_contas()
        {
            GrupoDeConta grupoDeConta = new GrupoDeConta("nome");

            Conta conta = new Conta("Conta de teste", new TipoConta { Id = (int)TipoContaEnum.Outros }) { Id = 1 };

            grupoDeConta.Adicionar(conta);

            Assert.AreEqual(grupoDeConta.Contas.Count, 1);
        }
Пример #21
0
        public void adicionar_uma_conta_verificando_se_a_conta_esta_na_colecao_de_contas()
        {
            GrupoDeConta grupoDeConta = new GrupoDeConta("nome");

            Conta conta = new Conta("Conta de teste", new TipoConta { Id = (int)TipoContaEnum.Outros }) { Id = 1 };

            grupoDeConta.Adicionar(conta);

            CollectionAssert.Contains(grupoDeConta.Contas, conta);
        }
Пример #22
0
        public void Cancelar_Reserva_Negativo_Em_Conta()
        {
            // Arrange
            Conta conta = new Conta();
            conta.Credito.Acrescentar(10);
            conta.Credito.Reservar(3);

            // Act
            conta.Credito.CancelarReserva(-3);
        }
Пример #23
0
        public void Cancelar_Reserva_A_Mais_Em_Conta()
        {
            // Arrange
            Conta conta = new Conta();
            conta.Credito.Acrescentar(10);
            conta.Credito.Reservar(5);

            // Act
            conta.Credito.CancelarReserva(6);
        }
Пример #24
0
        public void calculo_de_ferias_gera_doze_parcelas()
        {
            Conta conta = new Conta("Test", new TipoConta { Id = 1 });

            var ferias = new Ferias(conta, new NovoOrcamentoPessoal(new Setor("nome"), new CentroDeCusto("novo"), 2014));

            ferias.Calcular(100,1,0,0);

            Assert.AreEqual(ferias.Parcelas.Count, 12);
        }
Пример #25
0
        public void Adicionar_Credito_Em_Conta()
        {
            // Arrange
            Conta conta = new Conta();

            // Act
            conta.Credito.Acrescentar(10);

            // Assert
            Assert.AreEqual(conta.Credito.CreditoDisponivel, 10);
        }
Пример #26
0
        public Usuario(Conta conta)
        {
            var membership = Membership.GetUser(conta.IdUsuario);

            Nome = membership.UserName;
            Email = membership.Email;
            NomeInstituicao = conta.Instituicao.Nome;
            IdInstituicao = conta.Instituicao.Id;
            Senha = membership.ProviderUserKey.ToString();
            ChangePassword = new ChangePasswordModel();
        }
        public void OrcamentoOperacionalCriadoDeveTerSetorDiferenteDeNulo()
        {
            var setor = new Setor("TI");
            var centroDeCusto = new CentroDeCusto("Gerenciamento de Projetos");
            var RecursosExternos = new Conta("Recursos Externos", new TipoConta { Id = (int)TipoContaEnum.Outros });
            centroDeCusto.AdicionarConta(RecursosExternos);
            setor.AdicionarCentroDeCusto(centroDeCusto);

            var orcamento = new OrcamentoOperacionalVersao(setor, centroDeCusto, 2014);

            Assert.NotNull(orcamento.Setor);
        }
Пример #28
0
        public void calcular_ferias_de_um_ano_deve_ter_10_reais_de_parcela()
        {
            Conta conta = new Conta("Test", new TipoConta { Id = 1 });

            var ferias = new Ferias(conta, new NovoOrcamentoPessoal(new Setor("nome"), new CentroDeCusto("novo"), 2014));

            ferias.Calcular(100, 1, 0, 0);

            var parcela = new Parcela { Mes = 1, Valor = 11.110833333333334d };

            CollectionAssert.Contains(ferias.Parcelas, parcela);
        }
        private void AdicionarDespesas(GrupoDeContaDTO grupoDeContaDTO, Conta conta, CentroDeCusto centroDeCusto)
        {
            var despesaConta = new ContaDespesaPessoalDTO { Conta = conta.Nome, Despesas = new List<DespesaPessoalDTO>() };

            AdicionarDespesas(grupoDeContaDTO, conta, centroDeCusto, despesaConta);

            AdicionarZeroAsContasSemDespesa(despesaConta);
            despesaConta.TotalConta = ObterOSomatorioTotalDasParcelasDeDespesasNaoRalacionadasAoFuncionario(conta, centroDeCusto);
            //despesaConta.TotalConta = grupoDeContaDTO.GrupoConta == "Benefícios" ? ObterOSomatorioTotalDasParcelasDeDespesasNaoRalacionadasAoFuncionario(conta, centroDeCusto) : ObterOSomatorioTotalDasParcelasDeDespesasRelacionadasAoFuncionario(conta, centroDeCusto);

            grupoDeContaDTO.Contas.Add(despesaConta);
        }
        public void CriarDespesasComUmCentroDeCustoComUmaContaDeveTerDespesasIguamADoze()
        {
            var setor = new Setor("TI");
            var centroDeCusto = new CentroDeCusto("Gerenciamento de Projetos");
            var RecursosExternos = new Conta("Recursos Externos", new TipoConta { Id = (int)TipoContaEnum.Outros });
            centroDeCusto.AdicionarConta(RecursosExternos);
            setor.AdicionarCentroDeCusto(centroDeCusto);

            var orcamento = new OrcamentoOperacionalVersao(setor, centroDeCusto, 2014);

            orcamento.CriarDespesas();
            Assert.IsTrue(orcamento.DespesasOperacionais.Count == 12);
        }
Пример #31
0
        public QuestionarioResposta DefinirPropriedades(Intelbras.Message.Helper.MSG0294 xml)
        {
            var    crm   = new Model.QuestionarioResposta(this.Organizacao, this.IsOffline);
            Conta  conta = new Conta();
            string ReferenteServicoInstalacaoOpacao1 = SDKore.Configuration.ConfigurationManager.GetSettingValue("ReferenteServicoInstalacaoOpacao1");
            string ReferenteServicoInstalacaoOpacao2 = SDKore.Configuration.ConfigurationManager.GetSettingValue("ReferenteServicoInstalacaoOpacao2");
            string ReferenteServicoInstalacaoOpacao3 = SDKore.Configuration.ConfigurationManager.GetSettingValue("ReferenteServicoInstalacaoOpacao3");

            #region Opcoes de resposta

            List <QuestionarioOpcao> lstOpcoes = new Servicos.QuestionarioOpcaoServices(this.Organizacao, this.IsOffline).ListarPorContaId(new Guid(xml.Conta));
            foreach (QuestionarioOpcao questionarioOpcao in lstOpcoes)
            {
                var associada = xml.OpcoesResposta.Select(campo => campo.CodigoOpcao.ToString().ToUpper()).FirstOrDefault(c => c == questionarioOpcao.ID.ToString().ToUpper());
                QuestionarioResposta questionarioResposta = new QuestionarioRespostaServices(this.Organizacao, this.IsOffline).ObterPorOpcaoId((Guid)questionarioOpcao.ID, xml.Conta, false);
                if (associada == null)
                {
                    //Desativa no crm caso não esteja na lista da mensagem
                    new QuestionarioRespostaServices(this.Organizacao, this.IsOffline).Desativar((Guid)questionarioResposta.ID);
                }
                else
                {
                    //Ativa no crm caso esteja na lista da mensagem
                    new QuestionarioRespostaServices(this.Organizacao, this.IsOffline).Ativar((Guid)questionarioResposta.ID);
                }
            }

            foreach (var opcaoResposta in xml.OpcoesResposta)
            {
                var associada = lstOpcoes.Select(campo => campo.ID.ToString().ToUpper()).FirstOrDefault(c => c == opcaoResposta.CodigoOpcao.ToUpper());
                if (associada == null)
                {
                    //Cria o vínculo da Resposta com a conta
                    QuestionarioResposta questionarioRespostaCreate = new QuestionarioResposta();
                    questionarioRespostaCreate.QuestionarioOpcao         = new Lookup(new Guid(opcaoResposta.CodigoOpcao), "itbc_questionarioresposta");
                    questionarioRespostaCreate.QuestionarioRespostaConta = new Lookup(new Guid(xml.Conta), "account");
                    questionarioRespostaCreate.Valor = opcaoResposta.ValorResposta;
                    new RepositoryService(this.Organizacao, this.IsOffline).QuestionarioResposta.Create(questionarioRespostaCreate);
                }
                else
                {
                    //Altera o vínculo da Resposta com a conta
                    QuestionarioResposta questionarioRespostaUpdate = new QuestionarioResposta();
                    QuestionarioResposta questionarioResposta       = new QuestionarioRespostaServices(this.Organizacao, this.IsOffline).ObterPorOpcaoId(new Guid(opcaoResposta.CodigoOpcao), xml.Conta, false);
                    questionarioRespostaUpdate.QuestionarioOpcao = new Lookup(new Guid(opcaoResposta.CodigoOpcao), "itbc_questionarioresposta");
                    questionarioRespostaUpdate.ID    = questionarioResposta.ID;
                    questionarioRespostaUpdate.Valor = opcaoResposta.ValorResposta;
                    new RepositoryService(this.Organizacao, this.IsOffline).QuestionarioResposta.Update(questionarioRespostaUpdate);
                }

                //Caso a opção de resposta seja “Instalamos os produtos independentemente de onde foram comprados” o campo Instalador da conta deve ser atualizado
                if (opcaoResposta.CodigoOpcao == ReferenteServicoInstalacaoOpacao2)
                {
                    conta.Instalador = true;
                }
                else if (opcaoResposta.CodigoOpcao == ReferenteServicoInstalacaoOpacao1 || opcaoResposta.CodigoOpcao == ReferenteServicoInstalacaoOpacao3)
                {
                    conta.Instalador = false;
                }
            }
            #endregion

            #region Segmentos Comerciais

            //Desassociar Segmento comercial à conta
            List <SegmentoComercial> listaAtual = new SegmentoComercialService(this.Organizacao, this.IsOffline).ListarSegmentoPorConta(xml.Conta);
            SegmentoComercialService segmentoComercialService = new SegmentoComercialService(this.Organizacao, this.IsOffline);
            if (listaAtual != null && listaAtual.Count > 0)
            {
                segmentoComercialService.DesassociarSegmentoComercial(listaAtual, new Guid(xml.Conta));
            }

            //Associar Segmento comercial à conta
            List <SegmentoComercial> listaSegmentoComercial = new List <SegmentoComercial>();
            foreach (var segmentosComercialPollux in xml.SegmentosComerciais)
            {
                SegmentoComercial segmentosComercialGuid = new SegmentoComercialService(this.Organizacao, this.IsOffline).ObterPorCodigo(segmentosComercialPollux.CodigoSegmentoComercial);
                listaSegmentoComercial.Add(segmentosComercialGuid);
            }
            if (listaSegmentoComercial != null && listaSegmentoComercial.Count > 0)
            {
                segmentoComercialService.AssociarSegmentoComercial(listaSegmentoComercial, new Guid(xml.Conta));
            }
            #endregion

            #region Marcas
            if (xml.Marcas != null)
            {
                conta.MarcasEnviadas = xml.Marcas;
            }
            else
            {
                conta.MarcasEnviadas = " ";
                //conta.AddNullProperty("itbc_marcas_enviadas");
            }
            conta.ID = new Guid(xml.Conta);
            conta.IntegrarNoPlugin = true;
            new RepositoryService(this.Organizacao, this.IsOffline).Conta.Update(conta);
            MarcasServices marcasService       = new MarcasServices(this.Organizacao, this.IsOffline);
            List <Marcas>  lstMarcas           = new List <Marcas>();
            List <Marcas>  lstMarcasAssociadas = new MarcasServices(this.Organizacao, this.IsOffline).ListarMarcasPorConta(xml.Conta);

            if (xml.Marcas != null)
            {
                string[] Sinonimos = xml.Marcas.Split(';');
                foreach (var marcaSplit in Sinonimos)
                {
                    Marcas marca = new MarcasServices(this.Organizacao, this.IsOffline).obterPorNome(marcaSplit);
                    if (marca != null)
                    {
                        var marcasDuplicadas = lstMarcas.Select(campo => campo.Id).FirstOrDefault(c => c == marca.Id);
                        if (marcasDuplicadas == Guid.Empty)
                        {
                            lstMarcas.Add(marca);
                            continue;
                        }
                    }
                    else if (new SinonimosMarcasServices(this.Organizacao, this.IsOffline).obterPorNome(marcaSplit) != null)
                    {
                        SinonimosMarcas sinonimosMarcas = new SinonimosMarcasServices(this.Organizacao, this.IsOffline).obterPorNome(marcaSplit);
                        if (sinonimosMarcas.Marca != null)
                        {
                            Marcas marcaAssociada = (new CRM2013.Domain.Servicos.RepositoryService()).Marcas.Retrieve((sinonimosMarcas.Marca.Id));
                            var    vinculoConta   = lstMarcas.Select(campo => campo.Id).FirstOrDefault(c => c == marcaAssociada.Id); //Verifica se a marca já está associada á conta
                            if (vinculoConta == Guid.Empty)
                            {
                                lstMarcas.Add(marcaAssociada);
                                continue;
                            }
                        }
                    }
                    else //Caso a marca ou sinônimo da marca enviada não exista, cria.
                    {
                        SinonimosMarcas sinonimosMarcasCreate = new SinonimosMarcas();
                        sinonimosMarcasCreate.Nome = marcaSplit;
                        new RepositoryService(this.Organizacao, this.IsOffline).SinonimosMarcas.Create(sinonimosMarcasCreate);
                    }
                }
                if (lstMarcas.Count > 0)
                {
                    marcasService.desassociarMarcas(lstMarcasAssociadas, new Guid(xml.Conta));
                    marcasService.associarMarcas(lstMarcas, new Guid(xml.Conta));
                }
            }
            else
            {
                marcasService.desassociarMarcas(lstMarcasAssociadas, new Guid(xml.Conta));
            }
            #endregion

            return(crm);
        }
Пример #32
0
        public void Apresentar(Conta conta)
        {
            var escolhaView = new EscolhaView <Conta>(acoes);

            escolhaView.Apresentar(conta);
        }
Пример #33
0
 public PagarContas(Conta conta)
 {
     minhaConta = conta;
     InitializeComponent();
 }
Пример #34
0
 public void Novo([FromBody] Conta conta)
 {
     _context.Contas.Add(conta);
     _context.SaveChanges();
 }
Пример #35
0
 public void PositivaConta(Conta conta)
 {
     throw new Exception("Conta já está positiva");
 }
Пример #36
0
 public void NegativaConta(Conta conta)
 {
     throw new Exception("Conta já se encontra negativa");
 }
Пример #37
0
 public void NegativaConta(Conta conta)
 {
     conta.estadoConta = new ContaNegativa();
 }
Пример #38
0
 public void PositivaConta(Conta conta)
 {
     conta.estadoConta = new ContaPositiva();
 }
Пример #39
0
 public void Saca(double valor, Conta conta)
 {
     throw new Exception("Sua conta está negativa " + conta.ValorConta.ToString("N2") + ", não é possivel efetuar o saque.");
 }
Пример #40
0
 public Pagamento(Cliente recebedor, Cliente pagador, Conta conta) : base(recebedor, pagador, conta)
 {
 }
 public void Adicona(Conta conta)
 {
     this.SaldoTotal += conta.Saldo;
 }
Пример #42
0
        private void AtualizaArvore(Conta c)
        {
            var arvore = new List <ArvoreContas>();

            var deleteCmd = conexao.CreateCommand();

            deleteCmd.CommandText = "Delete from ArvoreConta where IdOrigem = @idDel or IdPaiOrigem  = @idDel or  IdDestino = @idDel or IdPaiDestino = @idDel ";
            var paramIdDel = new SqlParameter("idDel", c.Id);

            deleteCmd.Parameters.Add(paramIdDel);

            deleteCmd.ExecuteNonQuery();

            if (c.Situacao == "Ativa")
            {
                var selectCmd = conexao.CreateCommand();

                if (c.ContaMatriz == false)
                {
                    selectCmd.CommandText = "SELECT distinct IdOrigem, IdPaiOrigem  FROM ArvoreConta Where IdPaiOrigem = @idPai OR IdPaiDestino = @idPai ";

                    var paramIdPai = new SqlParameter("idPai", c.IdCtPai);
                    selectCmd.Parameters.Add(paramIdPai);

                    var  resultado = selectCmd.ExecuteReader();
                    int  idPaiPai  = 0;
                    bool noNovo    = false;
                    if (!resultado.HasRows)
                    {
                        resultado.Close();
                        selectCmd.CommandText = "SELECT distinct IdOrigem, IdPaiOrigem  FROM ArvoreConta Where idDestino = @idPai  and IdOrigem = IdPaiDestino ";
                        resultado             = selectCmd.ExecuteReader();
                        noNovo = true;
                    }

                    while (resultado.Read())
                    {
                        var a = new ArvoreContas();
                        a.IdOrigem    = Convert.ToInt32(resultado["IdOrigem"]);
                        a.IdPaiOrigem = Convert.ToInt32(resultado["IdPaiOrigem"]);
                        //a.IdDestino = Convert.ToInt32(resultado["IdDestino"]);
                        //a.IdPaiDestino = Convert.ToInt32(resultado["IdPaiDestino"]);
                        idPaiPai = a.IdOrigem;
                        arvore.Add(a);
                    }
                    resultado.Close();
                    selectCmd.CommandText = "";

                    if (noNovo)
                    {
                        selectCmd.CommandText += "insert into ArvoreConta(IdOrigem, IdPaiOrigem, IdDestino, IdPaiDestino) values (" + c.IdCtPai + ", " + idPaiPai + ", " + c.Id + ", " + c.IdCtPai + ")  ";
                        selectCmd.CommandText += "insert into ArvoreConta(IdOrigem, IdPaiOrigem, IdDestino, IdPaiDestino) values (" + c.Id + ", " + c.IdCtPai + ", " + c.IdCtPai + ", " + idPaiPai + ")  ";
                    }

                    foreach (var a in arvore)
                    {
                        selectCmd.CommandText += "insert into ArvoreConta(IdOrigem, IdPaiOrigem, IdDestino, IdPaiDestino) values (" + a.IdOrigem + ", " + a.IdPaiOrigem + ", " + c.Id + ", " + c.IdCtPai + ")  ";
                        selectCmd.CommandText += "insert into ArvoreConta(IdOrigem, IdPaiOrigem, IdDestino, IdPaiDestino) values (" + c.Id + ", " + c.IdCtPai + ", " + a.IdOrigem + ", " + a.IdPaiOrigem + ")  ";
                    }
                }
                else
                {
                    selectCmd.CommandText = "insert into ArvoreConta(IdOrigem, IdPaiOrigem, IdDestino, IdPaiDestino) values (@idMat,@idMat,@idMat,@idMat)";
                    var paramIdMatriz = new SqlParameter("idMat", c.Id);
                    selectCmd.Parameters.Add(paramIdMatriz);
                }
                selectCmd.ExecuteNonQuery();
            }
        }