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)); } }
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; } }