示例#1
0
        public async Task <IActionResult> TransferirToConta([FromRoute] int contaId, [FromRoute] int objetivoId, [FromBody] decimal valor)
        {
            try
            {
                var contaController = new ContasContabeisController(context);
                var movController   = new MovimentacoesController(context);

                var aux = await contaController.Get(contaId);

                if (!(aux is OkObjectResult contaObject))
                {
                    return(aux);
                }
                var conta = contaObject.Value as ContaContabil;

                aux = await Get(objetivoId);

                if (!(aux is OkObjectResult objetivoObject))
                {
                    return(aux);
                }
                var objetivo = objetivoObject.Value as Objetivo;

                if (!VerificarSaldo(objetivo, valor))
                {
                    ModelState.AddModelError("Objetivo", "Saldo insuficiente.");
                    return(BadRequest(ModelState.Values.SelectMany(e => e.Errors)));
                }

                conta.Saldo += valor;

                var valorAux = objetivo.HistoricoObjetivo.Last().ValorFinal - valor;


                var historico = new HistoricoObjetivo
                {
                    DataFinal  = DateTime.Now,
                    ValorFinal = valorAux,
                    ObjetivoId = objetivo.Id
                };

                context.ContaContabil.Update(conta);
                context.HistoricoObjetivo.Add(historico);
                context.Objetivo.Update(objetivo);
                await context.SaveChangesAsync();

                objetivo = await context.Objetivo
                           .Include(o => o.HistoricoObjetivo)
                           .Include(o => o.Moeda)
                           .FirstOrDefaultAsync(o => o.Id == objetivoId);

                return(Ok(new { objetivo, conta }));
            }
            catch (Exception e)
            {
                return(BadRequest(e.StackTrace));
            }
        }
示例#2
0
        public async Task <IActionResult> InserirDinheiro([FromRoute] int id, [FromBody] Decimal valor)
        {
            try
            {
                var objetivo = await context.Objetivo
                               .Include(o => o.HistoricoObjetivo)
                               .FirstOrDefaultAsync(o => o.Id == id);

                if (objetivo == null)
                {
                    ModelState.AddModelError("Objetivo", "Objetivo não encontrado");
                    return(NotFound(ModelState.Values.SelectMany(v => v.Errors)));
                }

                var lastValor = objetivo.HistoricoObjetivo.Last <HistoricoObjetivo>().ValorFinal;

                var historico = new HistoricoObjetivo
                {
                    DataFinal  = DateTime.Now,
                    ValorFinal = lastValor + valor,
                    ObjetivoId = objetivo.Id
                };

                context.HistoricoObjetivo.Add(historico);
                context.Objetivo.Update(objetivo);
                await context.SaveChangesAsync();

                objetivo = await context.Objetivo
                           .Include(o => o.HistoricoObjetivo)
                           .Include(o => o.Moeda)
                           .FirstOrDefaultAsync(o => o.Id == id);

                return(Ok(objetivo));
            }
            catch (Exception e)
            {
                return(BadRequest(e.StackTrace));
            }
        }