/// <summary> /// Рекурсивный метод удаления депортаментов /// </summary> /// <param name="deportament">Передать депорртамент к удалению</param> /// <param name="targetCollection">передать список на удаление</param> /// <param name="action">Действие</param> /// <returns>Флаг найден элемент для удаления или нет.</returns> private bool DeportamrntActions(Data.Deportament deportament, ObservableCollection <Data.Deportament> targetCollection, Action action) { bool FoundItems = false; //Фллаг что элемент найден foreach (var dep in targetCollection) //Проходимся по всему переданному списку { if (dep.Equals(deportament)) //Если елемент удаления найден. Возможен баг: когда два одинаковых елемента в соседних ветках дерева, удаляться оба. { FoundItems = true; //Меняем флаг на true targetCollection.Remove(dep); //Удаляем найденый элемент return(FoundItems); //Выходим с передачей что элемент найден } else { if (dep.Deportaments != null && dep.Deportaments.Count >= 1) //Если есть дочернии элементы { if (DeportamrntActions(deportament, dep.Deportaments, action)) //Если рекурсия возвращяет true { return(true); } //Возвращаем выше что элемент найден. } } } return(FoundItems); }
private void EditDeportament_Click(object sender, RoutedEventArgs e) //Редактировать депортамент { Data.Deportament cangedDeportament = DeportamentView.SelectedItem as Data.Deportament; var DEForm = new DeportamentWindow(cangedDeportament); //Передаем только какой депортамент изменить. DEForm.ShowDialog(); DeportamentView.Items.Refresh(); //Обновляем древо что быотобразились изменения }
private void MenuItem_Click(object sender, RoutedEventArgs e) //Добавить депортамент { Data.Deportament newDeportament = new Data.Deportament(); //Новый элемент депортамента. var currDep = DeportamentView.SelectedItem as Data.Deportament; //Текущий депортамент. var DAForm = new DeportamentWindow(newDeportament, currDep); //Создаем форму добовления депортамента и передаем выбранный депортамент и новый DAForm.ShowDialog(); //Открываем форму. DeportamentView.Items.Refresh(); }
Data.Deportament curDep; //Выбранный депотамент /// <summary> /// Создание или редактирование депортамента. /// </summary> /// <param name="deportament">Передать выбранный депортамент.</param> /// <param name="CurrentDeportament">Применяется если создается депортамент.</param> public DeportamentWindow(Data.Deportament deportament, Data.Deportament CurrentDeportament = null) { InitializeComponent(); deport = deportament; curDep = CurrentDeportament; //Запорлняем форму полями DatePicForm.SelectedDate = deport.CreatedDate; CountStaffForm.Text = deport.Staffs.Count.ToString(); NameForm.Text = deport.Name; }
private void EditStaff_Click(object sender, RoutedEventArgs e) //Редактировать сотрудника { if (DeportamentView.SelectedItem == null || StaffsView.SelectedItem == null) //Проверяем что выбран депортамент и сотрудник { MessageBox.Show("Не выбран депортамент или сотруднник."); return; } Data.Deportament curDeport = DeportamentView.SelectedItem as Data.Deportament; Data.Staff curStaff = StaffsView.SelectedItem as Data.Staff; var SEForm = new StaffsWindow(curDeport, curStaff); //Открываем форму с передачей выбранных депортамента и сотрудника SEForm.ShowDialog(); StaffsView.Items.Refresh(); //Обновляем что бы применить изменения }
private void AddStaff_Cilck(object sender, RoutedEventArgs e) //Добавить сотрудника { if (DeportamentView.SelectedItem == null) //Проверка что выбран депортамент для сотрудника. { MessageBox.Show("Не выбран депортамент."); return; } Data.Deportament curDeport = DeportamentView.SelectedItem as Data.Deportament; Data.Staff newStaff = null; var SAForm = new StaffsWindow(curDeport, newStaff); //Создаем форму и передаем сотрудника и SAForm.ShowDialog(); StaffsView.Items.Refresh(); //Обновляем что бы отобразились изменения }
bool IsCreated = false; //Флаг создан новый сотрудник или нет. /// <summary> /// Окно создания или редоктирования сотрудника /// </summary> /// <param name="Deportament">Текущий выбранный депортамент.</param> /// <param name="Staff">Передать сотррудника только если требуется его отредактировать.</param> public StaffsWindow(Data.Deportament Deportament, Data.Staff Staff = null) { InitializeComponent(); deport = Deportament; //Сохраняем ссылку на указанный депортамент. staff = Staff; //Сохраняем ссылку на обьек сотрудника. if (staff != null) //Если передали сотрудника то загрружаем поля в UI { AgeForm.Text = staff.Age.ToString(); LastNameForm.Text = staff.LastName; FirstNameForm.Text = staff.FirstName; IDForm.Text = staff.Id.ToString(); SalaryForm.Text = staff.Salary.ToString(); } DeportamentForm.Text = deport.Name; //Отображаем название текущего депортамента }