using System.Collections.Generic;
public static void Main()
var stops = new List<TransportPlanStopStatus>
TransportPlanStopStatus.Completed,
TransportPlanStopStatus.Completed,
TransportPlanStopStatus.Completed,
TransportPlanStopStatus.Enroute
TransportPlanStopStatus aggregatedStatus = stops.Aggregate(TransportPlanStopStatus.UNKNOWN, (x, y) => x | y);
Console.WriteLine((int)(aggregatedStatus));
Console.WriteLine(aggregatedStatus.HasFlag(TransportPlanStopStatus.Started | TransportPlanStopStatus.Enroute | TransportPlanStopStatus.Arrived));
var liveStatus = aggregatedStatus.HasFlag(TransportPlanStopStatus.Failed)
? aggregatedStatus.HasFlag(TransportPlanStopStatus.Started | TransportPlanStopStatus.Enroute | TransportPlanStopStatus.Arrived)
? LiveJourneyStatus.InProgressWithFailures
: LiveJourneyStatus.CompletedWithFailures
: aggregatedStatus.HasFlag(TransportPlanStopStatus.Started | TransportPlanStopStatus.Enroute | TransportPlanStopStatus.Arrived)
? LiveJourneyStatus.InProgress
: aggregatedStatus == (TransportPlanStopStatus.Completed | TransportPlanStopStatus.UNKNOWN)
? LiveJourneyStatus.Completed
: LiveJourneyStatus.NotStarted;
Console.WriteLine($"The live journey status is: {liveStatus}");
public enum TransportPlanStopStatus
public enum LiveJourneyStatus