public List <Models.Client.Ride> GetOffers(Models.Client.SearchRideRequest booking) { //var rides = this._db.Rides.Where(ride => ride.TravelDate == booking.TravelDate && ride.To.ToLower() == booking.To.ToLower() &&ride.From.ToLower() == booking.From.ToLower() && ride.AvailableSeats > 0).ToList(); var rides = new List <Models.Data.Ride>(); foreach (var ride in this._db.Rides) { JavaScriptSerializer ser = new JavaScriptSerializer(); var viaPoints = ser.Deserialize <List <Models.Client.Point> >(ride.ViaPoints); var destIndex = viaPoints.IndexOf(viaPoints.FirstOrDefault(a => (a != null && !string.IsNullOrEmpty(a.City) && !string.IsNullOrEmpty(booking.To)) && a.City.ToLower() == booking.To.ToLower())); var srcIndex = viaPoints.IndexOf(viaPoints.FirstOrDefault(a => (a != null && !string.IsNullOrEmpty(a.City) && !string.IsNullOrEmpty(booking.From)) && a.City.ToLower() == booking.From.ToLower())); if (destIndex != -1 && srcIndex != -1 && destIndex > srcIndex && ride.TravelDate == booking.TravelDate && ride.AvailableSeats > 0) { ride.TotalDistance = 0; for (int i = srcIndex; i < destIndex; i++) { ride.TotalDistance += (float)DistanceCalculator(double.Parse(viaPoints[i].Lat), double.Parse(viaPoints[i].Lng), double.Parse(viaPoints[i + 1].Lat), double.Parse(viaPoints[i + 1].Lng)); } rides.Add(ride); } } return(this._mapper.Map <List <Models.Client.Ride> >(rides)); }
public List <Models.Client.Ride> GetRidesOffers(Models.Client.SearchRideRequest booking) { int count = 0; List <Models.Data.Ride> rides = new List <Models.Data.Ride>(); foreach (var ride in this.Db.Rides) { count++; var viaPoints = JsonConvert.DeserializeObject <List <Models.Client.Point> >(ride.ViaPoints); if (viaPoints.IndexOf(viaPoints.FirstOrDefault(a => a.City.Equals(booking.To, StringComparison.InvariantCultureIgnoreCase))) > viaPoints.IndexOf(viaPoints.FirstOrDefault(a => a.City.Equals(booking.From, StringComparison.InvariantCultureIgnoreCase))) && ride.TravelDate == booking.TravelDate && ride.AvailableSeats > 0) { rides.Add(ride); } } return(Mapper.Map <List <Models.Data.Ride>, List <Models.Client.Ride> >(rides)); }