public async Task<IHttpActionResult> PostAccount(Account account) { string badRequestDescription = ""; if (account.Name == "" || account.Name == null) { badRequestDescription = "nameError"; return Ok(badRequestDescription); } if (account.Balance == 0) { badRequestDescription = "balanceError"; return Ok(badRequestDescription); } var user = db.Users.Find(User.Identity.GetUserId()); if (user.HouseholdId == null) { return Ok("To create accounts you must first create or join a household."); } account.HouseholdId = (int)user.HouseholdId; account.Household = db.Households.Find(user.HouseholdId); account.ReconciledBalance = account.Balance; db.Accounts.Add(account); await db.SaveChangesAsync(); Transaction trans = new Transaction() { Description = "Account Initialization", Amount = account.Balance, Reconciled = account.Balance, CategoryId = 6, Created = DateTimeOffset.Now, AccountId = account.Id, IsIncome = true, Settled = true }; db.Transactions.Add(trans); await db.SaveChangesAsync(); return Ok(account.Id); //"The " + account.Name + " account has been created for the " + account.Household.Name + " household. A transaction showing the initialization of this account has also been created." + }
public async Task<IHttpActionResult> PutAccount(Account account) { string badRequestDescription = ""; if (account.Name == "" || account.Name == null) { badRequestDescription = "nameError"; return Ok(badRequestDescription); } if (account.Balance == 0) { badRequestDescription = "balanceError"; return Ok(badRequestDescription); } var user = db.Users.Find(User.Identity.GetUserId()); //var existingAccount = db.Accounts.FirstOrDefault(a => a.Id == account.Id); var existingAccount = user.Household.Accounts.FirstOrDefault(a => a.Id == account.Id); if (account == null) { return Ok("You do not have permission to edit this account"); } if (account.Balance != existingAccount.Balance) { decimal adjustmentAmount = account.Balance - existingAccount.Balance; Transaction trans = new Transaction() { Description = "Manual Account Balance Adjustment", Amount = adjustmentAmount, Reconciled = adjustmentAmount, Created = DateTimeOffset.Now, AccountId = account.Id, CategoryId = 5, Settled = true }; existingAccount.Balance = account.Balance; existingAccount.ReconciledBalance = account.Balance; db.Transactions.Add(trans); } if (account.Name != existingAccount.Name) { existingAccount.Name = account.Name; } /* if (account != null) { db.Entry(account).State = EntityState.Modified; } */ await db.SaveChangesAsync(); return Ok(account); }