예제 #1
0
        public ActionResult BlogPosts(string categoria, string blog, int p = 1)
        {
            if (categoria == null || blog == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.NotFound));
            }

            var objBlog = Db.Blogs.FirstOrDefault(b => b.Url == blog);

            if (objBlog == null)
            {
                var    slugBlogNotFound = $"/blogs/{categoria}/{blog}/posts";
                string urlDestino       = UrlRedirect.GetByUrl(slugBlogNotFound);

                if (!string.IsNullOrEmpty(urlDestino))
                {
                    return(new RedirectResult($"{urlDestino}"));
                }
                else
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.NotFound));
                }
            }

            if (objBlog.Categoria.Url != categoria)
            {
                return(new RedirectResult($"/blogs/{objBlog.Categoria.Url}/{objBlog.Url}/posts/", true));
            }

            ViewBag.TotalRegistros = objBlog.Noticias.Count;

            //Get the list of blog autors
            var lstAutors = Autor.GetAllByBlogId(objBlog.Id).ToList();

            //Set the path in the images
            lstAutors.ForEach(a => a.Avatar = $"{Constants.UrlDominioEstaticoUploads}/{"autores"}/{a.Avatar}");

            var model = new BlogPostViewModel
            {
                Blog   = objBlog,
                Autors = lstAutors
            };

            var lstNoticiasHighlights = GetNoticiasByBlogHighlight(objBlog.CategoriaId, objBlog.Id);

            var noticias = objBlog.Noticias.Where(post => post.StatusId == Status.Publicada.Id)
                           .OrderByDescending(b => b.DataPublicacao)
                           .Skip((p - 1) * Constants.TakeNoticias)
                           .Take(Constants.TakeNoticias)
                           .ToList();


            if (p == 1)
            {
                model.NoticiasHighlights = lstNoticiasHighlights?.Select(Service.Models.Noticia.Map).ToList();
            }


            model.Blog.Noticias = noticias.Where(n => !lstNoticiasHighlights.Any(n2 => n2.Id == n.Id)).ToList();



            //Paginação
            ViewBag.PaginaAtual = p;

            var totalPaginas = Math.Ceiling(((double)ViewBag.TotalRegistros / Constants.TakeNoticias));

            if (Convert.ToInt32(totalPaginas) > 1)
            {
                ViewBag.Paginacao = Pagination.AddPagination(ViewBag.PaginaAtual, Convert.ToInt32(totalPaginas), 5, true);
            }

            //base model defaults
            model.Title        = $"Blog {objBlog.Titulo} - Massa News";
            model.Description  = $"{objBlog.Descricao} Confira o Blog {objBlog.Titulo}!";
            model.Robots       = "index, follow";
            model.Canonical    = $"{Constants.UrlWeb}/blogs/{categoria}/{blog}/posts";
            model.ImgOpenGraph = $"{Constants.UrlWeb}/content/images/avatar/blogs/{blog}.jpg";

            ViewBag.ActiveNav = objBlog.Titulo;

            // Página
            ViewBag.Pagina = "blog";

            // Editoria
            ViewBag.EditoriaUrl = "blogs";

            // Categoria
            ViewBag.Categoria = model.Blog.Categoria.Url;

            // Blog
            ViewBag.Blog = model.Blog.Url;

            return(View(model));
        }