コード例 #1
0
        private async Task <bool> ValidarCarrinhoProdutos(CarrinhoDTO carrinho, IEnumerable <ItemProdutoDTO> produtos)
        {
            if (carrinho.Itens.Count != produtos.Count())
            {
                var itensIndisponiveis = carrinho.Itens.Select(c => c.ProdutoId).Except(produtos.Select(p => p.Id)).ToList();

                foreach (var itemId in itensIndisponiveis)
                {
                    var itemCarrinho = carrinho.Itens.FirstOrDefault(c => c.ProdutoId == itemId);

                    AdicionarErroProcessamento($"O item {itemCarrinho.Nome} não está mais disponível no catálogo, o remova do carrinho para prosseguir com a compra");
                }

                return(false);
            }

            foreach (var itemCarrinho in carrinho.Itens)
            {
                var produtoCatalogo = produtos.FirstOrDefault(p => p.Id == itemCarrinho.ProdutoId);

                if (produtoCatalogo.Valor != itemCarrinho.Valor)
                {
                    var msgErro = $"O produto {itemCarrinho.Nome} mudou de valor (de: " +
                                  $"{string.Format(CultureInfo.GetCultureInfo("pt-BR"), "{0:C}", itemCarrinho.Valor)} para: " +
                                  $"{string.Format(CultureInfo.GetCultureInfo("pt-BR"), "{0:C}", produtoCatalogo.Valor)}) desde que foi adicionado ao carrinho.";

                    AdicionarErroProcessamento(msgErro);

                    var responseRemover = await _carrinhoService.RemoverItemCarrinho(itemCarrinho.ProdutoId);

                    if (ResponsePossuiErros(responseRemover))
                    {
                        AdicionarErroProcessamento($"Não foi possível remover automaticamente o produto {itemCarrinho.Nome} do seu carrinho, _" + "remova e adicione novamente caso ainda deseje comprar este item");

                        return(false);
                    }

                    itemCarrinho.Valor = produtoCatalogo.Valor;

                    var responseAdicionar = await _carrinhoService.AdicionarItemCarrinho(itemCarrinho);

                    if (ResponsePossuiErros(responseAdicionar))
                    {
                        AdicionarErroProcessamento($"Não foi possível atualizar automaticamente o produto {itemCarrinho.Nome} do seu carrinho, _" + "adicione novamente caso ainda deseje comprar este item");

                        return(false);
                    }

                    LimparErrosProcessamento();

                    AdicionarErroProcessamento(msgErro + " Atualizamos o valor em seu carrinho, realize a conferência do pedido e se preferir remova o produto");

                    return(false);
                }
            }

            return(true);
        }
コード例 #2
0
        public async Task <IActionResult> AdicionarItemCarrinho(ItemCarrinhoDTO item)
        {
            var produto = await catalogoService.ObterPorId(item.ProdutoId);

            await ValidarItemCarrinho(produto, item.Quantidade);

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

            item.Nome   = produto.Nome;
            item.Valor  = produto.Valor;
            item.Imagem = produto.Imagem;

            return(CustomResponse(await carrinhoService.AdicionarItemCarrinho(item)));
        }
コード例 #3
0
        public async Task <IActionResult> AdicionarItemCarrinho(ItemCarrinhoDTO itemProduto)
        {
            var produto = await _catalogoService.ObterPorId(itemProduto.ProdutoId);

            await ValidarItemCarrinho(produto, itemProduto.Quantidade, true);

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

            itemProduto.Nome   = produto.Nome;
            itemProduto.Valor  = produto.Valor;
            itemProduto.Imagem = produto.Imagem;

            var resposta = await _carrinhoService.AdicionarItemCarrinho(itemProduto);

            return(CustomResponse(resposta));
        }
コード例 #4
0
        public async Task <IActionResult> AdicionarItemCarrinho(ItemProdutoViewModel itemProduto)
        {
            var produto = await _catalogoService.ObterPorId(itemProduto.ProdutoId);

            ValidarItemCarrinho(produto, itemProduto.Quantidade);
            if (!OperacaoValida())
            {
                return(View("Index", await _carrinhoService.ObterCarrinho()));
            }

            itemProduto.Nome   = produto.Nome;
            itemProduto.Valor  = produto.Valor;
            itemProduto.Imagem = produto.Imagem;

            var resposta = await _carrinhoService.AdicionarItemCarrinho(itemProduto);

            if (ResponsePossuiErros(resposta))
            {
                return(View("Index", await _carrinhoService.ObterCarrinho()));
            }

            return(RedirectToAction("Index"));
        }
コード例 #5
0
ファイル: CarrinhoAppService.cs プロジェクト: danielwcr/lab
 public Carrinho AdicionarItemCarrinho(Carrinho carrinho, int codigoProduto)
 {
     return(service.AdicionarItemCarrinho(carrinho, codigoProduto));
 }