Ejemplo n.º 1
0
        public IEnumerable <Customer> Find(Configuration configuration)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            var customerLocations = locationReader.Read(configuration.CustomerPath);
            var boundingRectangle = distanceCalculator.GetBoundingRectangle(configuration.MaxDistance, configuration.OfficeLocation);

            foreach (var customerLocationItem in customerLocations)
            {
                if (!boundingRectangle.DoesContain(customerLocationItem.Location))
                {
                    continue;
                }

                var distance = distanceCalculator.CalculateDistanceAsKm(customerLocationItem.Location, configuration.OfficeLocation);
                if (distance > configuration.MaxDistance)
                {
                    continue;
                }

                yield return(customerLocationItem.Customer);
            }
        }