Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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!" }));
        }