private static FavoriteStopViewModel ToViewModel(FavoriteStop favorite, BusStaticData staticData,
ClientBusSchedule schedule, DateTimeOffset currentTime)
{
var routeSchedules = schedule[favorite.Id]
.Where(rs => rs.Value.Any())
.OrderBy(rs => rs.Value.Aggregate(ARRIVAL_TIME_SEED, BusArrivalTime.Min))
.Take(2)
.ToList();
var firstRoute = routeSchedules.Count > 0 ? staticData.Routes[routeSchedules[0].Key] : null;
var secondRoute = routeSchedules.Count > 1 ? staticData.Routes[routeSchedules[1].Key] : null;
return new FavoriteStopViewModel
{
StopId = favorite.Id,
StopName = favorite.Name,
FirstRouteName = firstRoute != null ? firstRoute.RouteNo : string.Empty,
FirstRouteColor = firstRoute != null ? firstRoute.Color : string.Empty,
FirstRouteArrivals = routeSchedules.Count > 0 ? RouteArrivalsSummary.ToEstimateSummary(routeSchedules[0].Value, currentTime) : "No arrivals!",
SecondRouteName = secondRoute != null ? secondRoute.RouteNo : string.Empty,
SecondRouteColor = secondRoute != null ? secondRoute.Color : string.Empty,
SecondRouteArrivals = routeSchedules.Count > 1 ? RouteArrivalsSummary.ToEstimateSummary(routeSchedules[1].Value, currentTime) : string.Empty,
DistanceFromUser = double.IsNaN(favorite.DistanceFromUser) ? "" : $"{favorite.DistanceFromUser:F1} miles",
IsNearestStop = favorite.IsNearestStop
};
}