// Display view to search for people to add to the group public async Task <IActionResult> AddPeopleToGroup(int GroupId) { var viewModel = new AddToPeopleToGroupViewModel { Group = await _context.Groups .FirstOrDefaultAsync(g => g.GroupId == GroupId) }; return(View(viewModel)); }
// Search for users to add to the group and display search results public async Task <IActionResult> SearchForPeople(AddToPeopleToGroupViewModel viewModel) { var searchText = viewModel.SearchText; viewModel.Group = await _context.Groups .Include(g => g.GroupUsers) .FirstOrDefaultAsync(g => g.GroupId == viewModel.GroupId); viewModel.CurrentUser = await GetCurrentUserAsync(); viewModel.Users = await _context.ApplicationUsers .Where(u => !u.GroupUsers.Any(gu => gu.GroupId == viewModel.GroupId)) .Where(u => u.FirstName.Contains(searchText) || u.LastName.Contains(searchText)) .ToListAsync(); return(View(viewModel)); }
public async Task <IActionResult> AddUserToGroup(AddToPeopleToGroupViewModel viewModel) { var groupId = viewModel.GroupId; var userId = viewModel.UserId; var addedUser = await _context.Users.FirstOrDefaultAsync(u => u.Id == userId); var existingGroupUser = await _context.GroupUsers.FirstOrDefaultAsync(gu => gu.GroupId == groupId && gu.UserId == userId && !gu.Joined); if (existingGroupUser == null) { var groupUser = new GroupUser { GroupId = groupId, UserId = userId, Joined = true }; _context.GroupUsers.Add(groupUser); await _context.SaveChangesAsync(); var successMsg = TempData["SuccessMessage"] as string; TempData["SuccessMessage"] = $"{addedUser.FirstName} {addedUser.LastName} has been added to your group!"; viewModel.Group = await _context.Groups.FirstOrDefaultAsync(g => g.GroupId == viewModel.GroupId); return(RedirectToAction(nameof(SearchForPeople), new { GroupId = viewModel.GroupId, SearchText = viewModel.SearchText, })); } // accept user request to join group by changing Joined to true else { existingGroupUser.Joined = true; _context.GroupUsers.Update(existingGroupUser); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Details), new { id = groupId })); } }