static Expression <Func <Publisher, bool> > GetFilterCondition(PublisherMaintenanceFilterCondition condition) { return(condition switch { PublisherMaintenanceFilterCondition.NoFilter => p => true, PublisherMaintenanceFilterCondition.NoDescription => p => string.IsNullOrEmpty(p.Description), PublisherMaintenanceFilterCondition.NoBooks => p => p.Books.Count == 0, PublisherMaintenanceFilterCondition.NoLogoPicture => p => p.LogoPath.Contains("placeholder"), _ => throw new ArgumentOutOfRangeException(nameof(condition), "Invalid filter condition!") });
public async Task <IEnumerable <LookupItem> > GetPublisherLookupAsync(string viewModelName, PublisherMaintenanceFilterCondition publisherMaintenanceFilterCondition = PublisherMaintenanceFilterCondition.NoFilter) { var filter = GetFilterCondition(publisherMaintenanceFilterCondition); await using var ctx = _contextCreator(); return(await ctx.Publishers .AsNoTracking() .Where(filter) .OrderBy(p => p.Name) .Select(p => new LookupItem { Id = p.Id, DisplayMember = p.Name, Picture = GetPictureThumbnail(p.LogoPath) ?? _placeholderPic, ViewModelName = viewModelName, InfoText = $"Books: {p.Books.Count}", }) .ToListAsync());