/// <summary> /// Пересчитывает сумму показателей только своих дочерних элементов /// </summary> public void RecalculateChildren() { if (Children.Count > 0) { switch (Type) { case PokazatelType.Ciaz: double vsogo = 0; double rawVsogo = 0; foreach (BudgetViewModel child in Children) { vsogo += child.Pokazatel.Vsogo; rawVsogo += child.RawPokazatel.Vsogo; } Pokazatel = new PokazatelViewModel(new PokazatelModel(Pokazatel.Code, Pokazatel.Name, vsogo)); RawPokazatel = new PokazatelViewModel(new PokazatelModel(Pokazatel.Code, Pokazatel.Name, rawVsogo)); break; case PokazatelType.Budget: double zagalniyFond = 0; double specialniyFond = 0; double rawZagalniyFond = 0; double rawSpecialniyFond = 0; foreach (BudgetViewModel child in Children) { zagalniyFond += child.Pokazatel.ZagalniyFond; specialniyFond += child.Pokazatel.SpecialniyFond; rawZagalniyFond += child.RawPokazatel.ZagalniyFond; rawSpecialniyFond += child.RawPokazatel.SpecialniyFond; } Pokazatel = new PokazatelViewModel(new PokazatelModel(Pokazatel.Code, Pokazatel.Name, zagalniyFond, specialniyFond)); RawPokazatel = new PokazatelViewModel(new PokazatelModel(Pokazatel.Code, Pokazatel.Name, rawZagalniyFond, rawSpecialniyFond)); break; } } else { switch (Type) { case PokazatelType.Ciaz: Pokazatel = new PokazatelViewModel(new PokazatelModel(Pokazatel.Code, Pokazatel.Name, Pokazatel.Vsogo)); RawPokazatel = new PokazatelViewModel(new PokazatelModel(Pokazatel.Code, Pokazatel.Name, RawPokazatel.Vsogo)); break; case PokazatelType.Budget: Pokazatel = new PokazatelViewModel(new PokazatelModel(Pokazatel.Code, Pokazatel.Name, Pokazatel.ZagalniyFond, Pokazatel.SpecialniyFond)); RawPokazatel = new PokazatelViewModel(new PokazatelModel(Pokazatel.Code, Pokazatel.Name, RawPokazatel.ZagalniyFond, RawPokazatel.SpecialniyFond)); break; } } }
public BudgetViewModel(BudgetModel BudgetModel, BudgetViewModel parent) { this.BudgetModel = BudgetModel; this.Pokazatel = new PokazatelViewModel(BudgetModel.Pokazatel); this.RawPokazatel = new PokazatelViewModel(BudgetModel.Pokazatel); Difference = new PokazatelViewModel(BudgetModel.Difference); this.Parent = parent; this.Children = new ObservableCollection<BudgetViewModel>(); this.Type = BudgetModel.Type; }