public async Task <IHttpActionResult> PutCarrinhoItens(int id, CarrinhoItens carrinhoItens)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != carrinhoItens.carrinhoItens_id)
            {
                return(BadRequest());
            }

            db.Entry(carrinhoItens).State = EntityState.Modified;

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!CarrinhoItensExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
        public async Task <IActionResult> AtualizarItemCarrinho(Guid produtoId, CarrinhoItens item)
        {
            var carrinho = await ObterCarrinhoCliente();

            var itemCarrinho = await ObterItemCarrinhoValidado(produtoId, carrinho, item);

            if (itemCarrinho == null)
            {
                return(CustomResponse());
            }

            carrinho.AtualizarUnidades(itemCarrinho, item.Quantidade);

            ValidarCarrinho(carrinho);
            if (!OperacaoValida())
            {
                return(CustomResponse());
            }

            _context.CarrinhoItens.Update(itemCarrinho);
            _context.CarrinhoCliente.Update(carrinho);

            await PersistirDados();

            return(CustomResponse());
        }
Ejemplo n.º 3
0
        public Int64 AddCarrinhoItens(CarrinhoItens carrinhoItens)
        {
            try
            {
                SqlCommand cmd = new SqlCommand();

                cmd.CommandText = "AddCarrinhoItens";

                cmd.Parameters.AddWithValue("@carrinhoItens_carrinho_id", carrinhoItens.carrinhoItens_carrinho_id);
                cmd.Parameters.AddWithValue("@carrinhoItens_produto_id", carrinhoItens.carrinhoItens_produto_id);
                cmd.Parameters.AddWithValue("@carrinhoItens_valorUnitario", carrinhoItens.carrinhoItens_valorUnitario);
                cmd.Parameters.AddWithValue("@carrinhoItens_valorTotalItem", carrinhoItens.carrinhoItens_valorTotalItem);
                cmd.Parameters.AddWithValue("@carrinhoItens_quantidade", carrinhoItens.carrinhoItens_quantidade);
                cmd.Parameters.AddWithValue("@carrinhoItens_dataCadastro", carrinhoItens.carrinhoItens_dataCadastro);

                cmd.CommandType = CommandType.StoredProcedure;

                Int64 carrinhoItens_id = SqlRepository.ExecuteScalar(cmd, ConnectionString.SELFPAY);

                return(carrinhoItens_id);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        private void ManipularNovoCarrinho(CarrinhoItens item)
        {
            var carrinho = new CarrinhoCliente(_user.ObterUserId());

            carrinho.AdicionarItem(item);

            ValidarCarrinho(carrinho);
            _context.CarrinhoCliente.Add(carrinho);
        }
        public async Task <IHttpActionResult> DeleteCarrinhoItens(int id)
        {
            CarrinhoItens carrinhoItens = await db.CarrinhoItens.FindAsync(id);

            if (carrinhoItens == null)
            {
                return(NotFound());
            }

            db.CarrinhoItens.Remove(carrinhoItens);
            await db.SaveChangesAsync();

            return(Ok(carrinhoItens));
        }
        private void ManipularCarrinhoExistente(CarrinhoCliente carrinho, CarrinhoItens item)
        {
            var produtoItemExistente = carrinho.CarrinhoItemExistente(item);

            carrinho.AdicionarItem(item);
            ValidarCarrinho(carrinho);

            if (produtoItemExistente)
            {
                _context.CarrinhoItens.Update(carrinho.ObterPorProdutoId(item.ProdutoId));
            }
            else
            {
                _context.CarrinhoItens.Add(item);
            }

            _context.CarrinhoCliente.Update(carrinho);
        }
        public async Task <IActionResult> AdicionarItemCarrinho(CarrinhoItens item)
        {
            var carrinho = await ObterCarrinhoCliente();

            if (carrinho == null)
            {
                ManipularNovoCarrinho(item);
            }
            else
            {
                ManipularCarrinhoExistente(carrinho, item);
            }

            if (!OperacaoValida())
            {
                return(CustomResponse());
            }

            await PersistirDados();

            return(CustomResponse());
        }
        public async Task <IHttpActionResult> PostCarrinhoItens(CarrinhoItens carrinhoItens)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.CarrinhoItens.Add(carrinhoItens);
            await db.SaveChangesAsync();

            var dto = new CarrinhoItensDTO()
            {
                carrinhoItens_id            = carrinhoItens.carrinhoItens_id,
                carrinhoItens_carrinho_id   = carrinhoItens.carrinhoItens_carrinho_id,
                carrinhoItens_produto_id    = carrinhoItens.carrinhoItens_produto_id,
                carrinhoItens_valorUnitario = carrinhoItens.carrinhoItens_valorUnitario,
                carrinhoItens_quantidade    = carrinhoItens.carrinhoItens_quantidade,
                carrinhoItens_totalItem     = carrinhoItens.carrinhoItens_totalItem,
                carrinhoItens_dataCadastro  = carrinhoItens.carrinhoItens_dataCadastro
            };

            return(CreatedAtRoute("DefaultApi", new { id = carrinhoItens.carrinhoItens_id }, dto));
        }
        private async Task <CarrinhoItens> ObterItemCarrinhoValidado(Guid produtoId, CarrinhoCliente carrinho, CarrinhoItens item = null)
        {
            if (item != null && produtoId != item.ProdutoId)
            {
                AdicionarErroProcessamento("O item não corresponde ao informado");
                return(null);
            }

            if (carrinho == null)
            {
                AdicionarErroProcessamento("Carrinho não encontrado");
                return(null);
            }

            var itemCarrinho = await _context.CarrinhoItens
                               .FirstOrDefaultAsync(i => i.CarrinhoId == carrinho.Id && i.ProdutoId == produtoId);

            if (itemCarrinho == null || !carrinho.CarrinhoItemExistente(itemCarrinho))
            {
                AdicionarErroProcessamento("O item não está no carrinho");
                return(null);
            }

            return(itemCarrinho);
        }
        public void AdicionarProduto(AdicionarCarrinhoDto dto)
        {
            Produto produto = ValidaProduto(dto.IdProduto);

            Cliente cliente = ValidaCliente(dto.IdCliente);

            bool isEdit = true;

            var carrinho = _repositoryCarrinho.GetByIdCliente(dto.IdCliente).FirstOrDefault();

            if (carrinho == null)
            {
                carrinho = new Carrinho
                {
                    IdCliente    = dto.IdCliente,
                    DataCadastro = DateTime.Now
                };

                isEdit = false;
            }

            carrinho.Total += produto.PrecoPromocional ?? produto.Preco;

            if (isEdit)
            {
                _repositoryCarrinho.Edit(carrinho);
            }
            else
            {
                _repositoryCarrinho.Add(carrinho);
            }

            _repositoryCarrinho.Commit();

            CarrinhoItens item = null;

            if (carrinho.Id > 0 && _repositoryCarrinhoItens.GetByCarrinhoProduto(carrinho.Id, dto.IdProduto).Any())
            {
                item = _repositoryCarrinhoItens.GetByCarrinhoProduto(carrinho.Id, dto.IdProduto).FirstOrDefault();
                item.Quantidade++;
                item.ValorTotalItem = (produto.PrecoPromocional ?? produto.Preco) * item.Quantidade;
                item.ValorUnitario  = (produto.PrecoPromocional ?? produto.Preco);

                _repositoryCarrinhoItens.Edit(item);
                _repositoryCarrinhoItens.Commit();
            }
            else
            {
                item = new CarrinhoItens
                {
                    IdProduto      = dto.IdProduto,
                    IdCarrinho     = carrinho.Id,
                    DataCadastro   = DateTime.Now,
                    Quantidade     = 1,
                    ValorUnitario  = (produto.PrecoPromocional ?? produto.Preco),
                    ValorTotalItem = (produto.PrecoPromocional ?? produto.Preco)
                };

                _repositoryCarrinhoItens.Add(item);
                _repositoryCarrinhoItens.Commit();
            }
        }
Ejemplo n.º 11
0
        public ApiResponse FazerPedido([FromBody] PedidoModelView pedidoModelView)
        {
            response = new ApiResponse();

            try
            {
                if (!string.IsNullOrEmpty(pedidoModelView.Token))
                {
                    if (pedidoModelView.Token == "teste")
                    {
                        Cliente cliente = _cliente.GetClienteById(pedidoModelView.cliente_id);

                        if (cliente != null)
                        {
                            Carrinho carrinho = _carrinho.GetCarrinhoByClienteId(pedidoModelView.cliente_id);

                            if (carrinho == null)
                            {
                                carrinho = new Carrinho
                                {
                                    carrinho_dataCadastro = DateTime.Now,
                                    carrinho_total        = 0,
                                    cliente_id            = cliente.cliente_id
                                };

                                carrinho.carrinho_id = _carrinho.AddCarrinho(carrinho);
                            }

                            Produto produto = _produto.GetProdutoById(pedidoModelView.produto_id);

                            if (produto != null)
                            {
                                CarrinhoItens carrinhoItens = new CarrinhoItens
                                {
                                    carrinhoItens_carrinho_id    = carrinho.carrinho_id,
                                    carrinhoItens_produto_id     = produto.produto_id,
                                    carrinhoItens_valorUnitario  = produto.produto_preco - produto.produto_precoPromo,
                                    carrinhoItens_valorTotalItem = (produto.produto_preco - produto.produto_precoPromo) * pedidoModelView.carrinhoItens_quantidade,
                                    carrinhoItens_dataCadastro   = DateTime.Now
                                };

                                carrinhoItens.carrinhoItens_id = _carrinho.AddCarrinhoItens(carrinhoItens);

                                Pedido pedido = new Pedido
                                {
                                    pedido_valor        = carrinhoItens.carrinhoItens_valorTotalItem,
                                    carrinhoItens_id    = carrinhoItens.carrinhoItens_id,
                                    pedido_dataCadastro = DateTime.Now
                                };

                                pedido.pedido_id = _pedido.AddPedido(pedido);

                                response.StatusCode = Convert.ToInt32(HttpStatusCode.OK);
                                response.Message    = "Solicitação executada com sucesso!";
                                response.Result     = pedido;
                            }
                        }
                        else
                        {
                            response.StatusCode = Convert.ToInt32(HttpStatusCode.BadRequest);
                            response.Message    = "Cliente não existe!";
                        }
                    }
                    else
                    {
                        response.StatusCode = Convert.ToInt32(HttpStatusCode.BadRequest);
                        response.Message    = "Token inválido!";
                    }
                }
                else
                {
                    response.StatusCode = Convert.ToInt32(HttpStatusCode.BadRequest);
                    response.Message    = "Token inválido!";
                }

                return(response);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }