public User RegisterManualAlumni(ManualUserRegVm userDetails) { lock (_regSync) { if (string.IsNullOrEmpty(userDetails.Email)) { var count = _db.Users.ToList().Last().UserId + 1; userDetails.Email = "unknown_" + count + "@nitcaa.com"; } _userService.ValidateEmailUnique(userDetails.Email); var user = userDetails.GetUserEntity(); user.HashedPassword = _hashService.CreateHash(Constants.DefaultPassword); user.AccountStatus = UserRegisterStatus.Approved; user.EmailConfirmedOn = DateTime.UtcNow; // For Dummy Logging in user.CreateType = UserCreateTypes.Admin; user.UserRoles.Add(new UserRole { RoleType = UserRoleType.Alumni }); UpdateCourseDetails(userDetails.Batch, userDetails.BranchId, user); _db.Users.Add(user); _db.SaveChanges(); AddUserLog(user.UserId, "User Created Manually"); return(user); } }
/// <summary> /// Creates a new User and Employee from the details provided /// </summary> /// <param name="newUserDetails"></param> /// <returns></returns> public async Task <UserFullDetailsDto> CreateUserAsync(UserForRegistrationDto newUserDetails) { if (newUserDetails == null) { throw new ArgumentNullException(nameof(newUserDetails)); } // map elements of the UserForRegistrationDto to JobDescription and Employee var newJobDescription = new JobDescription() { Description = newUserDetails.JobDescription, Role = newUserDetails.Role }; var newEmployeeDetails = new Employee() { Firstname = newUserDetails.FirstName, Lastname = newUserDetails.LastName, Title = newUserDetails.Title, }; // Create the Password Hash and Salt _cryptoSvc.CreateHash(newUserDetails.Password, out var passwordHash, out var passwordSalt); // Combine elements to make the new user var newUser = new User() { Username = newUserDetails.Username, PasswordHash = passwordHash, PasswordSalt = passwordSalt, State = newUserDetails.State, JobDescription = newJobDescription, EmployeeDetails = newEmployeeDetails }; // Save to the database var result = await _userDal.AddAsync(newUser); return(result != null ? new UserFullDetailsDto(result) : null); }