public CountdownDisplayItemViewModel(ScheduleItem scheduleItem)
 {
     Schedule = scheduleItem.Schedule;
 }
 public DepartureBoardItemViewModel(ScheduleItem scheduleItem)
 {
     Schedule = scheduleItem.Schedule;
 }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
 protected bool IsTrackChanged(ScheduleItem scheduleItem)
 {
     return(scheduleItem.LiveSchedule != null && scheduleItem.LiveSchedule.LiveTrack != null && scheduleItem.Schedule.Track != scheduleItem.LiveSchedule.LiveTrack);
 }
Esempio n. 5
0
 protected string GetTrainNumber(ScheduleItem scheduleItem)
 {
     return(GetTrainNumber(scheduleItem.Schedule));
 }