コード例 #1
0
        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));
        }
コード例 #2
0
        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));
        }