public void PopulationStationTimeTable(double startTimeDiff) { trainStartTimeDiff = startTimeDiff; this.PopulateViewModel(); for (int i = 0; i < tempCollection.Count; i++) { DummyStation dummyStation = tempCollection[i]; StationInfoCollection.Add(CreateStationInfo(dummyStation.Name, dummyStation.ToArrival, dummyStation.ToDistance, dummyStation.FromArrival, i, dummyStation.FromDistance)); } }
private async void CalcuateProgressedPercentage(DateTime upcomingStationDepaturedTime, Station station, int index) { station.ProgressedDistance = 0; DateTime lastStationDepaturedTime = previousStationDepaturedTime; while (station.ProgressedDistance < 100) { var actualDurationDifference = upcomingStationDepaturedTime.Subtract(lastStationDepaturedTime).TotalMinutes; var currentDurationDifference = DateTime.Now.Subtract(lastStationDepaturedTime).TotalMinutes; var timeDifference = DateTime.Now.Subtract(station.ArrivalDateTime).TotalSeconds; station.ProgressedDistance = (currentDurationDifference / actualDurationDifference) * 100; if (StationInfoCollection.Count > index && StationInfoCollection[index].ProgressedDistance < station.ProgressedDistance) { StationInfoCollection[index].ProgressedDistance = station.ProgressedDistance; } DateTime diffStationTime; DateTime.TryParse("0:00:00 AM", CultureInfo.InvariantCulture.DateTimeFormat, DateTimeStyles.None, out diffStationTime); diffStationTime = diffStationTime.AddSeconds((-timeDifference)); NextStationTime = ", in "; if (diffStationTime.Minute > 0) { NextStationTime += diffStationTime.Minute.ToString() + " Minute(s)"; } else { NextStationTime += diffStationTime.Second.ToString() + " Second(s)"; } await Task.Delay(1000); } for (int i = 0; i < tempCollection.Count; i++) { DummyStation s = tempCollection[i]; Station tempStation = CreateStationInfo(s.Name, s.ToArrival, s.ToDistance, s.FromArrival, i, s.FromDistance); Station currentStation = StationInfoCollection[i]; if (currentStation.ProgressedDistance != tempStation.ProgressedDistance) { StationInfoCollection[i].ProgressedDistance = tempStation.ProgressedDistance; } if (currentStation.Status != tempStation.Status) { StationInfoCollection[i].Status = tempStation.Status; } } }