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));
        }