public async Task <ActionResult> ShowAuditInfoUser_UserSelected(ActionWithUserSearchData data, string submitAction, string filterAsString, string foundUserIds) { if (!this.HttpContext.Session.HasSystemActionRights() || !this.HttpContext.Session.HasSystemActionRight(ActionRights.UserManagement)) { return(RedirectToAction("Index", "Home")); } if (submitAction == "SearchAgain") { return(await ShowAuditInfoUser()); } if (submitAction != "PerformAction") { return(RedirectToAction("Index", "Home")); } if (data.FindUserData.SelectedUserIDs == null || data.FindUserData.SelectedUserIDs.Count <= 0 || string.IsNullOrWhiteSpace(foundUserIds)) { return(await ShowAuditInfoUser_Find(data)); } int selectedUserId = data.FindUserData.SelectedUserIDs.FirstOrDefault(); var auditDataForView = new ShowAuditInfoUserData(data.FindUserData) { AuditData = await SecurityGuiHelper.GetAllAuditsForUserAsync(selectedUserId), AuditedUser = await UserGuiHelper.GetUserAsync(selectedUserId) }; data.FindUserData.OverrideFilterAsString(filterAsString); // we'll keep the search form open so we can quickly view data of multiple users without searching again. This means we'll keep the finduserdata state // as it is, as this is the end state of this action anyway. data.FindUserData.ActionButtonText = "View audit info"; data.FindUserData.FindUserState = AdminFindUserState.UsersFound; var userIDsFoundAsString = foundUserIds.Split(','); var userIDsOfUsersToLoad = userIDsFoundAsString.Select(us => Convert.ToInt32(us)).ToList(); data.FindUserData.FoundUsers = await UserGuiHelper.GetUsersAsync(userIDsOfUsersToLoad); return(View("~/Views/Admin/ShowAuditInfoUser.cshtml", auditDataForView)); }