public async Task <IActionResult> Home(int?PageIndex) { BlogPostsIndex viewModelIndex = await GetBlogPostsPaginated(false, PageIndex, null); viewModelIndex.ShowNavbarPagination = false; // Oculto la navegacion de la paginacion return(View(viewModelIndex)); }
public async Task <IActionResult> GetPartialView_SectionPostPaginated(bool RegisterPostVisit, bool ShowNavbarPagination, int?PageIndex, int?TotalItems, string Query = null) { try { BlogPostsIndex viewModelIndex = await GetBlogPostsPaginated(RegisterPostVisit, PageIndex, TotalItems, Query); viewModelIndex.ShowNavbarPagination = ShowNavbarPagination; var viewHtmlPaginationPosts = viewModelIndex.BlogPosts.Count > 0 ? _viewRenderService.RenderToStringAsync("_PaginationBlogPosts", viewModelIndex).Result : ""; var viewHtmlPost = RegisterPostVisit ? _viewRenderService.RenderToStringAsync("_BlogPost", viewModelIndex.LastBlogPost).Result : ""; int totalPostnumber = await GetTotalPostNumber(); return(new JsonResult(new { Response = "true", ViewPaginationPosts = viewHtmlPaginationPosts, ViewPostActive = viewHtmlPost, TotalPostnumber = totalPostnumber })); } catch (Exception ex) { return(new JsonResult(new { Response = "false", Error = ex.Message })); } }
private async Task <BlogPostsIndex> GetBlogPostsPaginated(bool RegisterPostVisit, int?PageIndex, int?TotalItems, string Query = null) { PageIndex = PageIndex == 0 ? 1 : PageIndex; if (TotalItems > 0) { PageIndex = (TotalItems / NUMBER_OF_ITEMS_PER_REQUEST) + 1; } BlogPostsIndex viewModelIndex = new BlogPostsIndex(); IQueryable <BlogPost> blogPosts = null; if (Query == null) { blogPosts = _context.Posts .Include(x => x.BlogPostComments) .Include(x => x.BlogPostVisits) .OrderByDescending(x => x.DateCreated) .AsNoTracking(); } else { var words = Query.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); blogPosts = _context.Posts .Include(x => x.BlogPostComments) .Include(x => x.BlogPostVisits) .OrderByDescending(x => x.DateCreated) .WhereAll_AND(words.Select(w => (Expression <Func <BlogPost, bool> >)(x => EF.Functions.Like(x.Title + x.Fullname + x.Specialty_customized, "%" + w + "%"))).ToArray()) .AsNoTracking(); } viewModelIndex.BlogPosts = await PaginatedList <BlogPost> .CreateAsync(blogPosts, PageIndex ?? 1, NUMBER_OF_ITEMS_PER_REQUEST); viewModelIndex.LastBlogPost = viewModelIndex.BlogPosts.Count > 0 ? viewModelIndex.BlogPosts.First() : new BlogPost(); if (RegisterPostVisit) { // Registro la visita del Post this.RegisterPostVisit(viewModelIndex.LastBlogPost.Id); } return(viewModelIndex); }
// GET: BlogPosts public async Task <IActionResult> Index(int?PageIndex) { BlogPostsIndex viewModelIndex = await GetBlogPostsPaginated(true, PageIndex, null); return(View(viewModelIndex)); }