Beispiel #1
0
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            filterContext.Controller.TempData.Remove("oopsMsg");
            if (userId == null)
            {
                filterContext.Controller.TempData.Add("oopsMsg", "You have to be logged in and authorized to continue.");
                filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary {
                    { "controller", "Home" }, { "action", "Oops" }
                });
            }

            var transactionId     = Convert.ToInt32(filterContext.ActionParameters.SingleOrDefault(p => p.Key == "id").Value);
            var transaction       = db.Transactions.AsNoTracking().Where(t => t.Id == transactionId).FirstOrDefault();
            var transactionUserId = transaction.EnteredById;

            int?userHouseholdId = db.Users.Find(userId).HouseholdId;

            if (HouseholdHelper.GetUserHouseholdId(transactionUserId) != userHouseholdId)
            {
                filterContext.Controller.TempData.Add("oopsMsg", "You have to be logged in and authorized to view this Household.");
                filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary {
                    { "controller", "Home" }, { "action", "Oops" }
                });
            }

            base.OnActionExecuting(filterContext);
        }
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            Transaction transaction = db.Transactions.Find(id);

            if (transaction == null)
            {
                return(HttpNotFound());
            }
            var userHousholdId = HouseholdHelper.GetUserHouseholdId(User.Identity.GetUserId());
            var enteredById    = db.Users.Where(u => u.HouseholdId == userHousholdId);
            var houseAccountId = db.HouseAccounts.Where(a => a.HouseholdId == userHousholdId);
            var budgetItems    = db.BudgetItems.Where(i => db.Budgets.Any(b => b.Id == i.BudgetId && b.HouseholdId == userHousholdId));

            ViewBag.EnteredById       = new SelectList(enteredById, "Id", "FirstName", transaction.EnteredById);
            ViewBag.HouseAccountId    = new SelectList(houseAccountId, "Id", "Name", transaction.HouseAccountId);
            ViewBag.TransactionTypeId = new SelectList(db.TransactionTypes, "Id", "Name", transaction.TransactionTypeId);
            ViewBag.BudgetItemId      = new SelectList(budgetItems, "Id", "Name", transaction.BudgetItemId);

            return(View(transaction));
        }
Beispiel #3
0
        public async Task <ActionResult> Invitation(string Email)
        {
            try
            {
                var email = new MailAddress(Email).ToString();

                foreach (var invite in db.Invitations.Where(i => i.EmailTo.ToLower() == email.ToLower()))
                {
                    if (invite.Accepted)
                    {
                        TempData["status"] = "accepted";
                        return(RedirectToAction("Index", "Households", null));
                    }

                    if (invite.Expires >= DateTime.Now)
                    {
                        TempData["status"] = "pending";
                        return(RedirectToAction("Index", "Households", null));
                    }
                }

                Invitation invitation = new Invitation
                {
                    Created     = DateTime.Now,
                    Expires     = DateTime.Now.AddDays(3),
                    EmailTo     = email,
                    Subject     = $"{User.Identity.FullName()} has invited you to join Budget Destoyer",
                    Body        = $"{User.Identity.FullName()} has invited you to join their house {HouseholdHelper.GetHouseholdName(User.Identity.GetUserId())} on Budget Destroyer",
                    HouseholdId = Convert.ToInt32(HouseholdHelper.GetUserHouseholdId(User.Identity.GetUserId())),
                    UniqueCode  = Guid.NewGuid(),
                    Accepted    = false
                };

                db.Invitations.Add(invitation);
                db.SaveChanges();

                string code        = invitation.UniqueCode.ToString();
                var    callbackUrl = Url.Action("RegisterInvitation", "Account", new { code = code }, protocol: Request.Url.Scheme);

                //var message = "<p>Email From: <bold>{0}</bold>({1})</p><p> Message:</p><p>{2}</p> ";
                var bodyButton = "<a href =\"" + callbackUrl + "\">here</a>";
                var sentEmail  = new MailMessage("*****@*****.**", email)
                {
                    Subject    = invitation.Subject,
                    Body       = $"{invitation.Body}. Please Join by clicking {bodyButton}",
                    IsBodyHtml = true
                };

                var svc = new PersonalEmail();
                await svc.SendAsync(sentEmail);

                TempData["status"] = "success";
                return(RedirectToAction("Index", "Households", null));
            }
            catch (FormatException ex)
            {
                TempData["status"] = "error";
                return(RedirectToAction("Index", "Households", null));
            }
        }
        public ActionResult Create([Bind(Include = "Id,HouseholdId,Name,Descriptions,Amount")] Budget budget)
        {
            if (ModelState.IsValid)
            {
                budget.HouseholdId = HouseholdHelper.GetUserHouseholdId(User.Identity.GetUserId()).Value;

                db.Budgets.Add(budget);
                db.SaveChanges();
                return(RedirectToAction("Index", "Households"));
            }

            ViewBag.HouseholdId = new SelectList(db.Households, "Id", "Name", budget.HouseholdId);
            return(View(budget));
        }
Beispiel #5
0
        public ActionResult Create([Bind(Include = "Id,HouseholdId,Name,Balance,ReconciledBalace")] HouseAccount houseAccount)
        {
            if (ModelState.IsValid)
            {
                houseAccount.HouseholdId      = HouseholdHelper.GetUserHouseholdId(User.Identity.GetUserId()).Value;
                houseAccount.ReconciledBalace = 0.00M;

                db.HouseAccounts.Add(houseAccount);
                db.SaveChanges();
                return(RedirectToAction("Index", "Households"));
            }

            ViewBag.HouseholdId = new SelectList(db.Households, "Id", "Name", houseAccount.HouseholdId);
            return(View(houseAccount));
        }
Beispiel #6
0
        // GET: Households
        public ActionResult Index()
        {
            var householdId = HouseholdHelper.GetUserHouseholdId(User.Identity.GetUserId());

            ViewBag.HouseAccounts = db.HouseAccounts.Where(h => h.HouseholdId == householdId).ToList();
            ViewBag.Transactions  = db.Transactions.Where(t => db.HouseAccounts.Any(h =>
                                                                                    h.Id == t.HouseAccountId && h.HouseholdId == householdId)).ToList();

            ViewBag.HouseAccountsSelect = new SelectList(ViewBag.HouseAccounts, "Id", "Name");
            ViewBag.TransactionTypes    = new SelectList(db.TransactionTypes, "Id", "Name");

            ViewBag.BudgetItems      = db.BudgetItems.Where(i => db.Budgets.Any(b => b.Id == i.BudgetId && b.HouseholdId == householdId)).ToList();
            ViewBag.BudgetItemSelect = new SelectList(ViewBag.BudgetItems, "Id", "Name");

            ViewBag.Budgets  = db.Budgets.Where(b => b.HouseholdId == householdId).ToList();
            ViewBag.BudgetId = new SelectList(ViewBag.Budgets, "Id", "Name");

            return(View(db.Households.Find(householdId)));
        }