/// <summary> /// Deletes department which has no employees and sub departments /// </summary> /// <param name="d">Department to delete</param> /// <returns> /// Deleted department /// null if such department does not exist or we are trying to delete root department /// </returns> public IDepartmentDTO DeleteEmptyDepartment(IDepartmentDTO d) { bool result = Departments.Remove(d as BaseDepartment); if (result) { BaseDepartment parent = Department(d.ParentDeptID) as BaseDepartment; parent.SubDepts.Remove(d.DeptID); return(d); } return(null); }
public string GetManagerName(Enums.Departments targetDepartment) { BaseDepartment department = GetDepartmentInstance(targetDepartment); //error because protected set //department.Manager = Enums.Managers.Jay; //but you can callback this function to set up new manager //string errorMsg = ""; //var result = department.SetManager(Enums.PEDInternalMembers.Tarien, Enums.Managers.Klen, out errorMsg); return(department.Manager.ToString()); }
public string GetDepartmentInfo(Enums.Departments targetDepartment) { BaseDepartment department = GetDepartmentInstance(targetDepartment); var information = new JObject { { "Supervisor", department.Supervisor.ToString() }, { "Manager", department.Manager.ToString() }, { "TeamMemberCount", department.GetTeamMemberCount() }, { "TeamMembers", department.GetTeamMembers().Aggregate((result, next) => $"{result},{next}") }, { "TeamAssets", department.GetAssetsItems().Aggregate((result, next) => $"{result},{next}") } }; return(information.ToString(Newtonsoft.Json.Formatting.None)); }
/// <summary> /// Adds newly created child department to parent department /// </summary> /// <param name="parentDept">Parent department</param> /// <param name="childDept">Departmet to add</param> /// <returns> /// 0 if child was added successfully, /// </returns> public int AddDepartment(IDepartmentDTO pd, IDepartmentDTO cd) { BaseDepartment parentDept = pd as BaseDepartment; BaseDepartment childDept = cd as BaseDepartment; // Creation of root department // it means childDept is root department if (parentDept == null && childDept.ParentDeptID == 0) { Departments.Add(childDept); return(0); } // Adding child department to parent dept Departments.Add(childDept); parentDept.SubDepts.Add(childDept.DeptID); childDept.ParentDeptID = parentDept.DeptID; return(0); }
/// <summary> /// Adds newly created child department to parent department /// </summary> /// <param name="pd">Parent department</param> /// <param name="childDeptName">Name of the department to be created</param> /// <param name="childDeptCreationDate">Child department creation date</param> public IDepartmentDTO CreateDepartment(IDepartmentDTO pd, string childDeptName, DateTime childDeptCreationDate) { BaseDepartment parentDept = pd as BaseDepartment; BaseDepartment childDept; // Creation of root department // it means childDept is root department if (parentDept == null) { childDept = new HQ(childDeptName); childDept.CreatedOn = childDeptCreationDate; Departments.Add(childDept); return(childDept as IDepartmentDTO); } // Create Division level department uint rootDeptID = RootDepartment().DeptID; if (parentDept.DeptID == rootDeptID) { childDept = new Division(childDeptName, rootDeptID) { CreatedOn = childDeptCreationDate }; Departments.Add(childDept); parentDept.SubDepts.Add(childDept.DeptID); childDept.ParentDeptID = parentDept.DeptID; return(childDept as IDepartmentDTO); } // Create Department level department childDept = new Department(childDeptName, parentDept.DeptID) { CreatedOn = childDeptCreationDate }; Departments.Add(childDept); parentDept.SubDepts.Add(childDept.DeptID); childDept.ParentDeptID = parentDept.DeptID; return(childDept as IDepartmentDTO); }
private BaseDepartment GetDepartmentInstance(Enums.Departments targetDepartmernt) { BaseDepartment department = null; switch (targetDepartmernt) { case Enums.Departments.RD: department = new RD(Enums.Managers.Klen); break; case Enums.Departments.PD: department = new PD(); break; case Enums.Departments.CPD: department = new CPD(); break; default: throw new NotImplementedException("Sorry, we didn't build this department instance"); } return(department); }
/// <summary> /// Returns root department of organization /// </summary> /// <returns>Root department</returns> public IDepartmentDTO RootDepartment() { BaseDepartment dept = Departments.Find(d => d.ParentDeptID == 0); return(dept); }