public static void Main()
Workflow workflow = new Workflow();
string workflowCode = workflow.Name switch
string confirmed when confirmed.
TripEventXid.StartConfirmed,
string reschedulePickupAppointment when reschedulePickupAppointment.
TripEventXid.RescheludePickupAppointment,
string rescheduleDeliveryAppointment when rescheduleDeliveryAppointment.
TripEventXid.RescheduledDeliveryAppointment,
string failedDelivery when failedDelivery.
TripEventXid.FailedDelivery,
string deliveryCompleted when deliveryCompleted.
Contains("D1") && workflow.Value.Equals("yes", StringComparison.InvariantCultureIgnoreCase) =>
TripEventXid.DeliveryCompleted,
string deliveryException when deliveryException.
Contains("D3") && workflow.Value.Equals("yes", StringComparison.InvariantCultureIgnoreCase) =>
TripEventXid.DeliveryException,
_ => throw new ArgumentOutOfRangeException()
Console.WriteLine(workflowCode);
public string Name {get;set;} = string.Empty;
public string Value {get;set;} = string.Empty;
public abstract class TripEventXid
public const string StartConfirmed = "CONFIRMED";
public const string PickupArrived = "X3";
public const string StartLoading = "L1";
public const string PickupDone = "AF";
public const string ETA = "AG";
public const string DeliveryArrived = "X1";
public const string StartUnloading = "AH";
public const string DeliveryException = "AP";
public const string FailedDelivery = "A7";
public const string DeliveryCompleted = "D1";
public const string Departing = "CD";
public const string End = "X5";
public const string RescheludePickupAppointment = "AA_RS";
public const string RescheduledDeliveryAppointment = "AB_RS";