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(); }
/// <summary> /// Проверяет наличие данных на панели AddPersonPanel. Вызывает методы по считыванию /// и сохранению данных из полей в БД. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void AddPerson_button_Click(object sender, RoutedEventArgs e) { //Открывает панель добавления сотрудников if (addPersonPanel.Visibility == Visibility.Collapsed) { ChangeInterface("showPanel"); return; } //создает группу, выбранную для сотрудника if (groupList.SelectedItem == null) { CommonTools.ShowMessageAsync("Выберите группу для сотрудника"); return; } if (string.IsNullOrEmpty(personNameTextbox.Text)) { CommonTools.ShowMessageAsync("Укажите имя сотрудника"); return; } try { var BaseSalary = Convert.ToDouble(baseSalaryTextbox.Text); } catch (Exception) { CommonTools.ShowMessageAsync("Недопустимые символы введены в поле Ставка"); return; } if (!dateOfStartPicker.Date.HasValue) { CommonTools.ShowMessageAsync("Выберите дату начала работы сотрудника"); return; } if (newPerson.Name == null) { newPerson = SetDataToProfile(newPerson, false); } else { newPerson = SetDataToProfile(newPerson, true); } UpdateItemsListOnStaffEditPage(); //Заполняем таблицу подчиненных со ссылкой на начальника var index = subPersonsList.SelectedItems.Count; if (index > 0) { for (int i = 0; i < index; i++) { Person selectedPerson = (Person)subPersonsList.SelectedItems[i]; //сохраняем данные о выбранном пользователе AddSubordinate(selectedPerson, newPerson); } } //Очищяем поля newPerson = new Person(); ChangeInterface("hidePanel"); }