public IActionResult Busca(string input) { string idUser = HttpContext.Session.GetString("Id"); if (idUser != null) { ResultadoBusca resultado = new ResultadoBusca(); resultado.ValorPesquisa = input; var eleicoesInscrito = _db.UsuarioEleicoes .Where(ue => ue.CodUsuario.ToString().Equals(idUser)) .Select(ue => ue.CodEleicao) .ToList(); var eleicoesDisponiveis = _db.Eleicoes .Where(e => !eleicoesInscrito.Contains(e.CodEleicao) && e.Titulo.ToUpper().Contains(input.ToUpper()) && !e.Status.Equals("F")) .ToList(); resultado.Eleicoes = eleicoesDisponiveis; return(View(resultado)); } return(RedirectToAction("Login", "Home")); }
private async Task ExtrairDadosPorCategoria(string urlGridCategoria, string nomeCategoria, List <ResultadoBusca> resultados) { var paginaCategoria = await _browsingContext.OpenAsync(urlGridCategoria); var produtos = paginaCategoria.QuerySelectorAll(_template.SeletorGridProdutos); foreach (var produtoGrid in produtos) { //var eleLinkProduto = produtoGrid.QuerySelector(_template.SeletorLinkProduto); var urlProduto = produtoGrid.GetAttribute("href"); try { var paginaProduto = await _browsingContext.OpenAsync(urlProduto); var nomeProduto = paginaProduto.QuerySelector(_template.SeletorNome).GetAttribute("content"); var roupa = new ResultadoBusca(); roupa.Origem = _template.Nome; roupa.UrlProduto = urlProduto; roupa.Nome = nomeProduto; roupa.Categoria = nomeCategoria; roupa.Descricao = paginaProduto.QuerySelector(_template.SeletorDescricao).GetAttribute("content"); roupa.UrlImagem = paginaProduto.QuerySelector(_template.SeletorUrlImagem).GetAttribute("content"); roupa.Preco = _helper.TratamentoPreco(paginaProduto.QuerySelector(_template.SeletorPreco).InnerHtml.Trim()); roupa.Tamanhos = new List <string>(); var elesTamanho = paginaProduto.QuerySelectorAll(_template.SeletorTamanhos); foreach (var tamanho in elesTamanho) { roupa.Tamanhos.Add(string.IsNullOrWhiteSpace(tamanho.InnerHtml) ? "" : tamanho.InnerHtml.Trim()); } resultados.Add(roupa); _logger.LogInformation("Produto {nomeProduto} da categoria {nomeCategoria} extraido do página: {urlProduto}", nomeProduto, nomeCategoria, urlProduto); } catch (System.Exception ex) { var msgErro = ex.Message; _logger.LogError("Produto da página {urlProduto} e categoria {nomeCategoria} não foi extraido. Erro: {msgErro}", urlProduto, nomeCategoria, msgErro); } } if (PossuiMaisPaginas(paginaCategoria)) { var urlProximaPagina = _helper.UrlProximaPagina(urlGridCategoria, _template.QueryStringPaginacao); await ExtrairDadosPorCategoria(urlProximaPagina, nomeCategoria, resultados); } }
/// <summary> /// Executa a busca de arquivos, baseado nos filtros preenchidos /// </summary> /// <param name="pagina">Número da página que conterá os resultados da busca</param> private void ExecutaBusca(int pagina = 1) { FiltroBusca filtro = this.ViewState[ConstantesGlobais.FILTRO_BUSCA] != null ? (FiltroBusca)this.ViewState[ConstantesGlobais.FILTRO_BUSCA] : new FiltroBusca(); int inicio = ((pagina - 1) * RESULTADOS_POR_PAGINA) + 1; ResultadoBusca resultado = GerenciamentoArquivo.BuscaArquivosDfe(filtro, inicio, RESULTADOS_POR_PAGINA); List <Arquivo> arquivos = (resultado != null && resultado.Resultados != null) ? (List <Arquivo>)resultado.Resultados : new List <Arquivo>(); List <int> paginas = new List <int>(); if (arquivos.Count > 0) { int quantidadePaginas = (int)Math.Ceiling((double)resultado.Quantidade / (double)RESULTADOS_POR_PAGINA); for (int i = 1; i <= quantidadePaginas; i++) { paginas.Add(i); } this.DivAcoes.Visible = true; this.pagina = 0; this.RptResultadoBusca.Visible = true; this.RptResultadoBusca.DataSource = arquivos.OrderByDescending(a => a.DataEmissao).ToList(); this.RptResultadoBusca.DataBind(); this.RptPaginacao.Visible = quantidadePaginas > 1; this.RptPaginacao.DataSource = paginas; this.RptPaginacao.DataBind(); } else { this.DivMensagem.Visible = true; this.DivMensagem.Attributes["class"] = ConstantesGlobais.CLASSE_MENSAGEM_ERRO; this.LblMensagem.Text = MENSAGEM_ERRO_BUSCA_NENHUM_RESULTADO; this.DivAcoes.Visible = false; this.RptResultadoBusca.Visible = false; this.RptPaginacao.Visible = false; return; } }