public ServiceResult AddRole(ObjRoleEdit objRoleEdit) { try { //_logger.LogTrace("Save role start"); var roleTitle = objRoleEdit.Title.Trim(); var roleName = objRoleEdit.Name.Trim(); var roles = _roleRepository.GetRoles().ToList(); if (roles.Any(r => string.Equals(r.Title, roleTitle))) { return(ServiceResult.ErrorResult("Роль с таким именем уже существует")); } var role = new Role() { Title = roleTitle, Name = roleName, }; _roleRepository.Insert(role); _roleRepository.SaveChanges(); //_logger.LogTrace("Role Saving"); //Получили названия всех выбранных разрешений var selectedPemissionNames = objRoleEdit.SelectedActivities .Where(x => x.Checked) .Select(x => x.Name) .ToList(); //Отобрали по именам var selectedPermissions = ActivityHelper.GetActivities() .SelectMany(x => x.Permisioins) .Where(x => selectedPemissionNames.Contains(x.Key)) .Select(x => x.Key) .ToList(); if (selectedPermissions.Any()) { foreach (var permission in selectedPermissions) { var RoleActivity = new RoleActivity() { RoleId = role.Id, Activity = permission }; _roleActivityRepository.Insert(RoleActivity); } _roleActivityRepository.SaveChanges(); } //_logger.LogTrace("RoleActivity save success!!"); return(ServiceResult.SuccessResult(role.Id)); } catch (Exception ex) { //_logger.LogError(ex.ToString()); return(ServiceResult.ErrorResult("Ошибка при создании роли")); } }
public IActionResult NewRole(ObjRoleEdit objRoleEdit) { if (!ModelState.IsValid) { return(View(objRoleEdit)); } var newId = _userService.AddRole(objRoleEdit); return(RedirectToAction("Roles")); }
public IActionResult EditRole(ObjRoleEdit objRoleEdit) { if (!ModelState.IsValid) { return(View(objRoleEdit)); } var result = _userService.EditRole(objRoleEdit); if (result.Success) { return(RedirectToActionOk("Roles", "Роль успешно создана")); } return(RedirectToActionError("EditRole", "Configurations", objRoleEdit, result.ErrorMessage)); }
public ObjRoleEdit GetRoleForEdit(int id) { var role = _roleRepository.GetFull(id); var model = new ObjRoleEdit() { Id = role.Id, Title = role.Title, Name = role.Name, SelectedActivities = role.RoleActivitys .Select(x => new ObjActivitySelect() { Name = x.Activity, Checked = true }) .ToList() }; return(model); }
public ServiceResult EditRole(ObjRoleEdit model) { try { //_logger.LogTrace("Start edti role saving"); //обновляем роль var role = _roleRepository.GetFull(model.Id); if (role == null) { return(ServiceResult.ErrorResult("Отсутствует редактируемая роль")); } //_logger.LogTrace("Change Role {0}", role.Title); var roleTitle = model.Title.Trim(); var roleName = model.Name.Trim(); var roles = _roleRepository.GetRoles(); if (roles.Any(r => string.Equals(r.Title, roleTitle) && r.Id != model.Id)) { return(ServiceResult.ErrorResult("Роль с таким именем уже существует")); } role.Title = roleTitle; role.Name = roleName; _roleRepository.Update(role); _roleRepository.SaveChanges(); //_logger.LogTrace("Edit role save"); role.RoleActivitys.ForEach(x => _roleActivityRepository.Delete(x.Id)); //Получаем названия всех выбранных разрешений var selectedPemissionNames = model.SelectedActivities .Where(x => x.Checked) .Select(x => x.Name) .ToList(); //Получаем по именам var selectedPermissions = ActivityHelper.GetActivities() .SelectMany(x => x.Permisioins) .Where(x => selectedPemissionNames.Contains(x.Key)) .Select(x => x.Key) .ToList(); if (selectedPermissions.Any()) { foreach (var permission in selectedPermissions) { var RoleActivity = new RoleActivity() { RoleId = role.Id, Activity = permission }; _roleActivityRepository.Insert(RoleActivity); } _roleActivityRepository.SaveChanges(); } //_logger.LogTrace("Role activity save"); return(ServiceResult.SuccessResult(role.Id)); } catch (Exception ex) { //_logger.LogError("Saving Role error id = {0} / error: {1}", model.Id, ex); return(ServiceResult.ErrorResult("Ошибка при сохранении изменений роли")); } }