private int SaveRide(int userId, CreateRideDto model) { var routeSvgPath = new SvgBuilder(model.Locations.Cast <ILatLng>()).Build(); Ride ride = new Ride(); ride.StartUtc = model.StartUtc; ride.EndUtc = model.EndUtc; ride.UserId = userId; ride.AverageSpeedMph = model.Locations.Average(i => i.Mph); ride.MaxSpeedMph = model.Locations.Max(i => i.Mph); ride.DistanceMiles = DistanceHelpers.GetDistanceMile(model.Locations.Cast <ILatLng>().ToList()); ride.RouteSvgPath = routeSvgPath; ride.RideLocations = model.Locations .Select(i => new RideLocation { AccuracyInMetres = i.AccuracyInMetres, Altitude = i.Altitude, Latitude = i.Latitude, Longitude = i.Longitude, Mph = i.Mph, Timestamp = i.Timestamp, }) .ToList(); ride.Jumps = model.Jumps .Select(i => new Jump { Airtime = i.Airtime, Number = i.Number, Timestamp = i.Timestamp, Latitude = i.Latitude, Longitude = i.Longitude, }) .ToList(); ride.AccelerometerReadings = model.AccelerometerReadings .Select(i => new AccelerometerReading { Time = i.Timestamp, X = i.X, Y = i.Y, Z = i.Z, }) .ToList(); context.Rides.Add(ride); context.SaveChanges(); return(ride.RideId); }