using System; using Model; namespace StubLib { static class Extensions { internal static Task> GetItemsWithFilterAndOrdering(this IEnumerable collection, Func filter, int index, int count, string? orderingPropertyName = null, bool descending = false) { IEnumerable temp = collection; temp = temp.Where(item => filter(item)); if(orderingPropertyName != null) { var prop = typeof(T).GetProperty(orderingPropertyName!); if (prop != null) { temp = descending ? temp.OrderByDescending(item => prop.GetValue(item)) : temp.OrderBy(item => prop.GetValue(item)); } } return Task.FromResult>(temp.Skip(index*count).Take(count)); } internal static Task GetNbItemsWithFilter(this IEnumerable collection, Func filter) { return Task.FromResult(collection.Count(item => filter(item))); } internal static Task AddItem(this IList collection, T? item) { if(item == null || collection.Contains(item)) { return Task.FromResult(default(T)); } collection.Add(item); return Task.FromResult(item); } internal static Task DeleteItem(this IList collection, T? item) { if(item == null) { return Task.FromResult(false); } bool result = collection.Remove(item!); return Task.FromResult(result); } internal static Task UpdateItem(this IList collection, T? oldItem, T? newItem) { if(oldItem == null || newItem == null) return Task.FromResult(default(T)); if(!collection.Contains(oldItem)) { return Task.FromResult(default(T)); } collection.Remove(oldItem!); collection.Add(newItem!); return Task.FromResult(newItem); } } }