protected async Task abrirCategoria(CategoriaInfo categoria)
        {
            var regraLoja = LojaFactory.create();
            var loja      = regraLoja.pegarAtual();

            if (loja == null)
            {
                await DisplayAlert("Aviso", "Nenhuma loja selecionada.", "Fechar");

                return;
            }

            var regraCategoria  = CategoriaFactory.create();
            var categoriasFilho = await regraCategoria.listarPorCategoria(loja.Id, categoria.Id);

            if (categoriasFilho.Count > 0)
            {
                var categoriaPage = CategoriaPageFactory.create();
                categoriaPage.Title       = categoria.Nome;
                categoriaPage.IdCategoria = categoria.Id;
                if (AoAbrirProdutoLista != null)
                {
                    categoriaPage.AoAbrirProdutoLista += AoAbrirProdutoLista;
                }
                await Navigation.PushAsync(categoriaPage);
            }
            else
            {
                var produtoPage = ProdutoUtils.gerarProdutoListaPorCategoria(categoria);
                if (AoAbrirProdutoLista != null)
                {
                    AoAbrirProdutoLista(this, produtoPage);
                }
                else
                {
                    await Navigation.PushAsync(produtoPage);
                }
            }
        }
        protected async Task atualizarCategoria()
        {
            var regraLoja = LojaFactory.create();
            var loja      = regraLoja.pegarAtual();

            if (loja != null)
            {
                _empresaLabel.Text = loja.Nome;
                var regraCategoria = CategoriaFactory.create();
                UserDialogs.Instance.ShowLoading("Carregando...");
                try {
                    var regraBanner = BannerPecaFactory.create();
                    _bannerView.ItemsSource = await regraBanner.gerar(new BannerFiltroInfo {
                        SlugBanner = BannerUtils.CATEGORIA,
                        IdLoja     = loja.Id,
                        Ordem      = BannerOrdemEnum.PorOrdem
                    });

                    if (IdCategoria.HasValue)
                    {
                        executarAtualizarCategoria(await regraCategoria.listarPorCategoria(loja.Id, IdCategoria.Value));
                    }
                    else
                    {
                        executarAtualizarCategoria(await regraCategoria.listarPai(loja.Id));
                    }
                    UserDialogs.Instance.HideLoading();
                }
                catch (Exception erro)
                {
                    UserDialogs.Instance.HideLoading();
                    UserDialogs.Instance.Alert(erro.Message, "Erro", "Entendi");
                }
            }
            else
            {
                await DisplayAlert("Aviso", "Nenhuma loja selecionada.", "Fechar");
            }
        }