public static void DeleteOrg(Org org, UserContext db) { db.UserInOrg.Where(x => x.OrgId == org.Id).ToList().ForEach(x => db.UserInOrg.Remove(x)); db.SaveChanges(); foreach (department d in db.Org.Find(org.Id).department.ToList()) { DepPointer dd = null; if ((dd = db.DepPointer.FirstOrDefault(x => x.ChildId == d.Id)) != null) { db.DepPointer.Remove(dd); } } db.Org.Remove(db.Org.Find(org.Id)); db.SaveChanges(); }
//Delete Dep ----- I Samma Org public void DeleteDepartment(DepDetailes dep, UserContext db) { if (db.department.FirstOrDefault(x => x.Id == dep.Id && x.OrgId == dep.OrgId) == null) { throw new Exception("the department not exsist"); } List <int> Alldep = new List <int>(); #region search foreach (SearchDepTree.Deps deps in new SearchDepTree().DepsTree(db, dep.Id, dep.OrgId)) { Alldep.Add(deps.Dep.Id); foreach (int id in deps.Child) { Alldep.Add(id); } } #endregion #region remove department foreach (int i in Alldep.Distinct()) { department Department = db.department.First(x => x.Id == i); db.department.Remove(Department); db.SaveChanges(); } #endregion //delete all userinorg #region MyRegion foreach (int i in Alldep.Distinct()) { db.UserInOrg.Where(x => x.departmentId == i).ToList().ForEach(x => db.UserInOrg.Remove(x)); db.SaveChanges(); } #endregion #region remove depPointer foreach (int i in Alldep.Distinct()) { DepPointer dp = db.DepPointer.FirstOrDefault(x => x.ChildId == i); if (dp != null) { db.DepPointer.Remove(dp); db.SaveChanges(); } } #endregion }
//Edit Dep Position ----- I Samma Org public void EditDepartmentParent(DepDetailes dep, UserContext db) { List <int> childrenIds = new List <int>(); foreach (SearchDepTree.Deps mbox in new SearchDepTree().DepsTree(db, dep.Id, dep.OrgId)) { childrenIds.Add(mbox.Dep.Id); foreach (int i in mbox.Child) { childrenIds.Add(i); } } if (childrenIds.Where(x => x == dep.parentId).ToList().Count > 0) { throw new Exception("the parent is one of the children!"); } department Dep = db.department.First(x => x.Id == dep.Id); if (db.DepPointer.FirstOrDefault(x => x.ChildId == dep.Id) == null) // Not Exist { if (dep.parentId > 0) { db.DepPointer.Add(new DepPointer { ChildId = dep.Id, ParentId = dep.parentId }); db.SaveChanges(); } } else //Exist { if (dep.parentId > 0) { DepPointer Dp = db.DepPointer.First(x => x.ChildId == dep.Id); Dp.ParentId = dep.parentId; db.Entry(Dp).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); } else { DepPointer Dp = db.DepPointer.First(x => x.ChildId == dep.Id); db.DepPointer.Remove(Dp); db.SaveChanges(); } } }