/// <summary> /// Возвращает количество энергии, заданной свойством <see cref="Energy"/>, /// указанного направления, для дочерних элментов группы, указанного типа /// </summary> /// <param name="elementType">Тип дочерних элементов</param> /// <param name="energyDirection">Направление энергии</param> /// <returns>Количество энергии</returns> private double?GetBalanceItemsEnergyValue(ElementTypes elementType, BalanceFormula.EnergyDirection energyDirection) { double?result = new Nullable <double>(0); if (BalanceGroup.HasChildren) { var items = BalanceGroup.Children.Where(i => i.ElementType == elementType); foreach (IBalanceItem item in items) { IEnergy energy; if (item.ActiveEnergy.Parameter == Energy.Parameter) { energy = item.ActiveEnergy; } else { energy = item.ReactiveEnergy; } var value = energyDirection == BalanceFormula.EnergyDirection.@in ? energy.Plus.CorrectedValue : energy.Minus.CorrectedValue; if (value.HasValue) { result += value; } } } else { return(null); } return(result); }
/// <summary> /// Возвращает значение энергии элемента /// </summary> /// <param name="BalanceItem">Элемент баланса</param> /// <param name="energyDirection">Направление энергии</param> /// <returns>Значение энергии</returns> private double?GetEnergyValueForBalanceItem(IBalanceItem BalanceItem, BalanceFormula.EnergyDirection energyDirection) { IEnergy energy = _BalanceItemsEnergy[BalanceItem]; var value = energyDirection == BalanceFormula.EnergyDirection.@in ? energy.Plus.CorrectedValue : energy.Minus.CorrectedValue; return(value); }
/// <summary> /// Возвращает сумму значений указанной энергии за указанные сутки всех элементов указанного типа /// </summary> /// <param name="dayIndex">Индекс суток</param> /// <param name="listOfElementAndEnergy">Список пар элемент-энергия</param> /// <param name="energyDirection">Направление энергии</param> /// <returns>Сумма энергии элементов за сутки</returns> private double?GetBalanceItemDayEnergyValue(int dayIndex, IList <KeyValuePair <IBalanceItem, IEnergy> > listOfElementAndEnergy, BalanceFormula.EnergyDirection energyDirection) { double?result = new Nullable <double>(0); foreach (var item in listOfElementAndEnergy) { var value = energyDirection == BalanceFormula.EnergyDirection.@in ? item.Value.Plus.DaysValues[dayIndex] : item.Value.Minus.DaysValues[dayIndex]; if (value.HasValue) { result += value; } } return(result); }