mirror of
https://github.com/Theodor-Springmann-Stiftung/hamann-ausgabe-core.git
synced 2025-10-29 09:15:33 +00:00
51 lines
1.7 KiB
C#
51 lines
1.7 KiB
C#
namespace HaWeb.Models;
|
|
using HaWeb.XMLParser;
|
|
|
|
public class ItemsCollection {
|
|
public string Name { get; private set; }
|
|
public IDictionary<string, CollectedItem> Items { get; private set; }
|
|
public IXMLCollection Collection { get; private set; }
|
|
|
|
public IDictionary<string, ILookup<string, CollectedItem>>? Groupings { get; private set; }
|
|
public IDictionary<string, IEnumerable<CollectedItem>>? Sortings { get; private set; }
|
|
|
|
public ItemsCollection(
|
|
string name,
|
|
IXMLCollection collection
|
|
) {
|
|
this.Name = name;
|
|
this.Collection = collection;
|
|
this.Items = new Dictionary<string, CollectedItem>();
|
|
}
|
|
|
|
public void GenerateGroupings(
|
|
Func<IEnumerable<CollectedItem>, Dictionary<string, ILookup<string, CollectedItem>>?>? groupingsFunc = null
|
|
) {
|
|
if (groupingsFunc != null) {
|
|
this.Groupings = groupingsFunc(this.Items.Values.ToList());
|
|
return;
|
|
}
|
|
if (Collection.GroupingsGeneration != null && this.Items.Any())
|
|
this.Groupings = Collection.GroupingsGeneration(this.Items.Values.ToList());
|
|
}
|
|
|
|
public void GenerateSortings(
|
|
Func<IEnumerable<CollectedItem>, Dictionary<string, IEnumerable<CollectedItem>>?>? sortingsFunc = null
|
|
) {
|
|
if (sortingsFunc != null) {
|
|
this.Sortings = sortingsFunc(this.Items.Values.ToList());
|
|
return;
|
|
}
|
|
if (Collection.SortingsGeneration != null && this.Items.Any())
|
|
this.Sortings = Collection.SortingsGeneration(this.Items.Values.ToList());
|
|
}
|
|
|
|
public CollectedItem? this[string v] {
|
|
get {
|
|
if (Items != null && Items.ContainsKey(v))
|
|
return Items[v];
|
|
return null;
|
|
}
|
|
}
|
|
}
|