public static void Run()
 {
     try
     {
         Log.Debug("QuotePricePreloader.Run starting");
         var ids = new List <int>();
         using (var entities = new VehicleEntities())
         {
             ids.AddRange(entities.Vehicles.Select(x => x.VehicleId));
         }
         var postalCodes = new List <string>();
         using (var pricing = new PricingEntities())
         {
             postalCodes.AddRange(pricing.PricingFactors.Where(x => x.PricingFactorType.PricingFactorTypeCode == "POC").Select(x => x.AppliesTo));
         }
         var quoteTasks = new List <Task>();
         var stopwatch  = Stopwatch.StartNew();
         foreach (var id in ids)
         {
             foreach (var postalCode in postalCodes)
             {
                 var tId         = id;
                 var tPostalCode = postalCode;
                 quoteTasks.Add(Task.Factory.StartNew(() => PreloadQuotePrice(tId, tPostalCode)));
             }
         }
         Log.Debug("QuotePricePreloader.Run fetching prices for: {0} quotes", quoteTasks.Count);
         Task.WaitAll(quoteTasks.ToArray());
         Log.Debug("QuotePricePreloader.Run fetched prices for: {0} quotes, in: {1}ms", quoteTasks.Count, stopwatch.ElapsedMilliseconds);
     }
     catch (Exception ex)
     {
         Log.Error(ex, "QuotePricePreloader.Run failed");
     }
 }
Example #2
0
        private double GetFactor(string factorTypeCode, string appliesTo)
        {
            var factorAmount = 1.0;

            using (var entities = new PricingEntities())
            {
                var factor = entities.PricingFactors.FirstOrDefault
                                 (x => x.PricingFactorType.PricingFactorTypeCode == factorTypeCode &&
                                 x.AppliesTo == appliesTo);
                if (factor != null)
                {
                    factorAmount = factor.Factor;
                }
            }
            return(factorAmount);
        }
Example #3
0
 public void LoadPostalCodePricingFactors()
 {
     using (var entities = new PricingEntities())
     {
         var postalCodeFactor = entities.PricingFactorTypes.Single(x => x.PricingFactorTypeCode == "POC");
         var postalCodes      = "ABCDEFGHJKLMNOPRSTUVWY";
         foreach (var firstLetter in postalCodes)
         {
             foreach (var secondLetter in postalCodes)
             {
                 for (var i = 1; i <= _Random.Next(2, 6); i++)
                 {
                     var factor = new PricingFactor();
                     factor.PricingFactorType = postalCodeFactor;
                     factor.AppliesTo         = string.Format("{0}{1}{2}", firstLetter, secondLetter, i);
                     factor.Factor            = _Random.NextDouble() + _Random.NextDouble();
                     entities.PricingFactors.Add(factor);
                 }
             }
         }
         entities.SaveChanges();
     }
 }
Example #4
0
        public void LoadVehiclePricingFactors()
        {
            int minVehicleId, maxVehicleId;

            using (var vehicleEntities = new VehicleEntities())
            {
                minVehicleId = vehicleEntities.Vehicles.Min(x => x.VehicleId);
                maxVehicleId = vehicleEntities.Vehicles.Max(x => x.VehicleId);
            }

            using (var entities = new PricingEntities())
            {
                var vehicleFactor = entities.PricingFactorTypes.Single(x => x.PricingFactorTypeCode == "VID");
                for (var vehicleId = minVehicleId; vehicleId <= maxVehicleId; vehicleId++)
                {
                    var factor = new PricingFactor();
                    factor.PricingFactorType = vehicleFactor;
                    factor.AppliesTo         = vehicleId.ToString();
                    factor.Factor            = _Random.NextDouble() + _Random.NextDouble();
                    entities.PricingFactors.Add(factor);
                }
                entities.SaveChanges();
            }
        }