EDBGS/EliteBGS/Report.cs
2024-04-12 13:48:55 +02:00

67 lines
1.9 KiB
C#

using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using EDPlayerJournal.BGS;
namespace EliteBGS;
public class SystemObjectives : INotifyPropertyChanged {
public event PropertyChangedEventHandler PropertyChanged;
private bool isenabled = true;
public bool IsEnabled {
get { return isenabled; }
set {
isenabled = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("IsEnabled"));
}
}
public bool IsExpanded { get; set; } = false;
public string SystemName { get; set; } = string.Empty;
public List<Objective> Objectives { get; set; } = new();
}
public class Report {
public List<SystemObjectives> SystemObjectives { get; set; } = new();
public Report() { }
public Report(List<Transaction> transactions) {
Populate(transactions);
}
public List<Objective> Objectives {
get {
return SystemObjectives
.Where(t => t.IsEnabled)
.SelectMany(x => x.Objectives)
.ToList()
;
}
}
private void Populate(List<Transaction> 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));
}
}
}