/// <summary> /// Method for adding a new user /// </summary> /// <param name="newUserAc"></param> /// <returns></returns> public async Task AddNewUserAsync(AddUserAc newUserAc, ApplicationUser currentUser) { // Add new user ApplicationUser newUser = new ApplicationUser { Name = newUserAc.Name, Email = newUserAc.Email, UserName = newUserAc.Email, CreatedOn = DateTime.UtcNow, CreatedBy = currentUser.Id }; await _userManager.CreateAsync(newUser, newUserAc.Password); // Add user institute UserInstituteMapping userInstituteMapping = new UserInstituteMapping { InstituteId = newUserAc.InstituteId, UserId = newUser.Id, CreatedOn = DateTime.UtcNow }; _iMSDbContext.UserInstituteMappings.Add(userInstituteMapping); await _iMSDbContext.SaveChangesAsync(); // Add user role foreach (int userGroupId in newUserAc.UserGroupIdList) { UserGroup userGroup = await _iMSDbContext.UserGroups.FirstOrDefaultAsync(x => x.Id == userGroupId); if (userGroup != null) { UserGroupMapping userRolesMapping = new UserGroupMapping { UserGroupId = userGroup.Id, UserId = newUser.Id, CreatedOn = DateTime.UtcNow }; _iMSDbContext.UserGroupMapping.Add(userRolesMapping); await _iMSDbContext.SaveChangesAsync(); } } // Send welcome mail to the created user if (newUserAc.Email != null) { await SendWelcomeMail(new WelcomeMailToUserAc { Name = newUserAc.Name, Password = newUserAc.Password }, newUserAc.Email, newUserAc.Name); } }
public async Task <IActionResult> AddNewUserAsync([FromBody] AddUserAc newUserAc) { ApplicationUser existingUserWithEmail = await _userManager.FindByEmailAsync(newUserAc.Email); if (existingUserWithEmail != null) { return(Ok(new { Message = "User already exist with this email", HasError = true })); } if (ModelState.IsValid) { ApplicationUser currentUser = await _userManager.FindByNameAsync(User.Identity.Name); await _userManagementRepository.AddNewUserAsync(newUserAc, currentUser); return(Ok(new { Message = "User has been created successfully" })); } else { if (string.IsNullOrEmpty(newUserAc.Name)) { return(Ok(new { Message = "User's Name can't be null or empty", HasError = true })); } else if (string.IsNullOrEmpty(newUserAc.Password)) { return(Ok(new { Message = "User's Password can't be null or empty", HasError = true })); } else if (newUserAc.UserGroupIdList.Count == 0) { return(Ok(new { Message = "Please select user role", HasError = true })); } else { return(Ok(new { Message = "User's Institute can't be null or empty", HasError = true })); } } }