public ActionResult RegisterAndAdd(int invitationId, Guid guid) { Invitation invitation = db.Invitations.FirstOrDefault(x => x.Id == invitationId); Household householdToJoin = db.Households.FirstOrDefault(x => x.Id == invitation.HouseholdId); ApplicationUser invitedUser = db.Users.FirstOrDefault(x => x.Email == invitation.ToEmail); if (invitation.JoinCode == guid) { if (invitedUser != null) { invitedUser.Households.Add(householdToJoin); LoginViewModel loginModel = new LoginViewModel(); TempData["Message"] = "You have been successfully added to " + householdToJoin.HouseholdName + ". Please login to continue."; db.SaveChanges(); return RedirectToAction("Login", "Account"); } else { RegisterViewModel model = new RegisterViewModel(); model.Email = invitation.ToEmail; model.HouseholdName = "Default"; ViewBag.HouseholdId = invitation.HouseholdId; ViewBag.InvitationId = invitationId; ViewBag.JoinCode = guid; return View(model); } } throw new HttpException(401, "Unauthorized access"); }
public async Task<ActionResult> RegisterAndAdd(RegisterViewModel model, int householdId, int invitationId, Guid guid) { if (ModelState.IsValid) { var user = new ApplicationUser { UserName = model.UserName, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName, ProfilePicUrl = "~/Images/cascades.jpg" }; var result = await UserManager.CreateAsync(user, model.Password); if (result.Succeeded) { await db.SaveChangesAsync(); ApplicationUser savedUser = db.Users.FirstOrDefault(x => x.UserName == user.UserName); Household householdToJoin = db.Households.FirstOrDefault(x => x.Id == householdId); List<Household> households = new List<Household>(); households.Add(householdToJoin); savedUser.Households.Add(householdToJoin); await db.SaveChangesAsync(); await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771 //// Send an email with this link //string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id); //var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); //await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>"); return RedirectToAction("AtAGlance", "Home"); } return RedirectToAction("JoinHousehold", "Invitation", new { inviteHouseholdId = householdId, invitationId = invitationId, guid = guid }); } else { return RedirectToAction("JoinHousehold", "Invitation", new { inviteHouseholdId = householdId, invitationId = invitationId, guid = guid}); } }
public async Task<ActionResult> Register(RegisterViewModel model) { if (ModelState.IsValid) { Household household = new Household { HouseholdName = model.HouseholdName, IsDefault = true }; List<Household> households = new List<Household>(); households.Add(household); var user = new ApplicationUser { UserName = model.UserName, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName, Households = households, ProfilePicUrl = "~/Images/cascades.jpg" }; var result = await UserManager.CreateAsync(user, model.Password); if (result.Succeeded) { await db.SaveChangesAsync(); Household addedHousehold = db.Households.OrderByDescending(x => x.Id).FirstOrDefault(); //add a default budget Budget defaultBudget = new Budget { BudgetName = "Default Budget", HouseholdId = addedHousehold.Id, IsDefault = true }; defaultBudget.BudgetItems.Add(new BudgetItem { CategoryId = 5, Amount = 50 }); defaultBudget.BudgetItems.Add(new BudgetItem { CategoryId = 4, Amount = 100 }); defaultBudget.BudgetItems.Add(new BudgetItem { CategoryId = 3, Amount = 150 }); db.Budgets.Add(defaultBudget); await db.SaveChangesAsync(); addedHousehold.SelectedBudgetId = defaultBudget.Id; db.SaveChanges(); await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771 //// Send an email with this link //string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id); //var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); //await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>"); return RedirectToAction("AtAGlance", "Home"); } AddErrors(result); } // If we got this far, something failed, redisplay form return View(model); }