示例#1
0
        public ActionResult Create([Bind(Include = "Name")] Household household)
        {
            if (ModelState.IsValid)
            {
                household.Created = DateTimeOffset.Now;
                db.Households.Add(household);
                db.SaveChanges();

                var user = db.Users.Find(User.Identity.GetUserId());
                usershelper.AddToRole(user.Id, "HOH");
                user.Protected        = true;
                user.EditBudget       = true;
                user.EditHousehold    = true;
                user.EditTransactions = true;
                user.AddBankAccounts  = true;
                user.HouseholdId      = household.Id;
                household.Members.Add(user);
                db.Entry(user).State      = EntityState.Modified;
                db.Entry(household).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Details", new { id = household.Id }));
            }

            return(View(household));
        }
        public ActionResult ChangeRole(string userId, string userRoles, bool EditBudget, bool AddBankAccounts, bool EditHousehold, bool EditTransactions)
        {
            var user = db.Users.Find(userId);

            if (userRoles == "HOH")
            {
                user.AddBankAccounts  = true;
                user.EditBudget       = true;
                user.EditHousehold    = true;
                user.EditTransactions = true;
            }
            else
            {
                user.AddBankAccounts  = AddBankAccounts;
                user.EditBudget       = EditBudget;
                user.EditHousehold    = EditHousehold;
                user.EditTransactions = EditTransactions;
            }


            //var role = db.Roles.FirstOrDefault(r => r.Id == userRoles).Name;
            usersHelper.AddToRole(user.Id, userRoles);
            db.Entry(user).State = EntityState.Modified;
            db.SaveChanges();
            return(RedirectToAction("ListMembers", "Households", new { hId = user.HouseholdId }));
        }
        public ActionResult InviteConfirmation([Bind(Include = "Email,Code,InviteId")] InviteConfirmationViewModel model)
        {
            var invite    = db.Invitations.FirstOrDefault(i => i.Id == model.InviteId);
            var user      = db.Users.FirstOrDefault(u => u.UserName == model.Email);
            var household = new Household();

            if (invite == null)
            {
                ViewBag.Household = "There was a problem with the invitation. Please ask for a new one.";
                return(View());
            }



            household = db.Households.FirstOrDefault(h => h.Id == invite.HouseholdId);

            if (invite != null && invite.Code == model.Code && DateTimeOffset.Now <= invite.Expires)
            {
                if (user != null && user.HouseholdId == null)
                {
                    user.HouseholdId = household.Id;
                    household.Members.Add(user);
                    foreach (var role in usersHelper.ListUserRoles(user.Id))
                    {
                        usersHelper.RemoveFromRole(user.Id, role);
                    }
                    usersHelper.AddToRole(user.Id, "Member");

                    //db.Entry(household).State = EntityState.Modified;
                    //db.Entry(user).State = EntityState.Modified;
                    db.SaveChanges();
                    ViewBag.Household = "You've been added to household: " + db.Households.FirstOrDefault(h => h.Id == invite.HouseholdId).Name;
                    return(View());
                }
                if (user != null && user.HouseholdId != null)
                {
                    ViewBag.Household = "You already belong to household. \nYou must leave one before joining another.";
                    return(View());
                }

                if (user == null)
                {
                    return(RedirectToAction("AddUserToHousehold", "Account", new { email = model.Email, hId = invite.HouseholdId, backto = "" }));
                    //return View();
                }
            }

            else
            {
                ViewBag.Household = "There was a problem with the invitation. Please ask for a new one.";
            }

            return(View());
        }