public async Task <IActionResult> PostPedido([FromBody] Pedido pedido) { ConsumidorController consumidorController = new ConsumidorController(_context); if (!ModelState.IsValid) { return(BadRequest(ModelState)); } //Verifica itens do pedido if (pedido.Itens.Count == 0) { return(BadRequest(new { message = "É necessário pelo menos um produto no pedido!" })); } //Verifica saldo do consumidor double totalPedido = 0; foreach (var item in pedido.Itens) { totalPedido += item.ValorUnitarioDZ * item.Quantidade; //Limpa o produto se vier preenchido, para evitar duplicações item.Produto = null; } if (totalPedido > consumidorController.SaldoConsumidor(pedido.IdConsumidor)) { return(BadRequest(new { message = "O saldo do consumidor é insuficiente!" })); } //Corrige os status caso o registro tenha chegado sujo pedido.DataSeparacao = pedido.DataEmissaoNF = pedido.DataEnvio = pedido.DataRecebimento = pedido.DataCancelamento = null; pedido.Status = StatusPedido.Realizado; foreach (var item in pedido.Itens) { ConsumidorMovimentacao movimentacao = new ConsumidorMovimentacao() { IdConsumidor = pedido.IdConsumidor, Data = DateTime.Now, Natureza = Natureza.Debito, Valor = item.ValorUnitarioDZ * item.Quantidade * -1, Pedido = item }; _context.ConsumidorMovimentacoes.Add(movimentacao); } _context.Pedidos.Add(pedido); await _context.SaveChangesAsync(); return(CreatedAtAction("GetPedido", new { id = pedido.IdPedido }, pedido)); }
public async Task <IActionResult> AdicionarCreditoUsuario([FromBody] SolicitacaoCredito solicitacaoCredito) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } Consumidor consumidor = _context.Consumidores.FirstOrDefault(x => x.Email == solicitacaoCredito.EmailConsumidor); if (consumidor == null) { return(BadRequest(new { message = "Não existe consumidor cadastrado com esse email!" })); } ParceiroCredito credito = new ParceiroCredito() { IdParceiro = solicitacaoCredito.IdParceiro, Data = DateTime.Now, ValorDZ = solicitacaoCredito.ValorDZ }; credito.IdConsumidor = consumidor.IdConsumidor; ConsumidorMovimentacao movimentacao = new ConsumidorMovimentacao() { IdConsumidor = consumidor.IdConsumidor, Data = DateTime.Now, Natureza = Natureza.Credito, Valor = credito.ValorDZ, Credito = credito }; _context.ConsumidorMovimentacoes.Add(movimentacao); await _context.SaveChangesAsync(); return(Ok(new { message = "Crédito Lançado com sucesso!" })); }