//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(); } } }
//Edit Auth To Dep ----- I Samma Org public void AddEditAuthToDep(DepDetailes AuthDep, UserContext db) { if (!AuthTypes.checkTypeExistence(AuthDep.AuthType.ToList())) { throw new Exception("the authentication not exist"); } foreach (Auth auth in db.Auth.Where(x => x.departmentId == AuthDep.Id).ToList()) { db.Auth.Remove(auth); db.SaveChanges(); } foreach (string typeA in AuthDep.AuthType.ToList()) { db.Auth.Add(new Auth { departmentId = AuthDep.Id, Type = typeA }); db.SaveChanges(); } }
//Add Department + Parent public void AddDepartment(DepDetailes dep, UserContext db) { if (!AuthTypes.checkTypeExistence(dep.AuthType)) { throw new Exception("The AuthType Not Valid"); } if (dep.parentId > 0 && db.department.FirstOrDefault(x => x.Id == dep.parentId) != null) { db.department.Add(new department { Name = dep.Name, OrgId = dep.OrgId }); db.SaveChanges(); department ch = db.department.First(x => x.Name == dep.Name && x.OrgId == dep.OrgId); db.DepPointer.Add(new DepPointer { ChildId = ch.Id, ParentId = dep.parentId }); db.SaveChanges(); dep.AuthType.ForEach(x => db.Auth.Add(new Auth { departmentId = ch.Id, Type = x })); db.SaveChanges(); } else if (dep.parentId > 0 && db.department.FirstOrDefault(x => x.Id == dep.parentId) == null) { throw new Exception("this parent is not registred"); } if (dep.parentId == 0) { db.department.Add(new department { Name = dep.Name, OrgId = dep.OrgId }); db.SaveChanges(); department ch = db.department.First(x => x.Name == dep.Name && x.OrgId == dep.OrgId); dep.AuthType.ForEach(x => db.Auth.Add(new Auth { departmentId = ch.Id, Type = x })); db.SaveChanges(); } }
//Edit Dep ----- I Samma Org public void EditDepartment(DepDetailes dep, UserContext db) { if (!AuthTypes.checkTypeExistence(dep.AuthType)) { throw new Exception("this Authentication type is not exist"); } department Dep = db.department.First(x => x.Id == dep.Id); Dep.Name = dep.Name; Dep.AdminId = dep.AdminId; db.Entry(Dep).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); db.department.Find(dep.Id).Auth.ToList().ForEach(x => db.Auth.Remove(x)); db.SaveChanges(); dep.AuthType.ForEach(x => db.department.Find(dep.Id).Auth.Add(new Auth { Type = x })); db.SaveChanges(); }