Beispiel #1
0
        public Domain.Cab GetNearestCab(GeoCoordinate location, CabType[] cabTypes)
        {
            var availableCabs = AvailableCabsRepository.GetAvailableCabs().Where(c => cabTypes.Contains(c.Type));

            if (availableCabs.Any())
            {
                var cabsWithLocation = CabLocationService.GetCabsWithinDistance(3, location, availableCabs.Select(a => a.Id));

                if (cabsWithLocation.Any())
                {
                    var nearestCabId = cabsWithLocation.FirstOrDefault().Key;
                    var nearestCab   = availableCabs.FirstOrDefault(c => c.Id.Equals(nearestCabId));
                    AvailableCabsRepository.RemoveCabFromPool(nearestCab);
                    return(nearestCab);
                }
            }
            return(null);
        }