public async Task <ActionResult> JoinHousehold([Bind(Include = "MemberId,HouseholdToJoinId")] JoinHouseholdVM joinHouseholdVm) { var user = db.Users.Find(joinHouseholdVm.UserId); if (user.Households == null) { return(RedirectToAction("Create", "Household")); // go to register and join instead } if (ModelState.IsValid) { user.HouseholdId = joinHouseholdVm.HouseholdToJoinId; var invitation = db.Invitations.FirstOrDefault(i => i.HouseholdId == user.HouseholdId && i.Email == user.Email); invitation.Accepted = true; db.Entry(user).State = EntityState.Modified; db.Entry(invitation).State = EntityState.Modified; await db.SaveChangesAsync(); await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false); return(RedirectToAction("Index", "Home")); } return(View(joinHouseholdVm)); }
public ActionResult JoinHousehold(int invitationHouseholdId, int invitationId, Guid inviteCode) { var emailOfJoiningUser = db.Invitations.FirstOrDefault(i => i.InviteCode == inviteCode).Email; var user = db.Users.FirstOrDefault(u => u.Email == emailOfJoiningUser); Invitation invitation = db.Invitations.FirstOrDefault(i => i.Id == invitationId); if (inviteCode != invitation.InviteCode) { return(HttpNotFound()); } JoinHouseholdVM joinHouseholdVm = new JoinHouseholdVM(); joinHouseholdVm.UserId = user.Id; joinHouseholdVm.HouseholdToJoinId = invitationHouseholdId; joinHouseholdVm.HouseholdToJoinName = db.Households.Find(invitationHouseholdId).Name; return(View(joinHouseholdVm)); }