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(); }
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($"Работник удален"); }