public IHttpActionResult ObterEditorias() { string key = "editorias:ObterEditorias:TEditoriais"; Func <object, EditoriasViewModel> funcao = t => ObterEditoriasDB(); EditoriasViewModel retorno = Site.Services.RedisService.GetOrSetToRedis(key, funcao, 120); return(Json(retorno)); }
public async Task <ActionResult> Index(string chave, int?page, string palavraChave, string dataInicio, string dataFinal, int categoria = 0) { var hoje = DateTime.Now; var queryDestaques = db.Noticias.Include(x => x.Editoriais).Where(x => !x.excluido && x.liberado && x.dataAtualizacao < DateTime.Now && x.idColunista == null && !x.plantao && x.Editoriais.Any(y => y.chave == chave && y.ativo)).OrderByDescending(p => p.dataAtualizacao) .Select(noticia => new NoticiasViewModel { Chamada = noticia.chamada, DataCadastro = noticia.dataCadastro, Editoriais = noticia.Editoriais.Select(ed => new EditorialNoticiaViewModel { Ativo = ed.ativo, Chave = ed.chave, Especial = ed.especial, Esporte = ed.esportes, Excluido = ed.excluido, Nome = ed.nome }), Foto = noticia.foto, FotoCredito = noticia.fotoCredito, Id = noticia.id, Subtitulo = noticia.subtitulo, TipoDestaque = noticia.TipoDestaque, Titulo = noticia.titulo, TituloCapa = noticia.TituloCapa, Url = noticia.url, Audio = noticia.audio, Liberado = noticia.liberado, Excluido = noticia.excluido, IdColunista = noticia.idColunista, Plantao = noticia.plantao, PorAutor = noticia.porAutor }).OrderByDescending(y => y.DataCadastro).Take(30); var destaques = await DestaquesEditoria(queryDestaques, chave, new int[] { }); var idsDestaques = new int[] { }; if (destaques != null && destaques.Any()) { idsDestaques = destaques.Select(x => x.Id).ToArray(); } var editorial = await db.Editoriais.Include(x => x.Noticias).Where(x => !x.excluido && x.chave == chave && x.ativo) .Select(e => new EditorialViewModel { ativo = e.ativo, excluido = e.excluido, chave = e.chave, nome = e.nome, id = e.id, especial = e.especial, esportes = e.esportes, Noticias = e.Noticias.Where(x => x.liberado && !x.excluido && x.dataAtualizacao < DateTime.Now && x.idColunista == null && !idsDestaques.Contains(x.id)).OrderByDescending(p => p.dataAtualizacao).Select(noticia => new NoticiasViewModel { Chamada = noticia.chamada, DataCadastro = noticia.dataCadastro, Editoriais = noticia.Editoriais.Select(ed => new EditorialNoticiaViewModel { Ativo = ed.ativo, Chave = ed.chave, Especial = ed.especial, Esporte = ed.esportes, Excluido = ed.excluido, Nome = ed.nome }), Foto = noticia.foto, FotoCredito = noticia.fotoCredito, Id = noticia.id, Subtitulo = noticia.subtitulo, TipoDestaque = noticia.TipoDestaque, Titulo = noticia.titulo, TituloCapa = noticia.TituloCapa, Url = noticia.url, Audio = noticia.audio, Liberado = noticia.liberado, Excluido = noticia.excluido, IdColunista = noticia.idColunista, Plantao = noticia.plantao, PorAutor = noticia.porAutor, Categorias = noticia.Categorias.Select(cat => new CategoriasViewModel { Id = cat.Id }) }).OrderByDescending(y => y.DataCadastro).Take(100).ToList() }).FirstOrDefaultAsync(); var banner1 = await db.Banners.Include(x => x.AreaBanner).FirstOrDefaultAsync(x => x.Liberado && !x.Excluido && hoje >= x.DataInicio && hoje <= x.DataFim && x.AreaBanner.Any(w => w.chave == "banner-editoria-interna" && w.Ativo.Value)); var bannerPrincipal = await db.Banners.Include(x => x.AreaBanner).Where(x => x.Liberado && !x.Excluido && hoje >= x.DataInicio && hoje <= x.DataFim && x.AreaBanner.Any(w => (w.chave == "banner-editoria-super" || w.chave == "banner-editoria-leaderboard" || w.chave == "banner-editoria-maxiboard") && w.Ativo.Value)).Select(banner => new BannerViewModel { AreaBanner = banner.AreaBanner, Arquivos = banner.Arquivo, Id = banner.Id, Link = banner.Link, Titulo = banner.Titulo, Anunciante = banner.Anunciante, Chave = banner.AreaBanner.FirstOrDefault().chave }).FirstOrDefaultAsync(); if (editorial == null) { return(RedirectToAction("Index", "Home")); } var query = editorial.Noticias; int pageNumber = (page ?? 1); if (!string.IsNullOrEmpty(palavraChave)) { query = editorial.Noticias.Where(n => (n.Titulo != null && n.Titulo.Contains(palavraChave.ToLower())) || (n.Chamada != null && n.Chamada.Contains(palavraChave)) || (n.Subtitulo != null && n.Subtitulo.Contains(palavraChave))).ToList(); } //if (categoria > 0) //{ // query = query.Where(n => n.Categorias.Any(x => x.Id == categoria)).ToList(); //} if (!string.IsNullOrEmpty(dataInicio)) { DateTime DataInicio = DateTime.Parse(dataInicio).AddHours(0).AddMinutes(0).AddSeconds(0); query = query.Where(d => d.DataCadastro >= DataInicio).ToList(); } if (!string.IsNullOrEmpty(dataFinal)) { DateTime DataFim = DateTime.Parse(dataFinal).AddHours(23).AddMinutes(59).AddSeconds(59); query = query.Where(d => d.DataCadastro <= DataFim).ToList(); } var viewModel = new EditoriasViewModel { Editoria = editorial, Destaques = destaques, Banner = banner1, BannerPrincipal = bannerPrincipal, paginacao = query.Where(q => !idsDestaques.Contains(q.Id)).ToPagedList(pageNumber, 8) }; ViewBag.categoria = new SelectList(db.Categorias.Where(x => !x.Excluido && x.EditoriaId == editorial.id), "Id", "Titulo", (categoria > 0 ? categoria.ToString() : "")); return(View(viewModel)); }