EDBGS/EDPlayerJournal/BGS/Transaction.cs

61 lines
2.0 KiB
C#

using EDPlayerJournal.Entries;
using System.ComponentModel.DataAnnotations.Schema;
namespace EDPlayerJournal.BGS;
public class Transaction : IComparable<Transaction> {
public List<Entry> Entries { get; } = new List<Entry>();
public virtual string CompletedAt {
get {
var items = Entries
.OrderBy(x => x.Timestamp)
.ToArray()
;
if (items == null || items.Length == 0) {
return "Unknown";
}
Entry last = items.Last();
return last.Timestamp.ToString("dd.MM.yyyy HH:mm UTC");
}
}
/// <summary>
/// Whether the transaction helps the entire system.
/// While all transactions are related to one faction, sometimes their
/// overall effect on the system as a whole is more important, than to
/// their faction. For example, rescuing refugees helps the Thargoid war
/// effort in the system as a whole, not just for the faction.
/// So this is true for transactions that help the system as a whole.
/// </summary>
public virtual bool SystemContribution { get; } = false;
/// <summary>
/// Returns true if this transaction was completed in legacy ED
/// </summary>
public bool IsLegacy { get; set; } = false;
/// <summary>
/// Controlling faction of the station this entry was made/turned into.
/// </summary>
public string? ControllingFaction { get; set; }
public string? Station { get; set; }
public string? System { get; set; }
public ulong SystemAddress { get; set; }
public string? Faction { get; set; }
/// <summary>
/// Whether this transaction type only benefits the controlling faction or not, default: no
/// </summary>
public virtual bool OnlyControllingFaction {
get { return false; }
}
public virtual int CompareTo(Transaction? other) {
throw new NotImplementedException("not implemented");
}
public string? Name => ToString();
}