Ejemplo n.º 1
0
        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));
        }