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"); } }
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); }
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(); } }
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(); } }