/// <summary> /// Добавить расчет ПЗ /// </summary> /// <param name="item">расчет ПЗ</param> public void Add(PriceItem item) { this.Remove(item.PriceCalculationItem); _items.Add(item.PriceCalculationItem.Id, item); }
public PriceService(IUnityContainer container) { _container = container; //синхронизация завершения расчетов container.Resolve <IEventAggregator>().GetEvent <AfterFinishPriceCalculationEvent>().Subscribe( calculation => { //добавляем только данные из завершенных расчетов if (!calculation.TaskCloseMoment.HasValue) { return; } foreach (var priceCalculationItem in calculation.PriceCalculationItems) { foreach (var salesUnit in priceCalculationItem.SalesUnits) { var priceItem = new PriceItem(calculation, priceCalculationItem); if (SalesUnitsCalculationsDictionary.ContainsKey(salesUnit.Id)) { SalesUnitsCalculationsDictionary[salesUnit.Id].Add(priceItem); } else { SalesUnitsCalculationsDictionary.Add(salesUnit.Id, new PriceItems(new[] { priceItem })); } } } }); //синхронизация остановки расчетов container.Resolve <IEventAggregator>().GetEvent <AfterStopPriceCalculationEvent>().Subscribe( calculation => { if (calculation.TaskCloseMoment.HasValue) { return; } foreach (var priceCalculationItem in calculation.PriceCalculationItems) { foreach (var salesUnit in priceCalculationItem.SalesUnits) { if (SalesUnitsCalculationsDictionary.ContainsKey(salesUnit.Id)) { var priceItems = SalesUnitsCalculationsDictionary[salesUnit.Id]; if (priceItems.Remove(priceCalculationItem) && priceItems.IsEmpty) { SalesUnitsCalculationsDictionary.Remove(salesUnit.Id); } } } } }); _container.Resolve <IModelsStore>().IsRefreshed += Reload; Reload(); }