/// <summary> /// This method is to formate the realtime data to required format. /// </summary> /// <param name="tripData"></param> /// <param name="vehiclePositionData"></param> /// <returns></returns> private List <TripsFlattenedModel> FormatTripData(List <FeedEntity> tripData, List <FeedEntity> vehiclePositionData) { List <TripsFlattenedModel> trips = new List <TripsFlattenedModel>(); List <Stops> stopsData = dbContext.Stops.ToList(); foreach (FeedEntity trip in tripData) { VehicleFlattenedModel vehicle = (from vpd in vehiclePositionData.Where(v => v.vehicle.trip.trip_id == trip.trip_update.trip.trip_id) select new VehicleFlattenedModel { BusLatitude = vpd.vehicle.position.latitude, BusLongitude = vpd.vehicle.position.longitude, BusNumber = vpd.vehicle.vehicle.id, CurrentStopSequence = (int)vpd.vehicle.current_stop_sequence }).FirstOrDefault(); List <StopsFlattenedModel> stops = (from t in trip.trip_update.stop_time_update from s in stopsData where t.stop_id.Equals(s.stop_code.ToString()) select new StopsFlattenedModel { StopArrivalTime = t.arrival != null ? FormatTimeStamp(t.arrival.time) : "", ArrivalDelay = t.arrival.delay, StopDepartureTime = t.departure != null ? FormatTimeStamp(t.departure.time) : "", DepartureDelay = t.departure.delay, StopId = Convert.ToInt32(t.stop_id), StopSequence = (int)t.stop_sequence, StopName = s.stop_name, StopLatitude = s.stop_lat, StopLongitude = s.stop_lon }).OrderBy(t => t.StopSequence).ToList(); if (stops.Count() != 0 && vehicle != null) { TripsFlattenedModel tripModel = new TripsFlattenedModel { RouteId = GetRoutIdFromTripId(trip.trip_update.trip.trip_id), TripId = trip.trip_update.trip.trip_id, Stops = stops, VehiclePosition = vehicle, SourceDepartureTime = stops[0].StopDepartureTime }; trips.Add(tripModel); } } return(trips.OrderBy(t => Convert.ToDateTime(t.SourceDepartureTime)).ToList()); }
/// <summary> /// This method is to the the detail of selected trip. /// </summary> /// <param name="tripsFlattened"></param> /// <returns></returns> public JsonResult GetStopsDetailByTripId(TripsFlattenedModel tripsFlattened) { try { Trips trip = dbContext.Trips.Where(t => t.trip_id.Equals(tripsFlattened.TripId)).FirstOrDefault(); if (trip != null) { List <Shapes> shapes = dbContext.Shapes.Where(s => s.shape_id == trip.shape_id).ToList(); List <Stop_times> stopTimes = dbContext.StopTimes.Where(st => st.trip_id.Equals(trip.trip_id)).ToList(); List <Stops> stops = dbContext.Stops.ToList(); if (shapes.Count != 0 && stopTimes.Count != 0 && stops.Count != 0) { List <StopsFlattenedModel> stopsList = (from s in stops from sh in shapes from st in stopTimes where trip.trip_id.Equals(tripsFlattened.TripId) && sh.shape_id == trip.shape_id && trip.trip_id.Equals(st.trip_id) && st.stop_sequence == sh.shape_pt_sequence && st.stop_id == s.stop_id && st.stop_sequence >= tripsFlattened.SourceSequence && st.stop_sequence <= tripsFlattened.DestinationSequence select new StopsFlattenedModel { StopLatitude = sh.shape_pt_lat, StopLongitude = sh.shape_pt_lon, StopArrivalTime = st.arrival_time, StopDepartureTime = st.departure_time, StopName = s.stop_name, StopId = s.stop_id, StopSequence = sh.shape_pt_sequence }).OrderBy(p => p.StopSequence).ToList(); tripsFlattened.Stops = stopsList; } } return(Json(new { TripsDetails = tripsFlattened }, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { return(Json(new { TripList = "Error" }, JsonRequestBehavior.AllowGet)); } }