using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace EFLol.DBDataManager { static class ExtensionsDataManager { 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); } } }