예제 #1
0
파일: UserService.cs 프로젝트: Lanc3000/CRM
        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("Ошибка при создании роли"));
            }
        }
예제 #2
0
        public IActionResult NewRole(ObjRoleEdit objRoleEdit)
        {
            if (!ModelState.IsValid)
            {
                return(View(objRoleEdit));
            }

            var newId = _userService.AddRole(objRoleEdit);

            return(RedirectToAction("Roles"));
        }
예제 #3
0
        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));
        }
예제 #4
0
파일: UserService.cs 프로젝트: Lanc3000/CRM
        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);
        }
예제 #5
0
파일: UserService.cs 프로젝트: Lanc3000/CRM
        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("Ошибка при сохранении изменений роли"));
            }
        }