示例#1
0
        public IHttpActionResult AdicionarProduto(AdicionarCarrinhoDto dto)
        {
            _appService.AdicionarProduto(dto);

            return(Ok());
        }
        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();
            }
        }