Пример #1
0
        public override void EditElement(int id, Employee newEmployee)
        {
            logger.Info($"Выполняется редактирование работника...");
            if (HospitalManager.GetRoleCurrentEmployee() != UserRole.Менеджер)
            {
                throw new FieldAccessException("Редактировать пользователей может только менеджер");
            }

            Employee employee = FindById(id);

            if (employee is null)
            {
                throw new ArgumentNullException("Выбранного пользователя нет в базе");
            }

            if (HospitalManager.GetPriorityCurrentUser() < employee.Profile.Priority)
            {
                throw new FieldAccessException("Уровень вашего доступа недостаточен для удаления выбранного пользователя");
            }

            newEmployee.Id = id;
            ValidateElement(newEmployee);
            logger.Info($"Редактирование работника {employee}...");
            employee.Edit(newEmployee);
            logger.Info("Редактирование завершено");
            Save();
        }
Пример #2
0
        public override void RemoveElement(int id)
        {
            logger.Info($"Выполняется удаления работника...");
            if (HospitalManager.GetRoleCurrentEmployee() != UserRole.Менеджер)
            {
                throw new Exception("Удалять пользователей может только менеджер");
            }

            Employee employee = FindById(id);

            if (employee is null)
            {
                throw new ArgumentException("Выбранного пользователя нет в базе");
            }

            if (employee.Role == UserRole.Менеджер)
            {
                logger.Info($"Попытка удаления менеджера {employee}...");
                if (employee.Profile.Priority == UserPriority.Высокий)
                {
                    throw new Exception("Нельзя удалить главного менеджера");
                }
                if (HospitalManager.GetPriorityCurrentUser() <= employee.Profile.Priority)
                {
                    throw new Exception("Уровень вашего доступа недостаточен для удаления выбранного пользователя");
                }
            }
            base.RemoveElement(id);
            logger.Info($"Работник удален");
        }