/// <summary> /// Метод создания неслучайного директора /// </summary> /// <param name="Profit">Прибыль организации</param> /// <returns>Экземпляр TopManager</returns> private static TopManager NoRandomDirector(int Profit) { TopManager NoRndTopManager = new TopManager("Сова", "Лесная", R.Next(20, 41), "Директор", R.Next(10, 20)); //создаем директора NoRndTopManager.Salary = Profit; //передаем ему всю прибыль return(NoRndTopManager); //возвращаем директора }
/// <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="organization">Экземпляр организации</param> /// <param name="Name">Имя организации</param> public static void RandomOrganization(Organization organization, string Name) { Worker.ClearIds(); //чистим Id работников Department.ClearIds(); //чистим Id департаментов organization.Workers = new ObservableCollection <Worker>(); //инициализируем коллекцию работников в экземпляре класса organization.Departments = new ObservableCollection <Department>(); //аналогично инициализируем коллекцию департамента organization.TopManagersId = new ObservableCollection <int>(); //инициализируем коллекцию топ-топ менеджеров organization.UnallocatedWorkersId = new ObservableCollection <int>(); //инициализируем коллекцию нераспределенных сотрудников organization.SlaveDepartmentId = new ObservableCollection <int>(); //инициализируем коллекцию подчиненных департаментов //добавляем в него департамент из метода создания демострационной организации organization.SlaveDepartmentId.Add(RandomDepartment(organization, "Департамент 1", 0, 3, 3)); SalaryService.MainMethodSetSalaryForManagers(organization); //Рассчитываем ЗП руководителей и зарплатные фонды департаментов organization.Name = Name; //присваиваем организации переданное в метод имя organization.Profit = R.Next(1, 101) * 1000000; //генерируем случайную прибыль TopManager Director = NoRandomDirector(organization.Profit); //создаем директора и передаем значение прибыли для расчета его ЗП organization.TopManagersId.Add(Director.Id); //Собственно, прописываем Id созданного директора в соответствующее поле организации organization.Workers.Add(Director); //добавляем директора в список работников }
/// <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 }