コード例 #1
0
        private IEnumerable <SelectListItem> ListModelYears()
        {
            var modelYears = AvailableVehicles
                             .Where(v => LookupVehicle is EmptyVehicle ||
                                    (
                                        v.Make.Equals(LookupVehicle.Make, StringComparison.OrdinalIgnoreCase) &&
                                        v.ProgrammeId == LookupVehicle.ProgrammeId)
                                    )
                             .Select(v => v.ModelYear)
                             .Distinct()
                             .Select(my => new SelectListItem
            {
                Text     = my,
                Value    = my,
                Selected = !(LookupVehicle is EmptyVehicle) && !string.IsNullOrEmpty(LookupVehicle.ModelYear) &&
                           LookupVehicle.ModelYear.Equals(my, StringComparison.OrdinalIgnoreCase)
            }).ToList();

            if (!modelYears.Any() || modelYears.Count() == 1)
            {
                return(modelYears);
            }

            AppendDefaultItem(modelYears);

            return(modelYears);
        }
コード例 #2
0
        private IEnumerable <SelectListItem> ListProgrammes()
        {
            var programmes = AvailableVehicles
                             //.Where(v => LookupVehicle is EmptyVehicle ||
                             //        (
                             //            v.Make.Equals(LookupVehicle.Make, StringComparison.OrdinalIgnoreCase))
                             //        )
                             .Distinct(new UniqueVehicleByNameComparer())
                             .Select(v => new SelectListItem
            {
                Text     = v.Description,
                Value    = v.Code,
                Selected = !(LookupVehicle is EmptyVehicle) &&
                           LookupVehicle.ProgrammeId.GetValueOrDefault() == v.ProgrammeId
            }).ToList();

            if (!programmes.Any() || programmes.Count() == 1)
            {
                return(programmes);
            }

            AppendDefaultItem(programmes);

            return(programmes);
        }
コード例 #3
0
        private IEnumerable <SelectListItem> ListMakes()
        {
            var makes = AvailableVehicles
                        .Select(v => v.Make)
                        .Distinct()
                        .Select(m => new SelectListItem
            {
                Text  = m,
                Value = m
            }).ToList();

            if (!makes.Any() || makes.Count() == 1)
            {
                return(makes);
            }

            if (makes.Any(i => i.Selected == true))
            {
                makes.Insert(0, new SelectListItem {
                    Text = "-- SELECT --", Value = ""
                });
            }
            else
            {
                makes.Insert(0, new SelectListItem {
                    Text = "-- SELECT --", Value = "", Selected = true
                });
            }

            return(makes);
        }
コード例 #4
0
        private IEnumerable <SelectListItem> ListGateways()
        {
            var gateways = AvailableVehicles
                           .Where(v => LookupVehicle is EmptyVehicle ||
                                  (
                                      v.Make.Equals(LookupVehicle.Make, StringComparison.OrdinalIgnoreCase) &&
                                      v.ProgrammeId == LookupVehicle.ProgrammeId &&
                                      v.ModelYear.Equals(LookupVehicle.ModelYear, StringComparison.OrdinalIgnoreCase
                                                         )))
                           .Select(v => v.Gateway)
                           .Distinct()
                           .Select(g => new SelectListItem
            {
                Text     = g,
                Value    = g,
                Selected = !(LookupVehicle is EmptyVehicle) && !string.IsNullOrEmpty(LookupVehicle.Gateway) &&
                           LookupVehicle.Gateway.Equals(g, StringComparison.OrdinalIgnoreCase)
            }).ToList();

            if (!gateways.Any() || gateways.Count() == 1)
            {
                return(gateways);
            }

            AppendDefaultItem(gateways);

            return(gateways);
        }
コード例 #5
0
        static void Main(string[] args)
        {
            AvailableVehicles availableVehicles = new AvailableVehicles();

            IVehicle prototype = availableVehicles["Antos"];
            IVehicle vehicle   = prototype.DeepCopy();

            vehicle.ChooseColor("Black", 400.00f);
            vehicle.ChooseTires("Thunderer R404 AT", 134.00f);
            vehicle.ChooseAccessories(Accessories.A_C, Accessories.Stereo, Accessories.Speakers);

            vehicle.DisplayInfo();
            prototype.DisplayInfo();

            Console.WriteLine($"prototype and vehicle are the same instance: {ReferenceEquals(prototype, vehicle)}\n");

            Console.ReadLine();
        }
コード例 #6
0
        public AvailableVehiclesResponse Post(AvailableVehicles request)
        {
            var vehicleType = _dao.GetAll().FirstOrDefault(v => v.ReferenceDataVehicleId == request.VehicleTypeId);
            var logoName    = vehicleType != null ? vehicleType.LogoName : null;

            IbsVehiclePosition[] ibsVehicles;
            string market = null;

            try
            {
                market = _taxiHailNetworkServiceClient.GetCompanyMarket(request.Latitude, request.Longitude);
            }
            catch
            {
                // Do nothing. If we fail to contact Customer Portal, we continue as if we are in a local market.
                _logger.LogMessage("VehicleService: Error while trying to get company Market to find available vehicles.");
            }

            if (!market.HasValue() &&
                _serverSettings.ServerData.LocalAvailableVehiclesMode == LocalAvailableVehiclesModes.IBS)
            {
                // LOCAL market IBS
                ibsVehicles = _ibsServiceProvider.Booking().GetAvailableVehicles(request.Latitude, request.Longitude, request.VehicleTypeId);
            }
            else
            {
                string      availableVehiclesMarket;
                IList <int> availableVehiclesFleetIds = null;

                if (!market.HasValue() && _serverSettings.ServerData.LocalAvailableVehiclesMode == LocalAvailableVehiclesModes.HoneyBadger)
                {
                    // LOCAL market Honey Badger
                    availableVehiclesMarket = _serverSettings.ServerData.HoneyBadger.AvailableVehiclesMarket;

                    if (request.FleetIds != null)
                    {
                        // Use fleet ids specified in the request first
                        availableVehiclesFleetIds = request.FleetIds;
                    }
                    else if (_serverSettings.ServerData.HoneyBadger.AvailableVehiclesFleetId.HasValue)
                    {
                        // Or fleet id specified in the settings
                        availableVehiclesFleetIds = new[] { _serverSettings.ServerData.HoneyBadger.AvailableVehiclesFleetId.Value };
                    }
                }
                else if (!market.HasValue() && _serverSettings.ServerData.LocalAvailableVehiclesMode == LocalAvailableVehiclesModes.Geo)
                {
                    // LOCAL market Geo
                    availableVehiclesMarket = _serverSettings.ServerData.CmtGeo.AvailableVehiclesMarket;

                    if (_serverSettings.ServerData.CmtGeo.AvailableVehiclesFleetId.HasValue)
                    {
                        availableVehiclesFleetIds = new[] { _serverSettings.ServerData.CmtGeo.AvailableVehiclesFleetId.Value };
                    }
                }
                else
                {
                    // EXTERNAL market Honey Badger or Geo
                    availableVehiclesMarket = market;

                    try
                    {
                        // Only get available vehicles for dispatchable companies in market
                        var roamingCompanies = _taxiHailNetworkServiceClient.GetMarketFleets(_serverSettings.ServerData.TaxiHail.ApplicationKey, market);
                        if (roamingCompanies != null)
                        {
                            var roamingFleetIds = roamingCompanies.Select(r => r.FleetId);

                            if (request.FleetIds != null)
                            {
                                // From the fleets accessible by that company, only return vehicles from the fleets specified in the request
                                availableVehiclesFleetIds = roamingFleetIds
                                                            .Where(fleetId => request.FleetIds.Contains(fleetId))
                                                            .ToArray();
                            }
                            else
                            {
                                // Return vehicles from all fleets accessible by that company
                                availableVehiclesFleetIds = roamingFleetIds.ToArray();
                            }
                        }
                        else
                        {
                            availableVehiclesFleetIds = request.FleetIds;
                        }
                    }
                    catch
                    {
                        // Do nothing. If we fail to contact Customer Portal, we return an unfiltered list of available vehicles.
                        _logger.LogMessage("VehicleService: Error while trying to get Market fleets.");
                    }
                }

                var vehicleResponse = GetAvailableVehiclesServiceClient(market).GetAvailableVehicles(
                    market: availableVehiclesMarket,
                    latitude: request.Latitude,
                    longitude: request.Longitude,
                    searchRadius: request.SearchRadius,
                    fleetIds: availableVehiclesFleetIds,
                    wheelchairAccessibleOnly: (vehicleType != null && vehicleType.IsWheelchairAccessible));

                ibsVehicles = vehicleResponse.Select(v => new IbsVehiclePosition
                {
                    Latitude      = v.Latitude,
                    Longitude     = v.Longitude,
                    PositionDate  = v.Timestamp,
                    VehicleNumber = v.Medallion,
                    FleetId       = v.FleetId,
                    Eta           = (int?)v.Eta,
                    VehicleType   = v.VehicleType,
                    CompassCourse = v.CompassCourse,
                }).ToArray();
            }

            var isAuthenticated = this.GetSession().IsAuthenticated;

            var availableVehicles = new List <AvailableVehicle>();

            foreach (var ibsVehicle in ibsVehicles)
            {
                var vehicle = new AvailableVehicle
                {
                    Latitude    = ibsVehicle.Latitude,
                    Longitude   = ibsVehicle.Longitude,
                    LogoName    = logoName,
                    Eta         = ibsVehicle.Eta,
                    VehicleType = ibsVehicle.VehicleType
                };

                if (isAuthenticated)
                {
                    vehicle.CompassCourse = ibsVehicle.CompassCourse ?? 0;
                    vehicle.VehicleName   = ibsVehicle.VehicleNumber;
                    vehicle.FleetId       = ibsVehicle.FleetId;
                }

                availableVehicles.Add(vehicle);
            }

            return(new AvailableVehiclesResponse(availableVehicles));
        }
コード例 #7
0
        public OrderMapView(IntPtr handle) : base(handle)
        {
            Initialize();

            _dropoffCenterPin = new UIImageView(AddressAnnotation.GetImage(AddressAnnotationType.Destination))
            {
                BackgroundColor = UIColor.Clear,
                ContentMode     = UIViewContentMode.Center,
                Hidden          = true
            };

            _pickupCenterPin = new UIImageView(AddressAnnotation.GetImage(AddressAnnotationType.Pickup))
            {
                BackgroundColor = UIColor.Clear,
                ContentMode     = UIViewContentMode.Center,
                Hidden          = true
            };

            RegionChanged += (s, e) =>
            {
                var canShowClusterizedTaxiMarker = ViewModel != null && !ViewModel.Settings.ShowIndividualTaxiMarkerOnly;

                if (canShowClusterizedTaxiMarker && CanShowAvailableVehicle())
                {
                    ShowAvailableVehicles(VehicleClusterHelper.Clusterize(AvailableVehicles != null ? AvailableVehicles.ToArray() : null, GetMapBoundsFromProjection()));
                }

                if (TaxiLocation != null && !_automatedMapChanged)
                {
                    CancelAutoFollow.ExecuteIfPossible();
                }
                else if (_automatedMapChanged)
                {
                    _automatedMapChanged = false;
                }
            };
        }