Пример #1
0
        public ActionResult Create([Bind(Include = "Id,HouseholdId,Name,Balance,ReconciledBalance")] HouseholdAccount householdAccount)
        {
            if (ModelState.IsValid)
            {
                var user = db.Users.Find(User.Identity.GetUserId());
                householdAccount.HouseholdId = user.HouseholdId.Value;
                db.HouseholdAccounts.Add(householdAccount);
                db.SaveChanges();
                var transaction = new Transaction()
                {
                    Amount          = householdAccount.Balance,
                    AccountId       = householdAccount.Id,
                    CategoryId      = db.Categories.First(c => c.Name == "Initial Deposit").Id,
                    Date            = System.DateTimeOffset.Now,
                    Description     = "",
                    UpdatedByUserId = user.Id
                };
                db.Transactions.Add(transaction);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.HouseholdId = new SelectList(db.Households, "Id", "Name", householdAccount.HouseholdId);
            return(View(householdAccount));
        }
        public async Task <ActionResult> Delete(string submitButton, int householdAccountId)
        {
            if (User.Identity.Name != DemoEmail)
            {
                HouseholdAccount householdAccount = db.HouseholdAccounts.FirstOrDefault(h => h.Id == householdAccountId);
                if (householdAccount.HouseholdId == GetHouseholdInfo().Id)
                {
                    switch (submitButton)
                    {
                    case "Delete":
                        db.HouseholdAccounts.Remove(householdAccount);
                        await db.SaveChangesAsync();

                        return(RedirectToAction("Index"));

                    case "Cancel":
                        return(RedirectToAction("Index"));

                    default:
                        return(View(householdAccountId));
                    }
                }
            }
            return(RedirectToAction("Index"));
        }
Пример #3
0
        public async Task <HouseholdAccount> CreateAccount(HouseholdAccount acc)
        {
            try
            {
                var user = await i.SelectUserAsync(User.Identity.GetUserId <int>());

                //Create a Household If User has none
                if (user.Household == null || user.Household == 0)
                {
                    var household = new { Id = 0, Name = user.Name + " Household" };
                    var id        = await i.InsertHousehold(household);

                    user.Household = id;
                    await i.UpdateUser(user);
                }

                acc.HouseholdId = user.Household;
                var accid = await i.InsertAccountAsync(acc);

                acc.Id = accid;
                return(acc);
            }
            catch (Exception e)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }
        }
        public async Task <ActionResult> Edit([Bind(Include = "Id,HouseholdAccountId,Description,Date,Amount,CategoryId,ReconciledAmount,Reconciled,EnteredById")] Transaction transaction)
        {
            Household household = GetHouseholdInfo();

            if (!ModelState.IsValid || User.Identity.Name == DemoEmail)
            {
                ViewBag.CategoryId = new SelectList(db.Households.FirstOrDefault(h => h.Id == household.Id).Categories, "Id", "Name", transaction.CategoryId);
                return(View(transaction));
            }

            HouseholdAccount householdAccount = await db.HouseholdAccounts.FindAsync(transaction.HouseholdAccountId);

            if (household.Id != householdAccount.HouseholdId)
            {
                return(RedirectToAction("Index", "Home"));
            }

            db.Entry(transaction).State = EntityState.Modified;
            await db.SaveChangesAsync();

            householdAccount.Balance           = 0; //Update balance
            householdAccount.ReconciledBalance = 0;
            var transactions = db.Transactions.Where(t => t.HouseholdAccountId == transaction.HouseholdAccountId);

            foreach (Transaction t in transactions)
            {
                householdAccount.Balance           += t.Amount;
                householdAccount.ReconciledBalance += t.ReconciledAmount;
            }
            await db.SaveChangesAsync();

            return(RedirectToAction("Index", new { householdAccountId = transaction.HouseholdAccountId }));
        }
Пример #5
0
        public ActionResult DeleteConfirmed(int id)
        {
            HouseholdAccount householdAccount = db.HouseholdAccounts.Find(id);

            db.HouseholdAccounts.Remove(householdAccount);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Пример #6
0
 public ActionResult Edit([Bind(Include = "Id,HouseholdId,Name,Balance,ReconciledBalance")] HouseholdAccount householdAccount)
 {
     if (ModelState.IsValid)
     {
         db.Entry(householdAccount).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.HouseholdId = new SelectList(db.Households, "Id", "Name", householdAccount.HouseholdId);
     return(View(householdAccount));
 }
Пример #7
0
 public async Task UpdateAccount(HouseholdAccount acc)
 {
     try
     {
         await i.UpdateAccountAsync(acc);
     }
     catch (Exception e)
     {
         throw new HttpResponseException(HttpStatusCode.BadRequest);
     }
 }
        public async Task <ActionResult> Edit(HouseholdAccount model)
        {
            if (ModelState.IsValid && User.Identity.Name != DemoEmail && model.HouseholdId == GetHouseholdInfo().Id)
            {
                HouseholdAccount householdAccount = await db.HouseholdAccounts.FindAsync(model.Id);

                householdAccount.Name = model.Name;
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            return(View(model));
        }
Пример #9
0
        // GET: HouseholdAccounts/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            HouseholdAccount householdAccount = db.HouseholdAccounts.Find(id);

            if (householdAccount == null)
            {
                return(HttpNotFound());
            }
            return(View(householdAccount));
        }
Пример #10
0
        // GET: HouseholdAccounts/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            HouseholdAccount householdAccount = db.HouseholdAccounts.Find(id);

            if (householdAccount == null)
            {
                return(HttpNotFound());
            }
            ViewBag.HouseholdId = new SelectList(db.Households, "Id", "Name", householdAccount.HouseholdId);
            return(View(householdAccount));
        }
        public async Task <ActionResult> Edit(int?householdAccountId)
        {
            if (householdAccountId == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            HouseholdAccount householdAccount = await db.HouseholdAccounts.FindAsync(householdAccountId);

            if (householdAccount == null || householdAccount.HouseholdId != GetHouseholdInfo().Id)
            {
                return(HttpNotFound());
            }

            return(View(householdAccount));
        }
        public async Task <ActionResult> Create(HouseholdAccount model)
        {
            if (ModelState.IsValid && User.Identity.Name != DemoEmail)
            {
                string           userId    = GetUserInfo().Id;
                HouseholdAccount household = new HouseholdAccount
                {
                    Name              = model.Name,
                    Balance           = 0,
                    ReconciledBalance = 0,
                    CreationDate      = DateTimeOffset.Now,
                    HouseholdId       = db.Users.FirstOrDefault(u => u.Id == userId).HouseholdId,
                };
                db.HouseholdAccounts.Add(household);
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            return(View(model));
        }
        public async Task <ActionResult> DeleteConfirmed(int transactionId)
        {
            Transaction transaction = await db.Transactions.FindAsync(transactionId);

            if (User.Identity.Name != DemoEmail)
            {
                HouseholdAccount account = await db.HouseholdAccounts.FirstOrDefaultAsync(h => h.Id == transaction.HouseholdAccountId);

                if (account.HouseholdId != GetHouseholdInfo().Id)
                {
                    return(RedirectToAction("Index", "Home"));
                }

                account.Balance           -= transaction.Amount;
                account.ReconciledBalance -= transaction.ReconciledAmount;
                db.Transactions.Remove(transaction);
                await db.SaveChangesAsync();
            }
            return(RedirectToAction("Index", new { householdAccountId = transaction.HouseholdAccountId }));
        }
        // GET: Transactions/Index
        public async Task <ActionResult> Index(int?householdAccountId)
        {
            if (householdAccountId == null)
            {
                return(RedirectToAction("Index", "HouseholdAccount"));
            }

            HouseholdAccount householdAccount = db.HouseholdAccounts.Find(householdAccountId);
            Household        household        = GetHouseholdInfo();

            if (household.Id != householdAccount.HouseholdId)
            {
                return(RedirectToAction("Index", "Home"));
            }

            ViewBag.HouseholdAccountId   = householdAccountId;
            ViewBag.HouseholdAccountName = db.HouseholdAccounts.Find(householdAccountId).Name;
            var transactions = db.Transactions.Where(t => t.HouseholdAccountId == householdAccountId).Include(t => t.Category)
                               .Include(t => t.EnteredBy).Include(t => t.HouseholdAccount).OrderByDescending(t => t.Date);

            return(View(await transactions.ToListAsync()));
        }
        public async Task <ActionResult> Create([Bind(Include = "Id,HouseholdAccountId,Description,Date,Amount,CategoryId,ReconciledAmount,Reconciled,EnteredById")] Transaction transaction)
        {
            if (!ModelState.IsValid && User.Identity.Name == DemoEmail)
            {
                return(View(transaction));
            }

            HouseholdAccount householdAccount = await db.HouseholdAccounts.FindAsync(transaction.HouseholdAccountId);

            if (householdAccount.HouseholdId != GetHouseholdInfo().Id)
            {
                return(RedirectToAction("Index", "Home"));
            }

            transaction.Date        = DateTimeOffset.Now;
            transaction.EnteredById = User.Identity.GetUserId();
            db.Transactions.Add(transaction);
            householdAccount.Balance           += transaction.Amount;
            householdAccount.ReconciledBalance += transaction.ReconciledAmount;
            await db.SaveChangesAsync();

            return(RedirectToAction("Index", new { householdAccountId = transaction.HouseholdAccountId }));
        }