public async Task <IActionResult> Index(string codigo = null)
        {
            try
            {
                string idUsuario = GetUserId();

                CarrinhoCliente carrinho;
                if (!string.IsNullOrWhiteSpace(codigo))
                {
                    var produto = await catalogoService.GetProduto(codigo);

                    if (produto == null)
                    {
                        return(RedirectToAction("ProdutoNaoEncontrado", "Carrinho", codigo));
                    }

                    ItemCarrinho itemCarrinho = new ItemCarrinho(produto.Codigo, produto.Codigo, produto.Nome, produto.Preco, 1, produto.UrlImagem);
                    carrinho = await carrinhoService.AddItem(idUsuario, itemCarrinho);
                }
                else
                {
                    carrinho = await carrinhoService.GetCarrinho(idUsuario);
                }
                await CheckUserCounterData();

                return(View(carrinho));
            }
            catch (BrokenCircuitException e)
            {
                logger.LogError(e, e.Message);
                HandleBrokenCircuitException(catalogoService);
            }
            catch (Exception e)
            {
                logger.LogError(e, e.Message);
                HandleException();
            }
            return(View());
        }