using System.Collections.Generic; using System.Linq; using EDPlayerJournal.BGS; namespace EliteBGS; public class SystemObjectives { public bool IsEnabled { get; set; } = true; public bool IsExpanded { get; set; } = false; public string SystemName { get; set; } = string.Empty; public List Objectives { get; set; } = new(); } public class Report { public List SystemObjectives { get; set; } = new(); public Report() { } public Report(List transactions) { Populate(transactions); } public List Objectives { get { return SystemObjectives .Where(t => t.IsEnabled) .SelectMany(x => x.Objectives) .ToList() ; } } private void Populate(List transactions) { if (transactions == null || transactions.Count == 0) { return; } foreach (Transaction t in transactions) { var o = SystemObjectives.Find(x => string.Compare(x.SystemName, t.System) == 0); if (o == null) { o = new SystemObjectives() { SystemName = t.System }; SystemObjectives.Add(o); } var objective = o.Objectives.Find(x => x.Matches(t.System, t.Faction)); if (objective == null) { objective = new Objective() { Faction = t.Faction, System = t.System }; o.Objectives.Add(objective); } objective.UITransactions.Add(new UITransaction(t)); } } }