Ejemplo n.º 1
0
        protected List <KeyValuePair <string, string> > GetAvailableVehicleParams(string market, double latitude, double longitude, int?searchRadius = null, IList <int> fleetIds = null, bool returnAll = false, bool wheelchairAccessibleOnly = false, bool usePolygon = true)
        {
            if (fleetIds != null && !fleetIds.Any())
            {
                // No fleetId allowed for available vehicles
                return(null);
            }

            var searchRadiusInKm = (searchRadius ?? Settings.ServerData.AvailableVehicles.Radius) / 1000;

            var @params = new List <KeyValuePair <string, string> >
            {
                new KeyValuePair <string, string>("includeEntities", "true"),
                new KeyValuePair <string, string>("market", market),
                new KeyValuePair <string, string>("meterState", ((int)MeterStates.ForHire).ToString()),
                new KeyValuePair <string, string>("logonState", ((int)LogonStates.LoggedOn).ToString())
            };

            if (wheelchairAccessibleOnly)
            {
                @params.Add(new KeyValuePair <string, string>("vehicleType", "1"));
            }

            if (usePolygon)
            {
                var vertices = GeographyHelper.CirclePointsFromRadius(latitude, longitude, searchRadiusInKm, 10)
                               .Select(vertex => string.Format("{0},{1}", vertex.Item1, vertex.Item2))
                               .Select(point => new KeyValuePair <string, string>("poly", point));

                @params.AddRange(vertices);
            }
            else
            {
                @params.Add(new KeyValuePair <string, string>("lat", latitude.ToString(CultureInfo.InvariantCulture)));
                @params.Add(new KeyValuePair <string, string>("lon", longitude.ToString(CultureInfo.InvariantCulture)));
                @params.Add(new KeyValuePair <string, string>("rad", (searchRadiusInKm * 1000).ToString()));
            }

            if (fleetIds != null)
            {
                @params.AddRange(fleetIds.Select(fleetId => new KeyValuePair <string, string>("fleet", fleetId.ToString())));
            }

            return(@params);
        }