Beispiel #1
0
        public async Task <ActionResult> Create([Bind(Include = "Id,Name")] Household household)
        {
            if (ModelState.IsValid)
            {
                db.Households.Add(household);
                db.SaveChanges();

                //#1 Update user created to reference household
                var userId = User.Identity.GetUserId();
                var user   = db.Users.Find(userId);
                user.HouseholdId = household.Id;

                //#2 whoever creates HH inherits role of HOH
                roleHelper.AddUserToRole(userId, RoleName.HOH);
                db.SaveChanges();

                await AuthorizerHelper.ReauthorizeUserAsync(userId);

                return(RedirectToAction("DashBoard"));
            }



            return(View(household));
        }
        public async Task <ActionResult> AcceptRegister(AcceptRegisterViewModel model, string keyCode)
        {
            var invite = db.Invitations.FirstOrDefault(i => i.KeyCode.ToString() == keyCode);

            if (model.Keycode.ToString() == keyCode)
            {
                var user = new ApplicationUser
                {
                    UserName    = model.Email,
                    Email       = model.Email,
                    FirstName   = model.FirstName,
                    LastName    = model.LastName,
                    DisplayName = model.DisplayName,
                    HouseholdId = invite.HouseholdId
                };

                await UserManager.CreateAsync(user, model.Password);

                db.SaveChanges();


                var userId  = UserManager.FindByEmail(model.Email).Id;
                var newUser = db.Users.Find(userId);
                roleHelper.AddUserToRole(userId, RoleName.Member);
                invite.Accepted = DateTime.Now;
                invite.Expired  = true;
                db.SaveChanges();

                await AuthorizerHelper.ReauthorizeUserAsync(userId);


                return(RedirectToAction("Dashboard", "Households"));
            }

            return(View(model));
        }