[#34] Billing: Collapse data more compactly
This commit is contained in:
@ -287,27 +287,41 @@ namespace Elwig.Helpers.Billing {
|
||||
|
||||
var attributes = data
|
||||
.Select(e => e.Key)
|
||||
.Where(k => !k.StartsWith('/') && k.Contains('/'))
|
||||
.Where(k => k.Length > 3 && k.Contains('/'))
|
||||
.Select(k => k.Split('/')[1])
|
||||
.Distinct()
|
||||
.ToList();
|
||||
foreach (var idx in attributes) {
|
||||
var len = vaributes.Count(e => e.AttrId == idx);
|
||||
var len = vaributes.Count(e => $"{e.AttrId}{(e.CultId != null && e.CultId != "" ? "-" : "")}{e.CultId}" == idx);
|
||||
foreach (var (v, ks) in rev1) {
|
||||
var myKs = ks.Where(k => k.EndsWith($"/{idx}")).ToList();
|
||||
if (myKs.Count > 1 && ((myKs.Count >= len * 0.5 && useDefault) || myKs.Count == len)) {
|
||||
foreach (var k in myKs) data.Remove(k);
|
||||
data[(idx.StartsWith('-') ? "" : "/") + idx] = v;
|
||||
data[(idx.StartsWith('-') && !useDefault ? "" : "/") + idx] = v;
|
||||
}
|
||||
}
|
||||
foreach (var (v, ks) in rev2) {
|
||||
var myKs = ks.Where(k => k.EndsWith($"/{idx}")).ToList();
|
||||
if (myKs.Count > 1 && ((myKs.Count >= len * 0.5 && useDefault) || myKs.Count == len)) {
|
||||
foreach (var k in myKs) data.Remove(k);
|
||||
data[(idx.StartsWith('-') ? "" : "/") + idx] = v;
|
||||
data[(idx.StartsWith('-') && !useDefault ? "" : "/") + idx] = v;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!useDefault)
|
||||
return;
|
||||
|
||||
var keys = data.Select(p => p.Key).ToList();
|
||||
foreach (var k in keys) {
|
||||
if (k.Length == 3 && k.EndsWith('/') && !keys.Contains(k[..2])) {
|
||||
data.Remove(k, out var val);
|
||||
data.Add(k[..2], val);
|
||||
} else if (k.Contains("/-")) {
|
||||
data.Remove(k, out var val);
|
||||
data.Add(k.Replace("/-", "-"), val);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static JsonObject FromGraphEntries(
|
||||
|
Reference in New Issue
Block a user