EDBGS/EliteBGS/Report.cs

67 lines
1.9 KiB
C#
Raw Normal View History

2022-11-24 19:38:19 +01:00
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
2022-11-24 19:38:19 +01:00
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();
}
2022-11-24 19:38:19 +01:00
public class Report {
public List<SystemObjectives> SystemObjectives { get; set; } = new();
2022-11-24 19:38:19 +01:00
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()
;
}
}
2022-11-24 19:38:19 +01:00
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);
2022-11-24 19:38:19 +01:00
if (o == null) {
o = new SystemObjectives() { SystemName = t.System };
SystemObjectives.Add(o);
2022-11-24 19:38:19 +01:00
}
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));
2022-11-24 19:38:19 +01:00
}
}
}