Пример #1
0
        /// <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);                                                                                   //возвращаем директора
        }
Пример #2
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();
        }
Пример #3
0
        /// <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);                          //добавляем директора в список работников
        }
Пример #4
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
        }
Пример #5
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
        }