public ActionResult Operacao(OperacaoVM Operacao)
        {
            OperacaoVM vOperacao = null;

            try
            {
                switch (Operacao.IdTipoOperacao)
                {
                case 1:

                    vOperacao = _operacoes.RegistrarTransferencia(Operacao);

                    break;

                default:

                    throw new Exception("Operação não implementada.");
                }

                vOperacao.Sucesso  = true;
                vOperacao.Mensagem = MenssagemSucesso;

                return(Ok(vOperacao));
            }
            catch (Exception Ex)
            {
                vOperacao.Sucesso  = true;
                vOperacao.Mensagem = "Origem : " + Ex.Source + "-Mesangem : " + Ex.Message;

                return(BadRequest(vOperacao));
            }
        }
Exemplo n.º 2
0
        public OperacaoVM RegistrarTransferencia(OperacaoVM Operacao)
        {
            //Declarações
            ContaCorrente ContaOrigem  = null;
            ContaCorrente ContaDestino = null;
            Lancamentos   LancOrigem   = null;
            Lancamentos   LancDestino  = null;
            DateTime      DataOperacao;

            try
            {
                //Instâncias e Inicializações
                DataOperacao = DateTime.Now;

                //Desenvolvimento
                ContaOrigem  = _context.ContaCorrente.Where(q => q.IdContaCorrente == Operacao.IdContaOrigem).FirstOrDefault();
                ContaDestino = _context.ContaCorrente.Where(q => q.IdContaCorrente == Operacao.IdContaDestino).FirstOrDefault();

                //Registrar Lançamento Conta Origem
                LancOrigem = LancamentoDebito(Operacao.IdContaOrigem, DataOperacao, Operacao.VlOperacao);
                _context.Add(LancOrigem);

                //Registrar Lançamento Conta Destino
                if (Operacao.IdContaDestino != null)
                {
                    LancDestino = LancamentoCredito((int)Operacao.IdContaDestino, DataOperacao, Operacao.VlOperacao);
                    _context.Add(LancDestino);
                }
                else
                {
                    throw new Exception("Operação Inválida.");
                }

                //Registrar Alteração Saldo Origem
                ContaOrigem.VlSaldo      -= Operacao.VlOperacao;
                ContaOrigem.DtUltOperacao = DateTime.Now;
                _context.Update(ContaOrigem);

                //Registrar Alteração Saldo Destino
                ContaDestino.VlSaldo      += Operacao.VlOperacao;
                ContaDestino.DtUltOperacao = DateTime.Now;
                _context.Update(ContaDestino);

                //Efetiva alterações
                _context.SaveChanges();

                //Retorna Id da Operação de Origem
                Operacao.IdLancamento = LancOrigem.IdLancamento;
                return(Operacao);
            }
            catch (Exception Ex)
            {
                throw Ex;
            }
        }