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")); }
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 })); }
public ActionResult DeleteConfirmed(int id) { HouseholdAccount householdAccount = db.HouseholdAccounts.Find(id); db.HouseholdAccounts.Remove(householdAccount); db.SaveChanges(); return(RedirectToAction("Index")); }
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)); }
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)); }
// 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)); }
// 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 })); }