/// <summary> /// Change the times of this <see cref="TrainLocationTime" /> by reflecting them over another time. In other words, if beforehand the train arrives ten minutes before and departs five /// minutes before the reflection time, then afterwards, the train will arrive five minutes after and depart ten minutes after the reflection time. /// </summary> /// <param name="aroundTime">The time to reflect about.</param> /// <param name="alwaysSwap">If this parameter is false (the default), if the object only has a <see cref="DepartureTime" />, the reflected time will still be the /// <see cref="DepartureTime" />. If it is true, then if the object only has a <see cref="DepartureTime" /> it will become the <see cref="ArrivalTime" />.</param> public void Reflect(TimeOfDay aroundTime, bool alwaysSwap = false) { TrainTime newArrivalTime = DepartureTime?.CopyAndReflect(aroundTime); TrainTime newDepartureTime = ArrivalTime?.CopyAndReflect(aroundTime); if (newDepartureTime?.Time == null && newArrivalTime?.Time != null && !alwaysSwap) { DepartureTime = newArrivalTime; ArrivalTime = newDepartureTime; } else { DepartureTime = newDepartureTime; ArrivalTime = newArrivalTime; } }
/// <summary> /// Default constructor. /// </summary> public TrainLocationTime() { ArrivalTime = new TrainTime(); DepartureTime = new TrainTime(); }
private TrainLocationTimeModel UpdateTrainLocationTimeModel(ref TrainLocationTimeModel model, TrainTime time, string idSuffix) { if (time == null || FormattingStrings == null || Location == null) { return(null); } if (model == null) { model = new TrainLocationTimeModel { LocationId = Location.Id, LocationKey = Location.Id + idSuffix, EntryType = TrainLocationTimeEntryType.Time, }; } model.IsPassingTime = Pass; model.Populate(time, FormattingStrings); return(model); }