/// <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(); }
/// <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); //возвращаем экземпляр сотрудника }
/// <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 }
/// <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 }