static List <StopChange> MapStops(List <Stop> tripStops, int startStopIndex, int destStopIndex) { var count = (destStopIndex - startStopIndex) + 1; var rangedSublist = tripStops.GetRange(startStopIndex, count); var stopSequence = 0; var stopChangeList = rangedSublist.Select(x => { var stopChange = new StopChange { Name = x.Name, RouteId = x.RouteId, TripId = x.TripId, StopId = x.StopId, StopLat = x.StopLat, StopLon = x.StopLon, StopSequence = stopSequence, MainTrip = x.MainTrip, OnDemand = x.OnDemand }; stopSequence++; return(stopChange); }).ToList(); return(stopChangeList); }
public async Task <StopChange> GetOneDelay(StopChange stopChange) { var data = await GetData(stopChange.StopId); var delay = data.Delays.FirstOrDefault( x => x.RouteId == stopChange.RouteId && x.TripId == stopChange.TripId && x.TheoreticalTime.Hour == stopChange.ArrivalTime.Hour && x.TheoreticalTime.Minute == stopChange.ArrivalTime.Minute); if (delay != null && delay.EstimatedTime > DateTime.MinValue) { stopChange.EstimatedTime = delay.EstimatedTime; } else { stopChange.EstimatedTime = stopChange.ArrivalTime; } return(stopChange); }
async Task <StopChange> DoAsync(StopChange stop) { return(await _hubService.GetData <StopChange, StopChange>(HubNames.GET_ONE_DELAY, stop)); }
public async Task <Change> GetChangeWithTime(Change change, DateTime desiredTime, bool departure, bool before) { var changeToReturn = new Change { BusLineName = change.BusLineName, RouteId = change.RouteId, ChangeNo = change.ChangeNo, FirstStop = new StopChange(), LastStop = new StopChange(), StopChangeList = new List <StopChange>() }; var timeTableData = _documentStoreRepository.GetTimeTableDataByRouteIdAndDayOfWeek(change.RouteId, desiredTime.DayOfWeek); if (timeTableData == null) { return(changeToReturn); } var(startingStopTime, stopTimeIndex) = GetStartingStopTime(before, departure, timeTableData.StopTimes, desiredTime, change.StopChangeList); if (stopTimeIndex < 0) { return(changeToReturn); } var stopTimeList = timeTableData.StopTimes.GetRange(stopTimeIndex, change.StopChangeList.Count); for (var i = 0; i < change.StopChangeList.Count; i++) { var stopChange = change.StopChangeList[i]; var stopTime = stopTimeList[i]; var stopChangeToAdd = new StopChange { Name = stopChange.Name, RouteId = stopChange.RouteId, TripId = stopTime.TripId, StopId = stopChange.StopId, StopLat = stopChange.StopLat, StopLon = stopChange.StopLon, ArrivalTime = stopTime.ArrivalTime, DepartureTime = stopTime.DepartureTime, StopSequence = stopChange.StopSequence, MainTrip = stopChange.MainTrip, OnDemand = stopChange.OnDemand }; var delayModel = await _delayService.GetOneDelay(stopChangeToAdd); if (delayModel != null) { stopChangeToAdd.EstimatedTime = delayModel.EstimatedTime; } changeToReturn.StopChangeList.Add(stopChangeToAdd); } changeToReturn.TripId = startingStopTime.TripId; changeToReturn.FirstStop = changeToReturn.StopChangeList.First(); changeToReturn.LastStop = changeToReturn.StopChangeList.Last(); changeToReturn.TimeOfTravel = changeToReturn.LastStop.ArrivalTime - changeToReturn.FirstStop.DepartureTime; return(changeToReturn); }
public async Task <StopChange> GetOneDelay(StopChange stopChange) { return(await DelayService.GetOneDelay(stopChange)); }