public async Task <IActionResult> GetPagging([FromQuery] GetBlogPaggingRequest request) { var result = await _blogService.GetAll(request); if (result.IsSuccessed == false) { return(BadRequest(result)); } return(Ok(result)); }
public async Task <ApiResult <PageViewModel <BlogViewModel> > > GetAll(GetBlogPaggingRequest request) { var query = from p in _context.Blogs join us in _context.Users on p.UserId equals us.Id join c in _context.CategoryTranslations on p.CategoryId equals c.CategoryId select new { p, us, c }; //filter if (!String.IsNullOrEmpty(request.Keyword)) { query = query.Where(x => x.p.Title.Contains(request.Keyword)); } //filter if (!String.IsNullOrEmpty(request.CategoryUrl)) { query = query.Where(x => x.c.CategoryUrl.Equals(request.CategoryUrl)); } int totalRow = await query.CountAsync(); //Pagging if (request.PageIndex == 0 || request.PageSize == 0) { var data = await query .Select(x => new BlogViewModel() { Id = x.p.Id, Content = x.p.Content, Created_At = x.p.Created_At, Title = x.p.Title, LikeCount = x.p.LikeCount, ImagePath = x.p.ImagePath, UserName = x.us.UserName, CategoryName = x.c.Name, }).ToListAsync(); var pageViewModel = new PageViewModel <BlogViewModel>() { TotalRecords = totalRow, Items = data, PageSize = request.PageSize, PageIndex = request.PageIndex }; return(new ApiResultSuccess <PageViewModel <BlogViewModel> >(pageViewModel)); } else { var data = await query.Skip((request.PageIndex - 1) *request.PageSize).Take(request.PageSize) .Select(x => new BlogViewModel() { Id = x.p.Id, Content = x.p.Content, Created_At = x.p.Created_At, Title = x.p.Title, LikeCount = x.p.LikeCount, ImagePath = x.p.ImagePath, UserName = x.us.UserName, CategoryName = x.c.Name, }).ToListAsync(); var pageViewModel = new PageViewModel <BlogViewModel>() { TotalRecords = totalRow, Items = data, PageSize = request.PageSize, PageIndex = request.PageIndex }; return(new ApiResultSuccess <PageViewModel <BlogViewModel> >(pageViewModel)); } }