public async Task <ActionResult> RegisterInvitee(RegisterInviteeViewModel model, string originalEmail, HttpPostedFileBase avatarPath)
        {
            if (ModelState.IsValid)
            {
                if (originalEmail.Trim().ToLower() != model.Email.Trim().ToLower())
                {
                    ModelState.AddModelError("Email", "Please use the Email you were invited with.");
                    model.Email = originalEmail;
                    return(View(model));
                }

                var avatarsDir = "Avatars";
                if (!String.IsNullOrWhiteSpace(WebConfigurationManager.AppSettings["AvatarsDirectoryName"]))
                {
                    avatarsDir = WebConfigurationManager.AppSettings["AvatarsDirectoryName"].Trim();
                }

                var displayName = String.IsNullOrWhiteSpace(model.DisplayName) ? $"{model.FirstName} {model.LastName}" : model.DisplayName;
                var user        = new ApplicationUser
                {
                    FirstName   = model.FirstName,
                    LastName    = model.LastName,
                    DisplayName = displayName,
                    UserName    = model.Email,
                    Email       = model.Email,
                    AvatarPath  = $"/{avatarsDir}/default_user.png",
                    HouseholdId = model.HouseholdId
                };

                if (avatarPath != null && HelperMethods.IsWebFriendlyImage(avatarPath))
                {
                    var fileName         = avatarPath.FileName.GenerateSlug();
                    var massagedFileName = fileName.ApplyDateTimeStamp();
                    var dirPath          = Server.MapPath($"~/{avatarsDir}/");

                    if (HelperMethods.EnsureDirectoryExists(dirPath))
                    {
                        var filePath = Path.Combine(dirPath, massagedFileName);
                        avatarPath.SaveAs(filePath);
                        user.AvatarPath = $"/{avatarsDir}/{massagedFileName}";
                    }
                }

                var result = await UserManager.CreateAsync(user);

                if (result.Succeeded)
                {
                    int hId = model.HouseholdId.GetValueOrDefault();
                    HelperMethods.AddUserToHousehold(model.Email, hId);

                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    return(RedirectToAction("Dashboard", "Home"));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
        public ActionResult RegisterInvitee(string code)
        {
            if (String.IsNullOrWhiteSpace(code) || !HelperMethods.InvitationRegistrationIsValid(code, out var email, out int?householdId))
            {
                return(RedirectToAction("Register", "Account"));
            }

            if (HelperMethods.InviteeAlreadyRegistered(email))
            {
                return(RedirectToAction("LoginInvitee", "Account", new { code }));
            }
            RegisterInviteeViewModel registerInviteeViewModel = new RegisterInviteeViewModel
            {
                Email       = email,
                HouseholdId = householdId
            };

            return(View(registerInviteeViewModel));
        }