public async Task <OperationResult> ResetPassword([FromBody] UserItem userItem) { var operationResult = new OperationResult { IsSuccess = false }; try { if (!string.IsNullOrEmpty(userItem.UserName)) { var user = userManager.FindByNameAsync(userItem.UserName).Result; if (user != null) { userItem.Adapt <UserItem, User>(user); var code = await userManager.GeneratePasswordResetTokenAsync(user); var result = await userManager.ResetPasswordAsync(user, code, userItem.NewPassword); if (result.Succeeded) { operationResult.IsSuccess = true; operationResult.SuccessMessage = "Password Reset Successfully."; } else { operationResult.ErrorMessage = string.Join(", ", result.Errors.Select(p => p.Description).ToArray()); } } else { operationResult.ErrorMessage = "User not found!"; } } else { operationResult.ErrorMessage = "User not found!"; } } catch (Exception ex) { operationResult.ErrorMessage = ex.Message; } return(operationResult); }
public async Task <OperationResult> Save([FromBody] UserItem userItem) { var operationResult = new OperationResult { IsSuccess = false }; try { if (!(userItem.UserId == Guid.Empty)) { var user = userManager.FindByNameAsync(userItem.UserName).Result; if (user != null) { bool updateUserEmail = user.Email != userItem.Email; //Set Modified Date user.DateModified = DateTime.UtcNow; userItem.Adapt(user); var result = await userManager.UpdateAsync(user); if (updateUserEmail) { user.UserName = user.Email; await userManager.UpdateNormalizedEmailAsync(user); await userManager.UpdateNormalizedUserNameAsync(user); } if (result.Succeeded) { foreach (var ud in UserRoleDetail.GetAll().Where(r => r.UserId == user.Id).ToList()) { UserRoleDetail.Remove(ud.UserRoleDetailId); } foreach (var role in userItem.SelectedRole) { UserRoleDetail.Add(new UserRoleDetail { RoleId = role.RoleId, UserId = user.Id, IsActive = true }); } operationResult.IsSuccess = true; operationResult.SuccessMessage = "User Updated Successfully."; } else { operationResult.ErrorMessage = string.Join(", ", result.Errors.Select(p => p.Description).ToArray()); } } else { operationResult.ErrorMessage = "User not found!"; } } else { var newUser = userItem.Adapt <UserItem, User>(); newUser.Id = Guid.NewGuid().ToString(); newUser.UserName = userItem.Email; newUser.AdminId = UserEmail; newUser.DateCreated = DateTime.UtcNow; //get package id and organizatin id incase of non admin user if (newUser.AdminId != null) { var adminuser = userManager.FindByEmailAsync(newUser.AdminId).Result; newUser.OrganizationId = adminuser.OrganizationId; newUser.AdminId = adminuser.Id; } else { //save organization and then associate it with user if (!string.IsNullOrEmpty(userItem.OrganizationName)) { var org = new Organization { Name = userItem.OrganizationName }; OrganizationRepositoy.Add(org); newUser.OrganizationId = org.OrganizationId; } } var result = await userManager.CreateAsync(newUser, userItem.Password); if (result.Succeeded) { //get package id and organizatin id incase of non admin user if (string.IsNullOrEmpty(UserEmail)) { UserRoleDetail.Add(new UserRoleDetail { RoleId = Convert.ToInt32(Roles.Admin), UserId = newUser.Id, IsActive = true }); //admin role } else { foreach (var role in userItem.SelectedRole) { UserRoleDetail.Add(new UserRoleDetail { RoleId = role.RoleId, UserId = newUser.Id, IsActive = true }); } } operationResult.IsSuccess = true; operationResult.SuccessMessage = "User Created Successfully."; } else { operationResult.ErrorMessage = string.Join(", ", result.Errors.Select(p => p.Description).ToArray()); } } } catch (Exception ex) { operationResult.ErrorMessage = ex.Message; } return(operationResult); }