using Diligent.WebAPI.Contracts.DTOs.Files; namespace Diligent.WebAPI.Business.Extensions { [ExcludeFromCodeCoverage] public static class FileExtensions { public static IQueryable FilterByExtension(this IQueryable query, string[]? values) { if (values == null || values.Length == 0) return query; return query.Where(n => values.Contains(n.Extension)); } public static IQueryable FilterByCategory(this IQueryable query, string[]? values) { if (values == null || values.Length == 0) return query; return query.Where(n => values.Contains(n.Category.Name)); } public static IQueryable FilterByTags(this IQueryable query, string[]? values) { if (values == null || values.Length == 0) return query; //return query.Where(n => values.Any(x => n.Tags.Any(y => y.Name == x))); return query.Where(n => n.Tags.Any(x => values.Contains(x.Name))); } public static IQueryable FilterFiles(this IQueryable query, FileFilter filters) { return query .FilterByCategory(filters.Categories) .FilterByExtension(filters.Extensions) .FilterByTags(filters.Tags); } } }