예제 #1
0
        /// <summary>
        /// Обработка события нажатия кнопки "Сохранить"
        /// </summary>
        private void Add_Click(object sender, RoutedEventArgs e)
        {
            //проверяем часть полей и ComboBox имеют значения, если нет, то присваиваем значения по умолчанию (0)
            int    DepartmentId = (DepBox.SelectedItem != null) ? (DepBox.SelectedItem as Department).Id : 0;
            int    age          = (Age.Text != "") ? (Convert.ToInt32(Age.Text)) : 0;
            int    projects     = (Projects.Text != "") ? (Convert.ToInt32(Projects.Text)) : 0;
            Worker worker;                    //объявляем экземпляр работника

            if (WorkerType == typeof(Intern)) //далее инициализируем его в записимости от выбранного типа
            {
                worker = new Intern(
                    Name.Text, Surname.Text, age, Position.Text, DepartmentId, projects);
            }
            else if (WorkerType == typeof(Workman))
            {
                worker = new Workman(
                    Name.Text, Surname.Text, age, Position.Text, DepartmentId, projects);
            }
            else if (WorkerType == typeof(Manager))
            {
                worker = new Manager(
                    Name.Text, Surname.Text, age, Position.Text, DepartmentId, projects);
            }
            else
            {
                DepartmentId = 0;
                worker       = new TopManager(
                    Name.Text, Surname.Text, age, Position.Text, projects);
            }
            organization.AddWorker(DepartmentId, worker, WorkerType); //добавляем созданный экземпляр работника в организацию
            MainWindow.winReference.RefreshWorkersList();             //обновляем список сотрудников в MainWindow
            this.Close();
        }
예제 #2
0
        /// <summary>
        /// Создание экземпляра сотрудника со случайными полями
        /// </summary>
        /// <param name="NewDepartment">Департамент, в котором будет числиться сотрудник</param>
        /// <returns>Экземпляр Workman</returns>
        private static Workman RandomWorkman(Department NewDepartment)
        {
            Workman RndWorkman = new Workman(
                $"Имя_{R.Next(1, 99)}", $"Фамилия_{R.Next(1, 99)}", R.Next(18, 71), "Сотрудник", NewDepartment.Id, R.Next(1, 6));

            //создаем сотрудника
            RndWorkman.DepartmentName = NewDepartment.Name;         //прописываем ему поле "название департамента"
            NewDepartment.DepartmentEmployeesId.Add(RndWorkman.Id); //добавляем Id сотрудника в список Id работников департамента
            return(RndWorkman);                                     //возвращаем экземпляр сотрудника
        }
예제 #3
0
        /// <summary>
        /// Изменяет тип экземпляра класса-наследника Worker на другой тип класса-наследника Worker
        /// </summary>
        /// <param name="worker">Исходный экземпляр Worker</param>
        /// <param name="new_Type">Новый тип класса-наследника</param>
        public void Changing_Type_of_Class(Worker worker, string new_Type)
        {
            Worker new_worker; //объявляем новый экземпляр

            if (new_Type == "Intern")
            {
                new_worker = new Intern(worker);
            }                                                              //если интерн
            else if (new_Type == "Workman")
            {
                new_worker = new Workman(worker);
            }                                                                     //если сотрудник
            else if (new_Type == "Manager")
            {
                new_worker = new Manager(worker);
            }                                                                    //если руководитель
            else
            {
                new_worker = new TopManager(worker);
            }                                                                     //если TopManager
            DeleteWorker(worker);                                                 //Удаляем исходный экземпляр из Organization
            AddWorker(new_worker.DepartmentId, new_worker, new_worker.GetType()); //Добавляем новый экземпляр в Organization
        }
예제 #4
0
        /// <summary>
        /// Переводит сотрудника из одного департамента в другой (без смены типа)
        /// </summary>
        /// <param name="worker">Исходный экземпляр Worker</param>
        /// <param name="DepartmentId">Id департамента назначения</param>
        public void Transfer_Worker_to_Department(Worker worker, int DepartmentId)
        {
            Worker new_worker;                       //объявляем новый экземпляр
            string new_Type = worker.GetType().Name; //получаем класс экземпляра worker

            if (new_Type == "Intern")
            {
                new_worker = new Intern(worker);
            }                                                              //если интерн
            else if (new_Type == "Workman")
            {
                new_worker = new Workman(worker);
            }                                                                     //если сотрудник
            else if (new_Type == "Manager")
            {
                new_worker = new Manager(worker);
            }                                                                     //если руководитель
            else
            {
                new_worker = new TopManager(worker);
            }                                                          //если TopManager
            DeleteWorker(worker);                                      //Удаляем исходный экземпляр из Organization
            AddWorker(DepartmentId, new_worker, new_worker.GetType()); //Добавляем новый экземпляр в Organization
        }