Exemple #1
0
        /// <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));
        }
Exemple #4
0
        /// <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);
        }
Exemple #5
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);
        }