У меня есть это решение для ввода отдельных пользователей в мое приложение, но теперь нам нужно включить всех (более 2k) наших пользователей, у меня есть следующий код, который создает одного пользователя из модели.
Однопользовательская запись.
РАБОТАЕТ БОЛЬШОЙ ДЛЯ ОДНОГО ПОЛЬЗОВАТЕЛЯ.
public interface ICreateUser
{
void Create(CreateUserModel model);
}
public class CreateUser : ICreateUser
{
private readonly IUserManagementService _userManagementService;
private readonly IRoleService _roleService;
private readonly IAuthorisationService _authorisationService;
private readonly IPasswordManagementService _passwordManagementService;
public CreateUser(IUserManagementService userManagementService, IRoleService roleService,
IAuthorisationService authorisationService, IPasswordManagementService passwordManagementService)
{
_userManagementService = userManagementService;
_roleService = roleService;
_authorisationService = authorisationService;
_passwordManagementService = passwordManagementService;
}
public void Create(CreateUserModel model)
{
var user = new User
{
Email = model.AdminEmail,
FirstName = newUser.FirstName,
LastName = newUser.LastName,
IsActive = true
};
_passwordManagementService.SetPassword(user, model.AdminPassword, model.ConfirmPassword);
_userManagementService.AddUser(user);
CurrentRequestData.CurrentUser = user;
var memberUserRole = new UserRole
{
Name = UserRole.Member
};
user.Roles = new HashSet<UserRole> { memberUserRole };
memberUserRole.Users = new HashSet<User> { user };
_roleService.SaveRole(memberUserRole);
_authorisationService.Logout();
_authorisationService.SetAuthCookie(user, true);
}
}
Моя попытка изменить это, чтобы добавить нескольких пользователей, окончилась неудачей, я использовал приведенный ниже список пользователей в качестве примера, но в будущем буду отбирать пользователей из электронной таблицы. Ниже приведен пример цикла foreach для каждого пользователя, который создал новую роль для каждого пользователя. Не очень хорошо, поскольку я рад, что работаю с базой данных dev.
РАБОТАЕТ ДЛЯ ДОБАВЛЕНИЯ НЕСКОЛЬКИХ ПОЛЬЗОВАТЕЛЕЙ, НО ДОБАВЛЯЕТ РОЛЬ ДЛЯ КАЖДОГО ПОЛЬЗОВАТЕЛЯ
public void Create()
{
IList<NewUser> newUserList = new List<NewUser>() {
new NewUser(){ Email = "Someuser@yahoo.com", FirstName = "Some", LastName = "User", Password = "Password", PasswordConfirm = "Password" },
new NewUser(){ Email = "Someuser@eaglemg.com", FirstName = "Some", LastName = "User", Password = "Password", PasswordConfirm = "Password" },
new NewUser(){ Email = "Someuser@aol.com", FirstName = "Some", LastName = "User", Password = "Password", PasswordConfirm = "Password" },
new NewUser(){ Email = "Someuser@hotmail.com", FirstName = "Some", LastName = "User", Password = "Password", PasswordConfirm = "Password" },
new NewUser(){ Email = "Someuser@comcast.net", FirstName = "Some", LastName = "User", Password = "Password", PasswordConfirm = "Password" },
new NewUser(){ Email = "Someuser@aol.com", FirstName = "Some", LastName = "User", Password = "Password", PasswordConfirm = "Password" },
new NewUser(){ Email = "Someuser@verizon.net", FirstName = "Some", LastName = "User", Password = "Password", PasswordConfirm = "Password" }
};
foreach (NewUser newUser in newUserList)
{
var user = new User
{
Email = newUser.Email,
FirstName = newUser.FirstName,
LastName = newUser.LastName,
IsActive = true
};
_passwordManagementService.SetPassword(user, newUser.Password, newUser.PasswordConfirm);
_userManagementService.AddUser(user);
CurrentRequestData.CurrentUser = user;
var memberUserRole = new UserRole
{
Name = UserRole.Member
};
user.Roles = new HashSet<UserRole> { memberUserRole };
memberUserRole.Users = new HashSet<User> { user };
_roleService.SaveRole(memberUserRole);
_authorisationService.Logout();
_authorisationService.SetAuthCookie(user, true);
}
}
Моя следующая попытка заключается в том, что у меня возникают проблемы, и я не могу понять код для обновления пользователя существующей ролью после создания, см. Ниже.
foreach (NewUser newUser in newUserList)
{
var user = new User
{
Email = newUser.Email,
FirstName = newUser.FirstName,
LastName = newUser.LastName,
IsActive = true
};
_passwordManagementService.SetPassword(user, newUser.Password, newUser.PasswordConfirm);
_userManagementService.AddUser(user);
CurrentRequestData.CurrentUser = user;
}
var roleName = "Member";
if (_roleService.GetRoleByName(roleName) != null)
{
//NEED HELP HERE
var umpireUserRole = new UserRole
{
Name = UserRole.Umpire
};
user.Roles = new HashSet<UserRole> { umpireUserRole };
umpireUserRole.Users = new HashSet<User> { user };
_roleService.SaveRole(umpireUserRole);
//END OF NEED HELP
}
else
{
var umpireUserRole = new UserRole
{
Name = UserRole.Umpire
};
user.Roles = new HashSet<UserRole> { umpireUserRole };
umpireUserRole.Users = new HashSet<User> { user };
_roleService.SaveRole(umpireUserRole);
}
Как видите, я немного смущен, любая помощь будет принята с благодарностью.
Заранее спасибо