예제 #1
0
        public void QuandoExcecaoForLancadaDeveRetornarStatusCode400()
        {
            //arrange
            var mockConta = new Mock <IContaRepository>();

            mockConta.Setup(r => r.Incluir(It.IsAny <Conta[]>())).Throws(new Exception("Houve um erro"));

            var repoConta = mockConta.Object;

            var mockTransf = new Mock <ITransferenciaRepository>().Object;

            var transService = new TransacoesService(mockTransf, repoConta);

            var contaService = new ContaService(repoConta);

            var controlador = new ContasController(contaService, transService);

            var model = new ContaApi();

            model.Name        = "Bruno";
            model.Description = "Daldegan";
            model.Status      = "ACTIVE";
            model.Idenfifier  = "65432";

            //act
            var retorno = controlador.Incluir(model);

            //assert
            Assert.IsType <BadRequestObjectResult>(retorno);

            var statusCodeRetornado = (retorno as BadRequestObjectResult).StatusCode;

            Assert.Equal(400, statusCodeRetornado);
        }
예제 #2
0
        public async Task PostBadRequest()
        {
            var serviceMock = new Mock <IContaService>();

            serviceMock.Setup(m => m.Post(It.IsAny <ContaDtoCreate>())).ReturnsAsync(
                new ContaDtoCreateResult
            {
                Id          = Guid.NewGuid(),
                Name        = "PV Conta",
                Description = "Conta Corrente",
                Balance     = 0,
                Status      = true,
                CreateAt    = DateTime.Now
            }
                );

            _controller = new ContasController(serviceMock.Object);
            _controller.ModelState.AddModelError("Id", "Formato Inválido");

            Mock <IUrlHelper> url = new Mock <IUrlHelper>();

            url.Setup(x => x.Link(It.IsAny <string>(), It.IsAny <object>())).Returns("http://localhost:5000");
            _controller.Url = url.Object;

            var contaDtoCreate = new ContaDtoCreate
            {
                Name        = "PV Conta",
                Description = "Conta Corrente",
                Status      = true
            };

            var result = await _controller.Post(contaDtoCreate);

            Assert.True(result is BadRequestObjectResult);
        }
예제 #3
0
        public async Task GetAllOk()
        {
            var serviceMock = new Mock <IContaService>();

            serviceMock.Setup(m => m.GetAll()).ReturnsAsync(
                new List <ContaDto>
            {
                new ContaDto
                {
                    Id          = Guid.NewGuid(),
                    Name        = "PV Conta",
                    Description = "Conta Corrente",
                    Balance     = 0,
                    Status      = true
                },
                new ContaDto
                {
                    Id          = Guid.NewGuid(),
                    Name        = "PV Conta",
                    Description = "Conta Corrente",
                    Balance     = 0,
                    Status      = true
                }
            }
                );

            _controller = new ContasController(serviceMock.Object);

            var result = await _controller.GetAll();

            Assert.True(result is OkObjectResult);
        }
예제 #4
0
        public async Task GetAllBadRequest()
        {
            var serviceMock = new Mock <IContaService>();

            serviceMock.Setup(m => m.GetAll()).ReturnsAsync(
                new List <ContaDto>
            {
                new ContaDto
                {
                    Id          = Guid.NewGuid(),
                    Name        = "PV Conta",
                    Description = "Conta Corrente",
                    Balance     = 0,
                    Status      = true
                },
                new ContaDto
                {
                    Id          = Guid.NewGuid(),
                    Name        = "PV Conta",
                    Description = "Conta Corrente",
                    Balance     = 0,
                    Status      = true
                }
            }
                );

            _controller = new ContasController(serviceMock.Object);
            _controller.ModelState.AddModelError("Id", "Formato Inválido");

            var result = await _controller.GetAll();

            Assert.True(result is BadRequestObjectResult);
        }
예제 #5
0
        public async Task UpdateBadRequest()
        {
            var serviceMock = new Mock <IContaService>();

            serviceMock.Setup(m => m.Put(It.IsAny <ContaDtoUpdate>())).ReturnsAsync(
                new ContaDtoUpdateResult
            {
                Id          = Guid.NewGuid(),
                Name        = "PV Conta",
                Description = "Conta Corrente",
                Balance     = 0,
                Status      = true,
                UpdateAt    = DateTime.Now
            }
                );

            _controller = new ContasController(serviceMock.Object);
            _controller.ModelState.AddModelError("Id", "Formato Inválido");

            var contaDtoUpdate = new ContaDtoUpdate
            {
                Id          = Guid.NewGuid(),
                Name        = "PV Conta",
                Description = "Conta Corrente",
                Status      = true
            };

            var result = await _controller.Put(contaDtoUpdate);

            Assert.True(result is BadRequestObjectResult);
        }
예제 #6
0
        public void AoCadastrarContaApiDeveRetornar201()
        {
            //arrange
            var options = new DbContextOptionsBuilder <SocialContext>()
                          .UseInMemoryDatabase("SocialContext")
                          .Options;

            var contexto = new SocialContext(options);

            var repoConta  = new ContaRepository(contexto);
            var repoTransf = new TransferenciaRepository(contexto);

            var contaService      = new ContaService(repoConta);
            var transacoesService = new TransacoesService(repoTransf, repoConta);

            var controlador = new ContasController(contaService, transacoesService);

            var model = new ContaApi
            {
                Name        = "Bruno",
                Description = "Daldegan",
                Status      = "ACTIVE",
                Idenfifier  = "65432"
            };

            //act
            var retorno = controlador.Incluir(model);

            Assert.IsType <CreatedResult>(retorno); //201
        }
 public ContasControllerTests()
 {
     mockNotification     = new Mock <DomainNotificationHandler>();
     mockUser             = new Mock <IUser>();
     mockContasRepository = new Mock <IContaRepository>();
     mockMapper           = new Mock <IMapper>();
     mockMediator         = new Mock <IMediatorHandler>();
     contasController     = new ContasController(mockNotification.Object, mockUser.Object, mockContasRepository.Object, mockMapper.Object, mockMediator.Object);
 }
예제 #8
0
        //excluir
        private void button2_Click(object sender, EventArgs e)
        {
            String tipo          = dgvContas.CurrentRow.Cells[5].Value.ToString();
            String desc          = dgvContas.CurrentRow.Cells[1].Value.ToString();
            int    id_secundario = Convert.ToInt32(dgvContas.CurrentRow.Cells[7].Value);

            //valida se a conta ja foi paga
            if (dgvContas.CurrentRow.Cells[3].Value.ToString() != "Pendente")
            {
                System.Windows.Forms.MessageBox.Show("Esta conta já foi paga, impossivel excluir a mesma!");
            }
            else
            {
                if (tipo == "Movel")
                {
                    int id;
                    id = Convert.ToInt16(dgvContas.CurrentRow.Cells[0].Value);
                    new ContasController().ExcluirMovel(id);

                    carregaLista(this.mes);
                }
                else
                {
                    List <ContaFixa> lstExclui = new ContasController().Listar(new ContaFixa());


                    for (int i = 0; i < lstExclui.Count; i++)
                    {
                        dgvContas.Rows.Add(
                            lstExclui[i].CodigoFixo,
                            lstExclui[i].Descricao,
                            lstExclui[i].DataVencimento,
                            lstExclui[i].DataPagamento,
                            lstExclui[i].numParcerlas,
                            lstExclui[i].Tipo,
                            lstExclui[i].Valor,
                            lstExclui[i].codigoConta

                            );

                        carregaLista(this.mes);

                        //exclui a conta fixa se estiver pendente
                        if (lstExclui[i].codigoConta == id_secundario && lstExclui[i].DataPagamento == "Pendente")
                        {
                            int id;
                            id = lstExclui[i].CodigoFixo;
                            new ContasController().ExcluirFixa(id);
                        }
                    }
                }
                System.Windows.Forms.MessageBox.Show("Conta excluída com sucessso!");
                carregaLista(this.mes);
            }
        }
        public async Task DeleteOk()
        {
            var serviceMock = new Mock <IContaService>();

            serviceMock.Setup(m => m.Delete(It.IsAny <Guid>()))
            .ReturnsAsync(true);

            _controller = new ContasController(serviceMock.Object);

            var result = await _controller.Delete(Guid.NewGuid());

            Assert.True(result is OkObjectResult);
        }
예제 #10
0
        public void IniciarCenario()
        {
            HttpRequestMessage requisicao = new HttpRequestMessage();

            requisicao.SetConfiguration(new HttpConfiguration());
            _contaServicoMock = new Mock <IContaServico>();
            _contasController = new ContasController()
            {
                Request       = requisicao,
                _contaServico = _contaServicoMock.Object,
            };
            _contaMock = new Mock <Conta>();
        }
예제 #11
0
        public async Task DeleteBadRequest()
        {
            var serviceMock = new Mock <IContaService>();

            serviceMock.Setup(m => m.Delete(It.IsAny <Guid>()))
            .ReturnsAsync(true);

            _controller = new ContasController(serviceMock.Object);
            _controller.ModelState.AddModelError("Id", "Formato Inválido");

            var result = await _controller.Delete(Guid.NewGuid());

            Assert.True(result is BadRequestObjectResult);
        }
예제 #12
0
        public async Task ReturnsList()
        {
            var optionsBuilder = new DbContextOptionsBuilder <DataContext>();

            optionsBuilder.UseSqlServer("Server=(localdb)\\MSSQLLocalDB;Database=ContasDatabase;Trusted_Connection=True;MultipleActiveResultSets=true");
            var context = new DataContext(optionsBuilder.Options);

            var service = new ContaService(context);
            var sut     = new ContasController(new NullLogger <ContasController>(), service);
            var result  = await sut.GetAll() as ObjectResult;

            Assert.IsType <List <ContaAjustada> >(result.Value);
            Assert.Equal(200, result.StatusCode);
        }
        public override object[] DoInBackGround(int[] param)
        {
            Lancamentos_financeirosController lController = new Lancamentos_financeirosController();
            ContasController cController = new ContasController();

            decimal saldoConta = cController.Find(param[3]).Saldo;

            List <Lancamentos_financeiros>        list    = lController.BuscaSimples(param[0], param[1], param[2], param[3]);
            List <Lancamentos_financeirosAdapter> listAdp = new List <Lancamentos_financeirosAdapter>();

            list.ForEach(e => listAdp.Add(new Lancamentos_financeirosAdapter(e, lController.GetContext())));

            return(new object[] { saldoConta, listAdp });
        }
예제 #14
0
        public void Initialize()
        {
            HttpRequestMessage request = new HttpRequestMessage();

            request.SetConfiguration(new HttpConfiguration());
            _contaServicoMock = new Mock <IContaServico>();
            _contasController = new ContasController()
            {
                Request       = request,
                _contaServico = _contaServicoMock.Object,
            };
            _extrato      = new Mock <Extrato>();
            _conta        = new Mock <Conta>();
            _contaDestino = new Mock <Conta>();
        }
        public async Task GetSaldoOk()
        {
            var serviceMock = new Mock <IContaService>();

            serviceMock.Setup(m => m.GetBalance(It.IsAny <Guid>())).ReturnsAsync(
                new ContaDtoBalance
            {
                Balance = 100
            }
                );

            _controller = new ContasController(serviceMock.Object);
            var result = await _controller.GetSaldo(Guid.NewGuid());

            Assert.True(result is OkObjectResult);
        }
        public async Task GetSaldoBadRequest()
        {
            var serviceMock = new Mock <IContaService>();

            serviceMock.Setup(m => m.GetBalance(It.IsAny <Guid>())).ReturnsAsync(
                new ContaDtoBalance
            {
                Balance = 100
            }
                );

            _controller = new ContasController(serviceMock.Object);
            _controller.ModelState.AddModelError("Id", "Formato Inválido");

            var result = await _controller.GetSaldo(Guid.NewGuid());

            Assert.True(result is BadRequestObjectResult);
        }
예제 #17
0
        public async Task CreatesEntry()
        {
            var optionsBuilder = new DbContextOptionsBuilder <DataContext>();

            optionsBuilder.UseInMemoryDatabase("InMemoryDatabaseName").ConfigureWarnings(x => x.Ignore(InMemoryEventId.TransactionIgnoredWarning));
            var context = new DataContext(optionsBuilder.Options);

            var service = new ContaService(context);
            var sut     = new ContasController(new NullLogger <ContasController>(), service);
            var result  = await sut.Create(new Conta
            {
                Nome       = "Conta",
                Valor      = 20.8m,
                Vencimento = new DateTime(2020, 12, 10),
                Pagamento  = new DateTime(2020, 12, 20)
            }) as StatusCodeResult;

            Assert.Equal(200, result.StatusCode);
        }
예제 #18
0
        public async Task FailsToCreateEntry()
        {
            var optionsBuilder = new DbContextOptionsBuilder <DataContext>();

            optionsBuilder.UseInMemoryDatabase("InMemoryDatabaseName");
            var context = new DataContext(optionsBuilder.Options);

            var service = new ContaService(context);
            var sut     = new ContasController(new NullLogger <ContasController>(), service);
            var result  = await sut.Create(new Conta
            {
                Nome       = "",
                Valor      = 0,
                Vencimento = new DateTime(2020, 12, 10),
                Pagamento  = new DateTime(2020, 12, 20)
            }) as ObjectResult;

            Assert.Equal(400, result.StatusCode);
        }
        public async Task PostTransferCreated()
        {
            var serviceMock = new Mock <IContaService>();

            serviceMock.Setup(m => m.PostTransfer(It.IsAny <ContaTransferenciaDtoCreate>())).ReturnsAsync(true);

            _controller = new ContasController(serviceMock.Object);


            var transferDtoCreate = new ContaTransferenciaDtoCreate
            {
                ContaIdOrigem      = Guid.NewGuid(),
                ContaIdDestino     = Guid.NewGuid(),
                ValorTransferencia = 100
            };

            var result = await _controller.PostTransfer(transferDtoCreate);

            Assert.True(result is OkObjectResult);
        }
        public async Task PostTransferBadRequest()
        {
            var serviceMock = new Mock <IContaService>();

            serviceMock.Setup(m => m.PostTransfer(It.IsAny <ContaTransferenciaDtoCreate>())).ReturnsAsync(true);

            _controller = new ContasController(serviceMock.Object);
            _controller.ModelState.AddModelError("Id", "Formato Inválido");


            var transferDtoCreate = new ContaTransferenciaDtoCreate
            {
                ContaIdOrigem      = Guid.NewGuid(),
                ContaIdDestino     = Guid.NewGuid(),
                ValorTransferencia = 100
            };

            var result = await _controller.PostTransfer(transferDtoCreate);

            Assert.True(result is BadRequestObjectResult);
        }
예제 #21
0
파일: Test.cs 프로젝트: NickeManarin/Contas
        public async Task CreatesEntry()
        {
            var optionsBuilder = new DbContextOptionsBuilder <DataContext>();

            optionsBuilder.UseInMemoryDatabase("InMemoryDatabaseName");
            var context   = new DataContext(optionsBuilder.Options);
            var contaRepo = new ContaRepository(context);
            var regraRepo = new RegraRepository(context);

            var service = new ContaService(contaRepo, regraRepo);
            var sut     = new ContasController(service, new NullLogger <ContasController>());
            var result  = await sut.Create(new ContaTransfer
            {
                Nome       = "Conta",
                Valor      = 20.8m,
                Vencimento = new DateTime(2020, 12, 10),
                Pagamento  = new DateTime(2020, 12, 20)
            }) as ObjectResult;

            Assert.Equal(200, result.StatusCode);
        }
예제 #22
0
        public void Initialize()
        {
            HttpRequestMessage request = new HttpRequestMessage();

            request.SetConfiguration(new HttpConfiguration());
            _contaServiceMock = new Mock <IContaService>();
            _contasController = new ContasController(_contaServiceMock.Object)
            {
                Request = request
            };
            _conta            = new Mock <Conta>();
            _validator        = new Mock <ValidationResult>();
            _contaRegisterCmd = new Mock <ContaRegisterCommand>();
            _contaRegisterCmd.Setup(cmd => cmd.Validar()).Returns(_validator.Object);
            _contaRemoveCmd = new Mock <ContaRemoveCommand>();
            _contaRemoveCmd.Setup(cmd => cmd.Validar()).Returns(_validator.Object);
            _contaUpdateCmd = new Mock <ContaUpdateCommand>();
            _contaUpdateCmd.Setup(cmd => cmd.Validar()).Returns(_validator.Object);
            var isValid = true;

            _validator.Setup(v => v.IsValid).Returns(isValid);
        }
예제 #23
0
        private void CheckRequisitos()
        {
            Formas_pagamentoController fpg = new Formas_pagamentoController();

            if (fpg.Get(e => e.Tipo_pagamento == (int)Tipo_pagamento.DINHEIRO) != null)
            {
                requisitos.Add(new Requisito(true, "Possuir uma condição de pagamento do tipo DINHEIRO"));
            }
            else
            {
                requisitos.Add(new Requisito(false, "Possuir uma condição de pagamento do tipo DINHEIRO"));
            }

            ContasController contas = new ContasController();

            if (contas.Count(e => e.Inativa == false) > 1)
            {
                requisitos.Add(new Requisito(true, "Possuir mais de uma conta cadastrada"));
            }
            else
            {
                requisitos.Add(new Requisito(false, "Possuir mais de uma conta cadastrada"));
            }

            if (contas.Count(e => e.Saldo > 0) > 0)
            {
                requisitos.Add(new Requisito(true, "Possuir uma conta com saldo positivo"));
            }
            else
            {
                requisitos.Add(new Requisito(false, "Possuir uma conta com saldo positivo"));
            }


            dataGrid.ItemsSource = requisitos;
            dataGrid.AplicarPadroes();
            dataGrid.FontSize     = 13;
            dataGrid.MinRowHeight = 15;
        }
예제 #24
0
        private void deve_Click(object sender, EventArgs e)
        {
            List <ContaFixa> lst = new ContasController().Listar(new ContaFixa());

            for (int i = 0; i < lst.Count; i++)
            {
                dataVenci = Convert.ToDateTime(lst[i].DataVencimento);
                String ano      = Convert.ToString(DateTime.Now.Year);
                String dataAux2 = Convert.ToString(dataVenci.Year);


                anobusca = ano;
                String mesPesquisa = DateTime.Now.Month.ToString();


                if (dataVenci.Month.ToString() == mesPesquisa)
                {                             //valida se a conta pertence ao mes de janeiro
                    if (anobusca == dataAux2) //Valida ano de busca
                    {
                        valorTotal = lst[i].Valor + valorTotal;

                        if (lst[i].DataPagamento == "Pendente")
                        {
                            pendencias = lst[i].Valor + pendencias;
                        }
                    }
                }
            }
            if (pendencias != null)
            {
                textPendencia.Text = "Bem vindo Proencio, você possui conta em atraso.";
            }
            else
            {
                textPendencia.Text = "Bem vindo Proencio, você não possui conta em atraso.";
            }

            Console.WriteLine(pendencias);
        }
예제 #25
0
        public double carregaLista()
        {
            double           valorTotal = 0;
            List <ContaFixa> lst        = new ContasController().Listar(new ContaFixa());

            dgvContas.Rows.Clear();

            for (int i = 0; i < lst.Count; i++)
            {
                DateTime dataAux1 = Convert.ToDateTime(lst[i].DataVencimento);

                if (lst[i].numParcerlas > 0)
                {
                    if (dataAux1.Month <= DateTime.Today.Month && lst[i].DataPagamento == "Pendente")
                    {
                        if (dataAux1.Month <= DateTime.Today.Month)
                        {
                            dgvContas.Rows.Add(
                                lst[i].CodigoFixo,
                                lst[i].Descricao,
                                lst[i].DataVencimento,
                                lst[i].DataPagamento,
                                lst[i].numParcerlas,
                                lst[i].Tipo,
                                lst[i].Valor
                                );
                            valorTotal = lst[i].Valor + valorTotal;
                        }
                    }
                }
            }

            textBox5.Text = Convert.ToString(valorTotal);

            return(valorTotal);
        }
예제 #26
0
        public CadContas()
        {
            InitializeComponent();

            controller = new ContasController();

            List <KeyValuePair <Tipo_conta, string> > tipos = new List <KeyValuePair <Tipo_conta, string> >();

            tipos.Add(new KeyValuePair <Tipo_conta, string>(Tipo_conta.CONTA_CAIXA, "CONTA CAIXA"));
            tipos.Add(new KeyValuePair <Tipo_conta, string>(Tipo_conta.CONTA_BANCARIA, "CONTA BANCÁRIA"));

            cbTipo.ItemsSource       = tipos;
            cbTipo.DisplayMemberPath = "Value";
            cbTipo.SelectedValuePath = "Key";
            cbTipo.SelectedIndex     = 0;

            txCod.ToNumeric();
            txNumero_banco.ToNumeric();
            txCod_conta.ToNumeric(true);
            txAgencia.ToNumeric();
            txConvenio.ToNumeric();
            txCarteira.ToNumeric();
            txNosso_numero.ToNumeric();
        }
예제 #27
0
        public double carregaLista(int mesPesquisa)
        {
            this.mes       = mesPesquisa;
            recMesPesquisa = mesPesquisa;
            anobusca       = anoBusca.Text.ToString(); //pegando ano de busca para comparacao
            double valorTotal = 0;
            double pendencias = 0;
            double pagas      = 0;


            List <ContaFixa> lst = new ContasController().Listar(new ContaFixa());

            dgvContas.Rows.Clear();

            /*****************************************************************************/



            for (int i = 0; i < lst.Count; i++)
            {
                dataVenci = Convert.ToDateTime(lst[i].DataVencimento);
                String ano      = Convert.ToString(DateTime.Now.Year);
                String dataAux2 = Convert.ToString(dataVenci.Year);

                if (anobusca == "") //pega o ano atual se nao estiver preenchido!
                {
                    anobusca = ano;
                }

                if (dataVenci.Month == mesPesquisa)
                {                             //valida se a conta pertence ao mes de janeiro
                    if (anobusca == dataAux2) //Valida ano de busca
                    {
                        dgvContas.Rows.Add(
                            lst[i].CodigoFixo,
                            lst[i].Descricao,
                            lst[i].DataVencimento,
                            lst[i].DataPagamento,
                            lst[i].numParcerlas,
                            lst[i].Tipo,
                            lst[i].Valor,
                            lst[i].codigoConta

                            );
                        valorTotal = lst[i].Valor + valorTotal;

                        if (lst[i].DataPagamento != "Pendente")
                        {
                            pagas = lst[i].Valor + pagas;
                        }
                        else
                        {
                            pendencias = lst[i].Valor + pendencias;
                        }
                    }
                }
            }


            //passa a soma total do mes para a tela Mes
            textBox5.Enabled         = false;
            textBox5.Text            = "R$ " + Convert.ToString(valorTotal);
            textBoxPendentes.Enabled = false;
            textBoxPendentes.Text    = "R$ " + Convert.ToString(pendencias);
            textBoxPagas.Enabled     = false;
            textBoxPagas.Text        = "R$ " + Convert.ToString(pagas);
            txtReceitasMes.Enabled   = false;
            if (anobusca == "")
            {
                DateTime auxdate = DateTime.UtcNow;

                anobusca = Convert.ToInt32(auxdate.Year).ToString();
            }
            lstRec = new ContasController().BuscaReceitaMes(mesPesquisa, Convert.ToInt32(anobusca));
            if (lstRec.Count != 0)
            {
                txtLiquidaMes.Text = "R$ " + Convert.ToString(lstRec[lstRec.Count() - 1].soma - pagas);
            }
            txtLiquidaMes.Enabled = false;



            if (lstRec.Count != 0)
            {
                txtReceitasMes.Text = "R$ " + lstRec[lstRec.Count() - 1].soma.ToString();
            }
            else
            {
                txtReceitasMes.Text = "Sem Receita";
                txtLiquidaMes.Text  = "";
            }

            //Decide o mes da janela e retorna para a tela Mes
            switch (this.mes)
            {
            case 1:
                labelnome.Text = "Janeiro";
                break;

            case 2:
                labelnome.Text = "Fevereiro";
                break;

            case 3:
                labelnome.Text = "Março";
                break;

            case 4:
                labelnome.Text = "Abril";
                break;

            case 5:
                labelnome.Text = "Maio";
                break;

            case 6:
                labelnome.Text = "Junho";
                break;

            case 7:
                labelnome.Text = "Julho";
                break;

            case 8:
                labelnome.Text = "Agosto";
                break;

            case 9:
                labelnome.Text = "Setembro";
                break;

            case 10:
                labelnome.Text = "Outubro";
                break;

            case 11:
                labelnome.Text = "Novembro";
                break;

            case 12:
                labelnome.Text = "Dezembro";
                break;

            default:
                labelnome.Text = "Mes Atual";
                break;
            }

            return(valorTotal);
        }
        private void EfetuarTransferencia()
        {
            ITelaTransferenciaConta t1 = telas[1];
            ITelaTransferenciaConta t2 = telas[2];

            progressBar.Dispatcher.Invoke(new Action <ProgressBar>(pb => progressBar.Visibility = Visibility.Visible), progressBar);

            Lancamentos_financeirosController controller = new Lancamentos_financeirosController();
            ContasController contasC = new ContasController();
            Formas_pagamento fpg     = new Formas_pagamentoController().Get(e => e.Tipo_pagamento == (int)Tipo_pagamento.DINHEIRO);

            Lancamentos_financeiros lancamento1 = new Lancamentos_financeiros();
            Lancamentos_financeiros lancamento2 = new Lancamentos_financeiros();

            Application.Current.Dispatcher.BeginInvoke(new Action(() =>
            {
                lancamento1.Data           = DateTime.Now;
                lancamento1.Conta_id       = t1.Conta_id;
                lancamento1.Plano_conta_id = t1.Plano_conta_id;
                lancamento1.Tipo           = (int)t1.Tipo_lancamento;
                lancamento1.Valor_original = t1.Valor;
                lancamento1.Valor_final    = t1.Valor;
                lancamento1.Usuario_id     = UsuariosController.LojaAtual.Id;
                lancamento1.Num_documento  = "";
                lancamento1.Pagamentos_lancamentos.Add(new Pagamentos_lancamentos()
                {
                    Forma_pagamento_id = fpg.Id,
                    Valor = lancamento1.Valor_final
                });

                lancamento2.Data           = DateTime.Now;
                lancamento2.Conta_id       = t2.Conta_id;
                lancamento2.Plano_conta_id = t2.Plano_conta_id;
                lancamento2.Tipo           = (int)t2.Tipo_lancamento;
                lancamento2.Valor_original = t2.Valor;
                lancamento2.Valor_final    = t2.Valor;
                lancamento2.Num_documento  = "";
                lancamento2.Usuario_id     = UsuariosController.LojaAtual.Id;
                lancamento2.Pagamentos_lancamentos.Add(new Pagamentos_lancamentos()
                {
                    Forma_pagamento_id = fpg.Id,
                    Valor = lancamento2.Valor_final
                });

                lancamento1.Descricao = $"TRANSFERÊNCIA '{contasC.Find(lancamento1.Conta_id).Nome}' -> '{contasC.Find(lancamento2.Conta_id).Nome}' - {lancamento1.Data.ToString("dd/MM/yyyy HH:mm:ss")} ({(lancamento1.Tipo == (int)Tipo_lancamento.ENTRADA ? "ENTRADA" : "SAIDA")})";
                lancamento2.Descricao = $"TRANSFERÊNCIA '{contasC.Find(lancamento1.Conta_id).Nome}' -> '{contasC.Find(lancamento2.Conta_id).Nome}' - {lancamento2.Data.ToString("dd/MM/yyyy HH:mm:ss")} ({(lancamento2.Tipo == (int)Tipo_lancamento.ENTRADA ? "ENTRADA" : "SAIDA")})";

                if (!controller.Save(lancamento1))
                {
                    MessageBox.Show("Ocorreu um problema ao executar o procedimento. Acione o suporte Doware.", "ERRO", MessageBoxButton.OK, MessageBoxImage.Error);
                    thread_transferencia.Abort();
                }

                if (!controller.Save(lancamento2))
                {
                    MessageBox.Show("Ocorreu um problema ao executar o procedimento. Acione o suporte Doware.", "ERRO", MessageBoxButton.OK, MessageBoxImage.Error);
                    thread_transferencia.Abort();
                }

                MessageBox.Show("Transferência efetuada com sucesso", "Concluído", MessageBoxButton.OK, MessageBoxImage.Information);
                Close();
                thread_transferencia.Abort();
            }));
        }
        private void FillFpg(Formas_pagamento fpg)
        {
            if (fpg == null)
            {
                return;
            }

            LimparCampos();
            txCod.Text       = fpg.Id.ToString();
            txDescricao.Text = fpg.Descricao;
            cbTipo_intervalo.SelectedIndex = fpg.Tipo_intervalo;
            cbTipo_pagamento.SelectedIndex = fpg.Tipo_pagamento;
            txParcelas.Text = fpg.Parcelas.ToString();

            if (fpg.Conta_id > 0)
            {
                Contas conta = new ContasController().Find(fpg.Conta_id);
                txCod_conta.Text = conta.Id.ToString();
                txConta.Text     = conta.Nome;
            }

            if (fpg.Tipo_intervalo == (int)Tipo_intervalo.DATA_BASE)
            {
                lbIntervalo_diaBase.Content = "Dia base";
                txInterv_diaBase.Text       = fpg.Dia_base.ToString();
            }
            else
            {
                lbIntervalo_diaBase.Content = "Intervalo (dias)";
                txInterv_diaBase.Text       = fpg.Intervalo.ToString();
            }

            if (fpg.Operadora_cartao_id > 0)
            {
                Operadoras_cartao op = new Operadoras_cartaoController().Find(fpg.Operadora_cartao_id);
                txCod_operadora.Text  = op.Id.ToString();
                txNome_operadora.Text = op.Nome;
            }

            if (fpg.Tipo_pagamento == (int)Tipo_pagamento.DINHEIRO)
            {
                cbTipo_intervalo.IsEnabled      = false;
                txInterv_diaBase.IsEnabled      = false;
                txParcelas.IsEnabled            = false;
                btSelecionarOperadora.IsEnabled = false;
            }

            if (fpg.Tipo_pagamento == (int)Tipo_pagamento.CREDITO)
            {
                cbTipo_intervalo.IsEnabled      = false;
                txInterv_diaBase.IsEnabled      = false;
                txParcelas.IsEnabled            = false;
                btSelecionarOperadora.IsEnabled = false;
                btSelecionarConta.IsEnabled     = false;
            }

            if (fpg.Tipo_pagamento == (int)Tipo_pagamento.CHEQUE)
            {
                cbTipo_intervalo.IsEnabled      = true;
                txInterv_diaBase.IsEnabled      = true;
                txParcelas.IsEnabled            = true;
                btSelecionarOperadora.IsEnabled = false;
                btSelecionarConta.IsEnabled     = true;
            }

            if (fpg.Tipo_pagamento == (int)Tipo_pagamento.PRAZO)
            {
                cbTipo_intervalo.IsEnabled      = true;
                txInterv_diaBase.IsEnabled      = true;
                txParcelas.IsEnabled            = true;
                btSelecionarOperadora.IsEnabled = false;
                btSelecionarConta.IsEnabled     = true;
            }

            if (fpg.Tipo_intervalo == (int)Tipo_pagamento.CARTAO)
            {
                cbTipo_intervalo.IsEnabled      = false;
                txInterv_diaBase.IsEnabled      = false;
                txParcelas.IsEnabled            = false;
                btSelecionarOperadora.IsEnabled = true;
                btSelecionarConta.IsEnabled     = true;
            }

            txDescricao.Focus();
        }
        private void btProximo_Click(object sender, RoutedEventArgs e)
        {
            if (selectedIndex == 3)
            {
                thread_transferencia = new Thread(EfetuarTransferencia);
                thread_transferencia.Start();
                return;
            }

            if (selectedIndex != 0)
            {
                if (telas[selectedIndex].Valor == 0)
                {
                    MessageBox.Show("Informe o valor da movimentação", "Atenção", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    return;
                }

                if (telas[selectedIndex].Conta_id == 0)
                {
                    MessageBox.Show("Selecione a conta", "Atenção", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    return;
                }

                if (telas[selectedIndex].Plano_conta_id == 0)
                {
                    MessageBox.Show("Seleciona o plano de contas", "Atenção", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    return;
                }

                if (telas[1].Conta_id == telas[2].Conta_id)
                {
                    MessageBox.Show("As contas devem ser diferentes", "Atenção", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    return;
                }


                Contas conta = new ContasController().Find(telas[selectedIndex].Conta_id);
                if (telas[selectedIndex].Tipo_lancamento == Enums.Tipo_lancamento.SAIDA)
                {
                    if (conta.Saldo <= 0)
                    {
                        Parametros p = ParametrosController.FindParametro("TCNT_SLDZRO");
                        if (p.Valor.Equals("N"))
                        {
                            MessageBox.Show(@"Não é possível realizar uma movimentação de saída nesta
conta por que o saldo atual está igual ou inferior a zero, e o sistema
está atualmente configurado para bloquear está ação.", "TCNT_SLDZRO", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                            return;
                        }

                        if (!p.Valor.Equals("S"))
                        {
                            MessageBox.Show(@"Não é possível completar a ação por que o valor informado
no parâmetro de sistema 'TCNT_SLDZRO' não foi reconhecido.", "Erro de configuração", MessageBoxButton.OK, MessageBoxImage.Error);
                            return;
                        }
                    }

                    if ((conta.Saldo - telas[selectedIndex].Valor) <= 0)
                    {
                        Parametros p = ParametrosController.FindParametro("TCNT_RSLDZRO");
                        if (p.Valor.Equals("N"))
                        {
                            MessageBox.Show(@"Não é possível realizar uma movimentação de saída nesta conta 
por que o saldo da conta será igual ou inferior a zero após a movimentação, e o sistema está atualmente 
configurado para bloquear esta ação.", "TCNT_RSLDZRO", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                            return;
                        }

                        if (!p.Valor.Equals("S"))
                        {
                            MessageBox.Show(@"Não é possível completar a ação por que o valor informado
no parâmetro de sistema 'TCNT_RSLDZRO' não foi reconhecido.", "Erro de configuração", MessageBoxButton.OK, MessageBoxImage.Error);
                            return;
                        }
                    }
                }
            }

            if (selectedIndex == 2)
            {
                btProximo.Content = "Concluir";
                telas[3]          = new Confirmar(telas[1], telas[2]);
                selectedIndex++;
                GridContainer.Children.Clear();
                GridContainer.Children.Add(telas[selectedIndex].CurrentView);

                return;
            }

            selectedIndex++;

            if (selectedIndex == 2)
            {
                telas[selectedIndex].Valor = telas[1].Valor;
            }

            GridContainer.Children.Clear();
            GridContainer.Children.Add(telas[selectedIndex].CurrentView);
        }