public async Task <BasePageList <ArticleCategoryResult> > GetAsync(ArticleCategoryFilter filter) { var categoryPageList = await _articleCategoryRepository.GetAsync(filter); var createdByIds = categoryPageList.Collections.Select(x => x.CreatedById).ToArray(); var updatedByIds = categoryPageList.Collections.Select(x => x.UpdatedById).ToArray(); var createdByUsers = await _userRepository.GetNameByIdsAsync(createdByIds); var updatedByUsers = await _userRepository.GetNameByIdsAsync(updatedByIds); foreach (var category in categoryPageList.Collections) { var createdBy = createdByUsers.FirstOrDefault(x => x.Id == category.CreatedById); category.CreatedBy = createdBy.DisplayName; var updatedBy = updatedByUsers.FirstOrDefault(x => x.Id == category.CreatedById); category.UpdatedBy = updatedBy.DisplayName; } return(categoryPageList); }
public async Task <BasePageList <ArticleCategoryResult> > GetAsync(ArticleCategoryFilter filter) { var search = filter.Keyword != null?filter.Keyword.ToLower() : ""; var categoryQuery = _articleCategoryRepository.Get(x => filter.CanGetInactived || x.StatusId != _inactivedStatus); if (!string.IsNullOrEmpty(search)) { categoryQuery = categoryQuery.Where(user => user.Name.ToLower().Contains(search) || user.Description.ToLower().Contains(search)); } if (filter.StatusId.HasValue) { categoryQuery = categoryQuery.Where(x => x.StatusId == filter.StatusId); } if (filter.CreatedById.HasValue) { categoryQuery = categoryQuery.Where(x => x.CreatedById == filter.CreatedById); } if (filter.UpdatedById.HasValue) { categoryQuery = categoryQuery.Where(x => x.UpdatedById == filter.UpdatedById); } // Filter by register date/ created date if (filter.CreatedDateFrom.HasValue && filter.CreatedDateTo.HasValue) { categoryQuery = categoryQuery.Where(x => x.CreatedDate >= filter.CreatedDateFrom && x.CreatedDate <= filter.CreatedDateTo); } else if (filter.CreatedDateTo.HasValue) { categoryQuery = categoryQuery.Where(x => x.CreatedDate <= filter.CreatedDateTo); } else if (filter.CreatedDateFrom.HasValue) { categoryQuery = categoryQuery.Where(x => x.CreatedDate >= filter.CreatedDateFrom && x.CreatedDate <= DateTime.UtcNow); } var query = categoryQuery.Select(a => new ArticleCategoryResult { CreatedById = a.CreatedById, CreatedDate = a.CreatedDate, Description = a.Description, Id = a.Id, Name = a.Name, ParentId = a.ParentId, UpdatedById = a.UpdatedById, UpdatedDate = a.UpdatedDate, StatusId = a.StatusId }); var filteredNumber = query.Select(x => x.Id).Count(); var categories = await query.Skip(filter.PageSize *(filter.Page - 1)) .Take(filter.PageSize).ToListAsync(); var result = new BasePageList <ArticleCategoryResult>(categories) { TotalResult = filteredNumber, TotalPage = (int)Math.Ceiling((double)filteredNumber / filter.PageSize) }; return(result); }