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);
        }
Esempio n. 2
0
        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);
        }