using System.Text;
using EDJournal;

namespace EliteBGS.BGS {
    public class MissionFailed : LogEntry {
        public MissionFailedEntry Failed { get; set; }
        public MissionAcceptedEntry Accepted { get; set; }

        public MissionFailed(MissionAcceptedEntry accepted) {
            Accepted = accepted;
            Faction = accepted.Faction;
        }

        public override int CompareTo(LogEntry other) {
            if (other.GetType() != typeof(MissionFailed)) {
                return -1;
            }

            MissionFailed failed = other as MissionFailed;

            /* if it is the same mission name, the same faction and the same system,
             * collate mission failures together */
            if (failed.Failed.HumanReadableName == Failed.HumanReadableName &&
                failed.Faction == Faction &&
                failed.System == System) {
                return 0;
            }

            return -1;
        }

        // +1 since the other entries are just copies of the one we have in our properties
        public int Amount => Entries.Count + 1;

        public override string ToString() {
            StringBuilder builder = new StringBuilder();

            if (Failed == null || Accepted == null) {
                return "";
            }

            builder.AppendFormat("{0}x Mission failed: \"{1}\"",
                Amount,
                Failed.HumanReadableName != null ? Failed.HumanReadableName : Failed.Name
                );

            return builder.ToString();
        }
    }
}