public async Task <PagedResultDto <CategoriesListDto> > GetAllCategories(GetAllCategoriesInput input) { var filteredCategories = _categoryRepository.GetAll().AsNoTracking() .WhereIf(!string.IsNullOrWhiteSpace(input.Filter), e => e.Name.StringValue.ToLower().Contains(input.Filter.ToLower().Trim()) || !string.IsNullOrEmpty(e.Code) && e.Code.ToLower().Trim().Contains(input.Filter.ToLower().Trim())); var query = from category in filteredCategories join itemclass in _itemclassRepository.GetAll().AsNoTracking() on category.Id equals itemclass.Id into itemclasses from itemclass in itemclasses.DefaultIfEmpty() select new CategoriesListDto { Id = category.Id, Code = category.Code, Name = category.Name.CurrentCultureText, Description = category.Description.CurrentCultureText, ItemClassName = itemclass == null ? "" : itemclass.Name.CurrentCultureText, IsActive = category.IsActive }; var totalCount = await query.CountAsync(); var categories = await query.OrderBy(input.Sorting ?? "id desc").PageBy(input).ToListAsync(); return(new PagedResultDto <CategoriesListDto>(totalCount, categories)); }
public async Task <PagedResultDto <GetCategoryForViewDto> > GetAll(GetAllCategoriesInput input) { var filteredCategories = _categoryRepository.GetAll() .WhereIf(!string.IsNullOrWhiteSpace(input.Filter), e => false || e.Name.Contains(input.Filter) || e.Description.Contains(input.Filter)) .WhereIf(!string.IsNullOrWhiteSpace(input.NameFilter), e => e.Name == input.NameFilter) .WhereIf(!string.IsNullOrWhiteSpace(input.DescriptionFilter), e => e.Description == input.DescriptionFilter) .WhereIf(input.IsApprovedFilter > -1, e => (input.IsApprovedFilter == 1 && e.IsApproved) || (input.IsApprovedFilter == 0 && !e.IsApproved)) .WhereIf(input.IsActiveFilter > -1, e => (input.IsActiveFilter == 1 && e.IsActive) || (input.IsActiveFilter == 0 && !e.IsActive)); var pagedAndFilteredCategories = filteredCategories .OrderBy(input.Sorting ?? "id asc") .PageBy(input); var categories = from o in pagedAndFilteredCategories select new GetCategoryForViewDto() { Category = new CategoryDto { Name = o.Name, Description = o.Description, IsApproved = o.IsApproved, IsActive = o.IsActive, Id = o.Id } }; var totalCount = await filteredCategories.CountAsync(); return(new PagedResultDto <GetCategoryForViewDto>( totalCount, await categories.ToListAsync() )); }