예제 #1
0
        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);
        }
예제 #2
0
        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;
            }
        }