private void InitializeLinkedValueDrivers() { var selected = SelectedNonKeyDrivers; if (selected != null) { foreach (PricingEverydayValueDriver driver in selected) { PricingEverydayLinkedValueDriver existing = LinkedValueDrivers.FirstOrDefault(d => d.ValueDriverId == driver.Id); if (existing == null) { //var containerItem = ValueDriversCache.Find(i => i.Id == driver.Id); //if (containerItem != null && containerItem.LinkedDriver != null) //{ // LinkedValueDrivers.Add(containerItem.LinkedDriver); //} //else //{ LinkedValueDrivers.Add(new PricingEverydayLinkedValueDriver { ValueDriverId = driver.Id, Name = driver.Name }); //} } } } }
private void RecalculateLinkedValueDrivers(PricingEverydayValueDriver driver) { PricingEverydayLinkedValueDriver existing = LinkedValueDrivers.FirstOrDefault(d => d.ValueDriverId == driver.Id); if (driver.IsSelected) { if (existing == null) { PricingEverydayLinkedValueDriver linkedDriver = null; PricingEverydayValueDriverWrapper cachedItem = _valueDriversCache.Find(item => item.Id == driver.Id); if (cachedItem.LinkedDriver != null) { //Get the linked driver from the cache. linkedDriver = cachedItem.LinkedDriver; } else { //Create new linked driver and add it to the cache. linkedDriver = new PricingEverydayLinkedValueDriver { ValueDriverId = driver.Id, Name = driver.Name }; cachedItem.LinkedDriver = linkedDriver; } LinkedValueDrivers.Add(linkedDriver); } } else if (existing != null) { LinkedValueDrivers.Remove(existing); } if (KeyValueDriver != null) { //Remove previously marked key driver from the linked drivers. var keyDriver = LinkedValueDrivers.FirstOrDefault(d => d.ValueDriverId == KeyValueDriver.ValueDriverId); if (keyDriver != null) { LinkedValueDrivers.Remove(keyDriver); } } }