public IActionResult ValidarConta(ContaModel conta)
        {
            ContaBE contaBE = null;

            try
            {
                contaBE = new ContaBE();
                conta   = contaBE.ValidarConta(conta);
                if (conta != null && conta.Id > 0)
                {
                    HttpContext.Session.SetString("NomeUsuarioLogado", conta.Numero);
                    HttpContext.Session.SetString("IdUsuarioLogado", conta.Id.ToString());
                    return(RedirectToAction("Menu", "Home"));
                }
                else
                {
                    TempData["MensagemLoginInvalido"] = "Dados da conta inválidos.";
                    return(RedirectToAction("Login"));
                }
            }
            catch (Exception ex)
            {
                TempData["MensagemLoginInvalido"] = "Dados da conta inválidos.<br />" + ex;
                return(RedirectToAction("Login"));
            }
        }
        public IActionResult Saque(ContaMovimentoModel contaMovimento)
        {
            ContaBE          contaBE          = null;
            ContaMovimentoBE contaMovimentoBE = null;
            DateTime         dataNow          = DateTime.Now;
            string           operacaoSigla    = "SQ";

            try
            {
                contaBE          = new ContaBE();
                contaMovimentoBE = new ContaMovimentoBE(contaBE.GetSqlCommand());

                var conta = new ContaModel(HttpContextAccessor);
                contaMovimento.Conta = contaBE.ValidarConta(conta);

                if (contaMovimento.Valor > (contaMovimento.Conta.Saldo + contaMovimento.Conta.ChequeEspecial))
                {
                    ViewBag.Info = "Valor solicitado maior que o saldo disponivel.";
                    return(View());
                }


                contaMovimentoBE.Sacar(contaMovimento, operacaoSigla);

                return(View());
            }
            catch (Exception ex)
            {
                return(View());
            }
        }
        public IActionResult Deposito(DepositoModel deposito)
        {
            ContaBE    contaBE    = null;
            DepositoBE depositoBE = null;

            try
            {
                contaBE    = new ContaBE();
                depositoBE = new DepositoBE(contaBE.GetSqlCommand());

                if (deposito.NomeDepositante != "" && deposito.CpfDepositante != "" && deposito.Conta.Numero != "" && deposito.Conta.Agencia != "" && deposito.Valor > 0)
                {
                    var conta = contaBE.ValidarConta(deposito.Conta);

                    if (conta != null && conta.Id > 0)
                    {
                        deposito.Conta = conta;
                        depositoBE.Inserir(deposito);
                        return(RedirectToAction("Index", "Home"));
                    }

                    ViewBag.Info = "Conta de destino não é uma conta válida.";
                    return(View());
                }

                ViewBag.Info = "Todos os campos devem ser preenchidos.";
                return(View());
            }
            catch (Exception)
            {
                return(View());
            }
        }
        public IActionResult Extrato(object obj)
        {
            ContaBE         contaBE          = null;
            OperacaoBE      operacaoBE       = null;
            ContaOperacaoBE contaOperacaoBE  = null;
            DateTime        dataNow          = DateTime.Now;
            string          operacaoSigla    = "EX";
            bool            primeiraOperacao = true;

            try
            {
                contaBE         = new ContaBE();
                operacaoBE      = new OperacaoBE(contaBE.GetSqlCommand());
                contaOperacaoBE = new ContaOperacaoBE(contaBE.GetSqlCommand());

                var conta = new ContaModel(HttpContextAccessor);

                var operacao = operacaoBE.Consultar(new OperacaoModel()
                {
                    Sigla = operacaoSigla
                });

                var contaOperacao = contaOperacaoBE.Consultar(new ContaOperacaoModel()
                {
                    Ano      = dataNow.Year,
                    Mes      = dataNow.Month,
                    Operacao = { Id = operacao.Id },
                    Conta    = { Id = conta.Id }
                });

                if (contaOperacao != null && contaOperacao.Id > 0)
                {
                    primeiraOperacao = false;
                    //conta = contaBE.ValidarConta(conta);
                    //contaBE.CobrarOperacao(conta, operacaoSigla);
                }
                //else
                //{
                //    contaOperacaoBE.Inserir(new ContaOperacaoModel()
                //    {
                //        Conta = { Id = conta.Id },
                //        Operacao = { Id = operacao.Id },
                //        DataOperacao = dataNow
                //    });
                //}

                //conta = contaBE.ValidarConta(conta);
                ViewBag.PrimeiraOperacao = primeiraOperacao;
                return(View());
            }
            catch (Exception ex)
            {
                return(View());
            }
        }
        public IActionResult Saldo()
        {
            ContaBE         contaBE         = null;
            OperacaoBE      operacaoBE      = null;
            ContaOperacaoBE contaOperacaoBE = null;
            DateTime        dataNow         = DateTime.Now;
            string          operacaoSigla   = "SD";

            try
            {
                contaBE         = new ContaBE();
                operacaoBE      = new OperacaoBE(contaBE.GetSqlCommand());
                contaOperacaoBE = new ContaOperacaoBE(contaBE.GetSqlCommand());

                var conta = new ContaModel(HttpContextAccessor);

                var operacao = operacaoBE.Consultar(new OperacaoModel()
                {
                    Sigla = operacaoSigla
                });

                var contaOperacao = contaOperacaoBE.Consultar(new ContaOperacaoModel()
                {
                    Ano      = dataNow.Year,
                    Mes      = dataNow.Month,
                    Operacao = { Id = operacao.Id },
                    Conta    = { Id = conta.Id }
                });

                if (contaOperacao != null && contaOperacao.Id > 0)
                {
                    conta = contaBE.ValidarConta(conta);
                    contaBE.CobrarOperacao(conta, operacaoSigla);
                }
                else
                {
                    contaOperacaoBE.Inserir(new ContaOperacaoModel()
                    {
                        Conta        = { Id = conta.Id },
                        Operacao     = { Id = operacao.Id },
                        DataOperacao = dataNow
                    });
                }

                conta         = contaBE.ValidarConta(conta);
                ViewBag.Conta = conta;
                return(View());
            }
            catch (Exception ex)
            {
                return(View());
            }
        }
        public IActionResult Transferir(ContaTransferenciaModel formulario)
        {
            ContaTransferenciaBE contaTransferenciaBE = null;
            ContaBE contaBE = null;

            try
            {
                contaTransferenciaBE = new ContaTransferenciaBE();
                contaBE = new ContaBE(contaTransferenciaBE.GetSqlCommand());
                formulario.ContaOrigem = new ContaModel(HttpContextAccessor);
                formulario.ContaOrigem = contaBE.ValidarConta(formulario.ContaOrigem);

                if (formulario.ContaDestino.Numero != "" && formulario.ContaDestino.Agencia != "" && formulario.Valor > 0)
                {
                    var contaDestino = contaBE.ValidarConta(formulario.ContaDestino);

                    if (contaDestino != null && contaDestino.Id > 0)
                    {
                        if (formulario.ContaOrigem.ContaTipo.Sigla == "CP" && formulario.ContaDestino.ContaTipo.Sigla == "CC")
                        {
                            ViewBag.SaldoInsulficiente = "Conta Poupança não pode transferir para conta corrente.";
                            return(View());
                        }

                        if ((formulario.ContaOrigem.Saldo + formulario.ContaOrigem.ChequeEspecial) < formulario.Valor)
                        {
                            ViewBag.SaldoInsulficiente = "O saldo é insulficiente para fazer a transferência.";
                            return(View());
                        }

                        formulario.ContaDestino = contaDestino;
                        contaTransferenciaBE.Transferir(formulario);
                        return(RedirectToAction("Menu", "Home"));
                    }

                    ViewBag.SaldoInsulficiente = "Conta de destino não é uma conta válida.";
                    return(View());
                }

                ViewBag.SaldoInsulficiente = "Deve ser preenchido todos os campos.";
                return(View());
            }
            catch (Exception)
            {
                return(View());
            }
        }
        public IActionResult Registrar(ContaModel conta)
        {
            ContaBE     contaBE     = null;
            ContaTipoBE contaTipoBE = new ContaTipoBE();

            ViewBag.ContaTipos = contaTipoBE.Listar();
            try
            {
                contaBE = new ContaBE(contaTipoBE.GetSqlCommand());
                if (ModelState.IsValid)
                {
                    conta.ChequeEspecial = 300;
                    contaBE.Inserir(conta);
                    return(RedirectToAction("Sucesso"));
                }
                return(View());
            }
            catch (Exception)
            {
                return(View());
            }
        }