コード例 #1
0
        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." + 
        }
コード例 #2
0
        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);
        }