public static void StartCalculationsForAllPersons(DateTimeOffset accountingDate, int numberOfPersons, Person employee) { //опеределенние самого высокого узла иерархии CreateRealTree(employee, numberOfPersons); Person targetPerson = CommonTools.FindPersonById(tree.Last()); SecondSolution.StartCalculations(targetPerson, numberOfPersons, accountingDate); }
public static void StartCalculations(Person targetPerson, int numberOfStaff, DateTimeOffset accountingDate) { List <int> mainTree = new List <int>(); try { mainTree.Add(targetPerson.Id); } catch { CommonTools.ShowMessageAsync("Сначала выберите сотрудника из списка слева"); return; } //Хранит id сотрудника из группы Salesman и //его зарплату в сумме с зп подчиненных. salaryWeightDictionary = new Dictionary <int, SalesmanMoneyBag>(); bool[] isPersonSalaryCalculated = new bool[numberOfStaff]; //Создает первичное "древо" из набора сотрудников группы Salesman //Возвращает сотрудника с последнего нижнего уровня Person lastPerson = CreateTree(targetPerson, isPersonSalaryCalculated); foreach (int ind in tree) { mainTree.Add(ind); } for (int i = mainTree.Count() - 1; i >= 0; i--) { targetPerson = CommonTools.FindPersonById(mainTree[i]); lastPerson = CreateTree(targetPerson, isPersonSalaryCalculated); double subSalaryWeight = CalculateSalary(lastPerson, targetPerson, accountingDate, isPersonSalaryCalculated); SalesmanMoneyBag subsBag = new SalesmanMoneyBag(subSalaryWeight, new List <int>()); salaryWeightDictionary.Add(targetPerson.Id, subsBag); } salaryWeightDictionary.Clear(); }