Esempio n. 1
0
 private static void EnsureEntityIsRoutable(RouteDriver entity)
 {
     if (!entity.GeoLat.HasValue || !entity.GeoLon.HasValue)
     {
         throw new RoutingEntityException("Driver missing geocoding coordinates.", entity.ID);
     }
 }
Esempio n. 2
0
 public static RouteEntity Convert(RouteDriver incoming)
 {
     return(new RouteEntity()
     {
         ID = incoming.ID,
         TypeID = 2,                 // Drivers are type 2
         GeoLat = incoming.GeoLat,
         GeoLon = incoming.GeoLon,
         Address = incoming.Address,
         City = incoming.City,
         State = incoming.State,
         Zip = incoming.Zip
     });
 }
Esempio n. 3
0
        private float CalculateDriverMultiplier(RouteDriver Driver, IEnumerable <OptimizationTag> Multipliers)
        {
            float result = 1.0f;

            string[] driverTags = Driver.Tags.Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries);
            foreach (string tag in driverTags)
            {
                OptimizationTag optimizationTag = (from m in Multipliers where m.Name == tag && !m.IsExclusive select m).FirstOrDefault();
                if (optimizationTag != null)
                {
                    result += (optimizationTag.Multiplier - 1.0f);                     // multiplier is additive, not compounding
                }
            }

            return(result);
        }
Esempio n. 4
0
        private float CalculateDriverOrderMultiplier(RouteDriver Driver, RouteOrder Order, IEnumerable <OptimizationTag> Multipliers)
        {
            float result = 1.0f;

            string[] orderTags = Order.Tags.Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries);
            foreach (string tag in orderTags)
            {
                OptimizationTag optimizationTag = (from m in Multipliers where
                                                   (m.Name == tag) ||
                                                   (m.Name.Contains("*") && tag.StartsWith(m.Name.Substring(0, m.Name.IndexOf("*")))) &&                 // handle wildcards
                                                   m.IsExclusive
                                                   select m)
                                                  .FirstOrDefault();

                if (optimizationTag != null && !Driver.Tags.Contains(tag))
                {
                    // If optimization tag is not found for the driver, apply multiplier
                    result += (optimizationTag.Multiplier - 1.0f);                     // multiplier is additive, not compounding
                }
            }

            return(result);
        }