示例#1
0
        /// <summary>
        /// Изменение вышестоящего департамента
        /// </summary>
        /// <param name="department">Экземпляр департамента</param>
        /// <param name="NewHigherDepartmentId">Id нового вышестоящего департамента</param>
        private void Change_Parent_Department(Department department, int NewHigherDepartmentId)
        {
            int OldHigherDepartmentId = department.HigherDepartmentId;           //Id старого департамента-родителя

            this[OldHigherDepartmentId].SlaveDepartmentId.Remove(department.Id); //удаляем Id этого департамента из списка подчиненных
                                                                                 //в старом родителе
            department.HigherDepartmentId = NewHigherDepartmentId;               //добавляем Id нового родителя в наш департамент
            if (NewHigherDepartmentId != 0)
            {
                this[NewHigherDepartmentId].SlaveDepartmentId.Add(department.Id); //добавляем Id нашего департамента в список подчиненных родителя
            }
            else
            {
                SlaveDepartmentId.Add(department.Id); //или подчиняем напрямую организации (старший департамент)
            }
        }
示例#2
0
        /// <summary>
        /// Добавление нового департамента
        /// </summary>
        /// <param name="Name">Наименование</param>
        /// <param name="HigherDepartmentId">Id вышестоящего департамента</param>
        public void Add_Department(string Name, int HigherDepartmentId)
        {
            if (Name == null || Name == "")
            {
                Name = "Новый департамент";
            }                                                                 //присвоение имени по умолчанию
            Department department = new Department(Name, HigherDepartmentId); //создаем новый экземпляр департамента

            Departments.Add(department);                                      //добавляем экземпляр в коллекцию департаментов организации
            if (HigherDepartmentId == 0)
            {
                SlaveDepartmentId.Add(department.Id);
            }                                                                      //если Id вышестоящего департамента 0 - подчиняем организации
            else
            {
                this[HigherDepartmentId].SlaveDepartmentId.Add(department.Id);
            }                                                                       //или подчиняем указанному департаменту
        }
示例#3
0
 /// <summary>
 /// Удаление департамента (сотрудники перемещаются в нераспределенные)
 /// </summary>
 /// <param name="department">Удаляемый экземпляр</param>
 public void Delete_Department(Department department)
 {
     if (department.SlaveDepartmentId.Count != 0)  //если у департамента есть подчиненные департаменты
     {
         //все подчиненные департаменты переподчиняем вышестоящему департаменту
         while (department.SlaveDepartmentId.Count != 0)
         {
             int Id = department.SlaveDepartmentId.Count - 1;
             Change_Parent_Department(this[department.SlaveDepartmentId[Id]], department.HigherDepartmentId);
         }
     }
     if (department.ChiefId != 0)
     {
         Add_Unallocated_Worker(this[department.ChiefId, department.Id]); //переводим руководителя в нераспределенные
     }
     if (department.DepartmentEmployeesId.Count != 0)
     {
         foreach (var Id in department.DepartmentEmployeesId) //переводим всех сотрудников в нераспределенные
         {
             Worker worker = this[Id, department.Id];
             Add_Unallocated_Worker(worker);
         }
     }
     //удаляем Id департамента из вышестояшего департамента/организации
     if (department.HigherDepartmentId != 0) //удаляем из вышестоящего
     {
         this[department.HigherDepartmentId].SlaveDepartmentId.Remove(department.Id);
     }
     else
     {
         SlaveDepartmentId.Remove(department.Id);
     }                                                   //или удаляем из подчиненных напрямую организации
     //удаляем сам департамент
     Departments.Remove(department);                     //удаляем департамент из коллекции, где хранится его экземпляр
     SalaryService.MainMethodSetSalaryForManagers(this); //пересчитываем ЗП
 }