/// <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));
            }
        }