public void AssignUserToOrganization(OrganizationUserRoleUpdateModel updateModel)
        {
            var organizationId = updateModel.OrganizationId;

            foreach (var user in updateModel.Users)
            {
                var oldRoles      = this.GetQueryable().Where(x => x.OrganizationId == organizationId && x.UserId == user.UserId);
                var rolesToDelete = oldRoles.Where(x => !user.OrganizationRoleIds.Any(c => c == x.RoleId));
                var rolesToInsert = user.OrganizationRoleIds.Where(x => !oldRoles.Any(c => c.RoleId == x));
                foreach (var roleId in rolesToInsert)
                {
                    Insert(new OrganizationUser()
                    {
                        OrganizationId = organizationId,
                        UserId         = user.UserId,
                        RoleId         = roleId
                    });
                }
                foreach (var roleId in rolesToDelete)
                {
                    Delete(roleId.ID);
                }
                SaveChanges();
            }
        }
Пример #2
0
        public OperationResult <UserModel> CreateUser(CreateUserModel createUserModel)
        {
            var result = ValidateUserData(createUserModel);

            if (!result.IsSuccess)
            {
                return(result);
            }
            var userEntity = createUserModel.ToEntity();
            var newUser    = _userRepository.Insert(userEntity);

            _userRepository.SaveChanges();
            _userRoleRepository.AssignRolesToUser(newUser.ID, new List <int>()
            {
                createUserModel.RoleId
            });
            var newUserModel = newUser.ToModel();

            _userRoleRepository.FetchRoles(newUserModel);
            if (createUserModel.OrganizationId != null)
            {
                var organizationId = createUserModel.OrganizationId.Value;
                var organizationRoleUpdateModel = new OrganizationUserRoleUpdateModel()
                {
                    OrganizationId = organizationId,
                    Users          = new List <OrganizationUserUpdateModel>()
                    {
                        new OrganizationUserUpdateModel()
                        {
                            UserId = newUserModel.ID,
                            OrganizationRoleIds = createUserModel.OrganizationRoleIds
                        }
                    }
                };
                _organizationUserRepository.AssignUserToOrganization(organizationRoleUpdateModel);
            }
            result.Data = newUserModel;
            return(result);
        }