Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
 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));
 }