private bool Cyclicity() { var id = DataViewDep.SelectedRows[0].Cells[0].Value.ToString(); Department dep = db.Department.Find(Guid.Parse(id)); var id_parent = db.Department.Where(x => x.Name == Dep.SelectedItem.ToString()).Select(x => x.ID).FirstOrDefault(); List <Guid?> epoch_id = new List <Guid?> { dep.ID }; List <Guid> kids = new List <Guid>(); EmployeesForm.Kids(ref kids, epoch_id, db); kids.Add(dep.ID); if (kids.Contains(id_parent)) { return(true); } return(false); }
private void Del_Click(object sender, EventArgs e) { DialogResult result = MessageBox.Show("Удалить департамент?\n\nУдаление департамента приведет к удалению всех его сотрудников и всех его дочерних отделов.", "Подтвердите действие", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { Department department = db.Department.Find(db.Department .Where(x => x.Name == Department_name.Text).Select(x => x.ID).First()); List <Guid?> epoch_id = new List <Guid?> { department.ID }; List <Guid> kids = new List <Guid>(); EmployeesForm.Kids(ref kids, epoch_id, db); kids.Add(department.ID); foreach (var kid in kids) { var employees_to_del = db.Empoyee.Where(x => x.DepartmentID == kid); /*Удаляются все работники дочерних департаментов + выбранного*/ foreach (var employee in employees_to_del) { db.Empoyee.Remove(employee); } } foreach (var kid in kids) { db.Department.Remove(db.Department.Find(kid)); /*Удаляются все дочерние департаменты + выбранный*/ } Department_name.Text = ""; Department_code.Text = ""; Change.Enabled = false; Del.Enabled = false; db.SaveChanges(); DataViewDep.Refresh(); MessageBox.Show("Департамент удален."); Update_Dep(); } else if (result == DialogResult.No) { return; } }