public CountdownDisplayItemViewModel(ScheduleItem scheduleItem) { Schedule = scheduleItem.Schedule; }
public DepartureBoardItemViewModel(ScheduleItem scheduleItem) { Schedule = scheduleItem.Schedule; }
protected string GetViaString(ScheduleItem scheduleItem, double fontSize, double maxSpace) { var schedulesResult = m_CalculationBll.GetSchedulesByTime(scheduleItem.Schedule.Train.Schedules, scheduleItem.Schedule.Station.ESTW.Time); if (!schedulesResult.Succeeded) { return(string.Empty); } var schedules = schedulesResult.Result; var scheduleIndex = schedules.IndexOf(scheduleItem.Schedule); var nextSchedules = schedules.Skip(scheduleIndex + 1); var candidateSchedules = nextSchedules.Where(x => x.Handling == eHandling.StopPassengerTrain); var viaSchedules = new List <Schedule>(); var currentViaString = string.Empty; var result = string.Empty; if (scheduleItem.LiveSchedule != null && !scheduleItem.LiveSchedule.IsCancelled) { var destinationSchedule = GetDifferingDestinationSchedule(scheduleItem); if (destinationSchedule == null || destinationSchedule.Station.ShortSymbol != scheduleItem.Schedule.Station.ShortSymbol || destinationSchedule.Time != scheduleItem.Schedule.Time) { // Remove all cancelled stations candidateSchedules = candidateSchedules.Where(s => { var liveSchedule = scheduleItem.LiveSchedule.Train.Schedules.FirstOrDefault(s2 => s.Station.ShortSymbol == s2.Schedule.Station.ShortSymbol && s.Time == s2.Schedule.Time); if (liveSchedule == null) { return(true); } return(!liveSchedule.IsCancelled); }); // Remove destination station if (scheduleItem.LiveSchedule.Train.IsDestinationStationCancelled) { candidateSchedules = candidateSchedules.Where(s => s.Station.ShortSymbol != destinationSchedule.Station.ShortSymbol && s.Time != destinationSchedule.Time); } } } var orderedSchedules = candidateSchedules.OrderByDescending(s => s.Station.Tracks.Count(t => t.IsPlatform)).ThenBy(x => x.Time); foreach (var schedule in orderedSchedules) { string candidate; if (currentViaString.IsNullOrEmpty()) { candidate = GetDisplayName(schedule.Station); } else { candidate = $"{currentViaString} - {GetDisplayName(schedule.Station)}"; } if (MeasureString(candidate, fontSize) > maxSpace) { continue; } currentViaString = candidate; viaSchedules.Add(schedule); } foreach (var schedule in viaSchedules.OrderBy(s => s.Time)) { if (result.IsNullOrEmpty()) { result += GetDisplayName(schedule.Station); } else { result += $" - {GetDisplayName(schedule.Station)}"; } } return(result); }
protected bool IsTrackChanged(ScheduleItem scheduleItem) { return(scheduleItem.LiveSchedule != null && scheduleItem.LiveSchedule.LiveTrack != null && scheduleItem.Schedule.Track != scheduleItem.LiveSchedule.LiveTrack); }
protected string GetTrainNumber(ScheduleItem scheduleItem) { return(GetTrainNumber(scheduleItem.Schedule)); }